Compare commits
	
		
			1263 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | af61a7a17f | ||
|   | 667ad8fe96 | ||
|   | e1cc2394fa | ||
|   | 04e1e48f17 | ||
|   | c417e2f4a1 | ||
|   | 02a27a8b12 | ||
|   | d775e19059 | ||
|   | 35e7dca2bb | ||
|   | 6c4ea5e087 | ||
|   | 54a1e500e2 | ||
|   | 450ed2c471 | ||
|   | bf97fcb2fd | ||
|   | 4edeae07a0 | ||
|   | 8e19e4d33b | ||
|   | 2a774c9414 | ||
|   | 6f50ed327d | ||
|   | a51d384f19 | ||
|   | e2b2e4633a | ||
|   | 46ec773128 | ||
|   | 1827a65874 | ||
|   | 1b4dd64cbe | ||
|   | 95b7d84025 | ||
|   | 137b081b8a | ||
|   | 76af9bbda7 | ||
|   | 17ab07ae9c | ||
|   | 4c4d06e49b | ||
|   | 5d9ef68f14 | ||
|   | 4689cf5591 | ||
|   | 58e7edf08a | ||
|   | 9c6c281ac3 | ||
|   | 2326d6208b | ||
|   | cd4be4116b | ||
|   | 6697ca243c | ||
|   | 15ce89a88d | ||
|   | 4b13278a41 | ||
|   | e01167fcab | ||
|   | 719ff26e79 | ||
|   | 2657328ac1 | ||
|   | 4b7cef239e | ||
|   | 49d9e51f72 | ||
|   | 40a5f79d76 | ||
|   | 9cfd0b7351 | ||
|   | 2223ecf890 | ||
|   | 06bad9c501 | ||
|   | a479e65f3e | ||
|   | a2e99e46b9 | ||
|   | 07a27cfb9a | ||
|   | 77f3a0d3a9 | ||
|   | f9065943c5 | ||
|   | d0aff4409d | ||
|   | 84ea1fbd4d | ||
|   | d1d92be09a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 52b23af97e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b76cd18dea | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | cd3b30bf5c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b87ebc6f9d | ||
|   | 4d7d119524 | ||
|   | b4b6e9548d | ||
|   | ebf9cd18c8 | ||
|   | b1ccbb2deb | ||
|   | 562cd6ad0b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a832672b59 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 309058f209 | ||
|   | 2a344dfbd8 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 866d4cd59a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 165350cca6 | ||
|   | 8c21b8a9a6 | ||
|   | 41e3a9a004 | ||
|   | 4dc6ec5387 | ||
|   | 96515c4544 | ||
|   | b3637b5e8a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 43bcdf397e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 22c5db7121 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1c6a8f8691 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 31b5175bb0 | ||
|   | 9add59aca9 | ||
|   | 16c65173c1 | ||
|   | 4f6ae4633f | ||
|   | 8aa1577713 | ||
|   | 5bd41704ae | ||
|   | 4d0b335748 | ||
|   | 5692ae59a1 | ||
|   | 84f1ce866b | ||
|   | e68c6175ce | ||
|   | 0de11c3636 | ||
|   | 1f70657d4a | ||
|   | 73646aac9b | ||
|   | e72c590c6b | ||
|   | 06e026b346 | ||
|   | 5621d5725c | ||
|   | 14d0a07b29 | ||
|   | 105fefd114 | ||
|   | f81c10fe62 | ||
|   | 86a2aa42a4 | ||
|   | 42f5c3fe22 | ||
|   | 975740464c | ||
|   | c57bffb142 | ||
|   | d92a2cdb55 | ||
|   | 5b91463233 | ||
|   | 39eed3378f | ||
|   | cf98d40a44 | ||
|   | 7d6436c90e | ||
|   | 0acf3a8f6d | ||
|   | 8b7324c8d3 | ||
|   | a0b0d5dff7 | ||
|   | bef0e36665 | ||
|   | 766e721ff3 | ||
|   | 93ad4b359e | ||
|   | b3032ad84d | ||
|   | 4f76acd249 | ||
|   | fcc4b2c704 | ||
|   | 12286f4915 | ||
|   | 193abfdbac | ||
|   | 0e13481eb4 | ||
|   | b713cac4f1 | ||
|   | 2137c894ef | ||
|   | f0d2ce4f19 | ||
|   | e3a89d302f | ||
|   | d01d2ef65e | ||
|   | 23c550acba | ||
|   | b9db88f616 | ||
|   | dee4a18d48 | ||
|   | fa5073b042 | ||
|   | 9dda698dc8 | ||
|   | 99d0930fba | ||
|   | a599524b5f | ||
|   | 5f34758e87 | ||
|   | cdb8e41176 | ||
|   | d8f3e9d4a3 | ||
|   | da900439a3 | ||
|   | ad0273ab99 | ||
|   | 8bbff90aca | ||
|   | fcb3ba9947 | ||
|   | 23b3e33df6 | ||
|   | 9edac2cd74 | ||
|   | fbe0d70661 | ||
|   | 8782a64b18 | ||
|   | d3b81c3e00 | ||
|   | fd816afcd0 | ||
|   | ac423f1ef4 | ||
|   | f11ebafe47 | ||
|   | 7947036af9 | ||
|   | b722431720 | ||
|   | 295563caad | ||
|   | 26735815f1 | ||
|   | c06a52c237 | ||
|   | 5678adf3b5 | ||
|   | ac772dd389 | ||
|   | 2c4de8475f | ||
|   | 46facaf176 | ||
|   | eea1b7fc63 | ||
|   | f0e9386cd0 | ||
|   | e4a4238b57 | ||
|   | 55e126998a | ||
|   | 608a30d37b | ||
|   | 7d22d6255d | ||
|   | 4e55436339 | ||
|   | 3adadc8a52 | ||
|   | b525af822c | ||
|   | bee8a5b065 | ||
|   | f4d80122b3 | ||
|   | 2e8ea34413 | ||
|   | 7341d97a00 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 964b34bd3b | ||
|   | 38e8d4bbea | ||
|   | cb106e6fe4 | ||
|   | 61411605b8 | ||
|   | 0ac7682188 | ||
|   | d7af18efbd | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 64bb6daa43 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0a1951f24c | ||
|   | 8bb388f62a | ||
|   | ee36956451 | ||
|   | f1a0e95489 | ||
|   | de5d9470af | ||
|   | a9838495ce | ||
|   | d34c080822 | ||
|   | 59f55a8291 | ||
|   | 79ace6238a | ||
|   | 89e88802b9 | ||
|   | c7f969a002 | ||
|   | 18b186068d | ||
|   | 037c67cbfb | ||
|   | c3ccee9097 | ||
|   | 2449183f44 | ||
|   | 1c98226621 | ||
|   | b405669672 | ||
|   | 53fbe675a7 | ||
|   | 6bcc174456 | ||
|   | a3493c4f07 | ||
|   | 545ced7826 | ||
|   | a9a476a0d5 | ||
|   | 8dfd35303c | ||
|   | 498ca306e4 | ||
|   | 5a46e08165 | ||
|   | c0c57044cc | ||
|   | 42d00b96c6 | ||
|   | 072360947b | ||
|   | d60ba8e37d | ||
|   | c10cf60059 | ||
|   | 880689e28a | ||
|   | ade7050996 | ||
|   | 71b5fae4d9 | ||
|   | d398e87ea1 | ||
|   | 6256d021e6 | ||
|   | 405f242ff9 | ||
|   | 8823a6c1a1 | ||
|   | 65a82f32be | ||
|   | fd593458a6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3985fe6b09 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | db71a5da62 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d76e3e4853 | ||
|   | eead9fad03 | ||
|   | b498072f9d | ||
|   | f56a961db2 | ||
|   | 5d224f4eac | ||
|   | 5b5edae11c | ||
|   | bd51154c46 | ||
|   | 749a1ff8b6 | ||
|   | b06d46f46f | ||
|   | 7146a534df | ||
|   | ef51e591ee | ||
|   | 9d2f4d3ffb | ||
|   | f7e0b196eb | ||
|   | feb7e58912 | ||
|   | fbf04392c9 | ||
|   | e650818952 | ||
|   | 76fcb1af87 | ||
|   | cce3e52642 | ||
|   | 8c762e7b8e | ||
|   | f0dafa04a5 | ||
|   | 81f39b3b36 | ||
|   | b162471d3e | ||
|   | 2736e8d6fa | ||
|   | 182f6f8faa | ||
|   | ff34655221 | ||
|   | f6ce6109f9 | ||
|   | 899ac15d88 | ||
|   | 7132f2062c | ||
|   | 96b354c7f2 | ||
|   | 715664a523 | ||
|   | e8ddfb4bfe | ||
|   | 2a1229978e | ||
|   | b8af3515cd | ||
|   | f99e3f3d42 | ||
|   | d6057bd830 | ||
|   | 975e57ec48 | ||
|   | bd35965c99 | ||
|   | 1029bff5ff | ||
|   | 6c1893f869 | ||
|   | 0a89ba60bd | ||
|   | c6e418a242 | ||
|   | d9a6666ba8 | ||
|   | ab849fbbef | ||
|   | 9d6b6053a6 | ||
|   | ddfd64944d | ||
|   | 51153ed287 | ||
|   | 0e7bbd1b32 | ||
|   | 5049791d7f | ||
|   | 1ebcf8d915 | ||
|   | e01873811a | ||
|   | d078b871e1 | ||
|   | c6375ae864 | ||
|   | 483467e32f | ||
|   | c84d43bc5f | ||
|   | fdd42fc2d7 | ||
|   | 8573e258f8 | ||
|   | 6943c7d2d8 | ||
|   | 4a42bf7b19 | ||
|   | b982f97c05 | ||
|   | d9207788d3 | ||
|   | 0ad48cc896 | ||
|   | 5e191a1f5b | ||
|   | 8069e44d0a | ||
|   | 0a83f0fd67 | ||
|   | 83c54fb6b9 | ||
|   | 5f6b0f689f | ||
|   | 1b0b96526b | ||
|   | edb0469787 | ||
|   | 3256a0914e | ||
|   | 3c15182f24 | ||
|   | f7bc5e3c0b | ||
|   | 19f327701d | ||
|   | 6b30e371a2 | ||
|   | 98fd6de5a1 | ||
|   | 6635f25abe | ||
|   | 5f93106eab | ||
|   | 84f2994d47 | ||
|   | 96f5c6d616 | ||
|   | b67923abb9 | ||
|   | 310f7b3359 | ||
|   | c743c45989 | ||
|   | 0322c51913 | ||
|   | b85e27c7e5 | ||
|   | aa351d1f7f | ||
|   | 6b48b79758 | ||
|   | 104ea7e277 | ||
|   | 97de1ed3a8 | ||
|   | d69e9741da | ||
|   | 0f5c737c1a | ||
|   | cb9960b0ac | ||
|   | 1404539895 | ||
|   | 2f901da58c | ||
|   | 3637c1bfbc | ||
|   | 28c3edc844 | ||
|   | 9271a8c066 | ||
|   | 7b16bfc736 | ||
|   | 54450033e4 | ||
|   | fbf676d518 | ||
|   | 47df0bbec1 | ||
|   | 708f8b3cc3 | ||
|   | 9de163ab09 | ||
|   | e21be29131 | ||
|   | 1aabb725d0 | ||
|   | 3e17c34187 | ||
|   | d57de01d37 | ||
|   | 71918fdbf0 | ||
|   | cb8663873d | ||
|   | 0f204eebe1 | ||
|   | dec572a6b7 | ||
|   | 28848ba969 | ||
|   | 4cfcd37a2b | ||
|   | 2b0d5516d1 | ||
|   | 3e3c3c10ab | ||
|   | 3cc282db14 | ||
|   | 4c1c865ba9 | ||
|   | 9423c99427 | ||
|   | d1512c90f1 | ||
|   | 85c9993106 | ||
|   | 1d580009e4 | ||
|   | 22ad21597a | ||
|   | 76d8f66eff | ||
|   | febdf0cbee | ||
|   | ba05606074 | ||
|   | 030fe8bec7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 4587c5a512 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 96646e584b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | fb2879df9c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 26ea338e8e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1fad5ed6f3 | ||
|   | 20db10516c | ||
|   | 00631f58ec | ||
|   | 35273e53bc | ||
|   | bfc458e935 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bb819d42f1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5d76439224 | ||
|   | 3d0b704af8 | ||
|   | 05539ffc7b | ||
|   | c86deab69c | ||
|   | 21f8dbf2de | ||
|   | 6731f904f2 | ||
|   | f6e74f529e | ||
|   | c860a2f7f3 | ||
|   | 7b141722ae | ||
|   | fc516ffb7f | ||
|   | 11604593a6 | ||
|   | 6f3468ccd2 | ||
|   | e3be90503c | ||
|   | 22d38e0d24 | ||
|   | 8b654fb40a | ||
|   | 91cd9831bc | ||
|   | 805d72d42f | ||
|   | 0d4a1719a6 | ||
|   | 32ab57e11b | ||
|   | 5174e16f7b | ||
|   | 9b746f3eb5 | ||
|   | becd038660 | ||
|   | 2a6cfec0e6 | ||
|   | dfc6ef4be6 | ||
|   | c8b45f4f42 | ||
|   | 09c57e6d03 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5edb1da097 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b3ad3a6535 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3709bb23bc | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 28be5c0b81 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 60ef74047a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f81596c8d5 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 075b7e3060 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | cc7d6198ec | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5766c2ce1b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 03fed08c03 | ||
|   | 4662641feb | ||
|   | 00e2ce9489 | ||
|   | c2ec81f93a | ||
|   | 47561a6f8b | ||
|   | c81eb49f9e | ||
|   | 205c0d44d5 | ||
|   | dc1bdbaaa5 | ||
|   | d619a92a37 | ||
|   | 59ad529162 | ||
|   | c4c44e04fd | ||
|   | fae58a9ab0 | ||
|   | fa03c172f2 | ||
|   | 89ac15b4de | ||
|   | 10d3b81251 | ||
|   | 71dceca225 | ||
|   | 40de631d95 | ||
|   | 6985c39874 | ||
|   | 0938ea3964 | ||
|   | 4b4c19b242 | ||
|   | d8620187ec | ||
|   | 520849d070 | ||
|   | b6a028a8ed | ||
|   | 7db799a0ac | ||
|   | 1ab776c867 | ||
|   | f4c9f63548 | ||
|   | 08da9d70cd | ||
|   | 96173e5c0b | ||
|   | b37cc70742 | ||
|   | 96ee4299c7 | ||
|   | 6072b02f12 | ||
|   | 6ccbca0741 | ||
|   | 360394fd5c | ||
|   | dcb45aa953 | ||
|   | a8fcc1aad9 | ||
|   | 4d69cd86f1 | ||
|   | 6e14e58b89 | ||
|   | af5839bb59 | ||
|   | a53e0d9f73 | ||
|   | 49921f2dcf | ||
|   | 70d2d61b9a | ||
|   | 9abaf80f6b | ||
|   | 25948fc3c9 | ||
|   | 6b947c2139 | ||
|   | 98acf919f1 | ||
|   | c9c2853150 | ||
|   | 2bc708f8e6 | ||
|   | 874b8fc3c2 | ||
|   | 7d6aac3431 | ||
|   | e2fc7decad | ||
|   | 21bed71f5e | ||
|   | 747a5694f8 | ||
|   | 479a0a2deb | ||
|   | 14aef6ec89 | ||
|   | f0d2b3f449 | ||
|   | 3b974428fc | ||
|   | 580191fb17 | ||
|   | be0cb88b6c | ||
|   | 95c4e4497e | ||
|   | 2ec445f83e | ||
|   | 51b915428e | ||
|   | 1395cf89ce | ||
|   | 2a8f984db7 | ||
|   | decf2d396f | ||
|   | f7964da899 | ||
|   | c8607ff7b6 | ||
|   | e9f8897fe2 | ||
|   | e0b107a3a0 | ||
|   | abf2c89931 | ||
|   | 1d3e6a7197 | ||
|   | 288bf195e9 | ||
|   | 7e3cc11cc4 | ||
|   | 4e07e94af0 | ||
|   | 9cb49c9204 | ||
|   | 580dd729e5 | ||
|   | 49ab77c86e | ||
|   | f98914b9f1 | ||
|   | f3f3599b28 | ||
|   | f67b1beee4 | ||
|   | 8395d0f1ba | ||
|   | af203bee93 | ||
|   | 760fb79dad | ||
|   | ee9d4119c2 | ||
|   | 90027efcbf | ||
|   | 1848de1dc4 | ||
|   | 1c93fcb1c4 | ||
|   | e3389e7899 | ||
|   | 454632d785 | ||
|   | c9bca7dc85 | ||
|   | 710ba526fa | ||
|   | aa47b6732d | ||
|   | 20f83420ca | ||
|   | d09a68ef11 | ||
|   | b545be5799 | ||
|   | 4fc377584f | ||
|   | a5f09c90dd | ||
|   | ba407c3eb0 | ||
|   | d059d7f972 | ||
|   | c03e2dfbc0 | ||
|   | 45c5e7b967 | ||
|   | c81a94ff75 | ||
|   | acc6f54557 | ||
|   | 8025b121af | ||
|   | 78ec06bda3 | ||
|   | 6ef83d9c59 | ||
|   | fca4ceef21 | ||
|   | 00f979f0e6 | ||
|   | 556677be7a | ||
|   | 624fd093f2 | ||
|   | 2ee438dece | ||
|   | 534de24406 | ||
|   | 014edce1b9 | ||
|   | ac1f3de4c6 | ||
|   | dced228cb0 | ||
|   | a92244cc12 | ||
|   | 0717688933 | ||
|   | 87d54b7d40 | ||
|   | ed51f5c7de | ||
|   | 66e2db0d52 | ||
|   | 03be4826df | ||
|   | c9d5aef04f | ||
|   | 106cb3fe3e | ||
|   | 48320f8536 | ||
|   | 1a0845dc0a | ||
|   | 185d09f3ed | ||
|   | 8e25fb6cb7 | ||
|   | e88ce1746d | ||
|   | b8aad35009 | ||
|   | 47bd485a39 | ||
|   | ad869d7469 | ||
|   | d15cce5337 | ||
|   | 37daff6d61 | ||
|   | 5417e40f59 | ||
|   | 0fed33bfdb | ||
|   | 5dddc75d09 | ||
|   | 081578c604 | ||
|   | 6c47bf5b76 | ||
|   | 936bb1bcd0 | ||
|   | d5241d9a3e | ||
|   | 05b4430c92 | ||
|   | 292e911de2 | ||
|   | 1c4ba2c037 | ||
|   | 452db13d0c | ||
|   | c3f64b395b | ||
|   | 3fa6bf93a4 | ||
|   | a13d76bec5 | ||
|   | 05cee078d0 | ||
|   | 706d3f3f95 | ||
|   | c5cf034b5d | ||
|   | 3a04aa93f9 | ||
|   | 838cdbedbd | ||
|   | 9e85291cd3 | ||
|   | 7f77517fc8 | ||
|   | b2f288dcac | ||
|   | 52b59e9d7b | ||
|   | 80c74b1fa7 | ||
|   | 91811ea500 | ||
|   | 57150fd910 | ||
|   | cddbbdf5d0 | ||
|   | 423dc2349b | ||
|   | 5229bbd55d | ||
|   | 28311b9a2b | ||
|   | 663d17a485 | ||
|   | 08d005dfd9 | ||
|   | 02edbc131b | ||
|   | 0556a2a2da | ||
|   | 65d943e42a | ||
|   | 3bcb344ecb | ||
|   | 82d721d60b | ||
|   | 48dc56e834 | ||
|   | 2c33bd6e31 | ||
|   | b6524616bc | ||
|   | 7e2b70f912 | ||
|   | 4f071a66b6 | ||
|   | 39f2303429 | ||
|   | cacf072027 | ||
|   | 6ab1fdfe1a | ||
|   | 6e5c93f926 | ||
|   | 1670737075 | ||
|   | fee235c4e4 | ||
|   | 7a39d489f2 | ||
|   | 7c634218d1 | ||
|   | 2704c5be73 | ||
|   | 489b51ba9f | ||
|   | 21807c29f1 | ||
|   | 3bc62fe3eb | ||
|   | ba0e3c4a5f | ||
|   | 9ec1fb5e37 | ||
|   | d708409462 | ||
|   | 07d05d4f86 | ||
|   | bbdb2ebb40 | ||
|   | f7908ba098 | ||
|   | f2fda3075e | ||
|   | 1338a68979 | ||
|   | e7da505fb3 | ||
|   | 5a9228372f | ||
|   | c4a6ba9097 | ||
|   | d5871b408b | ||
|   | 7b3338e373 | ||
|   | d18ee12d2f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ca9cc97940 | ||
|   | a70070ac7d | ||
|   | 069d99b320 | ||
|   | 37d350dcad | ||
|   | 8653e09b59 | ||
|   | 7cd2d59576 | ||
|   | a0839de38f | ||
|   | b7c5c71c6f | ||
|   | adab0adbdd | ||
|   | 2faa58928f | ||
|   | ffb80efe21 | ||
|   | 6f959218ef | ||
|   | be1125dcb9 | ||
|   | 9ab34c2301 | ||
|   | 0166d81d9e | ||
|   | 0b26efbd2f | ||
|   | 2cbaedf946 | ||
|   | b66924fbe8 | ||
|   | 8c91148954 | ||
|   | be0eff3dda | ||
|   | 85903ac9c6 | ||
|   | dbdd778dc7 | ||
|   | fc50dfd8d5 | ||
|   | f444e132ee | ||
|   | 68f562c323 | ||
|   | 820ea69613 | ||
|   | 6f4b3853a1 | ||
|   | a706ad0e80 | ||
|   | 820116affc | ||
|   | 52650342be | ||
|   | 85ddabdc65 | ||
|   | 0730cc4fa4 | ||
|   | 17b6ab0ef0 | ||
|   | 4e208b85bb | ||
|   | 00f8b29f6d | ||
|   | 9cf0fcadb1 | ||
|   | c595efeead | ||
|   | b56c6793a1 | ||
|   | ebceffba1e | ||
|   | 3ae42d9b85 | ||
|   | 796237b3c6 | ||
|   | cb7a97ee4c | ||
|   | 0cf758b6d1 | ||
|   | d28fca320e | ||
|   | 8bd17703c3 | ||
|   | a78eebc43f | ||
|   | 79fb5246df | ||
|   | 458b8c78dc | ||
|   | 64e0cbd6fc | ||
|   | 7fe937026b | ||
|   | 656cec65b9 | ||
|   | 8045bbff1c | ||
|   | c1a7a21746 | ||
|   | f3ee63fcbe | ||
|   | 7645c212a3 | ||
|   | 8b38e2ea58 | ||
|   | c9eb6a8919 | ||
|   | 9a41fd4734 | ||
|   | 70d96ee076 | ||
|   | 3b6fb3959b | ||
|   | 484d705320 | ||
|   | 786031be66 | ||
|   | bc0027ce43 | ||
|   | 3e7c6d9bdc | ||
|   | 5463e3e55e | ||
|   | 84a880086e | ||
|   | 89419b7136 | ||
|   | 9106ec74f7 | ||
|   | ebf9a0921d | ||
|   | c237f49016 | ||
|   | 709290d2da | ||
|   | eb3180f3b6 | ||
|   | 681997509c | ||
|   | 79ff5888fd | ||
|   | 9ee9cf8d81 | ||
|   | ee3c0f6f18 | ||
|   | 9dd463bff4 | ||
|   | df297d0031 | ||
|   | d18d1cb958 | ||
|   | 5bc0570888 | ||
|   | 8b43d75eaf | ||
|   | 89b37bd73d | ||
|   | 69f246ce7f | ||
|   | 6a97f0b7f6 | ||
|   | d885b872f3 | ||
|   | 125849673a | ||
|   | 30c53e9ee0 | ||
|   | 981fb9e8f3 | ||
|   | 9fac22d880 | ||
|   | b8f034064a | ||
|   | 6068227434 | ||
|   | 69cda49c88 | ||
|   | 039d821d20 | ||
|   | 44d93bc408 | ||
|   | cfa76ac6f9 | ||
|   | 0ec2d16522 | ||
|   | 6bcac1fe14 | ||
|   | bc9427d000 | ||
|   | 07c043361e | ||
|   | e676a9a501 | ||
|   | 09e654c6d2 | ||
|   | 549cb1ba87 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c633827e5e | ||
|   | 08142ead67 | ||
|   | 638d81b66e | ||
|   | 4c83c2f64d | ||
|   | bf56f90fdc | ||
|   | d8412aad7a | ||
|   | c136741710 | ||
|   | 4fe8454da0 | ||
|   | 3f2161dadd | ||
|   | 3db516aa1a | ||
|   | 367bbbe605 | ||
|   | 5b70ff561c | ||
|   | 4486527e5d | ||
|   | 147e23d332 | ||
|   | ee20e6950e | ||
|   | 1d217154ef | ||
|   | 27d304a1ab | ||
|   | 1d1a373ca8 | ||
|   | bca3c6f8bf | ||
|   | d83d661535 | ||
|   | e16906afc3 | ||
|   | a6dc0f3684 | ||
|   | 6120474548 | ||
|   | 121dd86299 | ||
|   | 5251d9f668 | ||
|   | 7ae3f569de | ||
|   | 142ebead59 | ||
|   | e196086c64 | ||
|   | 8c6ed98505 | ||
|   | 98a2953c9c | ||
|   | 61d224695b | ||
|   | 6967def6c8 | ||
|   | 393c6aa79a | ||
|   | fc05540404 | ||
|   | 1c589c7c18 | ||
|   | 284df27435 | ||
|   | 68c0600a5c | ||
|   | b8163bd0e1 | ||
|   | 8c25b9dfad | ||
|   | bf34f67583 | ||
|   | 0c63f410d6 | ||
|   | 069077ace4 | ||
|   | 5be947ea4d | ||
|   | b41ffa75b7 | ||
|   | cd80e02ebf | ||
|   | dffcefb81f | ||
|   | 48df08d4dc | ||
|   | 4de9a08e55 | ||
|   | 3f46b5259b | ||
|   | 2faa8ea97c | ||
|   | 514690cf18 | ||
|   | f4f78c1898 | ||
|   | 2d24befb15 | ||
|   | 184d88838c | ||
|   | 4490503d59 | ||
|   | 99750435ae | ||
|   | fae920e578 | ||
|   | 0243b6d13b | ||
|   | 12bc725d68 | ||
|   | b1a7b781ec | ||
|   | 7e1cad3e12 | ||
|   | fd3f4c37a0 | ||
|   | 3acd2e0f0c | ||
|   | b1b5a795c8 | ||
|   | 197e2c8377 | ||
|   | fb8b0c291d | ||
|   | 706d47ec32 | ||
|   | 4eab2b3654 | ||
|   | 0a78f560e0 | ||
|   | f6f79fb388 | ||
|   | 34235d4d44 | ||
|   | 21842ec190 | ||
|   | 026e1cc7e7 | ||
|   | c65f4eebaf | ||
|   | 17baf8770a | ||
|   | 01f60edb17 | ||
|   | 15b11e59f4 | ||
|   | a2db4db963 | ||
|   | e87b9cc019 | ||
|   | 54cb94db1d | ||
|   | 1de8e1eeb1 | ||
|   | 1d8fb65959 | ||
|   | 28482627f7 | ||
|   | 4ee7df887d | ||
|   | b040571fa8 | ||
|   | fbd5e4bab8 | ||
|   | 498bdd1cd0 | ||
|   | 102cca8971 | ||
|   | e710ad4c5f | ||
|   | f64f6fd603 | ||
|   | 5995020c64 | ||
|   | 2dc86ec1ac | ||
|   | d50bcbdb23 | ||
|   | 19afd0ba61 | ||
|   | 7a787fa95c | ||
|   | 4e85eb90cb | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d4474b953e | ||
|   | 0aaf3d7bd7 | ||
|   | 02bb2423af | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e9b25f17af | ||
|   | 96671c5c7e | ||
|   | 4fc786f062 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 51c0cca4ff | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bd344628f6 | ||
|   | 48deb35d4b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f9792f0d5c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0157033104 | ||
|   | 596f92cfcc | ||
|   | b2dedf7f98 | ||
|   | 34393ef89f | ||
|   | 7e11cd3b99 | ||
|   | dd1622296d | ||
|   | 77cb59a6ac | ||
|   | a2b60e38a3 | ||
|   | f0570bf111 | ||
|   | b980164318 | ||
|   | 3e7ff586a5 | ||
|   | 923bbcbf6b | ||
|   | 8cc85931d6 | ||
|   | b25522a091 | ||
|   | 97ae7e9ef4 | ||
|   | d25bd65722 | ||
|   | f4f98c25f7 | ||
|   | 336607568f | ||
|   | e2843a5ce4 | ||
|   | 702875a78e | ||
|   | 0fa8c6afd2 | ||
|   | 96571866a3 | ||
|   | f72b00bec7 | ||
|   | 1e7b5a0a98 | ||
|   | 9f09afc824 | ||
|   | 93b599dc8e | ||
|   | 1c722494de | ||
|   | a464c8d1d0 | ||
|   | 51362e9a52 | ||
|   | 3c086fe8c7 | ||
|   | f3b1248bd8 | ||
|   | 4e529ee7d0 | ||
|   | a2b975a493 | ||
|   | 13055d1496 | ||
|   | 78b5af4e4f | ||
|   | 008432e156 | ||
|   | d3d50b2f79 | ||
|   | eefeb4c268 | ||
|   | 86d4f1981c | ||
|   | 7a8e97972c | ||
|   | 3555213155 | ||
|   | 5d3d8dffd6 | ||
|   | dea8688c9d | ||
|   | a235869cfa | ||
|   | a8434b3bc5 | ||
|   | f110b2b320 | ||
|   | 0543cffe00 | ||
|   | 0383cbe43f | ||
|   | 9dd1203583 | ||
|   | 4eeeaffdee | ||
|   | 6f73f3d7a1 | ||
|   | aa9cd211dd | ||
|   | 3cdf4f01f8 | ||
|   | d0f84643d8 | ||
|   | 89707ad436 | ||
|   | 163d81c1b0 | ||
|   | 81a7213583 | ||
|   | 8f92a07d68 | ||
|   | 31b30e3dd2 | ||
|   | 0a1ac12d97 | ||
|   | e800104ac4 | ||
|   | 05cb94eb77 | ||
|   | 51499e04e0 | ||
|   | 0c993ef851 | ||
|   | b27fced30d | ||
|   | 2b7da9d98c | ||
|   | cd66f86f08 | ||
|   | a2e7cab573 | ||
|   | f81f7d51c5 | ||
|   | 7fb640e38f | ||
|   | c7561be15f | ||
|   | 741c81bca9 | ||
|   | 1e38528716 | ||
|   | 58b3be438a | ||
|   | 4522568749 | ||
|   | 719f9c8c02 | ||
|   | fe891da886 | ||
|   | 95b6684cfd | ||
|   | 66836836ab | ||
|   | 0db48c778f | ||
|   | 13a2f9373c | ||
|   | ae4d504392 | ||
|   | 85d240625d | ||
|   | db646b0ad9 | ||
|   | 2570d50957 | ||
|   | 7faecaadcf | ||
|   | dcbcb18081 | ||
|   | f1a61a268e | ||
|   | d7636355a1 | ||
|   | ed2993b3f2 | ||
|   | 1368c9d182 | ||
|   | c5e3c07c16 | ||
|   | f8395166af | ||
|   | dc8f4c8d6a | ||
|   | ed4860dfd9 | ||
|   | 5b0bf98b3c | ||
|   | adffac1000 | ||
|   | 3a1672b061 | ||
|   | e7658be6cd | ||
|   | 63533ad9c8 | ||
|   | 34b431fa1d | ||
|   | 958802dbe0 | ||
|   | 8681259597 | ||
|   | f3d76c06db | ||
|   | 3f32a9bfff | ||
|   | c497149765 | ||
|   | 9159613f2f | ||
|   | 70e95a5cdb | ||
|   | b0f82749aa | ||
|   | 20c0690352 | ||
|   | 006ecec443 | ||
|   | effcf0a609 | ||
|   | 3852d0b2c3 | ||
|   | ec67590dbe | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 65d0dbb7d8 | ||
|   | f8af57dffb | ||
|   | 2b058be3aa | ||
|   | 67efd30553 | ||
|   | 8d1fdc5aa4 | ||
|   | d033103163 | ||
|   | 53dff28a21 | ||
|   | 53c37036ee | ||
|   | 133c879a3a | ||
|   | a105faeaae | ||
|   | 13404310a7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2373b114bf | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5bfc6b6547 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8026a609bb | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 10db61a0d2 | ||
|   | 40520f3997 | ||
|   | c1d59716d1 | ||
|   | d8698743a1 | ||
|   | ade5055bc3 | ||
|   | 6e343d50f1 | ||
|   | ce3f735654 | ||
|   | 9b5e623130 | ||
|   | f0b0c5b540 | ||
|   | dd2207d430 | ||
|   | ffd6ac2434 | ||
|   | 27f93cc112 | ||
|   | 7ee88a69ec | ||
|   | 227798300f | ||
|   | 2ab8a5bc0a | ||
|   | c222b9ae94 | ||
|   | 53a0f3c794 | ||
|   | 9ff349c548 | ||
|   | 37a360efd9 | ||
|   | 3a850823a9 | ||
|   | 4da53b7382 | ||
|   | cb6f94735f | ||
|   | c073a20969 | ||
|   | 6dc8a385ee | ||
|   | f299c050b8 | ||
|   | eed540a51c | ||
|   | 5db72c4d71 | ||
|   | fc0bbfa759 | ||
|   | 6d63c81dd5 | ||
|   | bea42924cb | ||
|   | b48ef68c12 | ||
|   | 65109d140b | ||
|   | 0935bd4bd4 | ||
|   | 45bee7cc2f | ||
|   | 1c86a4bc26 | ||
|   | b385cf2a9f | ||
|   | 40d3dc454d | ||
|   | 8e92848495 | ||
|   | 2d94a22a30 | ||
|   | 7a5a091c25 | ||
|   | 2baf810c71 | ||
|   | d1ecef13ef | ||
|   | 495fa553ad | ||
|   | 854e649ea6 | ||
|   | c047324b42 | ||
|   | daac865c72 | ||
|   | 63d059b8d1 | ||
|   | e3075a0dc7 | ||
|   | 6b6e597b95 | ||
|   | eb0eadad5e | ||
|   | f600fee16d | ||
|   | 7b88c54aa6 | ||
|   | 623dd57cc3 | ||
|   | f6edd33adb | ||
|   | ac20d73222 | ||
|   | c59374d79d | ||
|   | 0d478046de | ||
|   | f3479d1b98 | ||
|   | 2fdecb8a38 | ||
|   | a95c3ee557 | ||
|   | 67c439c70a | ||
|   | b96037cffa | ||
|   | ebd8d34552 | ||
|   | a653d9a83e | ||
|   | 07d6894c42 | ||
|   | 03588b3fd6 | ||
|   | 2e83440e70 | ||
|   | 2633873fcc | ||
|   | 5f33713f53 | ||
|   | fe84c5010c | ||
|   | 7f39df0713 | ||
|   | 928d359dd2 | ||
|   | 184eb00133 | ||
|   | e264a49b08 | ||
|   | 8caf853c80 | ||
|   | b451c04787 | ||
|   | 1653977392 | ||
|   | a0d9def98a | ||
|   | 92701e5cec | ||
|   | 0b6b6a4f2f | ||
|   | 3a2dc95850 | ||
|   | 163cf49f16 | ||
|   | 37fc3103f6 | ||
|   | b7bd1ff69f | ||
|   | dc36134f10 | ||
|   | fea8821091 | ||
|   | 33faf40aca | ||
|   | 4410f8d7f7 | ||
|   | 3e6029e69d | ||
|   | 96c7707e6c | ||
|   | d8e545db3c | ||
|   | a9a6ba0aed | ||
|   | a898c6ceab | ||
|   | 0205c5c2d7 | ||
|   | f8074ab74b | ||
|   | f15c491d5f | ||
|   | c38a32dee9 | ||
|   | 4f5abed70d | ||
|   | c9ac9923df | ||
|   | bb14895fd8 | ||
|   | 6f92d601ec | ||
|   | 345143b0c1 | ||
|   | dc80d5d376 | ||
|   | d3544f9637 | ||
|   | 864b6ad1bd | ||
|   | c58027e521 | ||
|   | 10fb399588 | ||
|   | 10f466c895 | ||
|   | 32068b4bcc | ||
|   | 381f2b7fdf | ||
|   | 1c3c733c6b | ||
|   | 8bc5febe66 | ||
|   | 20335e23f9 | ||
|   | 9dbc9115c9 | ||
|   | fe707f88a4 | ||
|   | 9b23ebd4a3 | ||
|   | bea450cc2c | ||
|   | e80709f7aa | ||
| ![imgbot[bot]](/assets/img/avatar_default.png)  | cb71f92f42 | ||
|   | 2ca5348560 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c8e98fdf8e | ||
|   | 0bfa041026 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 33bf474a1e | ||
|   | 53c559c001 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1c99ef454b | ||
|   | cf4cecd4df | ||
|   | 6a8835b923 | ||
|   | f2b1cf92e1 | ||
|   | 6b79618e74 | ||
|   | 3db414add4 | ||
|   | 9ef641b403 | ||
|   | 6fa7819a44 | ||
|   | 59a1b9adbe | ||
|   | 3fbc7094f6 | ||
|   | 56c6227bc2 | ||
|   | ee82f99f5a | ||
|   | 72d9a46156 | ||
|   | 683a85ecc0 | ||
|   | 89047fd66d | ||
|   | 789de130a2 | ||
|   | 46c026ce70 | ||
|   | 82290f6e4e | ||
|   | 8729525f95 | ||
|   | df0115ffe8 | ||
|   | 0275b4fc9e | ||
|   | 9982fd71ba | ||
|   | 081060b7db | ||
|   | 0de64f1fc7 | ||
|   | f0508c0a90 | ||
|   | b51ae1dfaa | ||
|   | 6e7233d41b | ||
|   | 8ca27a4480 | ||
|   | 418041a56e | ||
|   | 17d20f5a18 | ||
|   | 77d2d84e05 | ||
|   | 3bde4285eb | ||
|   | 15efbfb244 | ||
|   | 55a57db958 | ||
|   | 91f624c900 | ||
|   | d753489e49 | ||
|   | 36dd7c82db | ||
|   | b00db74216 | ||
|   | cf9f85eb2a | ||
|   | bfa8414289 | ||
|   | 58dc9c9544 | ||
|   | ba95ce18a8 | ||
|   | ac10c40f31 | ||
|   | de8b40c80f | ||
|   | 60fe69728d | ||
|   | 557607e842 | ||
|   | 40ac9de728 | ||
|   | a725cd1946 | ||
|   | b648706756 | ||
|   | 20f2e9fc6d | ||
|   | 858ced0a53 | ||
|   | c9ca8f777f | ||
|   | 0d0be31527 | ||
|   | 96305a088c | ||
|   | 22e30b44b9 | ||
|   | 48d0e2fa5f | ||
|   | 0489291815 | ||
|   | 7a412500e1 | ||
|   | dffaa72a88 | ||
|   | 152d61f906 | ||
|   | b44ded5fc9 | ||
|   | 99d77cc843 | ||
|   | bc385eec2d | ||
|   | 2c6b9403b3 | ||
|   | 89cdc59fe5 | ||
|   | 3e04e1ccea | ||
|   | 25f491a65f | ||
|   | 7fdde157e0 | ||
|   | 27f30a449a | ||
|   | dc66a0cd66 | ||
|   | f302ecd1e2 | ||
|   | 1afc2a227a | ||
|   | ab594d1dfe | ||
|   | 647d32f506 | ||
|   | 1bc109b42c | ||
|   | 6e02e2a6b3 | ||
|   | 3372baad6c | ||
|   | e9b3e3877a | ||
|   | c84c5fbae7 | ||
|   | 2e7ab91f48 | ||
|   | 92c41c003a | ||
|   | 53688cdcdc | ||
|   | 70f864ea8b | ||
|   | 5dd94e551a | ||
|   | afc1ed9897 | ||
|   | df7562f98d | ||
|   | 1c7e799164 | ||
|   | 107a3f99f4 | ||
|   | 7e3cf4b4ad | ||
|   | afdb23ff57 | ||
|   | 0ce64f8c33 | ||
|   | 2cd6ccb85c | ||
|   | 3dcf5374c2 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1c7d5f3f64 | ||
|   | bb0cb0a866 | ||
|   | 362dc29057 | ||
|   | 8af0218e4c | ||
|   | 09af9968b5 | ||
|   | 7d0b819c5a | ||
|   | 4bbb7eded3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 72ea9e5522 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 743e5d947d | ||
|   | f257853906 | ||
|   | 32983d3829 | ||
|   | bdef33e88d | ||
|   | a4a4194586 | ||
|   | e36c538dc0 | ||
|   | 982a218bf2 | ||
|   | f7aeca4c7c | ||
|   | 4b81bc864f | ||
|   | a52cc62c04 | ||
|   | 81f69bff9e | ||
|   | d9b2aa1880 | ||
|   | 3bddd986a0 | ||
|   | d00712d817 | ||
|   | d756fdbebf | ||
|   | b2f2c74605 | ||
|   | 1407cd71b5 | ||
|   | 3dd3a7238d | ||
|   | afc834ae4b | ||
|   | 357f190ce3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ab92762320 | ||
|   | 04942c8477 | ||
|   | 9c60f51e0d | ||
|   | 956ae2ac46 | ||
|   | f2ed813337 | ||
|   | 7d9a7d1a3c | ||
|   | 2f67b6fb47 | ||
|   | 7444dde93e | ||
|   | e62fad7bc6 | ||
|   | 2c6bad2501 | ||
|   | 6952bb2eca | ||
|   | 610972dbde | ||
|   | 926049055a | ||
|   | db5f6b60df | ||
|   | 7be7b9d9fd | ||
|   | 366855c4cc | ||
|   | e950beeeab | ||
|   | 5515b39f6c | ||
|   | f5d0599e4d | ||
|   | 8fd7914f0f | ||
|   | 24ef98eb01 | ||
|   | b3dd6cf001 | ||
|   | 6d4b474cb1 | ||
|   | 0a8876a3ae | ||
|   | 9a83a48331 | ||
|   | 7ed50b90bd | ||
|   | b6fd5d7282 | ||
|   | 33243e7176 | ||
|   | e8439679a5 | ||
|   | 06124dbbd5 | ||
|   | 857940f402 | ||
|   | bcb04924ff | ||
|   | 2b6aeb9ebc | ||
|   | 648e4538fb | ||
|   | cd4b3777da | ||
|   | 4acf506b7e | ||
|   | 543ca348bc | ||
|   | 03375412f1 | ||
|   | 0c7a9b6827 | ||
|   | c54bc3c176 | ||
|   | 90973bedf4 | ||
|   | 757f70162e | ||
|   | 3047410b35 | ||
|   | 9d0d4c5eae | ||
|   | cab5b4d601 | ||
|   | 517b6e25d9 | ||
|   | 94d394c29e | ||
|   | a52099d175 | ||
|   | f1cb7b862d | ||
|   | 0863e5d379 | ||
|   | 55dcd25df1 | ||
|   | f3155ea180 | ||
|   | 2c5162671c | ||
|   | fc8aeb5a66 | ||
|   | 995cf503eb | ||
|   | 0e49c11a4c | ||
|   | 0367c37b0a | ||
|   | e0b9fe5e5d | ||
|   | a4726e683b | ||
|   | 3b10e93efe | ||
|   | 02b07c1b5b | ||
|   | 5e54751bd4 | ||
|   | 34f1dc238d | ||
|   | 3c0f4bdf35 | ||
|   | a68d370ad0 | ||
|   | debb27ed30 | ||
|   | 97fbb857fb | ||
|   | 93f13ffc8e | ||
|   | 4d9dc93d46 | ||
|   | 22cd4c5d16 | ||
|   | 6883994b22 | ||
|   | 852a312753 | ||
|   | afea0baaa8 | ||
|   | 2c477660a0 | ||
|   | 16a1cd3c9d | ||
|   | db23dd2e01 | ||
|   | eaa1ded5ba | ||
|   | 393e14196a | ||
|   | 8b005307ea | ||
|   | c915ac0e72 | ||
|   | 1752bb896e | ||
|   | 9c8fa026f3 | ||
|   | e93db6324a | ||
|   | a10708bffa | ||
|   | e65a7a142f | ||
|   | 72e0b2d470 | ||
|   | 43fb0f36a7 | ||
|   | cf3533221b | ||
|   | de522ebe14 | ||
|   | 2ace891dde | ||
|   | e212d9f991 | ||
|   | 739f3f84d0 | ||
|   | 5e206c86be | ||
|   | 1ab37011ea | ||
|   | b6e02f63cd | ||
|   | 60e10d4efa | ||
|   | 95ba7e43b1 | ||
|   | 9e5a2e5b17 | ||
|   | dbbc416095 | ||
|   | a479ad357c | ||
|   | b1c12abb7c | ||
|   | 17d1a1d7bd | 
							
								
								
									
										3
									
								
								.autogen/check_pr.jq
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | .[] | ||||||
|  | .head | ||||||
|  | .label | ||||||
							
								
								
									
										2
									
								
								.autogen/next_url.jq
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | |||||||
|  | .links | ||||||
|  | .next | ||||||
							
								
								
									
										39
									
								
								.autogen/patreon.jq
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | |||||||
|  | ( | ||||||
|  |   .data | | ||||||
|  |   map( | ||||||
|  |     select( | ||||||
|  |       .relationships | ||||||
|  |       .currently_entitled_tiers | ||||||
|  |       .data[] | ||||||
|  |     ) | ||||||
|  |   ) | | ||||||
|  |   map( | ||||||
|  |     .relationships | ||||||
|  |     .user | ||||||
|  |     .data | ||||||
|  |     .id | ||||||
|  |   ) | ||||||
|  | ) as $data | | ||||||
|  | .included | | ||||||
|  | map( | ||||||
|  |   select( | ||||||
|  |     .id as $id | | ||||||
|  |     $data | | ||||||
|  |     contains( | ||||||
|  |       [ | ||||||
|  |         $id | ||||||
|  |       ] | ||||||
|  |     ) | ||||||
|  |   ) | ||||||
|  | ) | | ||||||
|  | map( | ||||||
|  |   .attributes | | ||||||
|  |   [ | ||||||
|  |     .full_name, | ||||||
|  |     .thumb_url, | ||||||
|  |     .url | ||||||
|  |   ] | | ||||||
|  |   @tsv | ||||||
|  | ) | | ||||||
|  | .[] | | ||||||
|  | @text | ||||||
| @@ -5,7 +5,7 @@ | |||||||
| # __MISSKEY_HEAD=acid-chicken:patch-autogen | # __MISSKEY_HEAD=acid-chicken:patch-autogen | ||||||
| # __MISSKEY_REPO=syuilo/misskey | # __MISSKEY_REPO=syuilo/misskey | ||||||
| # __MISSKEY_BRANCH=develop | # __MISSKEY_BRANCH=develop | ||||||
| test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r '.[].head.label' | grep $__MISSKEY_HEAD)" && exit 1 | test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1 | ||||||
| cd "$(dirname $0)/.." && \ | cd "$(dirname $0)/.." && \ | ||||||
| touch null.cache && \ | touch null.cache && \ | ||||||
| rm *.cache && \ | rm *.cache && \ | ||||||
| @@ -30,12 +30,12 @@ while : | |||||||
|   touch patreon.cache && \ |   touch patreon.cache && \ | ||||||
|   rm patreon.cache && \ |   rm patreon.cache && \ | ||||||
|   cat patreon.raw.cache | \ |   cat patreon.raw.cache | \ | ||||||
|   jq -r '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \ |   jq -r -f patreon.jq >> patreon.cache && \ | ||||||
|   echo '<table><tr>' >> patreon.md.cache && \ |   echo '<table><tr>' >> patreon.md.cache && \ | ||||||
|   cat patreon.cache | \ |   cat patreon.cache | \ | ||||||
|   awk -F'\t' '{print $2,$1}' | \ |   awk -F'\t' '{print $2,$1}' | \ | ||||||
|   sed -e 's/ /\\" alt=\\"/' | \ |   sed -e 's/ /\\" alt=\\"/' | \ | ||||||
|   xargs -I% echo '<td><img src="%"></td>' >> patreon.md.cache && \ |   xargs -I% echo '<td><img src="%" width="100"></td>' >> patreon.md.cache && \ | ||||||
|   echo '</tr><tr>' >> patreon.md.cache && \ |   echo '</tr><tr>' >> patreon.md.cache && \ | ||||||
|   cat patreon.cache | \ |   cat patreon.cache | \ | ||||||
|   awk -F'\t' '{print $3,$1}' | \ |   awk -F'\t' '{print $3,$1}' | \ | ||||||
| @@ -43,7 +43,7 @@ while : | |||||||
|   xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \ |   xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \ | ||||||
|   echo '</tr></table>' >> patreon.md.cache || \ |   echo '</tr></table>' >> patreon.md.cache || \ | ||||||
|   exit 1 |   exit 1 | ||||||
|   new_url="$(cat patreon.raw.cache | jq -r '.links.next')" |   new_url="$(cat patreon.raw.cache | jq -r -f next_url.jq)" | ||||||
|   test "$new_url" = 'null' && \ |   test "$new_url" = 'null' && \ | ||||||
|   break || \ |   break || \ | ||||||
|   URL="$url" |   URL="$url" | ||||||
| @@ -108,13 +108,5 @@ autoAdmin: true | |||||||
| #  port: 9200 | #  port: 9200 | ||||||
| #  pass: null | #  pass: null | ||||||
|  |  | ||||||
| # ServiceWorker |  | ||||||
| #sw: |  | ||||||
| #  # Public key of VAPID |  | ||||||
| #  public_key: example-sw-public-key |  | ||||||
| # |  | ||||||
| #  # Private key of VAPID |  | ||||||
| #  private_key: example-sw-private-key |  | ||||||
|  |  | ||||||
| # Clustering | # Clustering | ||||||
| #clusterLimit: 1 | #clusterLimit: 1 | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | |||||||
|  | # Summary | ||||||
|  |  | ||||||
|  | <!-- | ||||||
|  |   - | ||||||
|  |   - * Please describe your changes here * | ||||||
|  |   - | ||||||
|  |   - If you are going to resolve some issue, please add this context. | ||||||
|  |   - Resolve #ISSUE_NUMBER | ||||||
|  |   - | ||||||
|  |   - If you are going to fix some bug issue, please add this context. | ||||||
|  |   - Fix #ISSUE_NUMBER | ||||||
|  |   - | ||||||
|  |   --> | ||||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -17,3 +17,4 @@ api-docs.json | |||||||
| /mongo | /mongo | ||||||
| /elasticsearch | /elasticsearch | ||||||
| *.code-workspace | *.code-workspace | ||||||
|  | yarn.lock | ||||||
|   | |||||||
							
								
								
									
										146
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						| @@ -1,9 +1,151 @@ | |||||||
| ChangeLog | ChangeLog | ||||||
| ========= | ========= | ||||||
|  |  | ||||||
| 破壊的変更のみ記載。 | 10.74.0 | ||||||
|  | ---------- | ||||||
|  | * Pleromaとのフェデレーションを修正 | ||||||
|  | * インスタンスのキャラクター画像を設定できるように | ||||||
|  | * Catモードの朝鮮語対応 | ||||||
|  | * CWが付いた投稿に返信する際、そのCWを引き継ぐように | ||||||
|  | * 投稿のソースをクリップボードにコピーできるように | ||||||
|  | * i/notifications API で取得する通知の種別を配列で指定できるように | ||||||
|  | * パフォーマンスの改善 | ||||||
|  | * バグ修正 | ||||||
|  |  | ||||||
| This document describes breaking changes only. | 10.73.0 | ||||||
|  | ------- | ||||||
|  | * テーマの強化 | ||||||
|  | * line thiknessの設定はデバイスに保存するように | ||||||
|  |  | ||||||
|  | 10.72.0 | ||||||
|  | ------- | ||||||
|  | * いくつかのテーマの追加 | ||||||
|  | * デザインの調整 | ||||||
|  | * バグ修正 | ||||||
|  | * など | ||||||
|  |  | ||||||
|  | 10.71.0 | ||||||
|  | ------- | ||||||
|  | * いくつかのテーマの追加 | ||||||
|  |  | ||||||
|  | 10.70.1 | ||||||
|  | ------- | ||||||
|  | * notes/mentions にミュートを適用するように | ||||||
|  | * Add id to return of users/relation | ||||||
|  | * デザインの調整 | ||||||
|  |  | ||||||
|  | 10.70.0 | ||||||
|  | ------- | ||||||
|  | * フォローしているユーザーからのフォローを自動承認するオプション | ||||||
|  | * 「非公開」の公開範囲を廃止 | ||||||
|  | * Renote数の表示を廃止 | ||||||
|  | * 投稿のフィルタリングを強化 | ||||||
|  | * デザインの調整 | ||||||
|  |  | ||||||
|  | 10.69.0 | ||||||
|  | ------- | ||||||
|  | * 通知の管理を強化 | ||||||
|  | * ユーザビリティの強化 | ||||||
|  | * デザインの調整 | ||||||
|  |  | ||||||
|  | 10.68.0 | ||||||
|  | ------- | ||||||
|  | * 特定ユーザーにメンション付きで新規投稿ができるボタンを追加 | ||||||
|  | * 自分の投稿にリアクションできないように | ||||||
|  | * 数式に文法エラーがあるとき、数式のソースをそのまま表示するように | ||||||
|  | * CWボタンにアンケートの有無を表記するように | ||||||
|  | * デスクトップ版で設定を新しいタブで開くように | ||||||
|  | * モバイル版で検索ができない問題を修正 | ||||||
|  | * i18nの修正 | ||||||
|  |  | ||||||
|  | 10.67.0 | ||||||
|  | ------- | ||||||
|  | * トークのメッセージを削除できるように | ||||||
|  | * リアクションを取り消せるように | ||||||
|  | * Misskey以外のソフトウェアからの「Like」アクティビティをプリンではなく「いいね」として扱うように | ||||||
|  | * i18nの修正 | ||||||
|  | * バグ修正 | ||||||
|  | * など | ||||||
|  |  | ||||||
|  | 10.66.2 | ||||||
|  | ------- | ||||||
|  | * i18nの修正 | ||||||
|  | * ドライブのファイル一覧取得APIでファイルサイズによるソートが機能していなかった問題を修正 | ||||||
|  | * リモートユーザーの更新時に、各ピン留め投稿の取得失敗は無視するように | ||||||
|  | * リモートMisskeyユーザーの情報が登録/更新出来なくなっていたのを修正 | ||||||
|  | * メンションのリンク先URLに余計な@がプリフィクスされていたのを修正 | ||||||
|  | * ダイレクトでリプライする際、リプライ先のユーザーは自動的に公開先として追加するように | ||||||
|  | * ダイレクトでメンションでもユーザーを指定できるように | ||||||
|  |  | ||||||
|  | 10.66.1 | ||||||
|  | ------- | ||||||
|  | * ActivityPubのsharedInboxに関して修正 | ||||||
|  | * MFMでのカッコの判定を改善 | ||||||
|  | * バグ修正 | ||||||
|  |  | ||||||
|  | 10.66.0 | ||||||
|  | ------- | ||||||
|  | * ユーザーごとのRSSフィードを提供するように | ||||||
|  | * リストのユーザーがすべて表示できない問題を修正 | ||||||
|  | * デザインの調整 | ||||||
|  | * パフォーマンスの改善 | ||||||
|  |  | ||||||
|  | 10.65.0 | ||||||
|  | ------- | ||||||
|  | * 検索で投稿やユーザーのURLを入力した際にそれをフェッチして表示するように | ||||||
|  | * リストのリネームと削除をできるように | ||||||
|  | * リストからユーザーを削除できるように | ||||||
|  | * リモートの絵文字を更新するように | ||||||
|  | * ActivityPubのための絵文字エンドポイントを実装 | ||||||
|  | * 管理者がドライブのファイルのNSFWを設定できるように | ||||||
|  | * ServiceWorkerの設定を管理者ページで行えるように | ||||||
|  | * メンションの判定を改善 | ||||||
|  | * リモートの投稿を引用した際にオリジナルのURLを挿入するように | ||||||
|  | * クライアントのパフォーマンス改善 | ||||||
|  | * CWの内容がタブタイトルに表示されるのを修正 | ||||||
|  | * アカウントを作成したときにログイン状態にならない問題を修正 | ||||||
|  | * 時計の針にテーマカラーが適用されていなかったのを修正 | ||||||
|  | * 一部の日時の表示が日本語で表示されていたのを修正 | ||||||
|  | * プロフィールの写真欄に画像以外のファイルが含まれる問題を修正 | ||||||
|  | * メンションが含まれる投稿に返信する際、フォームに予めそれらのメンションがセットされた状態にならない問題を修正 | ||||||
|  | * デッキのTLにUIの動きを減らすオプションが適用されていなかったのを修正 | ||||||
|  | * ログイン画面のタイムラインに隠した投稿が表示される問題を修正 | ||||||
|  | * サジェストが複数開いてしまう問題を修正 | ||||||
|  | * APから来たタグに登録時の長さ制限が適用されていなかったのを修正 | ||||||
|  |  | ||||||
|  | 10.64.2 | ||||||
|  | ------- | ||||||
|  | * UIの動きを減らすオプションが一部のアニメーションに適用されなかったのを修正 | ||||||
|  |  | ||||||
|  | 10.64.1 | ||||||
|  | ------- | ||||||
|  | * レートリミットの調整 | ||||||
|  | * アニメーションの調整 | ||||||
|  |  | ||||||
|  | 10.64.0 | ||||||
|  | ------- | ||||||
|  | * いくつかのアニメーションを追加 | ||||||
|  | * OGP向けにインスタンスのバナー画像を提供するように | ||||||
|  | * 管理者ページでドライブのファイルを表示できるように | ||||||
|  | * ユーザビリティの強化 | ||||||
|  | * バグ修正 | ||||||
|  |  | ||||||
|  | 10.63.1 | ||||||
|  | ------- | ||||||
|  | * メンションの表示を改善 | ||||||
|  | * バグ修正 | ||||||
|  |  | ||||||
|  | 10.63.0 | ||||||
|  | ------- | ||||||
|  | * ActivityPubのユーザーフィールドをユーザーページに表示 | ||||||
|  | * 404ページの実装 | ||||||
|  | * パフォーマンスの向上 | ||||||
|  | * バグ修正 | ||||||
|  |  | ||||||
|  | 10.62.2 | ||||||
|  | ------- | ||||||
|  | * バグ修正 | ||||||
|  | * ユーザビリティの向上 | ||||||
|  |  | ||||||
| 10.0.0 | 10.0.0 | ||||||
| ------ | ------ | ||||||
|   | |||||||
| @@ -25,3 +25,16 @@ Misskey uses [vue-i18n](https://github.com/kazupon/vue-i18n). | |||||||
| ## Continuous integration | ## Continuous integration | ||||||
| Misskey uses CircleCI for automated test. | Misskey uses CircleCI for automated test. | ||||||
| Configuration files are located in `/.circleci`. | Configuration files are located in `/.circleci`. | ||||||
|  |  | ||||||
|  | ## Glossary | ||||||
|  | ### AP | ||||||
|  | Stands for _**A**ctivity**P**ub_. | ||||||
|  |  | ||||||
|  | ### MFM | ||||||
|  | Stands for _**M**isskey **F**lavored **M**arkdown_. | ||||||
|  |  | ||||||
|  | ### Mk | ||||||
|  | Stands for _**M**iss**k**ey_. | ||||||
|  |  | ||||||
|  | ### SW | ||||||
|  | Stands for _**S**ervice**W**orker_. | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						| @@ -8,18 +8,20 @@ WORKDIR /misskey | |||||||
|  |  | ||||||
| FROM base AS builder | FROM base AS builder | ||||||
|  |  | ||||||
|  | RUN unlink /usr/bin/free | ||||||
| RUN apk add --no-cache \ | RUN apk add --no-cache \ | ||||||
|     gcc \ |  | ||||||
|     g++ \ |  | ||||||
|     libc-dev \ |  | ||||||
|     python \ |  | ||||||
|     autoconf \ |     autoconf \ | ||||||
|     automake \ |     automake \ | ||||||
|     file \ |     file \ | ||||||
|  |     g++ \ | ||||||
|  |     gcc \ | ||||||
|  |     libc-dev \ | ||||||
|  |     libtool \ | ||||||
|     make \ |     make \ | ||||||
|     nasm \ |     nasm \ | ||||||
|     pkgconfig \ |     pkgconfig \ | ||||||
|     libtool \ |     procps \ | ||||||
|  |     python \ | ||||||
|     zlib-dev |     zlib-dev | ||||||
| RUN npm i -g node-gyp | RUN npm i -g node-gyp | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @@ -3,9 +3,9 @@ | |||||||
| [](https://misskey.xyz/) | [](https://misskey.xyz/) | ||||||
| ================================================================ | ================================================================ | ||||||
|  |  | ||||||
| [](https://circleci.com/gh/syuilo/misskey) | [](https://circleci.com/gh/syuilo/misskey) | ||||||
| [![][dependencies-badge]][dependencies-link] | [](https://david-dm.org/syuilo/misskey) | ||||||
| [](http://makeapullrequest.com) | [](http://makeapullrequest.com) | ||||||
|  |  | ||||||
| **Sophisticated microblogging platform, evolving forever.** | **Sophisticated microblogging platform, evolving forever.** | ||||||
|  |  | ||||||
| @@ -73,60 +73,62 @@ Please see [Contribution guide](./CONTRIBUTING.md). | |||||||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ||||||
| <!-- PATREON_START --> | <!-- PATREON_START --> | ||||||
| <table><tr> | <table><tr> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=WeuDzzz24cRXJogyIkU-mxARqkdyms-rcZKbO-GpGjw%3D" alt="weep" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=prtYqPOiSHBulhM7NU0VzMaWx39-9ntdq25b6kafDNA%3D" alt="negao" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=djaJ9cwy9uwTiF9UFtxYQdS8Nw7BhyfaREzZUbErN-0%3D" alt="Melilot" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/3?token-time=2145916800&token-hash=LtV2lRi3L2jOWMLwccr9qWYfPrFlzIo2jYZHKzHEb6k%3D" alt="Xeltica" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=Ch3iF81ZGP0LMo894Y9ajpLisgtE91SnxtZE7fxsgrM%3D" alt="べすれい" width="100"></td> | ||||||
| <td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=1FlxS9MEgmNGH_RHUVHbO5hIXB5I1z0lvA33CTvYvjA%3D" alt="gutfuckllc" width="100"></td> | ||||||
| </tr><tr> | </tr><tr> | ||||||
|  | <td><a href="https://www.patreon.com/weepjp">weep</a></td> | ||||||
| <td><a href="https://www.patreon.com/negao">negao</a></td> | <td><a href="https://www.patreon.com/negao">negao</a></td> | ||||||
| <td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td> | <td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td> | ||||||
|  | <td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td> | ||||||
| <td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td> | <td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td> | ||||||
| <td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td> | <td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td> | ||||||
| <td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td> |  | ||||||
| <td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td> |  | ||||||
| </tr></table> | </tr></table> | ||||||
| <table><tr> | <table><tr> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=0xgcpqvFDqRcV_YIEhcPNVH7gs9sLg_BBnTJXCkN4ao%3D" alt="mydarkstar" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td> | <td><img src="https://c8.patreon.com/2/200/12718187" alt="Peter G." width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=2PsbFNw0tnubZzgSXD01R6hIgncfiElG7H7HX2Y3dyo%3D" alt="nemu" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=9JtETp0X8gI280Ne1E8bxn6j4Lw5o2k4mJkICx97V_k%3D" alt="YUKIMOCHI" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=zrInDotuEIFslKphuSiCqr3M-r-rveTXjVKWr-VK6M0%3D" alt="Acid Chicken" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=5T8XcaAf9Zyzfg3QubR06s_kJZkArVEM2dwObrBVAU4%3D" alt="Hiratake" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td> | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=ubVARikVOg3v7NW6LDhtG-ClE1LTU3I2TJ3js2-5xDs%3D" alt="Naoki Hirayama" width="100"></td> | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td> |  | ||||||
| </tr><tr> | </tr><tr> | ||||||
|  | <td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td> | ||||||
|  | <td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td> | ||||||
| <td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td> | <td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td> | ||||||
| <td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td> | <td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td> | ||||||
| <td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td> | <td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td> | ||||||
| <td><a href="https://www.patreon.com/hiratake">Hiratake</a></td> | <td><a href="https://www.patreon.com/hiratake">Hiratake</a></td> | ||||||
| <td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td> | <td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td> | ||||||
|  | </tr></table> | ||||||
|  | <table><tr> | ||||||
|  | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=Ksk_2l3gjPDbnzMUOCSW1E-hdPJsNs2tSR4_RAakRK8%3D" alt="dansup" width="100"></td> | ||||||
|  | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=CXe9AqlZy9AsYfiWd3OBYVOzvODoN47Litz0Tu4BFpU%3D" alt="Gargron" width="100"></td> | ||||||
|  | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=xhR1n6NAAyEb-IUXLD6_dshkFa3mefU5ZZuk1L8qKTs%3D" alt="Nokotaro Takeda" width="100"></td> | ||||||
|  | <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=uR-48MQ0A4j0irQSrCAQZJ-sJUSs_Fkihlg3-l59b7c%3D" alt="Takashi Shibuya" width="100"></td> | ||||||
|  | </tr><tr> | ||||||
| <td><a href="https://www.patreon.com/dansup">dansup</a></td> | <td><a href="https://www.patreon.com/dansup">dansup</a></td> | ||||||
| <td><a href="https://www.patreon.com/mastodon">Gargron</a></td> | <td><a href="https://www.patreon.com/mastodon">Gargron</a></td> | ||||||
| <td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td> | <td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td> | ||||||
| </tr></table> |  | ||||||
| <table><tr> |  | ||||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td> |  | ||||||
| </tr><tr> |  | ||||||
| <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> | <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> | ||||||
| </tr></table> | </tr></table> | ||||||
|  |  | ||||||
| **Last updated:** Fri, 23 Nov 2018 14:09:04 UTC | **Last updated:** Sun, 06 Jan 2019 21:53:06 UTC | ||||||
| <!-- PATREON_END --> | <!-- PATREON_END --> | ||||||
|  |  | ||||||
| :four_leaf_clover: Copyright | :four_leaf_clover: Copyright | ||||||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ||||||
| > Copyright (c) 2014-2018 syuilo | > Copyright (c) 2014-2019 syuilo | ||||||
|  |  | ||||||
| Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE). | Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE). | ||||||
|  |  | ||||||
| [![][agpl-3.0-badge]][AGPL-3.0] | [![][agpl-3.0-badge]][AGPL-3.0] | ||||||
|  |  | ||||||
| [agpl-3.0]:           https://www.gnu.org/licenses/agpl-3.0.en.html | [agpl-3.0]:           https://www.gnu.org/licenses/agpl-3.0.en.html | ||||||
| [agpl-3.0-badge]:     https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=flat-square | [agpl-3.0-badge]:     https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=for-the-badge | ||||||
| [dependencies-link]:  https://david-dm.org/syuilo/misskey |  | ||||||
| [dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square |  | ||||||
|  |  | ||||||
| [backer-url]: #backers | [backer-url]: #backers | ||||||
| [backer-badge]: https://opencollective.com/misskey/backers/badge.svg | [backer-badge]: https://opencollective.com/misskey/backers/badge.svg | ||||||
|   | |||||||
| Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 94 KiB | 
| Before Width: | Height: | Size: 344 KiB After Width: | Height: | Size: 317 KiB | 
| Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 95 KiB | 
| Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 200 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/ai.png
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 235 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 6.8 KiB | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB | 
| @@ -1,108 +1,17 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> |  | ||||||
| 
 |  | ||||||
| <svg | <svg | ||||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" |    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||||
|    xmlns:cc="http://creativecommons.org/ns#" |    xmlns:cc="http://creativecommons.org/ns#" | ||||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||||
|    xmlns:svg="http://www.w3.org/2000/svg" |    xmlns:svg="http://www.w3.org/2000/svg" | ||||||
|    xmlns="http://www.w3.org/2000/svg" |    xmlns="http://www.w3.org/2000/svg" | ||||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |  | ||||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |  | ||||||
|    width="512" |  | ||||||
|    height="512" |  | ||||||
|    viewBox="0 0 135.46667 135.46667" |  | ||||||
|    version="1.1" |  | ||||||
|    id="svg8" |    id="svg8" | ||||||
|    inkscape:version="0.92.1 r15371" |    version="1.1" | ||||||
|    sodipodi:docname="favicon.svg" |    viewBox="0 0 135.46667 135.46667" | ||||||
|    inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\16.png" |    height="512" | ||||||
|    inkscape:export-xdpi="3" |    width="512"> | ||||||
|    inkscape:export-ydpi="3"> |  | ||||||
|   <defs |   <defs | ||||||
|      id="defs2"> |      id="defs2" /> | ||||||
|     <inkscape:path-effect |  | ||||||
|        effect="simplify" |  | ||||||
|        id="path-effect5115" |  | ||||||
|        is_visible="true" |  | ||||||
|        steps="1" |  | ||||||
|        threshold="0.000408163" |  | ||||||
|        smooth_angles="360" |  | ||||||
|        helper_size="0" |  | ||||||
|        simplify_individual_paths="false" |  | ||||||
|        simplify_just_coalesce="false" |  | ||||||
|        simplifyindividualpaths="false" |  | ||||||
|        simplifyJustCoalesce="false" /> |  | ||||||
|     <inkscape:path-effect |  | ||||||
|        effect="simplify" |  | ||||||
|        id="path-effect5111" |  | ||||||
|        is_visible="true" |  | ||||||
|        steps="1" |  | ||||||
|        threshold="0.000408163" |  | ||||||
|        smooth_angles="360" |  | ||||||
|        helper_size="0" |  | ||||||
|        simplify_individual_paths="false" |  | ||||||
|        simplify_just_coalesce="false" |  | ||||||
|        simplifyindividualpaths="false" |  | ||||||
|        simplifyJustCoalesce="false" /> |  | ||||||
|     <inkscape:path-effect |  | ||||||
|        effect="simplify" |  | ||||||
|        id="path-effect5104" |  | ||||||
|        is_visible="true" |  | ||||||
|        steps="1" |  | ||||||
|        threshold="0.000408163" |  | ||||||
|        smooth_angles="360" |  | ||||||
|        helper_size="0" |  | ||||||
|        simplify_individual_paths="false" |  | ||||||
|        simplify_just_coalesce="false" |  | ||||||
|        simplifyindividualpaths="false" |  | ||||||
|        simplifyJustCoalesce="false" /> |  | ||||||
|   </defs> |  | ||||||
|   <sodipodi:namedview |  | ||||||
|      id="base" |  | ||||||
|      pagecolor="#ffffff" |  | ||||||
|      bordercolor="#666666" |  | ||||||
|      borderopacity="1.0" |  | ||||||
|      inkscape:pageopacity="0.0" |  | ||||||
|      inkscape:pageshadow="2" |  | ||||||
|      inkscape:zoom="1.4142136" |  | ||||||
|      inkscape:cx="15.466544" |  | ||||||
|      inkscape:cy="235.92965" |  | ||||||
|      inkscape:document-units="px" |  | ||||||
|      inkscape:current-layer="g4502" |  | ||||||
|      showgrid="true" |  | ||||||
|      units="px" |  | ||||||
|      inkscape:snap-bbox="true" |  | ||||||
|      inkscape:bbox-nodes="true" |  | ||||||
|      inkscape:snap-bbox-edge-midpoints="false" |  | ||||||
|      inkscape:snap-smooth-nodes="true" |  | ||||||
|      inkscape:snap-center="true" |  | ||||||
|      inkscape:snap-page="true" |  | ||||||
|      inkscape:window-width="1920" |  | ||||||
|      inkscape:window-height="1027" |  | ||||||
|      inkscape:window-x="-8" |  | ||||||
|      inkscape:window-y="1072" |  | ||||||
|      inkscape:window-maximized="1" |  | ||||||
|      inkscape:snap-object-midpoints="true" |  | ||||||
|      inkscape:snap-midpoints="true" |  | ||||||
|      inkscape:object-paths="true" |  | ||||||
|      fit-margin-top="0" |  | ||||||
|      fit-margin-left="0" |  | ||||||
|      fit-margin-right="0" |  | ||||||
|      fit-margin-bottom="0" |  | ||||||
|      objecttolerance="1" |  | ||||||
|      guidetolerance="1" |  | ||||||
|      inkscape:snap-nodes="false" |  | ||||||
|      inkscape:snap-others="false"> |  | ||||||
|     <inkscape:grid |  | ||||||
|        type="xygrid" |  | ||||||
|        id="grid4504" |  | ||||||
|        spacingx="4.2333334" |  | ||||||
|        spacingy="4.2333334" |  | ||||||
|        empcolor="#ff3fff" |  | ||||||
|        empopacity="0.25098039" |  | ||||||
|        empspacing="4" /> |  | ||||||
|   </sodipodi:namedview> |  | ||||||
|   <metadata |   <metadata | ||||||
|      id="metadata5"> |      id="metadata5"> | ||||||
|     <rdf:RDF> |     <rdf:RDF> | ||||||
| @@ -116,32 +25,27 @@ | |||||||
|     </rdf:RDF> |     </rdf:RDF> | ||||||
|   </metadata> |   </metadata> | ||||||
|   <g |   <g | ||||||
|      inkscape:label="レイヤー 1" |      style="fill:#2fa3bc;fill-opacity:1" | ||||||
|      inkscape:groupmode="layer" |      transform="translate(-30.809093,-111.78601)" | ||||||
|      id="layer1" |      id="layer1"> | ||||||
|      transform="translate(-30.809093,-111.78601)"> |  | ||||||
|     <g |     <g | ||||||
|        id="g4502" |        style="fill:#2fa3bc;fill-opacity:1" | ||||||
|        transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"> |        transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)" | ||||||
|  |        id="g4502"> | ||||||
|       <g |       <g | ||||||
|          style="fill:#2fa1bb;fill-opacity:1" |          id="g5125" | ||||||
|          id="g5125"> |          transform="translate(-1.3333333e-6,-1.3439941e-6)" | ||||||
|  |          style="fill:#2fa3bc;fill-opacity:1"> | ||||||
|         <g |         <g | ||||||
|            transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)" |            aria-label="Mi" | ||||||
|  |            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#2fa3bc;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||||
|            id="text4489" |            id="text4489" | ||||||
|            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#2fa1bb;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |            transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"> | ||||||
|            aria-label="Mi"> |  | ||||||
|           <path |           <path | ||||||
|              sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz" |  | ||||||
|              inkscape:connector-curvature="0" |  | ||||||
|              id="path5210" |              id="path5210" | ||||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px" |              transform="matrix(0.26412464,0,0,0.26412464,24.988264,136.28626)" | ||||||
|              d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" /> |              d="m 62.474609,76.585938 c -7.47555,0 -14.595784,1.246427 -21.359375,3.738281 C 29.011968,84.595952 19.044417,92.249798 11.212891,103.28516 3.7373405,113.96451 0,125.88934 0,139.06055 v 233.8789 c 0,17.08697 6.0510264,31.85913 18.154297,44.31836 12.459246,12.10327 27.233346,18.15625 44.320312,18.15625 17.442947,0 32.215089,-6.05298 44.318361,-18.15625 12.45925,-12.45923 18.68945,-27.23139 18.68945,-44.31836 V 330.4082 c 0.13441,-9.21122 9.6225,-6.79429 14.41797,0 8.98111,15.55395 28.02226,28.91242 50.19141,28.83594 22.16915,-0.0764 40.58194,-11.03699 50.19336,-28.83594 3.63981,-4.29263 13.89902,-11.60675 14.95117,0 v 42.53125 c 0,17.08697 6.05102,31.85913 18.15429,44.31836 12.45923,12.10327 27.23335,18.15625 44.32032,18.15625 17.44294,0 32.21509,-6.05298 44.31836,-18.15625 12.45923,-12.45923 18.68945,-27.23139 18.68945,-44.31836 v -233.8789 c 0,-13.17121 -3.9146,-25.09604 -11.74609,-35.77539 -7.47557,-11.035362 -17.26588,-18.689208 -29.36914,-22.960941 -7.11956,-2.491854 -14.23982,-3.738281 -21.35938,-3.738281 -19.22286,0 -35.41865,7.476649 -48.58984,22.427734 l -63.40235,74.199218 c -1.42391,1.06791 -6.14093,9.23242 -16.16015,9.23242 -10.01923,0 -14.20109,-8.16451 -15.625,-9.23242 L 110.53125,99.013672 C 97.716024,84.062587 81.697447,76.585938 62.474609,76.585938 Z m 395.060551,0 c -14.9511,-10e-7 -27.76596,5.340179 -38.44532,16.019531 -10.32338,10.323381 -15.48437,22.961011 -15.48437,37.912111 0,14.9511 5.16099,27.76596 15.48437,38.44531 10.67936,10.32338 23.49422,15.48633 38.44532,15.48633 14.95109,0 27.76596,-5.16295 38.44531,-15.48633 C 506.65982,158.28354 512,145.46868 512,130.51758 512,115.56648 506.65982,102.92885 495.98047,92.605469 485.30112,81.926117 472.48625,76.585938 457.53516,76.585938 Z m 0.5332,118.541012 c -14.9511,0 -27.76596,5.34018 -38.44531,16.01953 -10.67936,10.67936 -16.01758,23.49422 -16.01758,38.44532 v 131.89062 c 0,14.9511 5.33822,27.76596 16.01758,38.44531 10.67935,10.32339 23.49421,15.48633 38.44531,15.48633 14.9511,0 27.58873,-5.16294 37.91211,-15.48633 C 506.65982,409.24838 512,396.43352 512,381.48242 V 249.5918 c 0,-14.9511 -5.34018,-27.76596 -16.01953,-38.44532 -10.32338,-10.67935 -22.96101,-16.01953 -37.91211,-16.01953 z" | ||||||
|           <path |              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa3bc;fill-opacity:1;stroke-width:1.09609616px" /> | ||||||
|              inkscape:connector-curvature="0" |  | ||||||
|              id="path5212" |  | ||||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px" |  | ||||||
|              d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" /> |  | ||||||
|         </g> |         </g> | ||||||
|       </g> |       </g> | ||||||
|     </g> |     </g> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 4.1 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 446 B After Width: | Height: | Size: 430 B | 
| Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.0 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 774 B After Width: | Height: | Size: 671 B | 
| Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1015 B | 
							
								
								
									
										129
									
								
								assets/mi.svg
									
									
									
									
									
								
							
							
						
						| @@ -1,108 +1,17 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> |  | ||||||
| 
 |  | ||||||
| <svg | <svg | ||||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" |    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||||
|    xmlns:cc="http://creativecommons.org/ns#" |    xmlns:cc="http://creativecommons.org/ns#" | ||||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||||
|    xmlns:svg="http://www.w3.org/2000/svg" |    xmlns:svg="http://www.w3.org/2000/svg" | ||||||
|    xmlns="http://www.w3.org/2000/svg" |    xmlns="http://www.w3.org/2000/svg" | ||||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |  | ||||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |  | ||||||
|    width="512" |  | ||||||
|    height="512" |  | ||||||
|    viewBox="0 0 135.46667 135.46667" |  | ||||||
|    version="1.1" |  | ||||||
|    id="svg8" |    id="svg8" | ||||||
|    inkscape:version="0.92.1 r15371" |    version="1.1" | ||||||
|    sodipodi:docname="mi.svg" |    viewBox="0 0 135.46667 135.46667" | ||||||
|    inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\32.png" |    height="512" | ||||||
|    inkscape:export-xdpi="6" |    width="512"> | ||||||
|    inkscape:export-ydpi="6"> |  | ||||||
|   <defs |   <defs | ||||||
|      id="defs2"> |      id="defs2" /> | ||||||
|     <inkscape:path-effect |  | ||||||
|        effect="simplify" |  | ||||||
|        id="path-effect5115" |  | ||||||
|        is_visible="true" |  | ||||||
|        steps="1" |  | ||||||
|        threshold="0.000408163" |  | ||||||
|        smooth_angles="360" |  | ||||||
|        helper_size="0" |  | ||||||
|        simplify_individual_paths="false" |  | ||||||
|        simplify_just_coalesce="false" |  | ||||||
|        simplifyindividualpaths="false" |  | ||||||
|        simplifyJustCoalesce="false" /> |  | ||||||
|     <inkscape:path-effect |  | ||||||
|        effect="simplify" |  | ||||||
|        id="path-effect5111" |  | ||||||
|        is_visible="true" |  | ||||||
|        steps="1" |  | ||||||
|        threshold="0.000408163" |  | ||||||
|        smooth_angles="360" |  | ||||||
|        helper_size="0" |  | ||||||
|        simplify_individual_paths="false" |  | ||||||
|        simplify_just_coalesce="false" |  | ||||||
|        simplifyindividualpaths="false" |  | ||||||
|        simplifyJustCoalesce="false" /> |  | ||||||
|     <inkscape:path-effect |  | ||||||
|        effect="simplify" |  | ||||||
|        id="path-effect5104" |  | ||||||
|        is_visible="true" |  | ||||||
|        steps="1" |  | ||||||
|        threshold="0.000408163" |  | ||||||
|        smooth_angles="360" |  | ||||||
|        helper_size="0" |  | ||||||
|        simplify_individual_paths="false" |  | ||||||
|        simplify_just_coalesce="false" |  | ||||||
|        simplifyindividualpaths="false" |  | ||||||
|        simplifyJustCoalesce="false" /> |  | ||||||
|   </defs> |  | ||||||
|   <sodipodi:namedview |  | ||||||
|      id="base" |  | ||||||
|      pagecolor="#ffffff" |  | ||||||
|      bordercolor="#666666" |  | ||||||
|      borderopacity="1.0" |  | ||||||
|      inkscape:pageopacity="0.0" |  | ||||||
|      inkscape:pageshadow="2" |  | ||||||
|      inkscape:zoom="1.4142136" |  | ||||||
|      inkscape:cx="232.39583" |  | ||||||
|      inkscape:cy="251.50613" |  | ||||||
|      inkscape:document-units="px" |  | ||||||
|      inkscape:current-layer="g4502" |  | ||||||
|      showgrid="true" |  | ||||||
|      units="px" |  | ||||||
|      inkscape:snap-bbox="true" |  | ||||||
|      inkscape:bbox-nodes="true" |  | ||||||
|      inkscape:snap-bbox-edge-midpoints="false" |  | ||||||
|      inkscape:snap-smooth-nodes="true" |  | ||||||
|      inkscape:snap-center="true" |  | ||||||
|      inkscape:snap-page="true" |  | ||||||
|      inkscape:window-width="1920" |  | ||||||
|      inkscape:window-height="1027" |  | ||||||
|      inkscape:window-x="-8" |  | ||||||
|      inkscape:window-y="1072" |  | ||||||
|      inkscape:window-maximized="1" |  | ||||||
|      inkscape:snap-object-midpoints="true" |  | ||||||
|      inkscape:snap-midpoints="true" |  | ||||||
|      inkscape:object-paths="true" |  | ||||||
|      fit-margin-top="0" |  | ||||||
|      fit-margin-left="0" |  | ||||||
|      fit-margin-right="0" |  | ||||||
|      fit-margin-bottom="0" |  | ||||||
|      objecttolerance="1" |  | ||||||
|      guidetolerance="1" |  | ||||||
|      inkscape:snap-nodes="false" |  | ||||||
|      inkscape:snap-others="false"> |  | ||||||
|     <inkscape:grid |  | ||||||
|        type="xygrid" |  | ||||||
|        id="grid4504" |  | ||||||
|        spacingx="4.2333334" |  | ||||||
|        spacingy="4.2333334" |  | ||||||
|        empcolor="#ff3fff" |  | ||||||
|        empopacity="0.25098039" |  | ||||||
|        empspacing="4" /> |  | ||||||
|   </sodipodi:namedview> |  | ||||||
|   <metadata |   <metadata | ||||||
|      id="metadata5"> |      id="metadata5"> | ||||||
|     <rdf:RDF> |     <rdf:RDF> | ||||||
| @@ -111,32 +20,30 @@ | |||||||
|         <dc:format>image/svg+xml</dc:format> |         <dc:format>image/svg+xml</dc:format> | ||||||
|         <dc:type |         <dc:type | ||||||
|            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||||
|         <dc:title /> |         <dc:title></dc:title> | ||||||
|       </cc:Work> |       </cc:Work> | ||||||
|     </rdf:RDF> |     </rdf:RDF> | ||||||
|   </metadata> |   </metadata> | ||||||
|   <g |   <g | ||||||
|      inkscape:label="レイヤー 1" |      transform="translate(-30.809093,-111.78601)" | ||||||
|      inkscape:groupmode="layer" |      id="layer1"> | ||||||
|      id="layer1" |  | ||||||
|      transform="translate(-30.809093,-111.78601)"> |  | ||||||
|     <g |     <g | ||||||
|        id="g4502" |        transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)" | ||||||
|        transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"> |        id="g4502"> | ||||||
|       <g |       <g | ||||||
|          style="fill:#000000;fill-opacity:1" |          id="g5125" | ||||||
|          transform="translate(-1.3333333e-6,-1.3439941e-6)" |          transform="translate(-1.3333333e-6,-1.3439941e-6)" | ||||||
|          id="g5125"> |          style="fill:#000000;fill-opacity:1"> | ||||||
|         <g |         <g | ||||||
|            transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)" |            aria-label="Mi" | ||||||
|            id="text4489" |  | ||||||
|            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |            style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||||||
|            aria-label="Mi"> |            id="text4489" | ||||||
|  |            transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"> | ||||||
|           <path |           <path | ||||||
|              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#000000;fill-opacity:1;stroke-width:1.09609616px" |              id="path5210" | ||||||
|              d="M 62.474609 76.585938 C 54.999059 76.585938 47.878825 77.832365 41.115234 80.324219 C 29.011968 84.595952 19.044417 92.249798 11.212891 103.28516 C 3.7373405 113.96451 0 125.88934 0 139.06055 L 0 372.93945 C 0 390.02642 6.0510264 404.79858 18.154297 417.25781 C 30.613543 429.36108 45.387643 435.41406 62.474609 435.41406 C 79.917556 435.41406 94.689698 429.36108 106.79297 417.25781 C 119.25222 404.79858 125.48242 390.02642 125.48242 372.93945 L 125.48242 330.4082 C 125.61683 321.19698 135.10492 323.61391 139.90039 330.4082 C 148.8815 345.96215 167.92265 359.32062 190.0918 359.24414 C 212.26095 359.16778 230.67374 348.20715 240.28516 330.4082 C 243.92497 326.11557 254.18418 318.80145 255.23633 330.4082 L 255.23633 372.93945 C 255.23633 390.02642 261.28735 404.79858 273.39062 417.25781 C 285.84985 429.36108 300.62397 435.41406 317.71094 435.41406 C 335.15388 435.41406 349.92603 429.36108 362.0293 417.25781 C 374.48853 404.79858 380.71875 390.02642 380.71875 372.93945 L 380.71875 139.06055 C 380.71875 125.88934 376.80415 113.96451 368.97266 103.28516 C 361.49709 92.249798 351.70678 84.595952 339.60352 80.324219 C 332.48396 77.832365 325.3637 76.585938 318.24414 76.585938 C 299.02128 76.585938 282.82549 84.062587 269.6543 99.013672 C 262.53473 107.20121 258.79542 111.11761 258.43945 110.76172 C 258.43945 110.76172 207.67587 172.14495 206.25195 173.21289 C 204.82804 174.2808 200.11102 182.44531 190.0918 182.44531 C 180.07257 182.44531 175.89071 174.2808 174.4668 173.21289 C 173.04288 172.14495 122.2793 110.76172 122.2793 110.76172 C 121.21136 110.40575 117.29484 106.48923 110.53125 99.013672 C 97.716024 84.062587 81.697447 76.585938 62.474609 76.585938 z M 457.53516 76.585938 C 442.58406 76.585937 429.7692 81.926117 419.08984 92.605469 C 408.76646 102.92885 403.60547 115.56648 403.60547 130.51758 C 403.60547 145.46868 408.76646 158.28354 419.08984 168.96289 C 429.7692 179.28627 442.58406 184.44922 457.53516 184.44922 C 472.48625 184.44922 485.30112 179.28627 495.98047 168.96289 C 506.65982 158.28354 512 145.46868 512 130.51758 C 512 115.56648 506.65982 102.92885 495.98047 92.605469 C 485.30112 81.926117 472.48625 76.585938 457.53516 76.585938 z M 458.06836 195.12695 C 443.11726 195.12695 430.3024 200.46713 419.62305 211.14648 C 408.94369 221.82584 403.60547 234.6407 403.60547 249.5918 L 403.60547 381.48242 C 403.60547 396.43352 408.94369 409.24838 419.62305 419.92773 C 430.3024 430.25112 443.11726 435.41406 458.06836 435.41406 C 473.01946 435.41406 485.65709 430.25112 495.98047 419.92773 C 506.65982 409.24838 512 396.43352 512 381.48242 L 512 249.5918 C 512 234.6407 506.65982 221.82584 495.98047 211.14648 C 485.65709 200.46713 473.01946 195.12695 458.06836 195.12695 z " |  | ||||||
|              transform="matrix(0.26412464,0,0,0.26412464,24.988264,136.28626)" |              transform="matrix(0.26412464,0,0,0.26412464,24.988264,136.28626)" | ||||||
|              id="path5210" /> |              d="m 62.474609,76.585938 c -7.47555,0 -14.595784,1.246427 -21.359375,3.738281 C 29.011968,84.595952 19.044417,92.249798 11.212891,103.28516 3.7373405,113.96451 0,125.88934 0,139.06055 v 233.8789 c 0,17.08697 6.0510264,31.85913 18.154297,44.31836 12.459246,12.10327 27.233346,18.15625 44.320312,18.15625 17.442947,0 32.215089,-6.05298 44.318361,-18.15625 12.45925,-12.45923 18.68945,-27.23139 18.68945,-44.31836 V 330.4082 c 0.13441,-9.21122 9.6225,-6.79429 14.41797,0 8.98111,15.55395 28.02226,28.91242 50.19141,28.83594 22.16915,-0.0764 40.58194,-11.03699 50.19336,-28.83594 3.63981,-4.29263 13.89902,-11.60675 14.95117,0 v 42.53125 c 0,17.08697 6.05102,31.85913 18.15429,44.31836 12.45923,12.10327 27.23335,18.15625 44.32032,18.15625 17.44294,0 32.21509,-6.05298 44.31836,-18.15625 12.45923,-12.45923 18.68945,-27.23139 18.68945,-44.31836 v -233.8789 c 0,-13.17121 -3.9146,-25.09604 -11.74609,-35.77539 -7.47557,-11.035362 -17.26588,-18.689208 -29.36914,-22.960941 -7.11956,-2.491854 -14.23982,-3.738281 -21.35938,-3.738281 -19.22286,0 -35.41865,7.476649 -48.58984,22.427734 l -63.40235,74.199218 c -1.42391,1.06791 -6.14093,9.23242 -16.16015,9.23242 -10.01923,0 -14.20109,-8.16451 -15.625,-9.23242 L 110.53125,99.013672 C 97.716024,84.062587 81.697447,76.585938 62.474609,76.585938 Z m 395.060551,0 c -14.9511,-10e-7 -27.76596,5.340179 -38.44532,16.019531 -10.32338,10.323381 -15.48437,22.961011 -15.48437,37.912111 0,14.9511 5.16099,27.76596 15.48437,38.44531 10.67936,10.32338 23.49422,15.48633 38.44532,15.48633 14.95109,0 27.76596,-5.16295 38.44531,-15.48633 C 506.65982,158.28354 512,145.46868 512,130.51758 512,115.56648 506.65982,102.92885 495.98047,92.605469 485.30112,81.926117 472.48625,76.585938 457.53516,76.585938 Z m 0.5332,118.541012 c -14.9511,0 -27.76596,5.34018 -38.44531,16.01953 -10.67936,10.67936 -16.01758,23.49422 -16.01758,38.44532 v 131.89062 c 0,14.9511 5.33822,27.76596 16.01758,38.44531 10.67935,10.32339 23.49421,15.48633 38.44531,15.48633 14.9511,0 27.58873,-5.16294 37.91211,-15.48633 C 506.65982,409.24838 512,396.43352 512,381.48242 V 249.5918 c 0,-14.9511 -5.34018,-27.76596 -16.01953,-38.44532 -10.32338,-10.67935 -22.96101,-16.01953 -37.91211,-16.01953 z" | ||||||
|  |              style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#000000;fill-opacity:1;stroke-width:1.09609616px" /> | ||||||
|         </g> |         </g> | ||||||
|       </g> |       </g> | ||||||
|     </g> |     </g> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 4.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/title.png
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB | 
							
								
								
									
										70
									
								
								docs/examples/misskey.nginx
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,70 @@ | |||||||
|  | # Sample nginx configuration for Misskey | ||||||
|  | # | ||||||
|  | # 1. Replace example.tld to your domain | ||||||
|  | # 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-ebabled/ | ||||||
|  | #    or copy to /etc/nginx/conf.d/ | ||||||
|  |  | ||||||
|  | # For WebSocket | ||||||
|  | map $http_upgrade $connection_upgrade { | ||||||
|  |     default upgrade; | ||||||
|  |     ''      close; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off; | ||||||
|  |  | ||||||
|  | server { | ||||||
|  |     listen 80; | ||||||
|  |     listen [::]:80; | ||||||
|  |     server_name example.tld; | ||||||
|  |  | ||||||
|  |     # For SSL domain validation | ||||||
|  |     root /var/www/html; | ||||||
|  |     location /.well-known/acme-challenge/ { allow all; } | ||||||
|  |     location /.well-known/pki-validation/ { allow all; } | ||||||
|  |     location / { return 301 https://$server_name$request_uri; } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | server { | ||||||
|  |     listen 443 http2; | ||||||
|  |     listen [::]:443 http2; | ||||||
|  |     server_name example.tld; | ||||||
|  |     ssl on; | ||||||
|  | 		ssl_session_cache shared:ssl_session_cache:10m; | ||||||
|  |  | ||||||
|  |     # To use Let's Encrypt certificate | ||||||
|  |     ssl_certificate     /etc/letsencrypt/live/example.tld/fullchain.pem; | ||||||
|  |     ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem; | ||||||
|  |  | ||||||
|  |     # To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate) | ||||||
|  |     #ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem; | ||||||
|  |     #ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; | ||||||
|  |  | ||||||
|  |     # SSL protocol settings | ||||||
|  |     ssl_protocols TLSv1 TLSv1.2; | ||||||
|  |     ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA; | ||||||
|  |     ssl_prefer_server_ciphers on; | ||||||
|  |  | ||||||
|  |     # Change to your upload limit | ||||||
|  |     client_max_body_size 80m; | ||||||
|  |  | ||||||
|  |     # Proxy to Node | ||||||
|  |     location / { | ||||||
|  |         proxy_pass http://127.0.0.1:3000; | ||||||
|  |         proxy_set_header Host $host; | ||||||
|  |         proxy_set_header X-Real-IP $remote_addr; | ||||||
|  |         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||||
|  |         proxy_set_header X-Forwarded-Proto https; | ||||||
|  |         proxy_http_version 1.1; | ||||||
|  |         proxy_redirect off; | ||||||
|  |  | ||||||
|  |         # For WebSocket | ||||||
|  |         proxy_set_header Upgrade $http_upgrade; | ||||||
|  |         proxy_set_header Connection $connection_upgrade; | ||||||
|  |  | ||||||
|  |         # Cache settings | ||||||
|  |         proxy_cache cache1; | ||||||
|  |         proxy_cache_lock on; | ||||||
|  |         proxy_cache_use_stale updating; | ||||||
|  |         add_header X-Cache $upstream_cache_status; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -47,16 +47,6 @@ As root: | |||||||
| 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) | 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) | ||||||
| 5. `npm install` Install misskey dependencies. | 5. `npm install` Install misskey dependencies. | ||||||
|  |  | ||||||
| *(optional)* Generate VAPID keys |  | ||||||
| ---------------------------------------------------------------- |  | ||||||
| If you want to enable ServiceWorker, you need to generate VAPID keys: |  | ||||||
| Unless you have set your global node_modules location elsewhere, you need to run this as root. |  | ||||||
|  |  | ||||||
| ``` shell |  | ||||||
| npm install web-push -g |  | ||||||
| web-push generate-vapid-keys |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| *5.* Configure Misskey | *5.* Configure Misskey | ||||||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ||||||
| 1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`. | 1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`. | ||||||
|   | |||||||
| @@ -47,16 +47,6 @@ En mode root : | |||||||
| 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest) | 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest) | ||||||
| 5. `npm install` Installez les dépendances de misskey. | 5. `npm install` Installez les dépendances de misskey. | ||||||
|  |  | ||||||
| *(optionnel)* Génération des clés VAPID |  | ||||||
| ---------------------------------------------------------------- |  | ||||||
| Si vous désirez activer ServiceWorker, vous devez générer les clés VAPID : |  | ||||||
| Unless you have set your global node_modules location elsewhere, vous devez lancer ceci en mode root. |  | ||||||
|  |  | ||||||
| ``` shell |  | ||||||
| npm install web-push -g |  | ||||||
| web-push generate-vapid-keys |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| *5.* Création du fichier de configuration | *5.* Création du fichier de configuration | ||||||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ||||||
| 1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`. | 1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`. | ||||||
|   | |||||||
| @@ -53,15 +53,6 @@ adduser --disabled-password --disabled-login misskey | |||||||
| 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認 | 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認 | ||||||
| 5. `npm install` Misskeyの依存パッケージをインストール | 5. `npm install` Misskeyの依存パッケージをインストール | ||||||
|  |  | ||||||
| *(オプション)* VAPIDキーペアの生成 |  | ||||||
| ---------------------------------------------------------------- |  | ||||||
| ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります: |  | ||||||
|  |  | ||||||
| ``` shell |  | ||||||
| npm install web-push -g |  | ||||||
| web-push generate-vapid-keys |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| *5.* 設定ファイルを作成する | *5.* 設定ファイルを作成する | ||||||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ||||||
| 1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。 | 1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。 | ||||||
|   | |||||||
							
								
								
									
										52
									
								
								gulpfile.ts
									
									
									
									
									
								
							
							
						
						| @@ -11,14 +11,12 @@ import tslint from 'gulp-tslint'; | |||||||
| const cssnano = require('gulp-cssnano'); | const cssnano = require('gulp-cssnano'); | ||||||
| const stylus = require('gulp-stylus'); | const stylus = require('gulp-stylus'); | ||||||
| import * as uglifyComposer from 'gulp-uglify/composer'; | import * as uglifyComposer from 'gulp-uglify/composer'; | ||||||
| import pug = require('gulp-pug'); |  | ||||||
| import * as rimraf from 'rimraf'; | import * as rimraf from 'rimraf'; | ||||||
| import chalk from 'chalk'; | import chalk from 'chalk'; | ||||||
| const imagemin = require('gulp-imagemin'); | const imagemin = require('gulp-imagemin'); | ||||||
| import * as rename from 'gulp-rename'; | import * as rename from 'gulp-rename'; | ||||||
| import * as mocha from 'gulp-mocha'; | import * as mocha from 'gulp-mocha'; | ||||||
| import * as replace from 'gulp-replace'; | import * as replace from 'gulp-replace'; | ||||||
| import * as htmlmin from 'gulp-htmlmin'; |  | ||||||
| const uglifyes = require('uglify-es'); | const uglifyes = require('uglify-es'); | ||||||
|  |  | ||||||
| const locales = require('./locales'); | const locales = require('./locales'); | ||||||
| @@ -34,8 +32,6 @@ if (isDebug) { | |||||||
| 	console.warn(chalk.yellow.bold('         built script will not be compressed.')); | 	console.warn(chalk.yellow.bold('         built script will not be compressed.')); | ||||||
| } | } | ||||||
|  |  | ||||||
| const constants = require('./src/const.json'); |  | ||||||
|  |  | ||||||
| gulp.task('build', [ | gulp.task('build', [ | ||||||
| 	'build:ts', | 	'build:ts', | ||||||
| 	'build:copy', | 	'build:copy', | ||||||
| @@ -109,7 +105,7 @@ gulp.task('default', ['build']); | |||||||
| gulp.task('build:client', [ | gulp.task('build:client', [ | ||||||
| 	'build:ts', | 	'build:ts', | ||||||
| 	'build:client:script', | 	'build:client:script', | ||||||
| 	'build:client:pug', | 	'build:client:styles', | ||||||
| 	'copy:client' | 	'copy:client' | ||||||
| ]); | ]); | ||||||
|  |  | ||||||
| @@ -148,52 +144,6 @@ gulp.task('copy:client', [ | |||||||
| 			.pipe(gulp.dest('./built/client/assets/')) | 			.pipe(gulp.dest('./built/client/assets/')) | ||||||
| ); | ); | ||||||
|  |  | ||||||
| gulp.task('build:client:pug', [ |  | ||||||
| 	'copy:client', |  | ||||||
| 	'build:client:script', |  | ||||||
| 	'build:client:styles' |  | ||||||
| ], () => |  | ||||||
| 		gulp.src('./src/client/app/base.pug') |  | ||||||
| 			.pipe(pug({ |  | ||||||
| 				locals: { |  | ||||||
| 					themeColor: constants.themeColor |  | ||||||
| 				} |  | ||||||
| 			})) |  | ||||||
| 			.pipe(htmlmin({ |  | ||||||
| 				// 真理値属性の簡略化 e.g. |  | ||||||
| 				// <input value="foo" readonly="readonly"> to |  | ||||||
| 				// <input value="foo" readonly> |  | ||||||
| 				collapseBooleanAttributes: true, |  | ||||||
|  |  | ||||||
| 				// テキストの一部かもしれない空白も削除する e.g. |  | ||||||
| 				// <div> <p>    foo </p>    </div> to |  | ||||||
| 				// <div><p>foo</p></div> |  | ||||||
| 				collapseWhitespace: true, |  | ||||||
|  |  | ||||||
| 				// タグ間の改行を保持する |  | ||||||
| 				preserveLineBreaks: true, |  | ||||||
|  |  | ||||||
| 				// (できる場合は)属性のクォーテーション削除する e.g. |  | ||||||
| 				// <p class="foo-bar" id="moo" title="blah blah">foo</p> to |  | ||||||
| 				// <p class=foo-bar id=moo title="blah blah">foo</p> |  | ||||||
| 				removeAttributeQuotes: true, |  | ||||||
|  |  | ||||||
| 				// 省略可能なタグを省略する e.g. |  | ||||||
| 				// <html><p>yo</p></html> ro |  | ||||||
| 				// <p>yo</p> |  | ||||||
| 				removeOptionalTags: true, |  | ||||||
|  |  | ||||||
| 				// 属性の値がデフォルトと同じなら省略する e.g. |  | ||||||
| 				// <input type="text"> to |  | ||||||
| 				// <input> |  | ||||||
| 				removeRedundantAttributes: true, |  | ||||||
|  |  | ||||||
| 				// CSSも圧縮する |  | ||||||
| 				minifyCSS: true |  | ||||||
| 			})) |  | ||||||
| 			.pipe(gulp.dest('./built/client/app/')) |  | ||||||
| ); |  | ||||||
|  |  | ||||||
| gulp.task('locales', () => | gulp.task('locales', () => | ||||||
| 	gulp.src('./locales/*.yml') | 	gulp.src('./locales/*.yml') | ||||||
| 		.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' })) | 		.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' })) | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "閉じる" |   close: "閉じる" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "わかった" |   got-it: "わかった" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "カスタマイズのヒント" |     title: "カスタマイズのヒント" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" |   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" | ||||||
|   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" |   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "公式アカウント" |   verified-user: "公式アカウント" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "引き分け" |     drawn: "引き分け" | ||||||
|     my-turn: "あなたのターンです" |     my-turn: "あなたのターンです" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "アンケート" |     polls: "アンケート" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "サーバー情報" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "ヒント" |     tips: "ヒント" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "ハッシュタグ" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "このアプリは次の権限を要求しています:" |   permission-ask: "このアプリは次の権限を要求しています:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "閲覧注意" |   sensitive: "閲覧注意" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
|   you: "あなた" |   you: "あなた" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "開発者" |   develop: "開発者" | ||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "お気に入り" |   favorite: "お気に入り" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "接続中" |   connecting: "接続中" | ||||||
|   reconnecting: "再接続中" |   reconnecting: "再接続中" | ||||||
|   connected: "接続完了" |   connected: "接続完了" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されています" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "詳細..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "再接続する" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|  |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "非公開" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "確認中" |   fetching: "確認中" | ||||||
|   no-broadcasts: "お知らせはありません" |   no-broadcasts: "お知らせはありません" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はありません" |   no-photos: "写真はありません" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "位置情報" |   location: "位置情報" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||||
|   advanced: "詳細設定" |   advanced: "詳細設定" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "円形のアイコンを使用" |   circle-icons: "円形のアイコンを使用" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" |   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" | ||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語を選択" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "完了" |   submit: "完了" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "再接続する" |  | ||||||
|   twitter-disconnect: "切断する" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "最新のバージョン:" |   latest-version: "最新のバージョン:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされています" |   follows-you: "フォローされています" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近の投稿" |   recent-notes: "最近の投稿" | ||||||
|   images: "画像" |   images: "画像" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "Schließen" |   close: "Schließen" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "Verstanden!" |   got-it: "Verstanden!" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "Anpassung-Tipps" |     title: "Anpassung-Tipps" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "Nur für diejenigen sichtbar, die dir folgen" |     followers-desc: "Nur für diejenigen sichtbar, die dir folgen" | ||||||
|     specified: "Direkt" |     specified: "Direkt" | ||||||
|     specified-desc: "Nur für bestimmte Benutzer posten" |     specified-desc: "Nur für bestimmte Benutzer posten" | ||||||
|     private: "Privat" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet." |   my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet." | ||||||
|   i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding" |   i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "Verifizierter Benutzer" |   verified-user: "Verifizierter Benutzer" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "Animationen der Benutzeroberfläche reduzieren" |   reduce-motion: "Animationen der Benutzeroberfläche reduzieren" | ||||||
|   this-setting-is-this-device-only: "Nur auf diesem Gerät" |   this-setting-is-this-device-only: "Nur auf diesem Gerät" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden.' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden." | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'Erneut versuchen' |     retry: "Erneut versuchen" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "Unentschieden" |     drawn: "Unentschieden" | ||||||
|     my-turn: "Du bist am Zug" |     my-turn: "Du bist am Zug" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "Umfrage" |     polls: "Umfrage" | ||||||
|     post-form: "Beitragsform" |     post-form: "Beitragsform" | ||||||
|     server: "Server-Info" |     server: "Server-Info" | ||||||
|     donation: "Spenden" |  | ||||||
|     nav: "Navigation" |     nav: "Navigation" | ||||||
|     tips: "Tipps" |     tips: "Tipps" | ||||||
|     hashtags: "Hashtags" |     hashtags: "Hashtags" | ||||||
|   dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut." |   dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut." | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "このアプリは次の権限を要求しています:" |   permission-ask: "このアプリは次の権限を要求しています:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "Dieser Inhalt ist NSFW" |   sensitive: "Dieser Inhalt ist NSFW" | ||||||
|   click-to-show: "Klicke zum den Inhalt anzusehen" |   click-to-show: "Klicke zum den Inhalt anzusehen" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "Thema" |   light-theme: "Thema" | ||||||
|   dark-theme: "Thema während des Nachtmodus" |   dark-theme: "Thema während des Nachtmodus" | ||||||
|   light-themes: "Helles Thema" |   light-themes: "Helles Thema" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "Basisthema" |   base-theme: "Basisthema" | ||||||
|   base-theme-light: "Hell" |   base-theme-light: "Hell" | ||||||
|   base-theme-dark: "Dunkel" |   base-theme-dark: "Dunkel" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "Name des Themas" |   theme-name: "Name des Themas" | ||||||
|   preview-created-theme: "Vorschau" |   preview-created-theme: "Vorschau" | ||||||
|   invalid-theme: "Thema ist ungültig" |   invalid-theme: "Thema ist ungültig" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "Einen Nutzer suchen" |   search-user: "Einen Nutzer suchen" | ||||||
|   you: "Du" |   you: "Du" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "Entwickler" |   develop: "Entwickler" | ||||||
|   feedback: "Feedback" |   feedback: "Feedback" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "Diese Notiz favorisieren" |   favorite: "Diese Notiz favorisieren" | ||||||
|   unfavorite: "Aus Favoriten entfernen" |   unfavorite: "Aus Favoriten entfernen" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "Verbindung wird hergestellt" |   connecting: "Verbindung wird hergestellt" | ||||||
|   reconnecting: "Erneut verbinden" |   reconnecting: "Erneut verbinden" | ||||||
|   connected: "Verbindung hergestellt" |   connected: "Verbindung hergestellt" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "Wenn du deinen Twitter-Account mit deinem Misskey-Account verbindest, siehst du deine Twitter Account-Informationen auf deinem Profil und du kannst dich mit Twitter einloggen." |   title: "通知" | ||||||
|   connected-to: "Du bist mit diesem Twitter-Account verbunden" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "Mehr..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "Erneut verbinden" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Mit Twitter verbinden" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|   disconnect: "Trennen" |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|  |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "Nur für diejenigen sichtbar, die dir folgen" |   followers-desc: "Nur für diejenigen sichtbar, die dir folgen" | ||||||
|   specified: "Direkt" |   specified: "Direkt" | ||||||
|   specified-desc: "Poste nur für bestimmte Benutzer" |   specified-desc: "Poste nur für bestimmte Benutzer" | ||||||
|   private: "Privat" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "Laden" |   fetching: "Laden" | ||||||
|   no-broadcasts: "Keine Broadcasts" |   no-broadcasts: "Keine Broadcasts" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "Spende" |  | ||||||
|   text: "Um Misskey am Laufen zu halten geben wir Geld für Domain, Server usw. aus. Wir bekommen dafür kein Geld und würden uns freuen, wenn du spenden würdest. Wenn du interessiert bist, dann kontaktiere {}. Danke für deine Unterstützung!" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "Fotostream" |   title: "Fotostream" | ||||||
|   no-photos: "Keine Fotos" |   no-photos: "Keine Fotos" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "Ort" |   location: "Ort" | ||||||
|   renote: "Anmerkung" |   renote: "Anmerkung" | ||||||
|   add-reaction: "Reaktion hinzufügen" |   add-reaction: "Reaktion hinzufügen" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "Automatische Pop-out Fenster" |   auto-popout: "Automatische Pop-out Fenster" | ||||||
|   auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert." |   auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert." | ||||||
|   advanced: "Erweiterte Einstellungen" |   advanced: "Erweiterte Einstellungen" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "Kreisförmige Icons" |   circle-icons: "Kreisförmige Icons" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "Zeige Antworten" |   show-reply-target: "Zeige Antworten" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "Karte anzeigen" |   show-maps: "Karte anzeigen" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "Ton" |   sound: "Ton" | ||||||
|   enable-sounds: "Ton aktivieren" |   enable-sounds: "Ton aktivieren" | ||||||
|   enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert." |   enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert." | ||||||
|   volume: "Lautstärke" |   volume: "Lautstärke" | ||||||
|   test: "Test" |   test: "Test" | ||||||
|   language: "Sprache" |  | ||||||
|   pick-language: "Sprache auswählen" |  | ||||||
|   recommended: "Empfohlen" |  | ||||||
|   auto: "Automatisch" |  | ||||||
|   specify-language: "Sprache auswählen" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast." |   cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast." | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "Bitte Passwort eingeben" |   enter-password: "Bitte Passwort eingeben" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "完了" |   submit: "完了" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "Taskmanager" |   title: "Taskmanager" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "Sprache auswählen" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "再接続する" |  | ||||||
|   twitter-disconnect: "切断する" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "Neuste Version:" |   latest-version: "Neuste Version:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされています" |   follows-you: "フォローされています" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近の投稿" |   recent-notes: "最近の投稿" | ||||||
|   images: "画像" |   images: "画像" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ common: | |||||||
|   about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?" |   about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?" | ||||||
|   intro: |   intro: | ||||||
|     title: "What is Misskey?" |     title: "What is Misskey?" | ||||||
|     about: "Misskey is a open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable Ui, varieties of reaction for posts, free file storage providing integrated management system and other advancing functions are available. Also, network system called “Fediverse” enables us to communicate with users on other SNSs. Like, if you post something, then your posts will sent not only to Misskey but also mastodon. Just imagine that the planet is sending a microwave to other planet to communication." |     about: "Misskey is an open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable UI, varieties of reactions for posts, free file storage providing an integrated management system and other advanced functions are available. In addition, Misskey connects to a network system called the “Fediverse” enables us to communicate with users on other SNSs. For example, when you post something it will be sent not only to Misskey but also Mastodon and Pleroma. Just imagine that the planet is sending a radio transmission to other planet to communicate." | ||||||
|     features: "Features" |     features: "Features" | ||||||
|     rich-contents: "Post" |     rich-contents: "Post" | ||||||
|     rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!" |     rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!" | ||||||
| @@ -18,7 +18,7 @@ common: | |||||||
|     ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize." |     ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize." | ||||||
|     drive: "Drive" |     drive: "Drive" | ||||||
|     drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online." |     drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online." | ||||||
|     outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!" |     outro: "Check Misskey-unique features by seeing them with your own eyes! If you feel like this instance is not for you, try other instances, as Misskey is a decentralized SNS, so that you can easily find your mates. Then, GLHF!" | ||||||
|   adblock: |   adblock: | ||||||
|     detected: "Please disable ad blocker." |     detected: "Please disable ad blocker." | ||||||
|     warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>." |     warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>." | ||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "Close" |   close: "Close" | ||||||
|   do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised." |   do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised." | ||||||
|   load-more: "Load more" |   load-more: "Load more" | ||||||
|  |   enter-password: "Please enter the Password" | ||||||
|   got-it: "Got it!" |   got-it: "Got it!" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "Customization tips" |     title: "Customization tips" | ||||||
| @@ -89,10 +90,9 @@ common: | |||||||
|     followers-desc: "Post to followers only" |     followers-desc: "Post to followers only" | ||||||
|     specified: "Direct" |     specified: "Direct" | ||||||
|     specified-desc: "Post to specified users only" |     specified-desc: "Post to specified users only" | ||||||
|     private: "Private" |     local-public: "Public (Only local)" | ||||||
|     local-public: "Local (Public)" |     local-home: "Home (Only local)" | ||||||
|     local-home: "Local (Home)" |     local-followers: "Followers (Only local)" | ||||||
|     local-followers: "Local (Followers)" |  | ||||||
|   note-placeholders: |   note-placeholders: | ||||||
|     a: "What are you doing?" |     a: "What are you doing?" | ||||||
|     b: "What's happening?" |     b: "What's happening?" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "Your token has been regenerated, so you will be signed out." |   my-token-regenerated: "Your token has been regenerated, so you will be signed out." | ||||||
|   i-like-sushi: "I prefer sushi rather than pudding" |   i-like-sushi: "I prefer sushi rather than pudding" | ||||||
|   show-reversi-board-labels: "Show row and column labels in Reversi" |   show-reversi-board-labels: "Show row and column labels in Reversi" | ||||||
|   use-contrast-reversi-stones: "Make the stone color clear in reversi" |   use-avatar-reversi-stones: "Use avatar as a stone in reversi" | ||||||
|   verified-user: "Verified account" |   verified-user: "Verified account" | ||||||
|   disable-animated-mfm: "Disable animated texts in a post" |   disable-animated-mfm: "Disable animated texts in a post" | ||||||
|  |   suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area" | ||||||
|   always-show-nsfw: "Always show NSFW contents" |   always-show-nsfw: "Always show NSFW contents" | ||||||
|   always-mark-nsfw: "Always mark posts with media attachments as NSFW" |   always-mark-nsfw: "Always mark posts with media attachments as NSFW" | ||||||
|   show-full-acct: "Do not omit the hostname from the username" |   show-full-acct: "Do not omit the hostname from the username" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "Reduce motion in UI" |   reduce-motion: "Reduce motion in UI" | ||||||
|   this-setting-is-this-device-only: "Only for this device" |   this-setting-is-this-device-only: "Only for this device" | ||||||
|   use-os-default-emojis: "Use the OS default Emojis" |   use-os-default-emojis: "Use the OS default Emojis" | ||||||
|   do-not-use-in-production: 'This is a development build. Do not use in production.' |   line-width: "Line thickness" | ||||||
|   is-remote-user: "This user information is copied." |   line-width-thin: "Thin" | ||||||
|   is-remote-post: "This post information is a copy." |   line-width-normal: "Regular" | ||||||
|   view-on-remote: "View it on remote" |   line-width-thick: "Thick" | ||||||
|  |   do-not-use-in-production: "This is a development build. Do not use in production." | ||||||
|  |   user-suspended: "This user has been suspended." | ||||||
|  |   is-remote-user: "This user's information is mirrored." | ||||||
|  |   is-remote-post: "These post contents are mirrored." | ||||||
|  |   view-on-remote: "For completion, view it remotely." | ||||||
|   renoted-by: "Renoted by {user}" |   renoted-by: "Renoted by {user}" | ||||||
|   error: |   error: | ||||||
|     title: 'Something happened :(' |     title: "Something happened :(" | ||||||
|     retry: 'Retry' |     retry: "Retry" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "Draw" |     drawn: "Draw" | ||||||
|     my-turn: "Your turn" |     my-turn: "Your turn" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "Polls" |     polls: "Polls" | ||||||
|     post-form: "Post form" |     post-form: "Post form" | ||||||
|     server: "Server info" |     server: "Server info" | ||||||
|     donation: "Request for donations" |  | ||||||
|     nav: "Navigation" |     nav: "Navigation" | ||||||
|     tips: "Tips" |     tips: "Tips" | ||||||
|     hashtags: "Hashtags" |     hashtags: "Hashtags" | ||||||
|   dev: "Failed to create the application. Please try again." |   dev: "Failed to create the application. Please try again." | ||||||
|   ai-chan-kawaii: "Ai-chan kawaii!" |   ai-chan-kawaii: "Ai-chan kawaii!" | ||||||
|  |   you: "You" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "Would you allow <i>{name}</i> to access your account?" |   share-access: "Would you allow <i>{name}</i> to access your account?" | ||||||
|   permission-ask: "This application requires the following permissions:" |   permission-ask: "This application requires the following permissions:" | ||||||
| @@ -208,7 +214,7 @@ common/views/components/games/reversi/reversi.index.vue: | |||||||
|   invitations: "You’ve got an invitation!" |   invitations: "You’ve got an invitation!" | ||||||
|   my-games: "My game" |   my-games: "My game" | ||||||
|   all-games: "All games" |   all-games: "All games" | ||||||
|   enter-username: "Enter a username" |   enter-username: "Please enter username" | ||||||
|   game-state: |   game-state: | ||||||
|     ended: "Finished" |     ended: "Finished" | ||||||
|     playing: "In Progress" |     playing: "In Progress" | ||||||
| @@ -219,7 +225,7 @@ common/views/components/games/reversi/reversi.room.vue: | |||||||
|   black-or-white: "Black/White" |   black-or-white: "Black/White" | ||||||
|   black-is: "Black is {}" |   black-is: "Black is {}" | ||||||
|   rules: "Rules" |   rules: "Rules" | ||||||
|   is-llotheo: "The lesser side wins" |   is-llotheo: "The lesser one wins(Llotheo)" | ||||||
|   looped-map: "Looped map" |   looped-map: "Looped map" | ||||||
|   can-put-everywhere: "Can put everywhere" |   can-put-everywhere: "Can put everywhere" | ||||||
|   settings-of-the-bot: "Bot settings" |   settings-of-the-bot: "Bot settings" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "NSFW" |   sensitive: "NSFW" | ||||||
|   click-to-show: "Click to show" |   click-to-show: "Click to show" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "Theme" | ||||||
|   light-theme: "Theme" |   light-theme: "Theme" | ||||||
|   dark-theme: "Theme during dark mode" |   dark-theme: "Theme during dark mode" | ||||||
|   light-themes: "Light theme" |   light-themes: "Light theme" | ||||||
| @@ -267,13 +274,14 @@ common/views/components/theme.vue: | |||||||
|   install: "Install" |   install: "Install" | ||||||
|   installed: "\"{}\" has been installed" |   installed: "\"{}\" has been installed" | ||||||
|   create-a-theme: "Create a theme" |   create-a-theme: "Create a theme" | ||||||
|   save-created-theme: "Save a theme" |   save-created-theme: "Save theme" | ||||||
|   primary-color: "Primary color" |   primary-color: "Primary color" | ||||||
|   secondary-color: "Secondary color" |   secondary-color: "Secondary color" | ||||||
|   text-color: "Text color" |   text-color: "Text color" | ||||||
|   base-theme: "Base theme" |   base-theme: "Base theme" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "Find more themes" | ||||||
|   theme-name: "Theme name" |   theme-name: "Theme name" | ||||||
|   preview-created-theme: "Preview" |   preview-created-theme: "Preview" | ||||||
|   invalid-theme: "Not valid theme" |   invalid-theme: "Not valid theme" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "Hide" |   hide: "Hide" | ||||||
|   show: "See more" |   show: "See more" | ||||||
|  |   chars: "{count} chars" | ||||||
|  |   files: "{count} files" | ||||||
|  |   poll: "Poll" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "Find a user" |   search-user: "Find a user" | ||||||
|   you: "You" |   you: "You" | ||||||
| @@ -324,14 +335,16 @@ common/views/components/nav.vue: | |||||||
|   develop: "Developers" |   develop: "Developers" | ||||||
|   feedback: "Feedback" |   feedback: "Feedback" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "Mention" | ||||||
|   detail: "Details" |   detail: "Details" | ||||||
|  |   copy-content: "Copy the contents" | ||||||
|   copy-link: "Copy link" |   copy-link: "Copy link" | ||||||
|   favorite: "Favorite this note" |   favorite: "Favorite this note" | ||||||
|   unfavorite: "Unfavorite" |   unfavorite: "Unfavorite" | ||||||
|   pin: "Pin to your profile" |   pin: "Pin to your profile" | ||||||
|   unpin: "Unpin" |   unpin: "Unpin" | ||||||
|   delete: "Delete" |   delete: "Delete" | ||||||
|   delete-confirm: "Delete this post?" |   delete-confirm: "Are you sure you want to delete this post?" | ||||||
|   remote: "Show original note" |   remote: "Show original note" | ||||||
| common/views/components/poll.vue: | common/views/components/poll.vue: | ||||||
|   vote-to: "Vote for '{}'" |   vote-to: "Vote for '{}'" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "Connecting" |   connecting: "Connecting" | ||||||
|   reconnecting: "Reconnecting" |   reconnecting: "Reconnecting" | ||||||
|   connected: "Connected" |   connected: "Connected" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "Once you connect your Twitter account to your Misskey account, you will be able to see information about your Twitter account on your profile, and you will be able to sign-in using Twitter." |   title: "Notifications" | ||||||
|   connected-to: "You are connected to this Twitter account" |   mark-as-read-all-notifications: "Mark all notifications as read" | ||||||
|   detail: "Details..." |   mark-as-read-all-unread-notes: "Mark all posts as read" | ||||||
|   reconnect: "Reconnect" |   mark-as-read-all-talk-messages: "Mark all conversations as read" | ||||||
|   connect: "Link your Twitter account" |   auto-watch: "Automatically watch out for posts" | ||||||
|  |   auto-watch-desc: "Automatically receive notifications about posts you react to, or respond to." | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "Service cooperation" | ||||||
|  |   connect: "Connect" | ||||||
|   disconnect: "Disconnect" |   disconnect: "Disconnect" | ||||||
|  |   connected-to: "You are connected to next account" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "Once you connect your GitHub account to your Misskey account, you will be able to see information about your GitHub account on your profile, and you will be able to sign-in via GitHub." |   description: "Once you connect your GitHub account to your Misskey account, you will be able to see information about your GitHub account on your profile, and you will be able to sign-in via GitHub." | ||||||
|   connected-to: "You are connected to this GitHub account" |   connected-to: "You are connected to this GitHub account" | ||||||
| @@ -414,7 +432,7 @@ common/views/components/github-setting.vue: | |||||||
|   connect: "Link your GitHub account" |   connect: "Link your GitHub account" | ||||||
|   disconnect: "Disconnect" |   disconnect: "Disconnect" | ||||||
| common/views/components/discord-setting.vue: | common/views/components/discord-setting.vue: | ||||||
|   description: "Once you connect your Discord account to your Misskey account, you will be able to see information about your Discord account on your profile, and you will be able to sign-in using Discord." |   description: "Once you connect your Discord account to your Misskey account, you will be able to see information from your Discord account on your profile, and you will be able to sign-in using Discord." | ||||||
|   connected-to: "You are connected to this Discord account" |   connected-to: "You are connected to this Discord account" | ||||||
|   detail: "Details…" |   detail: "Details…" | ||||||
|   reconnect: "Reconnect" |   reconnect: "Reconnect" | ||||||
| @@ -430,35 +448,54 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "Post to Followers only" |   followers-desc: "Post to Followers only" | ||||||
|   specified: "Direct" |   specified: "Direct" | ||||||
|   specified-desc: "Post to specified users only" |   specified-desc: "Post to specified users only" | ||||||
|   private: "Private" |  | ||||||
|   local-public: "Local (Public)" |   local-public: "Local (Public)" | ||||||
|   local-public-desc: "Do not publish to remote" |   local-public-desc: "Do not publish to remote" | ||||||
|   local-home: "Local (Home)" |   local-home: "Home (Only local)" | ||||||
|   local-followers: "Local (Followers)" |   local-followers: "Followers (Only local)" | ||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{} users mentioned" |   count: "{} users mentioned" | ||||||
|   empty: "No popular hashtag trends" |   empty: "No popular hashtag trends" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "Display Language" | ||||||
|  |   pick-language: "Select a language" | ||||||
|  |   recommended: "Recommended" | ||||||
|  |   auto: "Auto" | ||||||
|  |   specify-language: "Specify language" | ||||||
|  |   info: "You need to reload the page for the changes to take effect." | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "Profile" |   title: "Profile" | ||||||
|   name: "Name" |   name: "Name" | ||||||
|   account: "Account" |   account: "Account" | ||||||
|   location: "Location" |   location: "Location" | ||||||
|   description: "About me" |   description: "About me" | ||||||
|  |   language: "Language" | ||||||
|   birthday: "Birthday" |   birthday: "Birthday" | ||||||
|   avatar: "Avatar" |   avatar: "Icon" | ||||||
|   banner: "Banner" |   banner: "Banner" | ||||||
|   is-cat: "This account is a Cat" |   is-cat: "This account is a Cat" | ||||||
|   is-bot: "This account is a Bot" |   is-bot: "This account is a Bot" | ||||||
|   is-locked: "Follower requests require approval" |   is-locked: "Follower requests require approval" | ||||||
|   careful-bot: "Follower requests from bots require approval" |   careful-bot: "Follower requests from bots require approval" | ||||||
|   advanced: "Advanced" |   auto-accept-followed: "Automatically approve follows from the people you follow" | ||||||
|  |   advanced: "Other" | ||||||
|   privacy: "Privacy" |   privacy: "Privacy" | ||||||
|   save: "Update profile" |   save: "Save" | ||||||
|   saved: "Profile updated successfully" |   saved: "Profile updated successfully" | ||||||
|   uploading: "Uploading" |   uploading: "Uploading" | ||||||
|   upload-failed: "Failed to upload" |   upload-failed: "Failed to upload" | ||||||
|  |   email: "Email settings" | ||||||
|  |   email-address: "Email Address" | ||||||
|  |   email-verified: "Your email has been verified." | ||||||
|  |   email-not-verified: "Email address is not confirmed. Please check your inbox." | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "User" | ||||||
|  |   rename: "Rename list" | ||||||
|  |   delete: "Delete list" | ||||||
|  |   remove-user: "Remove from this list" | ||||||
|  |   delete-are-you-sure: "Delete list \"$1\"?" | ||||||
|  |   deleted: "Deleted successfully" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "Fetching" |   fetching: "Checking" | ||||||
|   no-broadcasts: "No announcements" |   no-broadcasts: "No announcements" | ||||||
|   have-a-nice-day: "Have a nice day!" |   have-a-nice-day: "Have a nice day!" | ||||||
|   next: "Next" |   next: "Next" | ||||||
| @@ -467,11 +504,8 @@ common/views/widgets/calendar.vue: | |||||||
|   month: "{}," |   month: "{}," | ||||||
|   day: "{}" |   day: "{}" | ||||||
|   today: "Today: " |   today: "Today: " | ||||||
|   this-month: "This month: " |   this-month: "Month:" | ||||||
|   this-year: "This year: " |   this-year: "Year:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "Request for donations" |  | ||||||
|   text: "To keep Misskey up and running, there have to happen some expense for the domain name, the server and so on. Since our policy is not to display any advertisements, we count on your donations. If you're interested in helping, contact {}. Thank you for your contribution!" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "Photo stream" |   title: "Photo stream" | ||||||
|   no-photos: "No photos" |   no-photos: "No photos" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "Several windows can be detached outside the browser." |   tips-line19: "Several windows can be detached outside the browser." | ||||||
|   tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed." |   tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed." | ||||||
|   tips-line21: "You can also use the API to develop bots." |   tips-line21: "You can also use the API to develop bots." | ||||||
|   tips-line23: "Mayu is so cute with its eyebrows." |   tips-line23: "Ai-chan kawaii!" | ||||||
|   tips-line24: "Misskey has been running since 2014." |   tips-line24: "Misskey has been running since 2014." | ||||||
|   tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open" |   tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "The page has not been found" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "Signed in as {}" |   signed-in-as: "Signed in as {}" | ||||||
|   following: "Following" |   following: "Following" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "Location" |   location: "Location" | ||||||
|   renote: "Repost" |   renote: "Repost" | ||||||
|   add-reaction: "Add a reaction" |   add-reaction: "Add a reaction" | ||||||
|  |   undo-reaction: "Reverse reaction" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "Reply" |   reply: "Reply" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "Add a reaction" |   add-reaction: "Add a reaction" | ||||||
|  |   undo-reaction: "Reverse reaction" | ||||||
|   detail: "Details" |   detail: "Details" | ||||||
|   private: "This post is private" |   private: "This post is private" | ||||||
|   deleted: "This post has been deleted" |   deleted: "This post has been deleted" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "Post visibility" |   note-visibility: "Post visibility" | ||||||
|   default-note-visibility: "Default visibility" |   default-note-visibility: "Default visibility" | ||||||
|   remember-note-visibility: "Remember post visibility" |   remember-note-visibility: "Remember post visibility" | ||||||
|  |   web-search-engine: "Web search engine" | ||||||
|  |   web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "Auto pop-out window" |   auto-popout: "Auto pop-out window" | ||||||
|   auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser." |   auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser." | ||||||
|   advanced: "Advanced settings" |   advanced: "Advanced settings" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "Use circle icons" |   circle-icons: "Use circle icons" | ||||||
|   contrasted-acct: "Add contrast to username" |   contrasted-acct: "Add contrast to username" | ||||||
|   post-form-on-timeline: "Display post form at the top of the timeline" |   post-form-on-timeline: "Display post form at the top of the timeline" | ||||||
|   suggest-recent-hashtags: "Show recent popular hashtags on the post form" |  | ||||||
|   show-clock-on-header: "Show clock on upper-right" |   show-clock-on-header: "Show clock on upper-right" | ||||||
|   show-reply-target: "Display reply target" |   show-reply-target: "Display reply target" | ||||||
|   timeline: "Timeline" |   timeline: "Timeline" | ||||||
| @@ -762,24 +801,23 @@ desktop/views/components/settings.vue: | |||||||
|   deck-column-align: "Deck column alignment" |   deck-column-align: "Deck column alignment" | ||||||
|   deck-column-align-center: "Center" |   deck-column-align-center: "Center" | ||||||
|   deck-column-align-left: "Left" |   deck-column-align-left: "Left" | ||||||
|  |   deck-column-align-flexible: "Flexible" | ||||||
|  |   deck-column-width: "Column width of the deck" | ||||||
|  |   deck-column-width-narrow: "narrow" | ||||||
|  |   deck-column-width-narrower: "somewhat narrow" | ||||||
|  |   deck-column-width-normal: "Normal" | ||||||
|  |   deck-column-width-wider: "somewhat wide" | ||||||
|  |   deck-column-width-wide: "wide" | ||||||
|   sound: "Sound" |   sound: "Sound" | ||||||
|   enable-sounds: "Enable sound" |   enable-sounds: "Enable sound" | ||||||
|   enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser." |   enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser." | ||||||
|   volume: "Volume" |   volume: "Volume" | ||||||
|   test: "Test" |   test: "Test" | ||||||
|   language: "Language" |  | ||||||
|   pick-language: "Select a language" |  | ||||||
|   recommended: "Recommended" |  | ||||||
|   auto: "Automatic" |  | ||||||
|   specify-language: "Specify language" |  | ||||||
|   language-desc: "You need to reload the page for the changes to take effect." |  | ||||||
|   cache: "Cache" |   cache: "Cache" | ||||||
|   clean-cache: "Clear cache" |   clean-cache: "Clear cache" | ||||||
|   cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up." |   cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up." | ||||||
|   cache-cleared: "Cache cleared" |   cache-cleared: "Cache cleared" | ||||||
|   cache-cleared-desc: "Please reload the page." |   cache-cleared-desc: "Please reload the page." | ||||||
|   auto-watch: "Automatic watch" |  | ||||||
|   auto-watch-desc: "Receive notifications about the post/reply/reaction automatically." |  | ||||||
|   about: "About Misskey" |   about: "About Misskey" | ||||||
|   operator: "The admin of this instance" |   operator: "The admin of this instance" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "Enter the password" |   enter-password: "Enter the password" | ||||||
|   authenticator: "First, you need to install Google Authenticator on your device:" |   authenticator: "First, you need to install Google Authenticator on your device:" | ||||||
|   howtoinstall: "How to install" |   howtoinstall: "How to install" | ||||||
|  |   token: "Token" | ||||||
|   scan: "And then, scan the QR code:" |   scan: "And then, scan the QR code:" | ||||||
|   done: "Please enter the token displayed on your device:" |   done: "Please enter the token displayed on your device:" | ||||||
|   submit: "Submit" |   submit: "Submit" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "Enter the password" |   enter-password: "Enter the password" | ||||||
|   console: |   console: | ||||||
|     title: 'API console' |     title: "API console" | ||||||
|     endpoint: 'Endpoint' |     endpoint: "Endpoint" | ||||||
|     parameter: 'Parameters' |     parameter: "Parameters" | ||||||
|     credential-info: "Parameter \"i\" is not required at this console." |     credential-info: "Parameter \"i\" is not required at this console." | ||||||
|     send: 'Send' |     send: "Send" | ||||||
|     sending: 'Sending' |     sending: "Sending" | ||||||
|     response: 'Result' |     response: "Result" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "No linked applications" |   no-apps: "No linked applications" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "Enter the new password again" |   enter-new-password-again: "Enter the new password again" | ||||||
|   not-match: "The new passwords do not match" |   not-match: "The new passwords do not match" | ||||||
|   changed: "Password changed" |   changed: "Password changed" | ||||||
|  |   failed: "Failed to change password" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "This post is private" |   private: "This post is private" | ||||||
|   deleted: "This post has been deleted" |   deleted: "This post has been deleted" | ||||||
|   media-count: "{} media attached" |   media-count: "{} media attached" | ||||||
|   poll: "Poll" |   poll: "Poll" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "Tags" | ||||||
|  |   query: "Query (optional)" | ||||||
|  |   add: "Add" | ||||||
|  |   save: "Save" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "Task Manager" |   title: "Task Manager" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -948,7 +993,9 @@ admin/views/instance.vue: | |||||||
|   instance-name: "Instance name" |   instance-name: "Instance name" | ||||||
|   instance-description: "Instance description" |   instance-description: "Instance description" | ||||||
|   host: "Host" |   host: "Host" | ||||||
|  |   logo-url: "Logo image URL" | ||||||
|   banner-url: "Banner image URL" |   banner-url: "Banner image URL" | ||||||
|  |   error-image-url: "Error image URL" | ||||||
|   languages: "Language of this instance" |   languages: "Language of this instance" | ||||||
|   languages-desc: "You can add more than one, separated by spaces." |   languages-desc: "You can add more than one, separated by spaces." | ||||||
|   maintainer-config: "Administrator information" |   maintainer-config: "Administrator information" | ||||||
| @@ -966,17 +1013,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Settings of connecting to Twitter" |   twitter-integration-config: "Settings of connecting to Twitter" | ||||||
|   twitter-integration-info: "The callback URL is set on /api/tw/cb." |   twitter-integration-info: "The callback URL is set on {url}." | ||||||
|   enable-twitter-integration: "Enable connection to Twitter" |   enable-twitter-integration: "Enable connection to Twitter" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer Secret" |   twitter-integration-consumer-secret: "Consumer Secret" | ||||||
|   github-integration-config: "Setting of connecting to GitHub" |   github-integration-config: "Setting of connecting to GitHub" | ||||||
|   github-integration-info: "The callback URL is set on /api/gh/cb." |   github-integration-info: "The callback URL is set on {url}." | ||||||
|   enable-github-integration: "Enable connection to GitHub" |   enable-github-integration: "Enable connection to GitHub" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Setting of Discord Integration" |   discord-integration-config: "Discord Integration settings" | ||||||
|   discord-integration-info: "The callback URL is set on /api/dc/cb." |   discord-integration-info: "The callback URL is set to {url}." | ||||||
|   enable-discord-integration: "Enable Discord connection" |   enable-discord-integration: "Enable Discord connection" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -992,11 +1039,27 @@ admin/views/instance.vue: | |||||||
|   save: "Save" |   save: "Save" | ||||||
|   saved: "Saved" |   saved: "Saved" | ||||||
|   user-recommendation-config: "Recommended users" |   user-recommendation-config: "Recommended users" | ||||||
|   enable-external-user-recommendation: "Enable to external user recommendation" |   enable-external-user-recommendation: "Enable external user recommendations" | ||||||
|   external-user-recommendation-engine: "Engine" |   external-user-recommendation-engine: "Engine" | ||||||
|   external-user-recommendation-engine-desc: "Example : https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "Example : https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "Timeout" |   external-user-recommendation-timeout: "Timeout" | ||||||
|   external-user-recommendation-timeout-desc: "Number of milliseconds (ex. 300,000)" |   external-user-recommendation-timeout-desc: "Number of milliseconds (ex. 300,000)" | ||||||
|  |   email-config: "Email server settings" | ||||||
|  |   email-config-info: "Used to confirm email and password reset etc." | ||||||
|  |   enable-email: "Enable email delivery" | ||||||
|  |   email: "Email Address" | ||||||
|  |   smtp-secure: "Use implicit SSL/TLS in the SMTP connection" | ||||||
|  |   smtp-secure-info: "Turn off STARTTLS when used that." | ||||||
|  |   smtp-host: "SMTP Host" | ||||||
|  |   smtp-port: "SMTP Port" | ||||||
|  |   smtp-user: "SMTP User" | ||||||
|  |   smtp-pass: "SMTP Password" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "Enable ServiceWorker" | ||||||
|  |   serviceworker-info: "Must be enabled for push notifications." | ||||||
|  |   vapid-publickey: "VAPID public key" | ||||||
|  |   vapid-privatekey: "VAPID private key" | ||||||
|  |   vapid-info: "If you want to enable ServiceWorker, you need to generate VAPID keys. Unless you have set your global node_modules location elsewhere, you need to run this as root:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "Chart" |   title: "Chart" | ||||||
|   per-day: "per Day" |   per-day: "per Day" | ||||||
| @@ -1004,7 +1067,7 @@ admin/views/charts.vue: | |||||||
|   federation: "Federation" |   federation: "Federation" | ||||||
|   notes: "Posts" |   notes: "Posts" | ||||||
|   users: "Users" |   users: "Users" | ||||||
|   drive: "Drive" |   drive: "Media storage" | ||||||
|   network: "Network" |   network: "Network" | ||||||
|   charts: |   charts: | ||||||
|     federation-instances: "The number of instances: increase/decrease" |     federation-instances: "The number of instances: increase/decrease" | ||||||
| @@ -1022,6 +1085,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "Requests" |     network-requests: "Requests" | ||||||
|     network-time: "Response time" |     network-time: "Response time" | ||||||
|     network-usage: "Traffic" |     network-usage: "Traffic" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "Sort" | ||||||
|  |     createdAtAsc: "Age - Oldest First" | ||||||
|  |     createdAtDesc: "Age - Newest First" | ||||||
|  |     sizeAsc: "Size - Smallest First" | ||||||
|  |     sizeDesc: "Size - Largest First" | ||||||
|  |   origin: | ||||||
|  |     title: "Origin" | ||||||
|  |     combined: "Local + Remote" | ||||||
|  |     local: "Local" | ||||||
|  |     remote: "Remote" | ||||||
|  |   delete: "Delete" | ||||||
|  |   deleted: "Deleted successfully" | ||||||
|  |   mark-as-sensitive: "Mark as 'sensitive'" | ||||||
|  |   unmark-as-sensitive: "Unmark as 'sensitive'" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "Operations" |   operation: "Operations" | ||||||
|   username-or-userid: "Username or user ID" |   username-or-userid: "Username or user ID" | ||||||
| @@ -1153,6 +1232,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "Notes" |   posts: "Notes" | ||||||
|   following: "Following" |   following: "Following" | ||||||
|   followers: "Followers" |   followers: "Followers" | ||||||
|  |   mention: "Mentions" | ||||||
|   is-bot: "This account is a Bot" |   is-bot: "This account is a Bot" | ||||||
|   years-old: "{age} years old" |   years-old: "{age} years old" | ||||||
|   year: "/" |   year: "/" | ||||||
| @@ -1162,6 +1242,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "Posts" |   default: "Posts" | ||||||
|   with-replies: "Posts and replies" |   with-replies: "Posts and replies" | ||||||
|   with-media: "Media" |   with-media: "Media" | ||||||
|  |   my-posts: "My posts" | ||||||
|   empty: "This user doesn't seem to have posted anything yet." |   empty: "This user doesn't seem to have posted anything yet." | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "Message" |   title: "Message" | ||||||
| @@ -1344,11 +1425,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "Choose files" |   select-file: "Choose files" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "Signed in as {}" |   signed-in-as: "Signed in as {}" | ||||||
|   lang: "Language" |  | ||||||
|   lang-tip: "You will need to reload the page for the changes to take effect." |  | ||||||
|   recommended: "Recommended" |  | ||||||
|   auto: "Auto" |  | ||||||
|   specify-language: "Select your language" |  | ||||||
|   design: "Design and display" |   design: "Design and display" | ||||||
|   dark-mode: "Dark Mode" |   dark-mode: "Dark Mode" | ||||||
|   i-am-under-limited-internet: "I'm in limited bandwidth" |   i-am-under-limited-internet: "I'm in limited bandwidth" | ||||||
| @@ -1365,27 +1441,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "Notification style" |   notification-position: "Notification style" | ||||||
|   notification-position-bottom: "Bottom" |   notification-position-bottom: "Bottom" | ||||||
|   notification-position-top: "Top" |   notification-position-top: "Top" | ||||||
|   theme: "Theme" |  | ||||||
|   behavior: "Behavior" |   behavior: "Behavior" | ||||||
|   fetch-on-scroll: "Endless loading on scroll" |   fetch-on-scroll: "Endless loading on scroll" | ||||||
|   note-visibility: "Post visibility" |   note-visibility: "Post visibility" | ||||||
|   default-note-visibility: "Default visibility" |   default-note-visibility: "Default visibility" | ||||||
|   remember-note-visibility: "Remember post visibility" |   remember-note-visibility: "Remember post visibility" | ||||||
|  |   web-search-engine: "Web search engine" | ||||||
|  |   web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "Don't mark the post as 'from mobile'" |   disable-via-mobile: "Don't mark the post as 'from mobile'" | ||||||
|   load-raw-images: "Show attached images in original quality" |   load-raw-images: "Show attached images in original quality" | ||||||
|   load-remote-media: "Show media from a remote server" |   load-remote-media: "Show media from a remote server" | ||||||
|   twitter: "Twitter integration" |  | ||||||
|   twitter-connect: "Connect to your Twitter account" |  | ||||||
|   twitter-reconnect: "Reconnect" |  | ||||||
|   twitter-disconnect: "Disconnect" |  | ||||||
|   github: "GitHub Integration" |  | ||||||
|   github-connect: "Connect to your GitHub account" |  | ||||||
|   github-reconnect: "Reconnect" |  | ||||||
|   github-disconnect: "Disconnect" |  | ||||||
|   discord: "Discord Integration" |  | ||||||
|   discord-connect: "Connect to your Discord account" |  | ||||||
|   discord-reconnect: "Reconnect" |  | ||||||
|   discord-disconnect: "Disconnect" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "Current version:" |   version: "Current version:" | ||||||
|   latest-version: "Latest version:" |   latest-version: "Latest version:" | ||||||
| @@ -1399,7 +1464,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "Sign out" |   signout: "Sign out" | ||||||
|   sound: "Sounds" |   sound: "Sounds" | ||||||
|   enable-sounds: "Enable sounds" |   enable-sounds: "Enable sounds" | ||||||
|   mark-as-read-all-unread-notes: "Mark all posts as read" |  | ||||||
|   password: "Password" |   password: "Password" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "Follows you" |   follows-you: "Follows you" | ||||||
| @@ -1409,12 +1473,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "Overview" |   overview: "Overview" | ||||||
|   timeline: "Timeline" |   timeline: "Timeline" | ||||||
|   media: "Media" |   media: "Media" | ||||||
|   is-suspended: "This account has been suspended." |  | ||||||
|   mute: "Mute" |   mute: "Mute" | ||||||
|   unmute: "Unmute" |   unmute: "Unmute" | ||||||
|   block: "Block" |   block: "Block" | ||||||
|   unblock: "Unblock" |   unblock: "Unblock" | ||||||
|   years-old: "{age} years old" |   years-old: "{age} years old" | ||||||
|  |   push-to-list: "Add to list" | ||||||
|  |   select-list: "Select a list" | ||||||
|  |   list-pushed: "Successfully added {user} to {list}." | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "Recent notes" |   recent-notes: "Recent notes" | ||||||
|   images: "Images" |   images: "Images" | ||||||
| @@ -1460,13 +1526,14 @@ deck/deck.user-column.vue: | |||||||
|   posts: "Posts" |   posts: "Posts" | ||||||
|   following: "Following" |   following: "Following" | ||||||
|   followers: "Followers" |   followers: "Followers" | ||||||
|  |   mention: "Mentions" | ||||||
|   images: "Images" |   images: "Images" | ||||||
|   activity: "Activity" |   activity: "Activity" | ||||||
|   timeline: "Timeline" |   timeline: "Timeline" | ||||||
|   pinned-notes: "Pinned posts" |   pinned-notes: "Pinned posts" | ||||||
|   push-to-a-list: "Add to list" |   push-to-a-list: "Add to list" | ||||||
| docs: | docs: | ||||||
|   edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?" |   edit-this-page-on-github: "Found an error, or do you want to contribute to the documentation?" | ||||||
|   edit-this-page-on-github-link: "Edit this page at GitHub!" |   edit-this-page-on-github-link: "Edit this page at GitHub!" | ||||||
|   api: |   api: | ||||||
|     entities: |     entities: | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "Cerrar" |   close: "Cerrar" | ||||||
|   do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida." |   do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida." | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "¡Listo!" |   got-it: "¡Listo!" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "Consejos de personalización" |     title: "Consejos de personalización" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado." |   my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado." | ||||||
|   i-like-sushi: "Prefiero sushi a pudín" |   i-like-sushi: "Prefiero sushi a pudín" | ||||||
|   show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi" |   show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi" | ||||||
|   use-contrast-reversi-stones: "Hacer el color de la piedra claro en Reversi" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "Cuenta verificada" |   verified-user: "Cuenta verificada" | ||||||
|   disable-animated-mfm: "Desactivar texto animado en una publicación" |   disable-animated-mfm: "Desactivar texto animado en una publicación" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción." | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "Empatado" |     drawn: "Empatado" | ||||||
|     my-turn: "Mi turno" |     my-turn: "Mi turno" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "Encuestas" |     polls: "Encuestas" | ||||||
|     post-form: "Formulario" |     post-form: "Formulario" | ||||||
|     server: "Información del servidor" |     server: "Información del servidor" | ||||||
|     donation: "Donaciones" |  | ||||||
|     nav: "Navegación" |     nav: "Navegación" | ||||||
|     tips: "Consejos" |     tips: "Consejos" | ||||||
|     hashtags: "Etiquetas" |     hashtags: "Etiquetas" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "La aplicación requiere los siguientes permisos:" |   permission-ask: "La aplicación requiere los siguientes permisos:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "閲覧注意" |   sensitive: "閲覧注意" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "Encuentra un usuario" |   search-user: "Encuentra un usuario" | ||||||
|   you: "Tu" |   you: "Tu" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "Desarrolladores" |   develop: "Desarrolladores" | ||||||
|   feedback: "Opiniones" |   feedback: "Opiniones" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "Detalles" |   detail: "Detalles" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "Copiar enlace" |   copy-link: "Copiar enlace" | ||||||
|   favorite: "Me gusta esta nota" |   favorite: "Me gusta esta nota" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "Conectando" |   connecting: "Conectando" | ||||||
|   reconnecting: "Reconectando" |   reconnecting: "Reconectando" | ||||||
|   connected: "Conectado" |   connected: "Conectado" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "Si comectas tu cuenta de Twitter con tu cuenta de Misskey podrás ver la información de tu cuemta de Twitter en tu perfil y además podrás entrar usando Twitter." |   title: "通知" | ||||||
|   connected-to: "Estas comectado con las siguientes cuentas de Twitter" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "Detalles..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "Conectar de nuevo" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Conectate usando Twitter" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|   disconnect: "Desconectado" |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|  |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "Piblica solo para tus seguidores" |   followers-desc: "Piblica solo para tus seguidores" | ||||||
|   specified: "Directo" |   specified: "Directo" | ||||||
|   specified-desc: "Publica solo para los seguidores que quieras" |   specified-desc: "Publica solo para los seguidores que quieras" | ||||||
|   private: "Privada" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "Recuperando" |   fetching: "Recuperando" | ||||||
|   no-broadcasts: "Sin emisión" |   no-broadcasts: "Sin emisión" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "Hoy:" |   today: "Hoy:" | ||||||
|   this-month: "Este mes:" |   this-month: "Este mes:" | ||||||
|   this-year: "Este año:" |   this-year: "Este año:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "Donaciones" |  | ||||||
|   text: "Para mantener Misskey funcionando tenemos que pagar por el dominio, los costos de hospedaje y otros costos. Como no recibimos dinero de publicidad, contamos con el apoyo de todos ustedes. Si estás interesado en ayudar, contacta a {}. ¡Muchas gracias por tu contribución!" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "Galería de fotos" |   title: "Galería de fotos" | ||||||
|   no-photos: "No hay fotos." |   no-photos: "No hay fotos." | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador" |   tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador" | ||||||
|   tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido." |   tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido." | ||||||
|   tips-line21: "También puedes usar la API para desarrollar tus propios bots." |   tips-line21: "También puedes usar la API para desarrollar tus propios bots." | ||||||
|   tips-line23: "Mayu is tan bonito con sus cejas." |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskey inició en 2014." |   tips-line24: "Misskey inició en 2014." | ||||||
|   tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible." |   tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible." | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "Autenticado como {}" |   signed-in-as: "Autenticado como {}" | ||||||
|   following: "Siguiendo" |   following: "Siguiendo" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "Localización" |   location: "Localización" | ||||||
|   renote: "Republicar" |   renote: "Republicar" | ||||||
|   add-reaction: "Agregar una reacción" |   add-reaction: "Agregar una reacción" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "Ventana emergente automática" |   auto-popout: "Ventana emergente automática" | ||||||
|   auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador." |   auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador." | ||||||
|   advanced: "Configuración avanzada" |   advanced: "Configuración avanzada" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "Usar iconos circulares" |   circle-icons: "Usar iconos circulares" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo" |   post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" |   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" | ||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語を選択" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "Escribe una contraseña" |   enter-password: "Escribe una contraseña" | ||||||
|   authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:" |   authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:" | ||||||
|   howtoinstall: "Cómo instalar" |   howtoinstall: "Cómo instalar" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "Luego, escanea el código QR:" |   scan: "Luego, escanea el código QR:" | ||||||
|   done: "Por favor ingresa el token mostrado en tu dispositivo:" |   done: "Por favor ingresa el token mostrado en tu dispositivo:" | ||||||
|   submit: "Enviar" |   submit: "Enviar" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "No hay aplicaciones asociadas" |   no-apps: "No hay aplicaciones asociadas" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "再接続する" |  | ||||||
|   twitter-disconnect: "切断する" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "最新のバージョン:" |   latest-version: "最新のバージョン:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされています" |   follows-you: "フォローされています" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近の投稿" |   recent-notes: "最近の投稿" | ||||||
|   images: "画像" |   images: "画像" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| const fs = require('fs'); | const fs = require('fs'); | ||||||
| const yaml = require('js-yaml'); | const yaml = require('js-yaml'); | ||||||
|  |  | ||||||
| const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL', 'zh-CN']; | const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL', 'zh-CN', 'ko-KR']; | ||||||
|  |  | ||||||
| const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8')); | const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8')); | ||||||
| const locales = langs.map(lang => ({ [lang]: loadLocale(lang) })); | const locales = langs.map(lang => ({ [lang]: loadLocale(lang) })); | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "閉じる" |   close: "閉じる" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "わかった" |   got-it: "わかった" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "カスタマイズのヒント" |     title: "カスタマイズのヒント" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" |   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" | ||||||
|   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" |   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "公式アカウント" |   verified-user: "公式アカウント" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "引き分け" |     drawn: "引き分け" | ||||||
|     my-turn: "あなたのターンです" |     my-turn: "あなたのターンです" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "アンケート" |     polls: "アンケート" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "サーバー情報" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "ヒント" |     tips: "ヒント" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "ハッシュタグ" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "このアプリは次の権限を要求しています:" |   permission-ask: "このアプリは次の権限を要求しています:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "閲覧注意" |   sensitive: "閲覧注意" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
|   you: "あなた" |   you: "あなた" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "開発者" |   develop: "開発者" | ||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "お気に入り" |   favorite: "お気に入り" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "接続中" |   connecting: "接続中" | ||||||
|   reconnecting: "再接続中" |   reconnecting: "再接続中" | ||||||
|   connected: "接続完了" |   connected: "接続完了" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されています" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "詳細..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "再接続する" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|  |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "非公開" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "確認中" |   fetching: "確認中" | ||||||
|   no-broadcasts: "お知らせはありません" |   no-broadcasts: "お知らせはありません" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はありません" |   no-photos: "写真はありません" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "位置情報" |   location: "位置情報" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||||
|   advanced: "詳細設定" |   advanced: "詳細設定" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "円形のアイコンを使用" |   circle-icons: "円形のアイコンを使用" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" |   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" | ||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語を選択" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "完了" |   submit: "完了" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "再接続する" |  | ||||||
|   twitter-disconnect: "切断する" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "最新のバージョン:" |   latest-version: "最新のバージョン:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされています" |   follows-you: "フォローされています" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近の投稿" |   recent-notes: "最近の投稿" | ||||||
|   images: "画像" |   images: "画像" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "閉じる" |   close: "閉じる" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|  |  | ||||||
|   got-it: "わかった" |   got-it: "わかった" | ||||||
|   customization-tips: |   customization-tips: | ||||||
| @@ -95,7 +96,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -117,9 +117,10 @@ common: | |||||||
|   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" |   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" | ||||||
|   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" |   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "公式アカウント" |   verified-user: "公式アカウント" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -127,17 +128,21 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|  |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |  | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|  |  | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|  |  | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "引き分け" |     drawn: "引き分け" | ||||||
| @@ -170,13 +175,13 @@ common: | |||||||
|     polls: "アンケート" |     polls: "アンケート" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "サーバー情報" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "ヒント" |     tips: "ヒント" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "ハッシュタグ" | ||||||
|  |  | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
|  |  | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
| @@ -282,6 +287,7 @@ common/views/components/media-banner.vue: | |||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
|  |  | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -298,6 +304,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -320,6 +327,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
|  |  | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
| @@ -355,7 +365,9 @@ common/views/components/nav.vue: | |||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
|  |  | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "お気に入り" |   favorite: "お気に入り" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -439,13 +451,19 @@ common/views/components/stream-indicator.vue: | |||||||
|   reconnecting: "再接続中" |   reconnecting: "再接続中" | ||||||
|   connected: "接続完了" |   connected: "接続完了" | ||||||
|  |  | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されています" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "詳細..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "再接続する" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|  |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  |  | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
|  |  | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
| @@ -474,7 +492,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "非公開" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -484,12 +501,21 @@ common/views/components/trends.vue: | |||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  |  | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
|  |  | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -497,12 +523,25 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  |  | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |  | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "確認中" |   fetching: "確認中" | ||||||
| @@ -518,10 +557,6 @@ common/views/widgets/calendar.vue: | |||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
|  |  | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" |  | ||||||
|  |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はありません" |   no-photos: "写真はありません" | ||||||
| @@ -565,10 +600,13 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  |  | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
|  |  | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -728,11 +766,13 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "位置情報" |   location: "位置情報" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|  |  | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -824,6 +864,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||||
|   advanced: "詳細設定" |   advanced: "詳細設定" | ||||||
| @@ -844,7 +886,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "円形のアイコンを使用" |   circle-icons: "円形のアイコンを使用" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -853,9 +894,16 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|  |  | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
| @@ -863,22 +911,12 @@ desktop/views/components/settings.vue: | |||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|  |  | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語を選択" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|  |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|  |  | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|  |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|  |  | ||||||
| @@ -921,6 +959,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "完了" |   submit: "完了" | ||||||
| @@ -936,13 +975,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
|  |  | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| @@ -970,6 +1009,7 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
|  |  | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
| @@ -977,6 +1017,12 @@ desktop/views/components/sub-note-content.vue: | |||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  |  | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
|  |  | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
|  |  | ||||||
| @@ -1075,6 +1121,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -1092,17 +1139,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -1123,6 +1170,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
|  |  | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
| @@ -1150,6 +1213,23 @@ admin/views/charts.vue: | |||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  |  | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
|  |  | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1299,6 +1379,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1309,6 +1390,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
|  |  | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
| @@ -1537,11 +1619,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|  |  | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1558,27 +1635,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "再接続する" |  | ||||||
|   twitter-disconnect: "切断する" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "最新のバージョン:" |   latest-version: "最新のバージョン:" | ||||||
| @@ -1592,7 +1658,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
|  |  | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
| @@ -1603,12 +1668,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
|  |  | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近の投稿" |   recent-notes: "最近の投稿" | ||||||
| @@ -1662,6 +1729,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -25,11 +25,12 @@ common: | |||||||
|   application-authorization: "アプリの連携" |   application-authorization: "アプリの連携" | ||||||
|   close: "さいなら" |   close: "さいなら" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっとあらへんのか!" | ||||||
|  |   enter-password: "パスワードを入れてや" | ||||||
|   got-it: "ほい" |   got-it: "ほい" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "カスタマイズのヒント" |     title: "カスタマイズのヒント" | ||||||
|     paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" |     paragraph: "<p>ホームのカスタマイズは、ウィジェットを増やしたりほかしたり、ドラッグ&ドロップして並び替えたりしていじれるで。</p><p>一部ウィジェットは<strong><strong>右</strong>クリック</strong>で表示もいじれるんや。</p><p>ほかしたいときはヘッダーの<strong>「ゴミ箱」</strong>にほうりこんでら。</p><p>「完了」押したらお終いやで。</p>" | ||||||
|     gotit: "Got it!" |     gotit: "Got it!" | ||||||
|   notification: |   notification: | ||||||
|     file-uploaded: "ファイルがアップロードされたで" |     file-uploaded: "ファイルがアップロードされたで" | ||||||
| @@ -89,10 +90,9 @@ common: | |||||||
|     followers-desc: "自分のフォロワー以外に見せんとって" |     followers-desc: "自分のフォロワー以外に見せんとって" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "今から言うユーザー以外に見せんとってや" |     specified-desc: "今から言うユーザー以外に見せんとってや" | ||||||
|     private: "非公開" |     local-public: "公開 (ローカルだけ)" | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-home: "ホーム (ローカルだけ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-followers: "フォロワー (ローカルだけ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |  | ||||||
|   note-placeholders: |   note-placeholders: | ||||||
|     a: "今なにしてん?" |     a: "今なにしてん?" | ||||||
|     b: "何かあったんか?" |     b: "何かあったんか?" | ||||||
| @@ -109,31 +109,37 @@ common: | |||||||
|   my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。" |   my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。" | ||||||
|   i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。" |   i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "アメちゃん付きアカウント" |   verified-user: "アメちゃん付きアカウント" | ||||||
|   disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める" |   disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "閲覧注意?見せたらあかん?そんなん知らんわ、見せろや!" |   always-show-nsfw: "閲覧注意?見せたらあかん?そんなん知らんわ、見せろや!" | ||||||
|   always-mark-nsfw: "わからんからとりあえずメディアは見せたらあかん" |   always-mark-nsfw: "わからんからとりあえずメディアは見せたらあかん" | ||||||
|   show-full-acct: "ユーザー名のホストも出したる" |   show-full-acct: "ユーザー名のホストも出したる" | ||||||
|   show-via: "viaを表示する" |   show-via: "viaを見せる" | ||||||
|   reduce-motion: "UI、動き過ぎや、静かにしてや" |   reduce-motion: "UI、動き過ぎや、静かにしてや" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OSにもとから入っとる絵文字使う" | ||||||
|   do-not-use-in-production: '開発ビルドや。本番環境で使わんといて!知らんで!' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "ちゃんとした情報見せてや!" |   view-on-remote: "ちゃんとした情報見せてや!" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が起こったわ' |     title: "問題が起こったわ" | ||||||
|     retry: 'もっぺん' |     retry: "もっぺん" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "おあいこ" |     drawn: "おあいこ" | ||||||
|     my-turn: "あんさんのターンや" |     my-turn: "あんさんのターンや" | ||||||
|     opponent-turn: "相手のターンや" |     opponent-turn: "相手のターンや" | ||||||
|     turn-of: "{name}のターンです" |     turn-of: "{name}のターンや" | ||||||
|     past-turn-of: "{name}のターン" |     past-turn-of: "{name}のターン" | ||||||
|     won: "{name}の勝ち" |     won: "{name}の勝ちやで!" | ||||||
|     black: "黒" |     black: "黒" | ||||||
|     white: "白" |     white: "白" | ||||||
|     total: "合計" |     total: "合計" | ||||||
| @@ -157,14 +163,14 @@ common: | |||||||
|     polls: "アンケート" |     polls: "アンケート" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "サーバー情報" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "ヒント" |     tips: "ヒント" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "ハッシュタグ" | ||||||
|   dev: "アプリの作成あかんかったわ。もっぺんやってみて。" |   dev: "アプリの作成あかんかったわ。もっぺんやってみて。" | ||||||
|   ai-chan-kawaii: "藍ちゃめっさべっぴんさんや" |   ai-chan-kawaii: "藍ちゃめっさべっぴんさんや" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "あんたのアカウントに<i>{name}</i>がアクセスしようとしてるで?ええか?" | ||||||
|   permission-ask: "このアプリは次の権限を要求してんで:" |   permission-ask: "このアプリは次の権限を要求してんで:" | ||||||
|   account-read: "アカウントの情報を見させてもらうで。" |   account-read: "アカウントの情報を見させてもらうで。" | ||||||
|   account-write: "アカウントの情報を操作させてもらうで。" |   account-write: "アカウントの情報を操作させてもらうで。" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "見せたらあかん" |   sensitive: "見せたらあかん" | ||||||
|   click-to-show: "押してみ、見せたるわ" |   click-to-show: "押してみ、見せたるわ" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "ナイトゲームちゃう時のテーマどないする?" |   light-theme: "ナイトゲームちゃう時のテーマどないする?" | ||||||
|   dark-theme: "ナイトゲームの時のテーマどないする?" |   dark-theme: "ナイトゲームの時のテーマどないする?" | ||||||
|   light-themes: "デイゲーム" |   light-themes: "デイゲーム" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "この色が背景や!" |   base-theme: "この色が背景や!" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "試してみる" |   preview-created-theme: "試してみる" | ||||||
|   invalid-theme: "このテーマあかんわ、なんか間違うとる" |   invalid-theme: "このテーマあかんわ、なんか間違うとる" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "もうええわ" |   hide: "もうええわ" | ||||||
|   show: "見たいやろ?" |   show: "見たいやろ?" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
|   you: "あんさん" |   you: "あんさん" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "開発者" |   develop: "開発者" | ||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "もっと" |   detail: "もっと" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "お気に入り" |   favorite: "お気に入り" | ||||||
|   unfavorite: "お気に入りやめる" |   unfavorite: "お気に入りやめる" | ||||||
| @@ -352,7 +365,7 @@ common/views/components/emoji-picker.vue: | |||||||
|   custom-emoji: "カスタム絵文字" |   custom-emoji: "カスタム絵文字" | ||||||
|   people: "人" |   people: "人" | ||||||
|   animals-and-nature: "動物&自然" |   animals-and-nature: "動物&自然" | ||||||
|   food-and-drink: "食べ物&飲み物" |   food-and-drink: "食いもん&飲みもん" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   travel-and-places: "場所" |   travel-and-places: "場所" | ||||||
|   objects: "物" |   objects: "物" | ||||||
| @@ -399,27 +412,32 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "つないどるで" |   connecting: "つないどるで" | ||||||
|   reconnecting: "つなぎ直すで" |   reconnecting: "つなぎ直すで" | ||||||
|   connected: "つないだわ" |   connected: "つないだわ" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "あんさんがつことるTwitterアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにTwitterアカウント情報が表示されるようになったり、Twitterをつこた便利なサインインが使えるようになったりすんで。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されとるで" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "詳細..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "つなぎ直す" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|   disconnect: "さいならする" |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "つなげる" | ||||||
|  |   disconnect: "接続をほかす" | ||||||
|  |   connected-to: "このアカウントと繋がっとるで" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "あんたがつことるTwitterアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにTwitterアカウント情報が表示されるようになったり、Twitterを使うた便利なサインインが使えるようになったりすんで。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されとるで" | ||||||
|   detail: "詳細..." |   detail: "くわしく..." | ||||||
|   reconnect: "再接続する" |   reconnect: "つなぎ直す" | ||||||
|   connect: "GitHubと接続する" |   connect: "GitHubと接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "接続をほかす" | ||||||
| common/views/components/discord-setting.vue: | common/views/components/discord-setting.vue: | ||||||
|   description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。" |   description: "あんたがつことるDiscordアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにDiscordアカウント情報が表示されるようになったり、Discordを使うた便利なサインインが使えるようになったりすんで。" | ||||||
|   connected-to: "次のDiscordアカウントに接続されています" |   connected-to: "次のDiscordアカウントに接続されとるで" | ||||||
|   detail: "詳細..." |   detail: "くわしく..." | ||||||
|   reconnect: "再接続する" |   reconnect: "つなぎ直す" | ||||||
|   connect: "Discordと接続する" |   connect: "Discordと接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "接続をほかす" | ||||||
| common/views/components/uploader.vue: | common/views/components/uploader.vue: | ||||||
|   waiting: "待っとる" |   waiting: "待っとる" | ||||||
| common/views/components/visibility-chooser.vue: | common/views/components/visibility-chooser.vue: | ||||||
| @@ -430,20 +448,27 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワー以外に見せんとって" |   followers-desc: "自分のフォロワー以外に見せんとって" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "今から言うユーザー以外に見せんとってや" |   specified-desc: "今から言うユーザー以外に見せんとってや" | ||||||
|   private: "非公開" |   local-public: "公開 (ローカルだけ)" | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public-desc: "リモートには見せへん" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-home: "ホーム (ローカルだけ)" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-followers: "フォロワー (ローカルだけ)" | ||||||
|   local-followers: "フォロワー (ローカルのみ)" |  | ||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "流行は自分で作るんや" |   empty: "流行は自分で作るんや" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語選んでや" | ||||||
|  |   recommended: "これええで" | ||||||
|  |   auto: "勝手にやる" | ||||||
|  |   specify-language: "言語選びや" | ||||||
|  |   info: "ページもっぺん読み込んだら反映したるで。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotやで" |   is-bot: "このアカウントはBotやで" | ||||||
|   is-locked: "他人のフォローは許可してからや!" |   is-locked: "他人のフォローは許可してからや!" | ||||||
|   careful-bot: "Botからのフォローだけは許可制や" |   careful-bot: "Botからのフォローだけは許可制や" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシーってなんや?オカンの年齢か?" |   privacy: "プライバシーってなんや?オカンの年齢か?" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存したで" |   saved: "プロフィールを保存したで" | ||||||
|   uploading: "アップロードしとります" |   uploading: "アップロードしとります" | ||||||
|   upload-failed: "これアップロードでけへんわ" |   upload-failed: "これアップロードでけへんわ" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "このメールアドレスOKや!" | ||||||
|  |   email-not-verified: "メールアドレスが確認されとらん。メールボックスもっぺん見てくれへん?" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "見てみるわ…" |   fetching: "見てみるわ…" | ||||||
|   no-broadcasts: "お知らせはあらへんで" |   no-broadcasts: "お知らせはあらへんで" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かるんや。Misskeyは広告を掲載したりせんから、収入を皆様からの寄付に頼ってますねん。もし興味があるなら、{}までご連絡よろしゅう頼んます。ご協力おおきに。" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はあらへんで" |   no-photos: "写真はあらへんで" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができんで" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができんで" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示してんねん" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示してんねん" | ||||||
|   tips-line21: "APIをつこてbotの開発なども行えるで" |   tips-line21: "APIをつこてbotの開発なども行えるで" | ||||||
|   tips-line23: "ウチのタコちゃんかわええやろ…今の突っ込むところや!" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始したんよ" |   tips-line24: "Misskeyは2014年にサービスを開始したんよ" | ||||||
|   tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで" |   tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォローしとる" |   following: "フォローしとる" | ||||||
| @@ -540,7 +576,7 @@ desktop/views/components/activity.vue: | |||||||
|   title: "アクティビティ" |   title: "アクティビティ" | ||||||
|   toggle: "表示変える" |   toggle: "表示変える" | ||||||
| desktop/views/components/calendar.vue: | desktop/views/components/calendar.vue: | ||||||
|   title: "{year}年 {month}月" |   title: "{year}年 {month} 月" | ||||||
|   prev: "前の月" |   prev: "前の月" | ||||||
|   next: "次の月" |   next: "次の月" | ||||||
|   go: "クリックしてタイムリープ" |   go: "クリックしてタイムリープ" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "ここおるで:" |   location: "ここおるで:" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返す" |   reply: "返す" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "もっと" |   detail: "もっと" | ||||||
|   private: "この投稿は見せられへんわ" |   private: "この投稿は見せられへんわ" | ||||||
|   deleted: "この投稿なんか無くなってもうたわ" |   deleted: "この投稿なんか無くなってもうたわ" | ||||||
| @@ -682,7 +720,7 @@ desktop/views/components/post-form.vue: | |||||||
|   create-poll: "アンケートを作成" |   create-poll: "アンケートを作成" | ||||||
|   text-remain: "残り{}文字" |   text-remain: "残り{}文字" | ||||||
|   recent-tags: "最近のタグ" |   recent-tags: "最近のタグ" | ||||||
|   local-only-message: "この投稿はローカルにのみ公開されます" |   local-only-message: "この投稿はローカルだけ公開されるで" | ||||||
|   click-to-tagging: "クリックでタグ付け" |   click-to-tagging: "クリックでタグ付け" | ||||||
|   visibility: "公開範囲" |   visibility: "公開範囲" | ||||||
|   geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。" |   geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "もとからの公開範囲" |   default-note-visibility: "もとからの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲おぼえといて" |   remember-note-visibility: "投稿の公開範囲おぼえといて" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q?{{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。" | ||||||
|   advanced: "もっと設定" |   advanced: "もっと設定" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "アイコンもタコ焼きも丸いやんな?" |   circle-icons: "アイコンもタコ焼きも丸いやんな?" | ||||||
|   contrasted-acct: "ユーザー名ようわからんし見やすしといて" |   contrasted-acct: "ユーザー名ようわからんし見やすしといて" | ||||||
|   post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?" |   post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示すんで" |  | ||||||
|   show-clock-on-header: "右上をカリヨン広場にする(時計表示)" |   show-clock-on-header: "右上をカリヨン広場にする(時計表示)" | ||||||
|   show-reply-target: "どこにリプライするんや見せて" |   show-reply-target: "どこにリプライするんや見せて" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -758,28 +797,27 @@ desktop/views/components/settings.vue: | |||||||
|   show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや" |   show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや" | ||||||
|   show-local-renotes: "ローカル投稿のRenoteも見たいんや" |   show-local-renotes: "ローカル投稿のRenoteも見たいんや" | ||||||
|   show-maps: "地図勝手にバァーって開いてくれ" |   show-maps: "地図勝手にバァーって開いてくれ" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿も表示しっぱなしにする" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "真ん中" |   deck-column-align-center: "真ん中" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンド鳴らす" |   enable-sounds: "サウンド鳴らす" | ||||||
|   enable-sounds-desc: "投稿やメッセージもろたとき、音鳴らしたるわ。大丈夫や、この設定はブラウザが覚えてくれとる。" |   enable-sounds-desc: "投稿やメッセージもろたとき、音鳴らしたるわ。大丈夫や、この設定はブラウザが覚えてくれとる。" | ||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語選んでや" |  | ||||||
|   recommended: "おすすめ" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語選んでくれ" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されんで。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "お掃除" |   clean-cache: "お掃除" | ||||||
|   cache-warn: "お掃除するとな、ブラウザが覚えてくれとるアカウントのあれこれや書きかけの投稿・返信・メッセージや設定情報なんかのデータが全部飛んでいくんや。これやったらページ再読込しといてな。" |   cache-warn: "お掃除するとな、ブラウザが覚えてくれとるアカウントのあれこれや書きかけの投稿・返信・メッセージや設定情報なんかのデータが全部飛んでいくんや。これやったらページ再読込しといてな。" | ||||||
|   cache-cleared: "キャッシュお掃除したで" |   cache-cleared: "キャッシュお掃除したで" | ||||||
|   cache-cleared-desc: "もっぺんページ読みこみ直してくれや" |   cache-cleared-desc: "もっぺんページ読みこみ直してくれや" | ||||||
|   auto-watch: "投稿勝手にウォッチしといてや" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を勝手に受け取るようにすんで。" |  | ||||||
|   about: "Misskeyってなんや?" |   about: "Misskeyってなんや?" | ||||||
|   operator: "このサーバー誰のや" |   operator: "このサーバー誰のや" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入れてや" |   enter-password: "パスワードを入れてや" | ||||||
|   authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:" |   authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:" | ||||||
|   howtoinstall: "インストール方法はここやで" |   howtoinstall: "インストール方法はここやで" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "んで、ここに出とるQRコードをスキャンしてな:" |   scan: "んで、ここに出とるQRコードをスキャンしてな:" | ||||||
|   done: "最後にデバイスに表示されとるトークンを入力してな:" |   done: "最後にデバイスに表示されとるトークンを入力してな:" | ||||||
|   submit: "送信" |   submit: "送信" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入れてや" |   enter-password: "パスワードを入れてや" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは勝手に付くで。" | ||||||
|     send: '送る' |     send: "送る" | ||||||
|     sending: '応答待っとる' |     sending: "応答待っとる" | ||||||
|     response: 'こんなん返ってきたわ' |     response: "こんなん返ってきたわ" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはあらへんで" |   no-apps: "連携しているアプリケーションはあらへんで" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -852,8 +891,8 @@ common/views/components/mute-and-block.vue: | |||||||
|   no-muted-users: "ミュートしとるユーザーはおらんで" |   no-muted-users: "ミュートしとるユーザーはおらんで" | ||||||
|   no-blocked-users: "ブロックしとるユーザーはおらんで" |   no-blocked-users: "ブロックしとるユーザーはおらんで" | ||||||
|   word-mute: "ワードミュート" |   word-mute: "ワードミュート" | ||||||
|   muted-words: "ミュートされたキーワード" |   muted-words: "ミュートしとるキーワード" | ||||||
|   muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります" |   muted-words-description: "スペースで区切るとAND指定で、改行で区切るとOR指定や" | ||||||
|   save: "保存" |   save: "保存" | ||||||
| common/views/components/password-settings.vue: | common/views/components/password-settings.vue: | ||||||
|   reset: "パスワード変える" |   reset: "パスワード変える" | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もっぺん入れてや" |   enter-new-password-again: "もっぺん入れてや" | ||||||
|   not-match: "パスワードがおうとらん" |   not-match: "パスワードがおうとらん" | ||||||
|   changed: "パスワード変えたわ" |   changed: "パスワード変えたわ" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は見せられへんわ" |   private: "この投稿は見せられへんわ" | ||||||
|   deleted: "この投稿なんか無くなってもうたわ" |   deleted: "この投稿なんか無くなってもうたわ" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,54 +994,71 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できるで。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
|   maintainer-name: "管理者名" |   maintainer-name: "管理者名" | ||||||
|   maintainer-email: "管理者の連絡先" |   maintainer-email: "管理者の連絡先" | ||||||
|   drive-config: "ドライブの設定" |   drive-config: "ドライブの設定" | ||||||
|   cache-remote-files: "リモートのファイルをキャッシュする" |   cache-remote-files: "リモートのファイルをキャッシュする" | ||||||
|   cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。" |   cache-remote-files-desc: "この設定を無効にすると、リモートファイルをこっちで保管せずに直接リンク張るようになるで。サーバーのストレージは軽くやろうけど、プライバシー設定で直リンクを向こうにしとるユーザーはファイルが見れへんし、サムネイルが無いから通信量が増えたりするから、普通はオンにしといてな。" | ||||||
|   local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量" |   local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量" | ||||||
|   remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量" |   remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量" | ||||||
|   mb: "メガバイト単位" |   mb: "メガバイト単位" | ||||||
|   recaptcha-config: "reCAPTCHAの設定" |   recaptcha-config: "reCAPTCHAの設定" | ||||||
|   recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。" |   recaptcha-info: "reCAPTCHAを有効にするにはreCAPTCHAトークンが要るで。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してな。" | ||||||
|   enable-recaptcha: "reCAPTCHAを有効にする" |   enable-recaptcha: "reCAPTCHAを有効にする" | ||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定してや。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定してや。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を使えるようにする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定してや。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
|   proxy-account-config: "プロキシアカウントの設定" |   proxy-account-config: "プロキシアカウントの設定" | ||||||
|   proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" |   proxy-account-info: "プロキシアカウントは、代わりにフォローしてくれるアカウントや。例えば、551に豚まんが無いときやったり、ユーザーがリモートユーザーをアカウントに入れたとき、リストに入れられたユーザーが誰からもフォローされてないと寂しいやん。寂しいし、アクティビティも配達されへんから、プロキシアカウントがフォローしてくれるで。ええやつやん…" | ||||||
|   proxy-account-username: "プロキシアカウントのユーザー名" |   proxy-account-username: "プロキシアカウントのユーザー名" | ||||||
|   proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。" |   proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してや" | ||||||
|   proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。" |   proxy-account-warn: "アカウント作るんはあんたがやってや。あんたのおかんもMisskeyもやってくれへんで。" | ||||||
|   max-note-text-length: "投稿の最大文字数" |   max-note-text-length: "投稿の最大文字数" | ||||||
|   disable-registration: "ユーザー登録の受付を停止する" |   disable-registration: "ユーザー登録の受付を止める" | ||||||
|   disable-local-timeline: "ローカルタイムラインを無効にする" |   disable-local-timeline: "ローカルタイムラインを使えんようにする" | ||||||
|   invite: "招待" |   invite: "来てや" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "保存しました" |   saved: "保存したで!" | ||||||
|   user-recommendation-config: "おすすめユーザー" |   user-recommendation-config: "このユーザーええで" | ||||||
|   enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする" |   enable-external-user-recommendation: "外部ユーザーレコメンデーションを使えるようにする" | ||||||
|   external-user-recommendation-engine: "エンジン" |   external-user-recommendation-engine: "エンジン" | ||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使うで。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,13 +1084,29 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
|   user-not-found: "ユーザーが見つかりません" |   user-not-found: "ユーザーが見つからへん!" | ||||||
|   lookup: "照会" |   lookup: "照会" | ||||||
|   reset-password: "パスワードをリセット" |   reset-password: "パスワードをリセット" | ||||||
|   password-updated: "パスワードは現在「{password}」です" |   password-updated: "パスワードは現在「{password} 」やで" | ||||||
|   suspend: "凍結" |   suspend: "凍結" | ||||||
|   suspended: "凍結しました" |   suspended: "凍結しました" | ||||||
|   unsuspend: "凍結の解除" |   unsuspend: "凍結の解除" | ||||||
| @@ -1145,14 +1223,15 @@ desktop/views/pages/user/user.profile.vue: | |||||||
|   muted: "ミュートしとるで" |   muted: "ミュートしとるで" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロックする" |   block: "ブロックする" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロックやめたる" | ||||||
|   block-confirm: "このユーザーをブロックしますか?" |   block-confirm: "このユーザーをブロックしてええか?" | ||||||
|   push-to-a-list: "リストに追加" |   push-to-a-list: "リストに追加" | ||||||
|   list-pushed: "{user}を{list}に追加したで。" |   list-pushed: "{user}を{list}に追加したで。" | ||||||
| desktop/views/pages/user/user.header.vue: | desktop/views/pages/user/user.header.vue: | ||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotや" |   is-bot: "このアカウントはBotや" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿しとらんようや。" |   empty: "このユーザーはまだ何も投稿しとらんようや。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1222,11 +1302,11 @@ mobile/views/components/media-video.vue: | |||||||
|   sensitive: "ちょっと見せられへんわ" |   sensitive: "ちょっと見せられへんわ" | ||||||
|   click-to-show: "押してみ、見せたるわ" |   click-to-show: "押してみ、見せたるわ" | ||||||
| common/views/components/follow-button.vue: | common/views/components/follow-button.vue: | ||||||
|   following: "フォロー中" |   following: "フォローしとる" | ||||||
|   follow: "フォロー" |   follow: "フォロー" | ||||||
|   request-pending: "フォロー許可待ち" |   request-pending: "フォロー許してくれるん待っとる" | ||||||
|   follow-processing: "フォロー処理中" |   follow-processing: "今フォロー処理やっとる‥" | ||||||
|   follow-request: "フォロー申請" |   follow-request: "フォローさせてや!言うてみる" | ||||||
| mobile/views/components/friends-maker.vue: | mobile/views/components/friends-maker.vue: | ||||||
|   title: "おもろそうやな" |   title: "おもろそうやな" | ||||||
|   empty: "おすすめのユーザーはおらん。" |   empty: "おすすめのユーザーはおらん。" | ||||||
| @@ -1312,7 +1392,7 @@ mobile/views/pages/home.vue: | |||||||
|   mentions: "あんた宛て" |   mentions: "あんた宛て" | ||||||
|   messages: "メッセージ" |   messages: "メッセージ" | ||||||
| mobile/views/pages/tag.vue: | mobile/views/pages/tag.vue: | ||||||
|   no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" |   no-posts-found: "ハッシュタグ「{q}」が付けられた投稿はあらへんかった。" | ||||||
| mobile/views/pages/welcome.vue: | mobile/views/pages/welcome.vue: | ||||||
|   signup: "新規登録" |   signup: "新規登録" | ||||||
| mobile/views/pages/widgets.vue: | mobile/views/pages/widgets.vue: | ||||||
| @@ -1339,16 +1419,11 @@ mobile/views/pages/games/reversi.vue: | |||||||
|   reversi: "リバーシ" |   reversi: "リバーシ" | ||||||
| mobile/views/pages/search.vue: | mobile/views/pages/search.vue: | ||||||
|   search: "探す" |   search: "探す" | ||||||
|   not-found: "「{q}」に関する投稿は見つかりませんでした。" |   not-found: "ワイは「{q}」なんて投稿知らんわ、無いんちゃう?知らんけど。" | ||||||
| mobile/views/pages/selectdrive.vue: | mobile/views/pages/selectdrive.vue: | ||||||
|   select-file: "ファイル選んでや" |   select-file: "ファイル選んでや" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "あんたは橋の下で拾った{}や!" |   signed-in-as: "あんたは橋の下で拾った{}や!" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "ページもっぺん読み込んだら反映したるで。" |  | ||||||
|   recommended: "これええで" |  | ||||||
|   auto: "勝手にやる" |  | ||||||
|   specify-language: "言語選びや" |  | ||||||
|   design: "見た感じ" |   design: "見た感じ" | ||||||
|   dark-mode: "ナイトゲームや!" |   dark-mode: "ナイトゲームや!" | ||||||
|   i-am-under-limited-internet: "電波と阪神がザコいんや" |   i-am-under-limited-internet: "電波と阪神がザコいんや" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知どこ見せる?" |   notification-position: "通知どこ見せる?" | ||||||
|   notification-position-bottom: "ミナミの方" |   notification-position-bottom: "ミナミの方" | ||||||
|   notification-position-top: "キタの方" |   notification-position-top: "キタの方" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動き" |   behavior: "動き" | ||||||
|   fetch-on-scroll: "スクロールしたらもっと見せてや" |   fetch-on-scroll: "スクロールしたらもっと見せてや" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "もとからの公開範囲" |   default-note-visibility: "もとからの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲おぼえといて" |   remember-note-visibility: "投稿の公開範囲おぼえといて" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q?{{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ" |   disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ" | ||||||
|   load-raw-images: "添付された画像もべっぴんさんのままにしといてな" |   load-raw-images: "添付された画像もべっぴんさんのままにしといてな" | ||||||
|   load-remote-media: "東京とか、リモートサーバーのメディアも見せてや" |   load-remote-media: "東京とか、リモートサーバーのメディアも見せてや" | ||||||
|   twitter: "鳥さんとも連携や!" |  | ||||||
|   twitter-connect: "鳥さん邪魔すんで" |  | ||||||
|   twitter-reconnect: "もっぺん繋ぎ直すで" |  | ||||||
|   twitter-disconnect: "邪魔するんやったら帰って" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "あんたのMisskeyいつのや?" |   update: "あんたのMisskeyいつのや?" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "いっちゃん新しいやつ:" |   latest-version: "いっちゃん新しいやつ:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "さいなら" |   signout: "さいなら" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンド鳴らす" |   enable-sounds: "サウンド鳴らす" | ||||||
|   mark-as-read-all-unread-notes: "全部もう読んだわ" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされとるで" |   follows-you: "フォローされとるで" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "こんなやつ" |   overview: "こんなやつ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーはあかんわ。凍結されとる。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュートやめたる" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロックやめたる" |   unblock: "ブロックやめたる" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに入れたる" | ||||||
|  |   select-list: "リスト選んでや" | ||||||
|  |   list-pushed: "{user}を{list}に追加したで" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近儲かりまっか?" |   recent-notes: "最近儲かりまっか?" | ||||||
|   images: "画像" |   images: "画像" | ||||||
| @@ -1439,32 +1504,33 @@ deck: | |||||||
|   hybrid: "ソーシャル" |   hybrid: "ソーシャル" | ||||||
|   hashtag: "ハッシュタグ" |   hashtag: "ハッシュタグ" | ||||||
|   global: "グローバル" |   global: "グローバル" | ||||||
|   mentions: "あなた宛て" |   mentions: "あんた宛て" | ||||||
|   direct: "ダイレクト投稿" |   direct: "ダイレクト投稿" | ||||||
|   notifications: "通知" |   notifications: "通知" | ||||||
|   list: "リスト" |   list: "リスト" | ||||||
|   swap-left: "左に移動" |   swap-left: "左に移動や!" | ||||||
|   swap-right: "右に移動" |   swap-right: "右に移動や!" | ||||||
|   swap-up: "上に移動" |   swap-up: "上に移動や!" | ||||||
|   swap-down: "下に移動" |   swap-down: "下に移動や!" | ||||||
|   remove: "カラムを削除" |   remove: "カラムにさいなら" | ||||||
|   add-column: "カラムを追加" |   add-column: "カラム増やす" | ||||||
|   rename: "名前を変更" |   rename: "名前を変えるで" | ||||||
|   stack-left: "左に重ねる" |   stack-left: "左に重ねんで!" | ||||||
|   pop-right: "右に出す" |   pop-right: "右に出すで!" | ||||||
| deck/deck.tl-column.vue: | deck/deck.tl-column.vue: | ||||||
|   is-media-only: "メディア投稿のみ" |   is-media-only: "メディア投稿だけや" | ||||||
|   is-media-view: "メディアビュー" |   is-media-view: "メディアビュー" | ||||||
|   edit: "オプション" |   edit: "オプション" | ||||||
| deck/deck.user-column.vue: | deck/deck.user-column.vue: | ||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   pinned-notes: "ピン留めされた投稿" |   pinned-notes: "ピン留めしはった投稿" | ||||||
|   push-to-a-list: "リストに追加" |   push-to-a-list: "リストに入れたる" | ||||||
| docs: | docs: | ||||||
|   edit-this-page-on-github: "間違いや改善点を見つけましたか?" |   edit-this-page-on-github: "間違いや改善点を見つけましたか?" | ||||||
|   edit-this-page-on-github-link: "このページをGitHubで編集" |   edit-this-page-on-github-link: "このページをGitHubで編集" | ||||||
|   | |||||||
							
								
								
									
										2404
									
								
								locales/ko-KR.yml
									
									
									
									
									
								
							
							
						
						| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "閉じる" |   close: "閉じる" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "わかった" |   got-it: "わかった" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "カスタマイズのヒント" |     title: "カスタマイズのヒント" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd." |   my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd." | ||||||
|   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" |   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "公式アカウント" |   verified-user: "公式アカウント" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "引き分け" |     drawn: "引き分け" | ||||||
|     my-turn: "あなたのターンです" |     my-turn: "あなたのターンです" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "アンケート" |     polls: "アンケート" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "サーバー情報" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "ヒント" |     tips: "ヒント" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "ハッシュタグ" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "このアプリは次の権限を要求しています:" |   permission-ask: "このアプリは次の権限を要求しています:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "閲覧注意" |   sensitive: "閲覧注意" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "Gebruiker zoeken" |   search-user: "Gebruiker zoeken" | ||||||
|   you: "Jij" |   you: "Jij" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "Ontwikkelaars" |   develop: "Ontwikkelaars" | ||||||
|   feedback: "Feedback" |   feedback: "Feedback" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "Deze notitie toevoegen aan favorieten" |   favorite: "Deze notitie toevoegen aan favorieten" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "Bezig met verbinden" |   connecting: "Bezig met verbinden" | ||||||
|   reconnecting: "Bezig met herverbinden" |   reconnecting: "Bezig met herverbinden" | ||||||
|   connected: "Verbonden" |   connected: "Verbonden" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "Als je je Twitter-account verbindt met je Misskey-account, dan kun je je Twitter-accountinformatie terugzien op je profiel en kun je inloggen met Twitter." |   title: "通知" | ||||||
|   connected-to: "Je bent verbonden met dit Twitter-account" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "Details..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "Opnieuw verbinden" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Koppel je Twitter-account" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|   disconnect: "Verbinding verbreken" |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|  |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "非公開" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "Bezig met ophalen" |   fetching: "Bezig met ophalen" | ||||||
|   no-broadcasts: "Geen uitzendingen" |   no-broadcasts: "Geen uitzendingen" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "Donatie" |  | ||||||
|   text: "Om Misskey draaiende te houden, geven we geld uit aan onze domeinnaam, servers, enz. We maken hier geen winst op, dus we zouden het fijn vinden als je een donatie wilt doen. Neem in dat geval contact op via {}. Bedankt voor je bijdrage!" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "Fotostream" |   title: "Fotostream" | ||||||
|   no-photos: "Geen foto's" |   no-photos: "Geen foto's" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "Locatie" |   location: "Locatie" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -678,7 +716,7 @@ desktop/views/components/post-form.vue: | |||||||
|   attach-media-from-local: "Media bijvoegen van je computer" |   attach-media-from-local: "Media bijvoegen van je computer" | ||||||
|   attach-media-from-drive: "Media bijvoegen uit je Drive" |   attach-media-from-drive: "Media bijvoegen uit je Drive" | ||||||
|   attach-cancel: "Bijlage annuleren" |   attach-cancel: "Bijlage annuleren" | ||||||
|   insert-a-kao: "v(‘ω’)v" |   insert-a-kao: "v('ω')v" | ||||||
|   create-poll: "Peiling creëren" |   create-poll: "Peiling creëren" | ||||||
|   text-remain: "{} resterende tekens" |   text-remain: "{} resterende tekens" | ||||||
|   recent-tags: "最近" |   recent-tags: "最近" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "Venster automatisch uitvouwen" |   auto-popout: "Venster automatisch uitvouwen" | ||||||
|   auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser." |   auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser." | ||||||
|   advanced: "Geavanceerde instellingen" |   advanced: "Geavanceerde instellingen" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "Ronde pictogrammen gebruiken" |   circle-icons: "Ronde pictogrammen gebruiken" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen" |   post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "Antwoord-knop tonen" |   show-reply-target: "Antwoord-knop tonen" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "Kaart tonen" |   show-maps: "Kaart tonen" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "Geluid" |   sound: "Geluid" | ||||||
|   enable-sounds: "Geluid inschakelen" |   enable-sounds: "Geluid inschakelen" | ||||||
|   enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser." |   enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser." | ||||||
|   volume: "Volume" |   volume: "Volume" | ||||||
|   test: "Testen" |   test: "Testen" | ||||||
|   language: "Taal" |  | ||||||
|   pick-language: "Selecteer een taal" |  | ||||||
|   recommended: "Aanbevolen" |  | ||||||
|   auto: "Automatisch" |  | ||||||
|   specify-language: "Taal opgeven" |  | ||||||
|   language-desc: "Je moet de pagina herladen om de wijzigingen toe te passen." |  | ||||||
|   cache: "Cache" |   cache: "Cache" | ||||||
|   clean-cache: "Opschonen" |   clean-cache: "Opschonen" | ||||||
|   cache-warn: "De cache van je accountinformatie/berichten/antwoorden/instellingen wordt verwijderd. Je moet de pagina herladen na het opschonen." |   cache-warn: "De cache van je accountinformatie/berichten/antwoorden/instellingen wordt verwijderd. Je moet de pagina herladen na het opschonen." | ||||||
|   cache-cleared: "Cache opgeschoond" |   cache-cleared: "Cache opgeschoond" | ||||||
|   cache-cleared-desc: "Herlaad de pagina." |   cache-cleared-desc: "Herlaad de pagina." | ||||||
|   auto-watch: "Automatisch volgen" |  | ||||||
|   auto-watch-desc: "Automatisch meldingen ontvangen over het bericht/antwoord." |  | ||||||
|   about: "Over Misskey" |   about: "Over Misskey" | ||||||
|   operator: "De administrator van deze instantie" |   operator: "De administrator van deze instantie" | ||||||
|   update: "Misskey-update" |   update: "Misskey-update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "Voer het wachtwoord in" |   enter-password: "Voer het wachtwoord in" | ||||||
|   authenticator: "Installeer eerst Google Authenticator op je apparaat:" |   authenticator: "Installeer eerst Google Authenticator op je apparaat:" | ||||||
|   howtoinstall: "Hoe installeer ik dit?" |   howtoinstall: "Hoe installeer ik dit?" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "Scan daarna de QR-code:" |   scan: "Scan daarna de QR-code:" | ||||||
|   done: "Voer de op je apparaat getoonde sleutel in:" |   done: "Voer de op je apparaat getoonde sleutel in:" | ||||||
|   submit: "Versturen" |   submit: "Versturen" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "Peilingen" |   poll: "Peilingen" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "Taakbeheer" |   title: "Taakbeheer" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "Berichten" |   default: "Berichten" | ||||||
|   with-replies: "Berichten en antwoorden" |   with-replies: "Berichten en antwoorden" | ||||||
|   with-media: "Media" |   with-media: "Media" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "Deze gebruiker heeft nog niks geplaatst." |   empty: "Deze gebruiker heeft nog niks geplaatst." | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "Gesprekken" |   title: "Gesprekken" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "Kies een bestand" |   select-file: "Kies een bestand" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "Ingelogd als {}" |   signed-in-as: "Ingelogd als {}" | ||||||
|   lang: "Taal" |  | ||||||
|   lang-tip: "Je moet de pagina herladen om de wijzigingen toe te passen." |  | ||||||
|   recommended: "Aanbevolen" |  | ||||||
|   auto: "Automatisch" |  | ||||||
|   specify-language: "Taal opgeven" |  | ||||||
|   design: "Ontwerp en weergave" |   design: "Ontwerp en weergave" | ||||||
|   dark-mode: "Donkere modus" |   dark-mode: "Donkere modus" | ||||||
|   i-am-under-limited-internet: "Ik heb beperkt internet" |   i-am-under-limited-internet: "Ik heb beperkt internet" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "Gedrag" |   behavior: "Gedrag" | ||||||
|   fetch-on-scroll: "Ophalen bij scrollen" |   fetch-on-scroll: "Ophalen bij scrollen" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "Zonder 'mobiele berichten'" |   disable-via-mobile: "Zonder 'mobiele berichten'" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter-integratie" |  | ||||||
|   twitter-connect: "Mijn Twitter-account verbinden" |  | ||||||
|   twitter-reconnect: "Opnieuw verbinden" |  | ||||||
|   twitter-disconnect: "Verbinding verbreken" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey-update" |   update: "Misskey-update" | ||||||
|   version: "Huidige versie:" |   version: "Huidige versie:" | ||||||
|   latest-version: "Nieuwste versie:" |   latest-version: "Nieuwste versie:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "Uitloggen" |   signout: "Uitloggen" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "Volgt jou" |   follows-you: "Volgt jou" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "Overzicht" |   overview: "Overzicht" | ||||||
|   timeline: "Tijdlijn" |   timeline: "Tijdlijn" | ||||||
|   media: "Media" |   media: "Media" | ||||||
|   is-suspended: "Dit account is geschorst." |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "Recente notities" |   recent-notes: "Recente notities" | ||||||
|   images: "Afbeeldingen" |   images: "Afbeeldingen" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "Lukk" |   close: "Lukk" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "Skjønner!" |   got-it: "Skjønner!" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "カスタマイズのヒント" |     title: "カスタマイズのヒント" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "Privat" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget." |   my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget." | ||||||
|   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" |   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "公式アカウント" |   verified-user: "公式アカウント" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "引き分け" |     drawn: "引き分け" | ||||||
|     my-turn: "あなたのターンです" |     my-turn: "あなたのターンです" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "アンケート" |     polls: "アンケート" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "サーバー情報" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "Tips" |     tips: "Tips" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "ハッシュタグ" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "このアプリは次の権限を要求しています:" |   permission-ask: "このアプリは次の権限を要求しています:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "Sensitivt innhold" |   sensitive: "Sensitivt innhold" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Mørk" |   base-theme-dark: "Mørk" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "Tema navn" |   theme-name: "Tema navn" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "Skjul" |   hide: "Skjul" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
|   you: "Du" |   you: "Du" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "Utviklere" |   develop: "Utviklere" | ||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "Detaljer" |   detail: "Detaljer" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "Merket som favoritt" |   favorite: "Merket som favoritt" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "Tilkobler" |   connecting: "Tilkobler" | ||||||
|   reconnecting: "Kobler til på nytt" |   reconnecting: "Kobler til på nytt" | ||||||
|   connected: "Tilkoblet" |   connected: "Tilkoblet" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されています" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "Detaljer..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "Koble til på nytt" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|   disconnect: "Koble fra" |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|  |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "Direkte" |   specified: "Direkte" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "Privat" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "Henter" |   fetching: "Henter" | ||||||
|   no-broadcasts: "お知らせはありません" |   no-broadcasts: "お知らせはありません" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "I dag:" |   today: "I dag:" | ||||||
|   this-month: "Denne måneden:" |   this-month: "Denne måneden:" | ||||||
|   this-year: "Dette året:" |   this-year: "Dette året:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はありません" |   no-photos: "写真はありません" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "Lokasjon" |   location: "Lokasjon" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||||
|   advanced: "Avanserte innstillinger" |   advanced: "Avanserte innstillinger" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "円形のアイコンを使用" |   circle-icons: "円形のアイコンを使用" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "Lyd" |   sound: "Lyd" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" |   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" | ||||||
|   volume: "Volum" |   volume: "Volum" | ||||||
|   test: "Test" |   test: "Test" | ||||||
|   language: "Språk" |  | ||||||
|   pick-language: "Velg språk" |  | ||||||
|   recommended: "Anbefalt" |  | ||||||
|   auto: "Automatisk" |  | ||||||
|   specify-language: "Angi språk" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "Hurtiglager" |   cache: "Hurtiglager" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "Send" |   submit: "Send" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "Innlegg" |   posts: "Innlegg" | ||||||
|   following: "Følger" |   following: "Følger" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "Innlegg" |   default: "Innlegg" | ||||||
|   with-replies: "Innlegg og svar" |   with-replies: "Innlegg og svar" | ||||||
|   with-media: "Media" |   with-media: "Media" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "Melding" |   title: "Melding" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "Språk" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "Anbefalt" |  | ||||||
|   auto: "Automatisk" |  | ||||||
|   specify-language: "Angi språk" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "Bunn" |   notification-position-bottom: "Bunn" | ||||||
|   notification-position-top: "Topp" |   notification-position-top: "Topp" | ||||||
|   theme: "Utseende" |  | ||||||
|   behavior: "Oppførsel" |   behavior: "Oppførsel" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "Koble til på nytt" |  | ||||||
|   twitter-disconnect: "Koble fra" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "最新のバージョン:" |   latest-version: "最新のバージョン:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "Lyder" |   sound: "Lyder" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされています" |   follows-you: "フォローされています" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "Oversikt" |   overview: "Oversikt" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "Media" |   media: "Media" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "Nylige innlegg" |   recent-notes: "Nylige innlegg" | ||||||
|   images: "Bilder" |   images: "Bilder" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "Fechar" |   close: "Fechar" | ||||||
|   do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida." |   do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida." | ||||||
|   load-more: "もっと読み込む" |   load-more: "もっと読み込む" | ||||||
|  |   enter-password: "パスワードを入力してください" | ||||||
|   got-it: "Entendi!" |   got-it: "Entendi!" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "Dicas de personalização" |     title: "Dicas de personalização" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado." |   my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado." | ||||||
|   i-like-sushi: "Eu prefiro sushi a pudim" |   i-like-sushi: "Eu prefiro sushi a pudim" | ||||||
|   show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi" |   show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "Conta verificada" |   verified-user: "Conta verificada" | ||||||
|   disable-animated-mfm: "Desativar texto animado nas publicações" |   disable-animated-mfm: "Desativar texto animado nas publicações" | ||||||
|  |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   always-show-nsfw: "常に閲覧注意のメディアを表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-mark-nsfw: "常にメディアを閲覧注意として投稿" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "UIの動きを減らす" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "このデバイスのみ" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "OS標準の絵文字を使用" | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。" | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "問題が発生しました" | ||||||
|     retry: 'やり直す' |     retry: "やり直す" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "Empatado" |     drawn: "Empatado" | ||||||
|     my-turn: "Seu turno" |     my-turn: "Seu turno" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "Enquetes" |     polls: "Enquetes" | ||||||
|     post-form: "Formulário de publicação" |     post-form: "Formulário de publicação" | ||||||
|     server: "Informações do servidor" |     server: "Informações do servidor" | ||||||
|     donation: "Doações" |  | ||||||
|     nav: "Navegação" |     nav: "Navegação" | ||||||
|     tips: "Dicas" |     tips: "Dicas" | ||||||
|     hashtags: "Hashtags" |     hashtags: "Hashtags" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "アプリの作成に失敗しました。再度お試しください。" | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "藍ちゃかわいい" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" | ||||||
|   permission-ask: "Este aplicativo precisa das seguintes permissões:" |   permission-ask: "Este aplicativo precisa das seguintes permissões:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "閲覧注意" |   sensitive: "閲覧注意" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
|   you: "Você" |   you: "Você" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "開発者" |   develop: "開発者" | ||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "お気に入り" |   favorite: "お気に入り" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "接続中" |   connecting: "接続中" | ||||||
|   reconnecting: "再接続中" |   reconnecting: "再接続中" | ||||||
|   connected: "接続完了" |   connected: "接続完了" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されています" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "詳細..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "再接続する" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|  |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "非公開" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "確認中" |   fetching: "確認中" | ||||||
|   no-broadcasts: "お知らせはありません" |   no-broadcasts: "お知らせはありません" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はありません" |   no-photos: "写真はありません" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "位置情報" |   location: "位置情報" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||||
|   advanced: "詳細設定" |   advanced: "詳細設定" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "円形のアイコンを使用" |   circle-icons: "円形のアイコンを使用" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" |   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" | ||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語を選択" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "完了" |   submit: "完了" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Conectar à sua conta no Twitter" |  | ||||||
|   twitter-reconnect: "Reconectar" |  | ||||||
|   twitter-disconnect: "Desconectar" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Atualizar Misskey" |   update: "Atualizar Misskey" | ||||||
|   version: "Versão atual;" |   version: "Versão atual;" | ||||||
|   latest-version: "Última versão:" |   latest-version: "Última versão:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "Sair" |   signout: "Sair" | ||||||
|   sound: "Sons" |   sound: "Sons" | ||||||
|   enable-sounds: "Ativar sons" |   enable-sounds: "Ativar sons" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "Te segue" |   follows-you: "Te segue" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "Linha do tempo" |   timeline: "Linha do tempo" | ||||||
|   media: "Mídia" |   media: "Mídia" | ||||||
|   is-suspended: "Esta conta foi suspensa" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "Notas recentes" |   recent-notes: "Notas recentes" | ||||||
|   images: "Imagens" |   images: "Imagens" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -7,73 +7,74 @@ common: | |||||||
|   about-title: "Мы — ⭐ fediverse" |   about-title: "Мы — ⭐ fediverse" | ||||||
|   about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом." |   about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом." | ||||||
|   intro: |   intro: | ||||||
|     title: "Misskeyって?" |     title: "Что такое Misskey?" | ||||||
|     about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" |     about: "Misskey - это <b>децентрализованный сервис микроблогинга</b> с открытым исходным кодом. Он имеет такие функции, как: навороченный, полностью настраиваемый пользовательский интерфейс, множество реакций на посты, бесплатное хранилище файлов с интегрированной системой управления и ещё куча передовых фишек. А ещё сетевая система под названием “Fediverse” позволяет нам общаться с пользователями других социальных сетей. Например, если ты что-нибудь запостишь, то твой пост будет отослан не только в Misskey, но ещё и mastodon. Просто представь, что планета посылает микроволны на другую планету для коммуникации." | ||||||
|     features: "特徴" |     features: "Особенности" | ||||||
|     rich-contents: "投稿" |     rich-contents: "Посты" | ||||||
|     rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" |     rich-contents-desc: "Просто выложи свою идею, актуальные темы и всё, что тебе хочется показать миру. Ты можешь декорировать свои слова, прикреплять свои любимые картинки, отправлять файлы с фильмами и создать голосование - это те вещи, которые ты можешь сделать с помощью Misskey!" | ||||||
|     reaction: "リアクション" |     reaction: "Реакции" | ||||||
|     reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" |     reaction-desc: "Самый лёгкий способ выразить свои эмоции. Misskey позволяет добавлять различные виды реакций к постам других людей. Эмоциональный опыт из Misskey никогда не появится в других социальных сетях, позволяющих только жать “лайки”." | ||||||
|     ui: "インターフェース" |     ui: "Интерфейс" | ||||||
|     ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" |     ui-desc: "Нет такого интерфейса, понравившегося всем. Поэтому у Misskey имеется пользовательский интерфейс, широко настраиваемый под ваши вкусы. Создай себе уникальную домашнюю страницу редактируя, подстраивая оформление ленты и размещая виджеты, которые тоже можно кастомизировать." | ||||||
|     drive: "ドライブ" |     drive: "Хранилище файлов" | ||||||
|     drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" |     drive-desc: "Хотите запостить картинку, которую уже отправляли ранее? Хочется сортировать, переименовать и создать папку для ваших выложенных файлов? Тогда Misskey Drive - это лучшее решение для вас. Очень лёгкий способ делиться своими файлами онлайн." | ||||||
|     outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" |     outro: "Попробуйте будущие, уникальные для Misskey функции своими глазами! Если чувствуете, что это не в вашем вкусе, то попробуйте другие инстанции, ведь Misskey - это децентрализованная социальная сеть, так что ты можешь с лёгкостью найти себе товарищей. И наконец, GLHF!" | ||||||
|   adblock: |   adblock: | ||||||
|     detected: "広告ブロッカーを無効にしてください" |     detected: "Пожалуйста, отключите блокировщик рекламы." | ||||||
|     warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。" |     warning: "Некоторые функции перестанут быть доступными или будут работать неправильно, если включена блокировка рекламы. <strong>В Misskey нет рекламы</strong>." | ||||||
|   application-authorization: "アプリの連携" |   application-authorization: "Авторизация приложений" | ||||||
|   close: "閉じる" |   close: "Закрыть" | ||||||
|   do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" |   do-not-copy-paste: "Пожалуйста, не вводите и не вставляйте сюда код. Аккаунту может угрожать опасность." | ||||||
|   load-more: "もっと読み込む" |   load-more: "Загрузить больше" | ||||||
|  |   enter-password: "Пожалуйста, введите ваш пароль" | ||||||
|   got-it: "わかった" |   got-it: "わかった" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "カスタマイズのヒント" |     title: "Советы по настройке" | ||||||
|     paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" |     paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" | ||||||
|     gotit: "Got it!" |     gotit: "Понятно!" | ||||||
|   notification: |   notification: | ||||||
|     file-uploaded: "ファイルがアップロードされました" |     file-uploaded: "Файл отправлен!" | ||||||
|     message-from: "{}さんからメッセージ:" |     message-from: "Сообщение от {}:" | ||||||
|     reversi-invited: "対局への招待があります" |     reversi-invited: "Приглашён в игру" | ||||||
|     reversi-invited-by: "{}さんから" |     reversi-invited-by: "Был приглашён {}:" | ||||||
|     notified-by: "{}さんから" |     notified-by: "{}さんから" | ||||||
|     reply-from: "{}さんから返信:" |     reply-from: "Ответ от {}:" | ||||||
|     quoted-by: "{}さんが引用:" |     quoted-by: "Цитировано {}:" | ||||||
|   time: |   time: | ||||||
|     unknown: "なぞのじかん" |     unknown: "неизвестно" | ||||||
|     future: "未来" |     future: "сейчас" | ||||||
|     just_now: "たった今" |     just_now: "сейчас" | ||||||
|     seconds_ago: "{}秒前" |     seconds_ago: "{} секунд назад" | ||||||
|     minutes_ago: "{}分前" |     minutes_ago: "{} минут назад" | ||||||
|     hours_ago: "{}時間前" |     hours_ago: "{} часов назад" | ||||||
|     days_ago: "{}日前" |     days_ago: "{} дней назад" | ||||||
|     weeks_ago: "{}週間前" |     weeks_ago: "{} недель назад" | ||||||
|     months_ago: "{}ヶ月前" |     months_ago: "{} месяцев назад" | ||||||
|     years_ago: "{}年前" |     years_ago: "{} лет назад" | ||||||
|   month-and-day: "{month}月 {day}日" |   month-and-day: "{day}.{month}" | ||||||
|   trash: "ゴミ箱" |   trash: "Мусорное ведро" | ||||||
|   drive: "ドライブ" |   drive: "Drive" | ||||||
|   messaging: "トーク" |   messaging: "Чат" | ||||||
|   weekday-short: |   weekday-short: | ||||||
|     sunday: "日" |     sunday: "Вс" | ||||||
|     monday: "月" |     monday: "Пн" | ||||||
|     tuesday: "火" |     tuesday: "Вт" | ||||||
|     wednesday: "水" |     wednesday: "Ср" | ||||||
|     thursday: "木" |     thursday: "Чт" | ||||||
|     friday: "金" |     friday: "Пт" | ||||||
|     saturday: "土" |     saturday: "Сб" | ||||||
|   weekday: |   weekday: | ||||||
|     sunday: "日曜日" |     sunday: "Воскресенье" | ||||||
|     monday: "月曜日" |     monday: "Понедельник" | ||||||
|     tuesday: "火曜日" |     tuesday: "Вторник" | ||||||
|     wednesday: "水曜日" |     wednesday: "Среда" | ||||||
|     thursday: "木曜日" |     thursday: "Четверг" | ||||||
|     friday: "金曜日" |     friday: "Пятница" | ||||||
|     saturday: "土曜日" |     saturday: "Суббота" | ||||||
|   reactions: |   reactions: | ||||||
|     like: "いいね" |     like: "Нравится" | ||||||
|     love: "しゅき" |     love: "しゅき" | ||||||
|     laugh: "笑" |     laugh: "Ха-Ха" | ||||||
|     hmm: "ふぅ~む" |     hmm: "ふぅ~む" | ||||||
|     surprise: "わお" |     surprise: "わお" | ||||||
|     congrats: "おめでとう" |     congrats: "おめでとう" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "自分のフォロワーにのみ公開" |     followers-desc: "自分のフォロワーにのみ公開" | ||||||
|     specified: "ダイレクト" |     specified: "ダイレクト" | ||||||
|     specified-desc: "指定したユーザーにのみ公開" |     specified-desc: "指定したユーザーにのみ公開" | ||||||
|     private: "非公開" |  | ||||||
|     local-public: "公開 (ローカルのみ)" |     local-public: "公開 (ローカルのみ)" | ||||||
|     local-home: "ホーム (ローカルのみ)" |     local-home: "ホーム (ローカルのみ)" | ||||||
|     local-followers: "フォロワー (ローカルのみ)" |     local-followers: "フォロワー (ローカルのみ)" | ||||||
| @@ -109,62 +109,68 @@ common: | |||||||
|   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" |   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" | ||||||
|   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" |   i-like-sushi: "私は(プリンよりむしろ)寿司が好き" | ||||||
|   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" |   show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" | ||||||
|   use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "公式アカウント" |   verified-user: "公式アカウント" | ||||||
|   disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" |   disable-animated-mfm: "Отключить анимированный текст в постах" | ||||||
|   always-show-nsfw: "常に閲覧注意のメディアを表示する" |   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" | ||||||
|   always-mark-nsfw: "常にメディアを閲覧注意として投稿" |   always-show-nsfw: "Всегда показывать NSFW контент" | ||||||
|  |   always-mark-nsfw: "Всегда помечать посты с медиафайлами как NSFW" | ||||||
|   show-full-acct: "ユーザー名のホストを省略しない" |   show-full-acct: "ユーザー名のホストを省略しない" | ||||||
|   show-via: "viaを表示する" |   show-via: "показать через" | ||||||
|   reduce-motion: "UIの動きを減らす" |   reduce-motion: "Уменьшить движение в интерфейсе" | ||||||
|   this-setting-is-this-device-only: "このデバイスのみ" |   this-setting-is-this-device-only: "Только для этого устройства" | ||||||
|   use-os-default-emojis: "OS標準の絵文字を使用" |   use-os-default-emojis: "Использовать стандартные Emoji из ОС" | ||||||
|   do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "Эта сборка для разработчиков. Не используйте в продакшне." | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "このユーザー情報はコピーです。" |   is-remote-user: "このユーザー情報はコピーです。" | ||||||
|   is-remote-post: "この投稿情報はコピーです。" |   is-remote-post: "この投稿情報はコピーです。" | ||||||
|   view-on-remote: "正確な情報を見る" |   view-on-remote: "正確な情報を見る" | ||||||
|   renoted-by: "{user}がRenote" |   renoted-by: "{user}がRenote" | ||||||
|   error: |   error: | ||||||
|     title: '問題が発生しました' |     title: "Что-то пошло не так :(" | ||||||
|     retry: 'やり直す' |     retry: "Повторить" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "引き分け" |     drawn: "Ничья" | ||||||
|     my-turn: "あなたのターンです" |     my-turn: "Ваш ход" | ||||||
|     opponent-turn: "相手のターンです" |     opponent-turn: "Ход оппонента" | ||||||
|     turn-of: "{name}のターンです" |     turn-of: "Ход {name}" | ||||||
|     past-turn-of: "{name}のターン" |     past-turn-of: "Ход {name}" | ||||||
|     won: "{name}の勝ち" |     won: "{name} победил" | ||||||
|     black: "黒" |     black: "Чёрный" | ||||||
|     white: "白" |     white: "Белый" | ||||||
|     total: "合計" |     total: "Всего" | ||||||
|     this-turn: "{count}ターン目" |     this-turn: "Ход {count}" | ||||||
|   widgets: |   widgets: | ||||||
|     analog-clock: "アナログ時計" |     analog-clock: "Аналоговые часы" | ||||||
|     profile: "プロフィール" |     profile: "Профиль" | ||||||
|     calendar: "カレンダー" |     calendar: "Календарь" | ||||||
|     timemachine: "カレンダー(タイムマシン)" |     timemachine: "Календарь (машина времени)" | ||||||
|     activity: "アクティビティ" |     activity: "Активность" | ||||||
|     rss: "RSSリーダー" |     rss: "Ридер RSS" | ||||||
|     memo: "付箋" |     memo: "Заметка" | ||||||
|     trends: "トレンド" |     trends: "Популярное" | ||||||
|     photo-stream: "フォトストリーム" |     photo-stream: "Фотопоток" | ||||||
|     posts-monitor: "投稿チャート" |     posts-monitor: "投稿チャート" | ||||||
|     slideshow: "スライドショー" |     slideshow: "Слайдшоу" | ||||||
|     version: "バージョン" |     version: "Версия" | ||||||
|     broadcast: "ブロードキャスト" |     broadcast: "ブロードキャスト" | ||||||
|     notifications: "通知" |     notifications: "Уведомления" | ||||||
|     users: "おすすめユーザー" |     users: "Рекомендованные пользователи" | ||||||
|     polls: "アンケート" |     polls: "Голосования" | ||||||
|     post-form: "投稿フォーム" |     post-form: "投稿フォーム" | ||||||
|     server: "サーバー情報" |     server: "Информация о сервере" | ||||||
|     donation: "寄付のお願い" |  | ||||||
|     nav: "ナビゲーション" |     nav: "ナビゲーション" | ||||||
|     tips: "ヒント" |     tips: "ヒント" | ||||||
|     hashtags: "ハッシュタグ" |     hashtags: "Хэштеги" | ||||||
|   dev: "アプリの作成に失敗しました。再度お試しください。" |   dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз." | ||||||
|   ai-chan-kawaii: "藍ちゃかわいい" |   ai-chan-kawaii: "Ai-chan kawaii!" | ||||||
|  |   you: "あなた" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" |   share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?" | ||||||
|   permission-ask: "このアプリは次の権限を要求しています:" |   permission-ask: "このアプリは次の権限を要求しています:" | ||||||
|   account-read: "アカウントの情報を見る。" |   account-read: "アカウントの情報を見る。" | ||||||
|   account-write: "アカウントの情報を操作する。" |   account-write: "アカウントの情報を操作する。" | ||||||
| @@ -210,28 +216,28 @@ common/views/components/games/reversi/reversi.index.vue: | |||||||
|   all-games: "みんなの対局" |   all-games: "みんなの対局" | ||||||
|   enter-username: "ユーザー名を入力してください" |   enter-username: "ユーザー名を入力してください" | ||||||
|   game-state: |   game-state: | ||||||
|     ended: "終了" |     ended: "Завершено" | ||||||
|     playing: "進行中" |     playing: "В процессе" | ||||||
| common/views/components/games/reversi/reversi.room.vue: | common/views/components/games/reversi/reversi.room.vue: | ||||||
|   settings-of-the-game: "ゲームの設定" |   settings-of-the-game: "Настройки игры" | ||||||
|   choose-map: "マップを選択" |   choose-map: "マップを選択" | ||||||
|   random: "ランダム" |   random: "Случайно" | ||||||
|   black-or-white: "先手/後手" |   black-or-white: "Чёрные/Белые" | ||||||
|   black-is: "{}が黒" |   black-is: "{} ходит чёрными" | ||||||
|   rules: "ルール" |   rules: "Правила" | ||||||
|   is-llotheo: "石の少ない方が勝ち(ロセオ)" |   is-llotheo: "石の少ない方が勝ち(ロセオ)" | ||||||
|   looped-map: "ループマップ" |   looped-map: "ループマップ" | ||||||
|   can-put-everywhere: "どこでも置けるモード" |   can-put-everywhere: "どこでも置けるモード" | ||||||
|   settings-of-the-bot: "Botの設定" |   settings-of-the-bot: "Настройки бота" | ||||||
|   this-game-is-started-soon: "ゲームは数秒後に開始されます" |   this-game-is-started-soon: "Игра вот-вот начнётся" | ||||||
|   waiting-for-other: "相手の準備が完了するのを待っています" |   waiting-for-other: "Ожидание оппонента" | ||||||
|   waiting-for-me: "あなたの準備が完了するのを待っています" |   waiting-for-me: "あなたの準備が完了するのを待っています" | ||||||
|   waiting-for-both: "準備中" |   waiting-for-both: "準備中" | ||||||
|   cancel: "キャンセル" |   cancel: "Отмена" | ||||||
|   ready: "準備完了" |   ready: "Готов" | ||||||
|   cancel-ready: "準備続行" |   cancel-ready: "準備続行" | ||||||
| common/views/components/connect-failed.vue: | common/views/components/connect-failed.vue: | ||||||
|   title: "サーバーに接続できません" |   title: "Невозможно подключиться к серверу" | ||||||
|   description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。" |   description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。" | ||||||
|   thanks: "いつもMisskeyをご利用いただきありがとうございます。" |   thanks: "いつもMisskeyをご利用いただきありがとうございます。" | ||||||
|   troubleshoot: "トラブルシュート" |   troubleshoot: "トラブルシュート" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "閲覧注意" |   sensitive: "閲覧注意" | ||||||
|   click-to-show: "クリックして表示" |   click-to-show: "クリックして表示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "非ダークモード時に使用するテーマ" |   light-theme: "非ダークモード時に使用するテーマ" | ||||||
|   dark-theme: "ダークモード時に使用するテーマ" |   dark-theme: "ダークモード時に使用するテーマ" | ||||||
|   light-themes: "明るいテーマ" |   light-themes: "明るいテーマ" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "ベーステーマ" |   base-theme: "ベーステーマ" | ||||||
|   base-theme-light: "Light" |   base-theme-light: "Light" | ||||||
|   base-theme-dark: "Dark" |   base-theme-dark: "Dark" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "テーマ名" |   theme-name: "テーマ名" | ||||||
|   preview-created-theme: "プレビュー" |   preview-created-theme: "プレビュー" | ||||||
|   invalid-theme: "テーマが正しくありません。" |   invalid-theme: "テーマが正しくありません。" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隠す" |   hide: "隠す" | ||||||
|   show: "もっと見る" |   show: "もっと見る" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count}ファイル" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "ユーザーを探す" |   search-user: "ユーザーを探す" | ||||||
|   you: "あなた" |   you: "あなた" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "開発者" |   develop: "開発者" | ||||||
|   feedback: "フィードバック" |   feedback: "フィードバック" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "リンクをコピー" |   copy-link: "リンクをコピー" | ||||||
|   favorite: "お気に入り" |   favorite: "お気に入り" | ||||||
|   unfavorite: "お気に入り解除" |   unfavorite: "お気に入り解除" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "接続中" |   connecting: "接続中" | ||||||
|   reconnecting: "再接続中" |   reconnecting: "再接続中" | ||||||
|   connected: "接続完了" |   connected: "接続完了" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" |   title: "通知" | ||||||
|   connected-to: "次のTwitterアカウントに接続されています" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "詳細..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "再接続する" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "Twitterと接続する" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|  |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "接続する" | ||||||
|   disconnect: "切断する" |   disconnect: "切断する" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" |   description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" | ||||||
|   connected-to: "次のGitHubアカウントに接続されています" |   connected-to: "次のGitHubアカウントに接続されています" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "自分のフォロワーにのみ公開" |   followers-desc: "自分のフォロワーにのみ公開" | ||||||
|   specified: "ダイレクト" |   specified: "ダイレクト" | ||||||
|   specified-desc: "指定したユーザーにのみ公開" |   specified-desc: "指定したユーザーにのみ公開" | ||||||
|   private: "非公開" |  | ||||||
|   local-public: "公開 (ローカルのみ)" |   local-public: "公開 (ローカルのみ)" | ||||||
|   local-public-desc: "リモートへは公開しない" |   local-public-desc: "リモートへは公開しない" | ||||||
|   local-home: "ホーム (ローカルのみ)" |   local-home: "ホーム (ローカルのみ)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{}人が投稿" |   count: "{}人が投稿" | ||||||
|   empty: "トレンドなし" |   empty: "トレンドなし" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "表示言語" | ||||||
|  |   pick-language: "言語を選択" | ||||||
|  |   recommended: "推奨" | ||||||
|  |   auto: "自動" | ||||||
|  |   specify-language: "言語を指定" | ||||||
|  |   info: "変更はページの再度読み込み後に反映されます。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "プロフィール" |   title: "プロフィール" | ||||||
|   name: "名前" |   name: "名前" | ||||||
|   account: "アカウント" |   account: "アカウント" | ||||||
|   location: "場所" |   location: "場所" | ||||||
|   description: "自己紹介" |   description: "自己紹介" | ||||||
|  |   language: "言語" | ||||||
|   birthday: "誕生日" |   birthday: "誕生日" | ||||||
|   avatar: "アイコン" |   avatar: "アイコン" | ||||||
|   banner: "バナー" |   banner: "バナー" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   is-locked: "フォローを承認制にする" |   is-locked: "フォローを承認制にする" | ||||||
|   careful-bot: "Botからのフォローだけ承認制にする" |   careful-bot: "Botからのフォローだけ承認制にする" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "その他" |   advanced: "その他" | ||||||
|   privacy: "プライバシー" |   privacy: "プライバシー" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "プロフィールを保存しました" |   saved: "プロフィールを保存しました" | ||||||
|   uploading: "アップロード中" |   uploading: "アップロード中" | ||||||
|   upload-failed: "アップロードに失敗しました" |   upload-failed: "アップロードに失敗しました" | ||||||
|  |   email: "メール設定" | ||||||
|  |   email-address: "メールアドレス" | ||||||
|  |   email-verified: "メールアドレスが確認されました" | ||||||
|  |   email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "ユーザー" | ||||||
|  |   rename: "リスト名を変更" | ||||||
|  |   delete: "リストを削除" | ||||||
|  |   remove-user: "このリストから削除" | ||||||
|  |   delete-are-you-sure: "リスト「$1」を削除しますか?" | ||||||
|  |   deleted: "削除しました" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "確認中" |   fetching: "確認中" | ||||||
|   no-broadcasts: "お知らせはありません" |   no-broadcasts: "お知らせはありません" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今日:" |   today: "今日:" | ||||||
|   this-month: "今月:" |   this-month: "今月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "寄付のお願い" |  | ||||||
|   text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "フォトストリーム" |   title: "フォトストリーム" | ||||||
|   no-photos: "写真はありません" |   no-photos: "写真はありません" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" |   tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" | ||||||
|   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" |   tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" | ||||||
|   tips-line21: "APIを利用してbotの開発なども行えます" |   tips-line21: "APIを利用してbotの開発なども行えます" | ||||||
|   tips-line23: "まゆかわいいよまゆ" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskeyは2014年にサービスを開始しました" |   tips-line24: "Misskeyは2014年にサービスを開始しました" | ||||||
|   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" |   tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   following: "フォロー中" |   following: "フォロー中" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "位置情報" |   location: "位置情報" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "返信" |   reply: "返信" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "リアクション" |   add-reaction: "リアクション" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "詳細" |   detail: "詳細" | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "ウィンドウの自動ポップアウト" |   auto-popout: "ウィンドウの自動ポップアウト" | ||||||
|   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" |   auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" | ||||||
|   advanced: "詳細設定" |   advanced: "詳細設定" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "円形のアイコンを使用" |   circle-icons: "円形のアイコンを使用" | ||||||
|   contrasted-acct: "ユーザー名にコントラストを付ける" |   contrasted-acct: "ユーザー名にコントラストを付ける" | ||||||
|   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" |   post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" | ||||||
|   suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" |  | ||||||
|   show-clock-on-header: "右上に時計を表示する" |   show-clock-on-header: "右上に時計を表示する" | ||||||
|   show-reply-target: "リプライ先を表示する" |   show-reply-target: "リプライ先を表示する" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" |   show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" | ||||||
|   show-maps: "マップの自動展開" |   show-maps: "マップの自動展開" | ||||||
|   remain-deleted-note: "削除された投稿を表示し続ける" |   remain-deleted-note: "削除された投稿を表示し続ける" | ||||||
|   deck-column-align: "デッキのカラムの位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "普通" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" |   enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" | ||||||
|   volume: "ボリューム" |   volume: "ボリューム" | ||||||
|   test: "テスト" |   test: "テスト" | ||||||
|   language: "言語" |  | ||||||
|   pick-language: "言語を選択" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   language-desc: "変更はページの再度読み込み後に反映されます。" |  | ||||||
|   cache: "キャッシュ" |   cache: "キャッシュ" | ||||||
|   clean-cache: "クリーンアップ" |   clean-cache: "クリーンアップ" | ||||||
|   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" |   cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" | ||||||
|   cache-cleared: "キャッシュを削除しました" |   cache-cleared: "キャッシュを削除しました" | ||||||
|   cache-cleared-desc: "ページを再度読み込みしてください。" |   cache-cleared-desc: "ページを再度読み込みしてください。" | ||||||
|   auto-watch: "投稿の自動ウォッチ" |  | ||||||
|   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" |  | ||||||
|   about: "Misskeyについて" |   about: "Misskeyについて" | ||||||
|   operator: "このサーバーの運営者" |   operator: "このサーバーの運営者" | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" |   authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" | ||||||
|   howtoinstall: "インストール方法はこちら" |   howtoinstall: "インストール方法はこちら" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "次に、表示されているQRコードをスキャンします:" |   scan: "次に、表示されているQRコードをスキャンします:" | ||||||
|   done: "お使いのデバイスに表示されているトークンを入力して完了します:" |   done: "お使いのデバイスに表示されているトークンを入力して完了します:" | ||||||
|   submit: "完了" |   submit: "完了" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "Token:" |   token: "Token:" | ||||||
|   enter-password: "パスワードを入力してください" |   enter-password: "パスワードを入力してください" | ||||||
|   console: |   console: | ||||||
|     title: 'APIコンソール' |     title: "APIコンソール" | ||||||
|     endpoint: 'エンドポイント' |     endpoint: "エンドポイント" | ||||||
|     parameter: 'パラメータ' |     parameter: "パラメータ" | ||||||
|     credential-info: "「i」パラメータは自動で付与されます。" |     credential-info: "「i」パラメータは自動で付与されます。" | ||||||
|     send: '送信' |     send: "送信" | ||||||
|     sending: '応答待ち' |     sending: "応答待ち" | ||||||
|     response: '結果' |     response: "結果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "連携しているアプリケーションはありません" |   no-apps: "連携しているアプリケーションはありません" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "もう一度新しいパスワードを入力してください" |   enter-new-password-again: "もう一度新しいパスワードを入力してください" | ||||||
|   not-match: "新しいパスワードが一致しません" |   not-match: "新しいパスワードが一致しません" | ||||||
|   changed: "パスワードを変更しました" |   changed: "パスワードを変更しました" | ||||||
|  |   failed: "パスワード変更に失敗しました" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "この投稿は非公開です" |   private: "この投稿は非公開です" | ||||||
|   deleted: "この投稿は削除されました" |   deleted: "この投稿は削除されました" | ||||||
|   media-count: "{}つのメディア" |   media-count: "{}つのメディア" | ||||||
|   poll: "アンケート" |   poll: "アンケート" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "タグ" | ||||||
|  |   query: "クエリ (省略可)" | ||||||
|  |   add: "追加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "タスクマネージャ" |   title: "タスクマネージャ" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "インスタンスの紹介" |   instance-description: "インスタンスの紹介" | ||||||
|   host: "ホスト" |   host: "ホスト" | ||||||
|   banner-url: "バナー画像URL" |   banner-url: "バナー画像URL" | ||||||
|  |   error-image-url: "エラー画像URL" | ||||||
|   languages: "インスタンスの対象言語" |   languages: "インスタンスの対象言語" | ||||||
|   languages-desc: "スペースで区切って複数設定できます。" |   languages-desc: "スペースで区切って複数設定できます。" | ||||||
|   maintainer-config: "管理者情報" |   maintainer-config: "管理者情報" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "Twitter連携の設定" |   twitter-integration-config: "Twitter連携の設定" | ||||||
|   twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" |   twitter-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-twitter-integration: "Twitter連携を有効にする" |   enable-twitter-integration: "Twitter連携を有効にする" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer secret" |   twitter-integration-consumer-secret: "Consumer secret" | ||||||
|   github-integration-config: "GitHub連携の設定" |   github-integration-config: "GitHub連携の設定" | ||||||
|   github-integration-info: "コールバックURLは /api/gh/cb に設定します。" |   github-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-github-integration: "GitHub連携を有効にする" |   enable-github-integration: "GitHub連携を有効にする" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "Discord連携の設定" |   discord-integration-config: "Discord連携の設定" | ||||||
|   discord-integration-info: "コールバックURLは /api/dc/cb に設定します。" |   discord-integration-info: "コールバックURLは {url} に設定します。" | ||||||
|   enable-discord-integration: "Discord連携を有効にする" |   enable-discord-integration: "Discord連携を有効にする" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -997,6 +1043,22 @@ admin/views/instance.vue: | |||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "タイムアウト" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" | ||||||
|  |   email-config: "メールサーバーの設定" | ||||||
|  |   email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" | ||||||
|  |   enable-email: "メール配信を有効にする" | ||||||
|  |   email: "メールアドレス" | ||||||
|  |   smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" | ||||||
|  |   smtp-secure-info: "STARTTLS使用時はオフにします。" | ||||||
|  |   smtp-host: "SMTPホスト" | ||||||
|  |   smtp-port: "SMTPポート" | ||||||
|  |   smtp-user: "SMTPユーザー" | ||||||
|  |   smtp-pass: "SMTPパスワード" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "ServiceWorkerを有効にする" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公開鍵" | ||||||
|  |   vapid-privatekey: "VAPID秘密鍵" | ||||||
|  |   vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "チャート" |   title: "チャート" | ||||||
|   per-day: "1日ごと" |   per-day: "1日ごと" | ||||||
| @@ -1022,6 +1084,22 @@ admin/views/charts.vue: | |||||||
|     network-requests: "リクエスト" |     network-requests: "リクエスト" | ||||||
|     network-time: "応答時間" |     network-time: "応答時間" | ||||||
|     network-usage: "通信量" |     network-usage: "通信量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "ソート" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "オリジン" | ||||||
|  |     combined: "ローカル+リモート" | ||||||
|  |     local: "ローカル" | ||||||
|  |     remote: "リモート" | ||||||
|  |   delete: "削除" | ||||||
|  |   deleted: "削除しました" | ||||||
|  |   mark-as-sensitive: "閲覧注意に設定" | ||||||
|  |   unmark-as-sensitive: "閲覧注意を解除" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "ユーザー名またはユーザーID" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "このアカウントはBotです" |   is-bot: "このアカウントはBotです" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "投稿" |   default: "投稿" | ||||||
|   with-replies: "投稿と返信" |   with-replies: "投稿と返信" | ||||||
|   with-media: "メディア" |   with-media: "メディア" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "このユーザーはまだ何も投稿していないようです。" |   empty: "このユーザーはまだ何も投稿していないようです。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "メッセージ" |   title: "メッセージ" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "ファイルを選択" |   select-file: "ファイルを選択" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "{}としてサインイン中" |   signed-in-as: "{}としてサインイン中" | ||||||
|   lang: "言語" |  | ||||||
|   lang-tip: "変更はページの再読み込み後に反映されます。" |  | ||||||
|   recommended: "推奨" |  | ||||||
|   auto: "自動" |  | ||||||
|   specify-language: "言語を指定" |  | ||||||
|   design: "デザインと表示" |   design: "デザインと表示" | ||||||
|   dark-mode: "ダークモード" |   dark-mode: "ダークモード" | ||||||
|   i-am-under-limited-internet: "私は通信を制限されている" |   i-am-under-limited-internet: "私は通信を制限されている" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知の表示" |   notification-position: "通知の表示" | ||||||
|   notification-position-bottom: "下" |   notification-position-bottom: "下" | ||||||
|   notification-position-top: "上" |   notification-position-top: "上" | ||||||
|   theme: "テーマ" |  | ||||||
|   behavior: "動作" |   behavior: "動作" | ||||||
|   fetch-on-scroll: "スクロールで自動読み込み" |   fetch-on-scroll: "スクロールで自動読み込み" | ||||||
|   note-visibility: "投稿の公開範囲" |   note-visibility: "投稿の公開範囲" | ||||||
|   default-note-visibility: "デフォルトの公開範囲" |   default-note-visibility: "デフォルトの公開範囲" | ||||||
|   remember-note-visibility: "投稿の公開範囲を記憶する" |   remember-note-visibility: "投稿の公開範囲を記憶する" | ||||||
|  |   web-search-engine: "ウェブ検索エンジン" | ||||||
|  |   web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" |   disable-via-mobile: "「モバイルからの投稿」フラグを付けない" | ||||||
|   load-raw-images: "添付された画像を高画質で表示する" |   load-raw-images: "添付された画像を高画質で表示する" | ||||||
|   load-remote-media: "リモートサーバーのメディアを表示する" |   load-remote-media: "リモートサーバーのメディアを表示する" | ||||||
|   twitter: "Twitter連携" |  | ||||||
|   twitter-connect: "Twitterアカウントに接続する" |  | ||||||
|   twitter-reconnect: "再接続する" |  | ||||||
|   twitter-disconnect: "切断する" |  | ||||||
|   github: "GitHub連携" |  | ||||||
|   github-connect: "GitHubアカウントに接続する" |  | ||||||
|   github-reconnect: "再接続する" |  | ||||||
|   github-disconnect: "切断する" |  | ||||||
|   discord: "Discord連携" |  | ||||||
|   discord-connect: "Discordアカウントに接続する" |  | ||||||
|   discord-reconnect: "再接続する" |  | ||||||
|   discord-disconnect: "切断する" |  | ||||||
|   update: "Misskey Update" |   update: "Misskey Update" | ||||||
|   version: "バージョン:" |   version: "バージョン:" | ||||||
|   latest-version: "最新のバージョン:" |   latest-version: "最新のバージョン:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "サインアウト" |   signout: "サインアウト" | ||||||
|   sound: "サウンド" |   sound: "サウンド" | ||||||
|   enable-sounds: "サウンドを有効にする" |   enable-sounds: "サウンドを有効にする" | ||||||
|   mark-as-read-all-unread-notes: "すべての投稿を既読にする" |  | ||||||
|   password: "パスワード" |   password: "パスワード" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "フォローされています" |   follows-you: "フォローされています" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概要" |   overview: "概要" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   media: "メディア" |   media: "メディア" | ||||||
|   is-suspended: "このユーザーは凍結されています。" |  | ||||||
|   mute: "ミュート" |   mute: "ミュート" | ||||||
|   unmute: "ミュート解除" |   unmute: "ミュート解除" | ||||||
|   block: "ブロック" |   block: "ブロック" | ||||||
|   unblock: "ブロック解除" |   unblock: "ブロック解除" | ||||||
|   years-old: "{age}歳" |   years-old: "{age}歳" | ||||||
|  |   push-to-list: "リストに追加" | ||||||
|  |   select-list: "リストを選択してください" | ||||||
|  |   list-pushed: "{user}を{list}に追加しました" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近の投稿" |   recent-notes: "最近の投稿" | ||||||
|   images: "画像" |   images: "画像" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "投稿" |   posts: "投稿" | ||||||
|   following: "フォロー" |   following: "フォロー" | ||||||
|   followers: "フォロワー" |   followers: "フォロワー" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "画像" |   images: "画像" | ||||||
|   activity: "アクティビティ" |   activity: "アクティビティ" | ||||||
|   timeline: "タイムライン" |   timeline: "タイムライン" | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ common: | |||||||
|   close: "关闭" |   close: "关闭" | ||||||
|   do-not-copy-paste: "请不要在这里输入或粘贴代码。您帐户可能会受到损害。" |   do-not-copy-paste: "请不要在这里输入或粘贴代码。您帐户可能会受到损害。" | ||||||
|   load-more: "加载更多" |   load-more: "加载更多" | ||||||
|  |   enter-password: "请输入您的密码" | ||||||
|   got-it: "没问题" |   got-it: "没问题" | ||||||
|   customization-tips: |   customization-tips: | ||||||
|     title: "客制化提示" |     title: "客制化提示" | ||||||
| @@ -89,7 +90,6 @@ common: | |||||||
|     followers-desc: "仅发送至粉丝" |     followers-desc: "仅发送至粉丝" | ||||||
|     specified: "指定用户" |     specified: "指定用户" | ||||||
|     specified-desc: "仅发送至指定用户" |     specified-desc: "仅发送至指定用户" | ||||||
|     private: "私密" |  | ||||||
|     local-public: "公开(仅限本地)" |     local-public: "公开(仅限本地)" | ||||||
|     local-home: "首页(仅限本地)" |     local-home: "首页(仅限本地)" | ||||||
|     local-followers: "关注者(仅限本地)" |     local-followers: "关注者(仅限本地)" | ||||||
| @@ -109,9 +109,10 @@ common: | |||||||
|   my-token-regenerated: "您的 Token 已被重置, 您将自动登出。" |   my-token-regenerated: "您的 Token 已被重置, 您将自动登出。" | ||||||
|   i-like-sushi: "相比于布丁来说, 我更喜欢寿司。" |   i-like-sushi: "相比于布丁来说, 我更喜欢寿司。" | ||||||
|   show-reversi-board-labels: "在 Reversi 中显示行和列表签" |   show-reversi-board-labels: "在 Reversi 中显示行和列表签" | ||||||
|   use-contrast-reversi-stones: "Make the stone color clear in Reversi" |   use-avatar-reversi-stones: "リバーシの石にアバターを使う" | ||||||
|   verified-user: "认证用户" |   verified-user: "认证用户" | ||||||
|   disable-animated-mfm: "在帖子中禁用动画文本" |   disable-animated-mfm: "在帖子中禁用动画文本" | ||||||
|  |   suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签" | ||||||
|   always-show-nsfw: "总是显示 NSFW 的内容" |   always-show-nsfw: "总是显示 NSFW 的内容" | ||||||
|   always-mark-nsfw: "总是用 NSFW 来标记附件" |   always-mark-nsfw: "总是用 NSFW 来标记附件" | ||||||
|   show-full-acct: "不要从用户名中忽略主机名" |   show-full-acct: "不要从用户名中忽略主机名" | ||||||
| @@ -119,14 +120,19 @@ common: | |||||||
|   reduce-motion: "减弱UI中的动画效果" |   reduce-motion: "减弱UI中的动画效果" | ||||||
|   this-setting-is-this-device-only: "设置仅在本设备中生效" |   this-setting-is-this-device-only: "设置仅在本设备中生效" | ||||||
|   use-os-default-emojis: "使用设备系统默认的 emojis" |   use-os-default-emojis: "使用设备系统默认的 emojis" | ||||||
|   do-not-use-in-production: '这是一个开发者测试版. 请勿在生产环境中使用.' |   line-width: "線の太さ" | ||||||
|  |   line-width-thin: "細い" | ||||||
|  |   line-width-normal: "普通" | ||||||
|  |   line-width-thick: "太い" | ||||||
|  |   do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用." | ||||||
|  |   user-suspended: "このユーザーは凍結されています。" | ||||||
|   is-remote-user: "该用户的信息已被复制." |   is-remote-user: "该用户的信息已被复制." | ||||||
|   is-remote-post: "该投稿已被复制." |   is-remote-post: "该投稿已被复制." | ||||||
|   view-on-remote: "查看准确的信息" |   view-on-remote: "查看准确的信息" | ||||||
|   renoted-by: "由 {user} Renote" |   renoted-by: "由 {user} Renote" | ||||||
|   error: |   error: | ||||||
|     title: '哦不, 发生了一些问题! :(' |     title: "哦不, 发生了一些问题! :(" | ||||||
|     retry: '重试' |     retry: "重试" | ||||||
|   reversi: |   reversi: | ||||||
|     drawn: "平局" |     drawn: "平局" | ||||||
|     my-turn: "轮到你了" |     my-turn: "轮到你了" | ||||||
| @@ -157,12 +163,12 @@ common: | |||||||
|     polls: "投票" |     polls: "投票" | ||||||
|     post-form: "投稿形式" |     post-form: "投稿形式" | ||||||
|     server: "服务器信息" |     server: "服务器信息" | ||||||
|     donation: "捐助" |  | ||||||
|     nav: "导航" |     nav: "导航" | ||||||
|     tips: "提示" |     tips: "提示" | ||||||
|     hashtags: "标签" |     hashtags: "标签" | ||||||
|   dev: "构建应用程序失败,请再试一次。" |   dev: "构建应用程序失败,请再试一次。" | ||||||
|   ai-chan-kawaii: "Ai-chan kawaii!" |   ai-chan-kawaii: "Ai-chan kawaii!" | ||||||
|  |   you: "您" | ||||||
| auth/views/form.vue: | auth/views/form.vue: | ||||||
|   share-access: "您要允许<i>{name}</i>来访问您的账户吗?" |   share-access: "您要允许<i>{name}</i>来访问您的账户吗?" | ||||||
|   permission-ask: "这个应用程序需要以下权限:" |   permission-ask: "这个应用程序需要以下权限:" | ||||||
| @@ -258,6 +264,7 @@ common/views/components/media-banner.vue: | |||||||
|   sensitive: "阅读注意" |   sensitive: "阅读注意" | ||||||
|   click-to-show: "点击以显示" |   click-to-show: "点击以显示" | ||||||
| common/views/components/theme.vue: | common/views/components/theme.vue: | ||||||
|  |   theme: "テーマ" | ||||||
|   light-theme: "主题" |   light-theme: "主题" | ||||||
|   dark-theme: "黑暗模式主题" |   dark-theme: "黑暗模式主题" | ||||||
|   light-themes: "明亮主题" |   light-themes: "明亮主题" | ||||||
| @@ -274,6 +281,7 @@ common/views/components/theme.vue: | |||||||
|   base-theme: "基础主题" |   base-theme: "基础主题" | ||||||
|   base-theme-light: "亮" |   base-theme-light: "亮" | ||||||
|   base-theme-dark: "暗" |   base-theme-dark: "暗" | ||||||
|  |   find-more-theme: "その他のテーマを入手" | ||||||
|   theme-name: "主题名称" |   theme-name: "主题名称" | ||||||
|   preview-created-theme: "预览" |   preview-created-theme: "预览" | ||||||
|   invalid-theme: "无效主题" |   invalid-theme: "无效主题" | ||||||
| @@ -295,6 +303,9 @@ common/views/components/theme.vue: | |||||||
| common/views/components/cw-button.vue: | common/views/components/cw-button.vue: | ||||||
|   hide: "隐藏" |   hide: "隐藏" | ||||||
|   show: "查看更多" |   show: "查看更多" | ||||||
|  |   chars: "{count}文字" | ||||||
|  |   files: "{count} 个文件" | ||||||
|  |   poll: "アンケート" | ||||||
| common/views/components/messaging.vue: | common/views/components/messaging.vue: | ||||||
|   search-user: "查找用户" |   search-user: "查找用户" | ||||||
|   you: "您" |   you: "您" | ||||||
| @@ -324,7 +335,9 @@ common/views/components/nav.vue: | |||||||
|   develop: "开发者" |   develop: "开发者" | ||||||
|   feedback: "反馈" |   feedback: "反馈" | ||||||
| common/views/components/note-menu.vue: | common/views/components/note-menu.vue: | ||||||
|  |   mention: "メンション" | ||||||
|   detail: "详细信息" |   detail: "详细信息" | ||||||
|  |   copy-content: "内容をコピー" | ||||||
|   copy-link: "复制链接" |   copy-link: "复制链接" | ||||||
|   favorite: "收藏这个投稿" |   favorite: "收藏这个投稿" | ||||||
|   unfavorite: "取消收藏" |   unfavorite: "取消收藏" | ||||||
| @@ -399,13 +412,18 @@ common/views/components/stream-indicator.vue: | |||||||
|   connecting: "连接中" |   connecting: "连接中" | ||||||
|   reconnecting: "重新连接中" |   reconnecting: "重新连接中" | ||||||
|   connected: "已连接" |   connected: "已连接" | ||||||
| common/views/components/twitter-setting.vue: | common/views/components/notification-settings.vue: | ||||||
|   description: "当您用Twitter连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用Twitter登录。" |   title: "通知" | ||||||
|   connected-to: "此账户已连接Twitter" |   mark-as-read-all-notifications: "すべての通知を既読にする" | ||||||
|   detail: "详细信息..." |   mark-as-read-all-unread-notes: "すべての投稿を既読にする" | ||||||
|   reconnect: "重新连接" |   mark-as-read-all-talk-messages: "すべてのトークを既読にする" | ||||||
|   connect: "连接您的推特账户" |   auto-watch: "投稿の自動ウォッチ" | ||||||
|  |   auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" | ||||||
|  | common/views/components/integration-settings.vue: | ||||||
|  |   title: "サービス連携" | ||||||
|  |   connect: "连接" | ||||||
|   disconnect: "未连接" |   disconnect: "未连接" | ||||||
|  |   connected-to: "次のアカウントに接続されています" | ||||||
| common/views/components/github-setting.vue: | common/views/components/github-setting.vue: | ||||||
|   description: "当您用GitHub连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用GitHub登录。" |   description: "当您用GitHub连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用GitHub登录。" | ||||||
|   connected-to: "此账户已连接GitHub" |   connected-to: "此账户已连接GitHub" | ||||||
| @@ -430,7 +448,6 @@ common/views/components/visibility-chooser.vue: | |||||||
|   followers-desc: "仅发送至关注者" |   followers-desc: "仅发送至关注者" | ||||||
|   specified: "直接" |   specified: "直接" | ||||||
|   specified-desc: "仅发送至指定用户" |   specified-desc: "仅发送至指定用户" | ||||||
|   private: "私密" |  | ||||||
|   local-public: "公开(仅限本地)" |   local-public: "公开(仅限本地)" | ||||||
|   local-public-desc: "不要发布到公开" |   local-public-desc: "不要发布到公开" | ||||||
|   local-home: "首页(仅限本地)" |   local-home: "首页(仅限本地)" | ||||||
| @@ -438,12 +455,20 @@ common/views/components/visibility-chooser.vue: | |||||||
| common/views/components/trends.vue: | common/views/components/trends.vue: | ||||||
|   count: "{} 被提到" |   count: "{} 被提到" | ||||||
|   empty: "没有流行的标签" |   empty: "没有流行的标签" | ||||||
|  | common/views/components/language-settings.vue: | ||||||
|  |   title: "显示语言" | ||||||
|  |   pick-language: "选择一个语言" | ||||||
|  |   recommended: "推荐" | ||||||
|  |   auto: "自动" | ||||||
|  |   specify-language: "指定语言" | ||||||
|  |   info: "你需要刷新这个页面来应用更改。" | ||||||
| common/views/components/profile-editor.vue: | common/views/components/profile-editor.vue: | ||||||
|   title: "简况" |   title: "简况" | ||||||
|   name: "名称" |   name: "名称" | ||||||
|   account: "账户" |   account: "账户" | ||||||
|   location: "位置" |   location: "位置" | ||||||
|   description: "关于我" |   description: "关于我" | ||||||
|  |   language: "语言" | ||||||
|   birthday: "生日" |   birthday: "生日" | ||||||
|   avatar: "头像" |   avatar: "头像" | ||||||
|   banner: "背景" |   banner: "背景" | ||||||
| @@ -451,12 +476,24 @@ common/views/components/profile-editor.vue: | |||||||
|   is-bot: "整个账户是机器人" |   is-bot: "整个账户是机器人" | ||||||
|   is-locked: "关注者请求需要批准" |   is-locked: "关注者请求需要批准" | ||||||
|   careful-bot: "机器人的关注者请求需要批准" |   careful-bot: "机器人的关注者请求需要批准" | ||||||
|  |   auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" | ||||||
|   advanced: "其他选项" |   advanced: "其他选项" | ||||||
|   privacy: "隐私" |   privacy: "隐私" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "更新配置文件成功" |   saved: "更新配置文件成功" | ||||||
|   uploading: "正在上传" |   uploading: "正在上传" | ||||||
|   upload-failed: "上传失败" |   upload-failed: "上传失败" | ||||||
|  |   email: "邮件设置" | ||||||
|  |   email-address: "电子邮件地址" | ||||||
|  |   email-verified: "电子邮件地址已验证" | ||||||
|  |   email-not-verified: "电子邮件地址还没有验证哦, 请检查一下收信箱吧~" | ||||||
|  | common/views/components/user-list-editor.vue: | ||||||
|  |   users: "用户" | ||||||
|  |   rename: "重命名列表" | ||||||
|  |   delete: "删除列表" | ||||||
|  |   remove-user: "从此列表中删除" | ||||||
|  |   delete-are-you-sure: "删除列表 \"$1\"?" | ||||||
|  |   deleted: "已删除" | ||||||
| common/views/widgets/broadcast.vue: | common/views/widgets/broadcast.vue: | ||||||
|   fetching: "确认中" |   fetching: "确认中" | ||||||
|   no-broadcasts: "没有公告" |   no-broadcasts: "没有公告" | ||||||
| @@ -469,9 +506,6 @@ common/views/widgets/calendar.vue: | |||||||
|   today: "今天:" |   today: "今天:" | ||||||
|   this-month: "本月:" |   this-month: "本月:" | ||||||
|   this-year: "今年:" |   this-year: "今年:" | ||||||
| common/views/widgets/donation.vue: |  | ||||||
|   title: "请求捐助" |  | ||||||
|   text: "为了保持 Misskey 持续运行, 这会对域名,服务器等产生一些费用。 如果您有兴趣提供捐助,请联系{}。感谢您的贡献!" |  | ||||||
| common/views/widgets/photo-stream.vue: | common/views/widgets/photo-stream.vue: | ||||||
|   title: "图片轮播" |   title: "图片轮播" | ||||||
|   no-photos: "没有图片" |   no-photos: "没有图片" | ||||||
| @@ -509,9 +543,11 @@ common/views/widgets/tips.vue: | |||||||
|   tips-line19: "可以在浏览器外部分离多个窗口。" |   tips-line19: "可以在浏览器外部分离多个窗口。" | ||||||
|   tips-line20: "日历小部件的百分比显示经过的时间百分比。" |   tips-line20: "日历小部件的百分比显示经过的时间百分比。" | ||||||
|   tips-line21: "您也可以使用API开发机器人。" |   tips-line21: "您也可以使用API开发机器人。" | ||||||
|   tips-line23: "Mayu的眉毛非常可爱。" |   tips-line23: "藍かわいいよ藍" | ||||||
|   tips-line24: "Misskey自2014年开始运营。" |   tips-line24: "Misskey自2014年开始运营。" | ||||||
|   tips-line25: "在与通知功能兼容的浏览器中,您可以在Misskey未打开的情况下接收通知" |   tips-line25: "在与通知功能兼容的浏览器中,您可以在Misskey未打开的情况下接收通知" | ||||||
|  | common/views/pages/not-found.vue: | ||||||
|  |   page-not-found: "ページが見つかりませんでした" | ||||||
| common/views/pages/follow.vue: | common/views/pages/follow.vue: | ||||||
|   signed-in-as: "用 {}登录" |   signed-in-as: "用 {}登录" | ||||||
|   following: "正在关注" |   following: "正在关注" | ||||||
| @@ -647,10 +683,12 @@ desktop/views/components/note-detail.vue: | |||||||
|   location: "位置信息" |   location: "位置信息" | ||||||
|   renote: "转发" |   renote: "转发" | ||||||
|   add-reaction: "添加一个反应" |   add-reaction: "添加一个反应" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
| desktop/views/components/note.vue: | desktop/views/components/note.vue: | ||||||
|   reply: "回复" |   reply: "回复" | ||||||
|   renote: "Renote" |   renote: "Renote" | ||||||
|   add-reaction: "添加一个反应" |   add-reaction: "添加一个反应" | ||||||
|  |   undo-reaction: "リアクション解除" | ||||||
|   detail: "详细信息" |   detail: "详细信息" | ||||||
|   private: "这个投稿是私密的" |   private: "这个投稿是私密的" | ||||||
|   deleted: "投稿已删除" |   deleted: "投稿已删除" | ||||||
| @@ -731,6 +769,8 @@ desktop/views/components/settings.vue: | |||||||
|   note-visibility: "帖子可见性" |   note-visibility: "帖子可见性" | ||||||
|   default-note-visibility: "默认可见性" |   default-note-visibility: "默认可见性" | ||||||
|   remember-note-visibility: "记住帖子可见性" |   remember-note-visibility: "记住帖子可见性" | ||||||
|  |   web-search-engine: "搜索引擎" | ||||||
|  |   web-search-engine-desc: "例如: https://www.google.com/?#q={{query}}" | ||||||
|   auto-popout: "自动弹出窗口" |   auto-popout: "自动弹出窗口" | ||||||
|   auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。" |   auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。" | ||||||
|   advanced: "更多设置" |   advanced: "更多设置" | ||||||
| @@ -750,7 +790,6 @@ desktop/views/components/settings.vue: | |||||||
|   circle-icons: "使用圆形图标" |   circle-icons: "使用圆形图标" | ||||||
|   contrasted-acct: "增加用户名的对比度" |   contrasted-acct: "增加用户名的对比度" | ||||||
|   post-form-on-timeline: "在时间线顶部显示帖子表单" |   post-form-on-timeline: "在时间线顶部显示帖子表单" | ||||||
|   suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签" |  | ||||||
|   show-clock-on-header: "在右上角显示时钟" |   show-clock-on-header: "在右上角显示时钟" | ||||||
|   show-reply-target: "显示回复目标" |   show-reply-target: "显示回复目标" | ||||||
|   timeline: "时间线" |   timeline: "时间线" | ||||||
| @@ -759,27 +798,26 @@ desktop/views/components/settings.vue: | |||||||
|   show-local-renotes: "在时间线中显示Local Renote(s)" |   show-local-renotes: "在时间线中显示Local Renote(s)" | ||||||
|   show-maps: "显示地图以显示位置" |   show-maps: "显示地图以显示位置" | ||||||
|   remain-deleted-note: "继续显示已删除的帖子" |   remain-deleted-note: "继续显示已删除的帖子" | ||||||
|   deck-column-align: "甲板柱的位置" |   deck-column-align: "デッキのカラムの配置" | ||||||
|   deck-column-align-center: "中央" |   deck-column-align-center: "中央" | ||||||
|   deck-column-align-left: "左" |   deck-column-align-left: "左" | ||||||
|  |   deck-column-align-flexible: "フレキシブル" | ||||||
|  |   deck-column-width: "デッキのカラムの幅" | ||||||
|  |   deck-column-width-narrow: "狭" | ||||||
|  |   deck-column-width-narrower: "やや狭" | ||||||
|  |   deck-column-width-normal: "正常" | ||||||
|  |   deck-column-width-wider: "やや広" | ||||||
|  |   deck-column-width-wide: "広" | ||||||
|   sound: "声音" |   sound: "声音" | ||||||
|   enable-sounds: "开启声音" |   enable-sounds: "开启声音" | ||||||
|   enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。" |   enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。" | ||||||
|   volume: "音量" |   volume: "音量" | ||||||
|   test: "测试" |   test: "测试" | ||||||
|   language: "语言" |  | ||||||
|   pick-language: "选择一个语言" |  | ||||||
|   recommended: "推荐" |  | ||||||
|   auto: "自动" |  | ||||||
|   specify-language: "指定语言" |  | ||||||
|   language-desc: "你需要刷新这个页面来应用更改。" |  | ||||||
|   cache: "缓存" |   cache: "缓存" | ||||||
|   clean-cache: "清除缓存" |   clean-cache: "清除缓存" | ||||||
|   cache-warn: "将删除存储在浏览器中的帐户信息/帖子/回复/消息/设置的缓存。 清理完毕后需要刷新页面。" |   cache-warn: "将删除存储在浏览器中的帐户信息/帖子/回复/消息/设置的缓存。 清理完毕后需要刷新页面。" | ||||||
|   cache-cleared: "已清除缓存" |   cache-cleared: "已清除缓存" | ||||||
|   cache-cleared-desc: "请刷新页面。" |   cache-cleared-desc: "请刷新页面。" | ||||||
|   auto-watch: "自动查看帖子" |  | ||||||
|   auto-watch-desc: "自动接收有关帖子/回复/反应的通知。" |  | ||||||
|   about: "关于 Misskey" |   about: "关于 Misskey" | ||||||
|   operator: "网站运营者" |   operator: "网站运营者" | ||||||
|   update: "更新 Misskey" |   update: "更新 Misskey" | ||||||
| @@ -818,6 +856,7 @@ desktop/views/components/settings.2fa.vue: | |||||||
|   enter-password: "请输入您的密码" |   enter-password: "请输入您的密码" | ||||||
|   authenticator: "首先,您需要在设备上安装 Google Authenticator:" |   authenticator: "首先,您需要在设备上安装 Google Authenticator:" | ||||||
|   howtoinstall: "怎样安装" |   howtoinstall: "怎样安装" | ||||||
|  |   token: "トークン" | ||||||
|   scan: "然后,扫描二维码:" |   scan: "然后,扫描二维码:" | ||||||
|   done: "请输入显示在您设备上的密钥:" |   done: "请输入显示在您设备上的密钥:" | ||||||
|   submit: "提交" |   submit: "提交" | ||||||
| @@ -832,13 +871,13 @@ common/views/components/api-settings.vue: | |||||||
|   token: "令牌:" |   token: "令牌:" | ||||||
|   enter-password: "请输入您的密码" |   enter-password: "请输入您的密码" | ||||||
|   console: |   console: | ||||||
|     title: 'API 控制台' |     title: "API 控制台" | ||||||
|     endpoint: '端点' |     endpoint: "端点" | ||||||
|     parameter: '参数' |     parameter: "参数" | ||||||
|     credential-info: "此控制台不需要参数“i”。" |     credential-info: "此控制台不需要参数“i”。" | ||||||
|     send: '发送' |     send: "发送" | ||||||
|     sending: '等待回应' |     sending: "等待回应" | ||||||
|     response: '结果' |     response: "结果" | ||||||
| desktop/views/components/settings.apps.vue: | desktop/views/components/settings.apps.vue: | ||||||
|   no-apps: "没有已连接的应用程序" |   no-apps: "没有已连接的应用程序" | ||||||
| common/views/components/drive-settings.vue: | common/views/components/drive-settings.vue: | ||||||
| @@ -862,11 +901,17 @@ common/views/components/password-settings.vue: | |||||||
|   enter-new-password-again: "请再次输入新密码" |   enter-new-password-again: "请再次输入新密码" | ||||||
|   not-match: "新密码不匹配" |   not-match: "新密码不匹配" | ||||||
|   changed: "密码已更改" |   changed: "密码已更改" | ||||||
|  |   failed: "更改密码失败" | ||||||
| desktop/views/components/sub-note-content.vue: | desktop/views/components/sub-note-content.vue: | ||||||
|   private: "这个帖子是私密的" |   private: "这个帖子是私密的" | ||||||
|   deleted: "帖子已删除" |   deleted: "帖子已删除" | ||||||
|   media-count: "附加{}媒体" |   media-count: "附加{}媒体" | ||||||
|   poll: "投票" |   poll: "投票" | ||||||
|  | desktop/views/components/settings.tags.vue: | ||||||
|  |   title: "标签" | ||||||
|  |   query: "查询 (可选)" | ||||||
|  |   add: "添加" | ||||||
|  |   save: "保存" | ||||||
| desktop/views/components/taskmanager.vue: | desktop/views/components/taskmanager.vue: | ||||||
|   title: "任务管理器" |   title: "任务管理器" | ||||||
| desktop/views/components/timeline.vue: | desktop/views/components/timeline.vue: | ||||||
| @@ -949,6 +994,7 @@ admin/views/instance.vue: | |||||||
|   instance-description: "实例介绍" |   instance-description: "实例介绍" | ||||||
|   host: "主机名" |   host: "主机名" | ||||||
|   banner-url: "背景图片地址" |   banner-url: "背景图片地址" | ||||||
|  |   error-image-url: "无效的图像URL" | ||||||
|   languages: "实例语言" |   languages: "实例语言" | ||||||
|   languages-desc: "您可以添加多个,以空格分隔。" |   languages-desc: "您可以添加多个,以空格分隔。" | ||||||
|   maintainer-config: "管理员信息" |   maintainer-config: "管理员信息" | ||||||
| @@ -966,17 +1012,17 @@ admin/views/instance.vue: | |||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "reCAPTCHA site key" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "reCAPTCHA secret key" | ||||||
|   twitter-integration-config: "连接到Twitter的设置" |   twitter-integration-config: "连接到Twitter的设置" | ||||||
|   twitter-integration-info: "回调 URL 设置为 /api/tw/cb" |   twitter-integration-info: "设置返回的URL{url}。" | ||||||
|   enable-twitter-integration: "启用连接到Twitter" |   enable-twitter-integration: "启用连接到Twitter" | ||||||
|   twitter-integration-consumer-key: "Consumer key" |   twitter-integration-consumer-key: "Consumer key" | ||||||
|   twitter-integration-consumer-secret: "Consumer Secret" |   twitter-integration-consumer-secret: "Consumer Secret" | ||||||
|   github-integration-config: "连接到GitHub设置" |   github-integration-config: "连接到GitHub设置" | ||||||
|   github-integration-info: "回调 URL 设置为 /api/gh/cb" |   github-integration-info: "设置返回的URL{url}。" | ||||||
|   enable-github-integration: "启用连接到GitHub" |   enable-github-integration: "启用连接到GitHub" | ||||||
|   github-integration-client-id: "Client ID" |   github-integration-client-id: "Client ID" | ||||||
|   github-integration-client-secret: "Client Secret" |   github-integration-client-secret: "Client Secret" | ||||||
|   discord-integration-config: "设置 Discord Integration" |   discord-integration-config: "设置 Discord Integration" | ||||||
|   discord-integration-info: "回调 URL 设置为 /api/dc/cb" |   discord-integration-info: "设置返回的URL{url}。" | ||||||
|   enable-discord-integration: "启用 Discord 连接" |   enable-discord-integration: "启用 Discord 连接" | ||||||
|   discord-integration-client-id: "Client ID" |   discord-integration-client-id: "Client ID" | ||||||
|   discord-integration-client-secret: "Client Secret" |   discord-integration-client-secret: "Client Secret" | ||||||
| @@ -991,12 +1037,28 @@ admin/views/instance.vue: | |||||||
|   invite: "邀请" |   invite: "邀请" | ||||||
|   save: "保存" |   save: "保存" | ||||||
|   saved: "保存完毕" |   saved: "保存完毕" | ||||||
|   user-recommendation-config: "おすすめユーザー" |   user-recommendation-config: "推荐用户" | ||||||
|   enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする" |   enable-external-user-recommendation: "启用外部用户推荐" | ||||||
|   external-user-recommendation-engine: "エンジン" |   external-user-recommendation-engine: "引擎" | ||||||
|   external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" |   external-user-recommendation-engine-desc: "例如: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" | ||||||
|   external-user-recommendation-timeout: "タイムアウト" |   external-user-recommendation-timeout: "超时" | ||||||
|   external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" |   external-user-recommendation-timeout-desc: "单位为毫秒 (例如:300000)" | ||||||
|  |   email-config: "电子邮件服务器设置" | ||||||
|  |   email-config-info: "用于确认电子邮件和密码重置等。" | ||||||
|  |   enable-email: "启用电子邮件送递" | ||||||
|  |   email: "电子邮件地址" | ||||||
|  |   smtp-secure: "在 SMTP 连接中使用隐式 SSL / TLS" | ||||||
|  |   smtp-secure-info: "使用时关闭 STARTTLS。" | ||||||
|  |   smtp-host: "SMTP 服务器地址 (主机名)" | ||||||
|  |   smtp-port: "SMTP 端口" | ||||||
|  |   smtp-user: "SMTP 用户名" | ||||||
|  |   smtp-pass: "SMTP 密码" | ||||||
|  |   serviceworker-config: "ServiceWorker" | ||||||
|  |   enable-serviceworker: "启用ServiceWorker" | ||||||
|  |   serviceworker-info: "プッシュ通知を行うには有効する必要があります。" | ||||||
|  |   vapid-publickey: "VAPID公钥" | ||||||
|  |   vapid-privatekey: "VAPID私钥" | ||||||
|  |   vapid-info: "如果您想要启用ServiceWorker,那么您需要生成VAPID秘钥。除非您已经在其他地方设置了全局node_modules位置,否则您需要将其作为root用户运行:" | ||||||
| admin/views/charts.vue: | admin/views/charts.vue: | ||||||
|   title: "历史记录" |   title: "历史记录" | ||||||
|   per-day: "每天" |   per-day: "每天" | ||||||
| @@ -1022,13 +1084,29 @@ admin/views/charts.vue: | |||||||
|     network-requests: "请求" |     network-requests: "请求" | ||||||
|     network-time: "响应时间" |     network-time: "响应时间" | ||||||
|     network-usage: "网络流量" |     network-usage: "网络流量" | ||||||
|  | admin/views/drive.vue: | ||||||
|  |   sort: | ||||||
|  |     title: "排序" | ||||||
|  |     createdAtAsc: "アップロード日時が古い順" | ||||||
|  |     createdAtDesc: "アップロード日時が新しい順" | ||||||
|  |     sizeAsc: "サイズが小さい順" | ||||||
|  |     sizeDesc: "サイズが大きい順" | ||||||
|  |   origin: | ||||||
|  |     title: "源自" | ||||||
|  |     combined: "本地+远程" | ||||||
|  |     local: "本地" | ||||||
|  |     remote: "远程" | ||||||
|  |   delete: "删除" | ||||||
|  |   deleted: "已删除" | ||||||
|  |   mark-as-sensitive: "标记为“敏感”" | ||||||
|  |   unmark-as-sensitive: "取消标记为“敏感”" | ||||||
| admin/views/users.vue: | admin/views/users.vue: | ||||||
|   operation: "操作" |   operation: "操作" | ||||||
|   username-or-userid: "ユーザー名またはユーザーID" |   username-or-userid: "用户名或用户ID" | ||||||
|   user-not-found: "ユーザーが見つかりません" |   user-not-found: "用户不存在" | ||||||
|   lookup: "照会" |   lookup: "订阅" | ||||||
|   reset-password: "パスワードをリセット" |   reset-password: "密码重置" | ||||||
|   password-updated: "パスワードは現在「{password}」です" |   password-updated: "密码为「{password}」" | ||||||
|   suspend: "被冻结" |   suspend: "被冻结" | ||||||
|   suspended: "成功冻结用户" |   suspended: "成功冻结用户" | ||||||
|   unsuspend: "已解除冻结" |   unsuspend: "已解除冻结" | ||||||
| @@ -1038,20 +1116,20 @@ admin/views/users.vue: | |||||||
|   unverify: "解除账户认证" |   unverify: "解除账户认证" | ||||||
|   unverified: "该帐户未经认证" |   unverified: "该帐户未经认证" | ||||||
|   users: |   users: | ||||||
|     title: "ユーザー" |     title: "用户" | ||||||
|     sort: |     sort: | ||||||
|       title: "ソート" |       title: "排序" | ||||||
|       createdAtAsc: "登録日時が古い順" |       createdAtAsc: "注册时间从旧到新" | ||||||
|       createdAtDesc: "登録日時が新しい順" |       createdAtDesc: "注册时间从新到旧" | ||||||
|       updatedAtAsc: "更新日時が古い順" |       updatedAtAsc: "更新时间从旧到新" | ||||||
|       updatedAtDesc: "更新日時が新しい順" |       updatedAtDesc: "更新时间从新到旧" | ||||||
|     origin: |     origin: | ||||||
|       title: "オリジン" |       title: "源自" | ||||||
|       combined: "ローカル+リモート" |       combined: "本地+远程" | ||||||
|       local: "ローカル" |       local: "本地" | ||||||
|       remote: "リモート" |       remote: "远程" | ||||||
|     createdAt: "登録日時" |     createdAt: "注册日期" | ||||||
|     updatedAt: "更新日時" |     updatedAt: "最后更新" | ||||||
| admin/views/moderators.vue: | admin/views/moderators.vue: | ||||||
|   add-moderator: |   add-moderator: | ||||||
|     title: "注册版主" |     title: "注册版主" | ||||||
| @@ -1153,6 +1231,7 @@ desktop/views/pages/user/user.header.vue: | |||||||
|   posts: "帖子" |   posts: "帖子" | ||||||
|   following: "关注中" |   following: "关注中" | ||||||
|   followers: "关注者" |   followers: "关注者" | ||||||
|  |   mention: "メンション" | ||||||
|   is-bot: "这个账户是Bot" |   is-bot: "这个账户是Bot" | ||||||
|   years-old: "{age}岁" |   years-old: "{age}岁" | ||||||
|   year: "年" |   year: "年" | ||||||
| @@ -1162,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue: | |||||||
|   default: "帖子" |   default: "帖子" | ||||||
|   with-replies: "帖子与回复" |   with-replies: "帖子与回复" | ||||||
|   with-media: "媒体" |   with-media: "媒体" | ||||||
|  |   my-posts: "私の投稿" | ||||||
|   empty: "看起来这个用户还没有发布什么呢。" |   empty: "看起来这个用户还没有发布什么呢。" | ||||||
| desktop/views/widgets/messaging.vue: | desktop/views/widgets/messaging.vue: | ||||||
|   title: "信息" |   title: "信息" | ||||||
| @@ -1344,11 +1424,6 @@ mobile/views/pages/selectdrive.vue: | |||||||
|   select-file: "选择文件" |   select-file: "选择文件" | ||||||
| mobile/views/pages/settings.vue: | mobile/views/pages/settings.vue: | ||||||
|   signed-in-as: "以{}登录" |   signed-in-as: "以{}登录" | ||||||
|   lang: "语言" |  | ||||||
|   lang-tip: "你需要刷新这个页面来应用更改。" |  | ||||||
|   recommended: "推荐" |  | ||||||
|   auto: "自动" |  | ||||||
|   specify-language: "选择语言" |  | ||||||
|   design: "设计与展示" |   design: "设计与展示" | ||||||
|   dark-mode: "夜间模式" |   dark-mode: "夜间模式" | ||||||
|   i-am-under-limited-internet: "我的带宽有限" |   i-am-under-limited-internet: "我的带宽有限" | ||||||
| @@ -1365,27 +1440,16 @@ mobile/views/pages/settings.vue: | |||||||
|   notification-position: "通知形式" |   notification-position: "通知形式" | ||||||
|   notification-position-bottom: "底部" |   notification-position-bottom: "底部" | ||||||
|   notification-position-top: "顶部" |   notification-position-top: "顶部" | ||||||
|   theme: "主题" |  | ||||||
|   behavior: "动作" |   behavior: "动作" | ||||||
|   fetch-on-scroll: "滚动无限加载" |   fetch-on-scroll: "滚动无限加载" | ||||||
|   note-visibility: "帖子可见性" |   note-visibility: "帖子可见性" | ||||||
|   default-note-visibility: "默认可见性" |   default-note-visibility: "默认可见性" | ||||||
|   remember-note-visibility: "记住帖子可见性" |   remember-note-visibility: "记住帖子可见性" | ||||||
|  |   web-search-engine: "搜索引擎" | ||||||
|  |   web-search-engine-desc: "例如: https://www.google.com/?#q={{query}}" | ||||||
|   disable-via-mobile: "不要将帖子标记为“来自手机”" |   disable-via-mobile: "不要将帖子标记为“来自手机”" | ||||||
|   load-raw-images: "以原始质量显示附加图像" |   load-raw-images: "以原始质量显示附加图像" | ||||||
|   load-remote-media: "显示来自远程服务器的媒体" |   load-remote-media: "显示来自远程服务器的媒体" | ||||||
|   twitter: "Twitter integration" |  | ||||||
|   twitter-connect: "连接到您的 Twitter" |  | ||||||
|   twitter-reconnect: "重新连接" |  | ||||||
|   twitter-disconnect: "未连接" |  | ||||||
|   github: "GitHub Integration" |  | ||||||
|   github-connect: "连接到您的 GitHub" |  | ||||||
|   github-reconnect: "重新连接" |  | ||||||
|   github-disconnect: "未连接" |  | ||||||
|   discord: "Discord Integration" |  | ||||||
|   discord-connect: "连接到您的 Discord" |  | ||||||
|   discord-reconnect: "重新连接" |  | ||||||
|   discord-disconnect: "未连接" |  | ||||||
|   update: "更新 Misskey" |   update: "更新 Misskey" | ||||||
|   version: "当前版本:" |   version: "当前版本:" | ||||||
|   latest-version: "最新版本:" |   latest-version: "最新版本:" | ||||||
| @@ -1399,7 +1463,6 @@ mobile/views/pages/settings.vue: | |||||||
|   signout: "注销" |   signout: "注销" | ||||||
|   sound: "声音" |   sound: "声音" | ||||||
|   enable-sounds: "开启声音" |   enable-sounds: "开启声音" | ||||||
|   mark-as-read-all-unread-notes: "将所有帖子标记为已读" |  | ||||||
|   password: "密码" |   password: "密码" | ||||||
| mobile/views/pages/user.vue: | mobile/views/pages/user.vue: | ||||||
|   follows-you: "关注您" |   follows-you: "关注您" | ||||||
| @@ -1409,12 +1472,14 @@ mobile/views/pages/user.vue: | |||||||
|   overview: "概观" |   overview: "概观" | ||||||
|   timeline: "时间线" |   timeline: "时间线" | ||||||
|   media: "媒体" |   media: "媒体" | ||||||
|   is-suspended: "此账户已被冻结。" |  | ||||||
|   mute: "静音" |   mute: "静音" | ||||||
|   unmute: "取消静音" |   unmute: "取消静音" | ||||||
|   block: "屏蔽" |   block: "屏蔽" | ||||||
|   unblock: "取消屏蔽" |   unblock: "取消屏蔽" | ||||||
|   years-old: "{age}岁" |   years-old: "{age}岁" | ||||||
|  |   push-to-list: "添加至列表" | ||||||
|  |   select-list: "选择一个列表" | ||||||
|  |   list-pushed: "成功添加{user}到{list}" | ||||||
| mobile/views/pages/user/home.vue: | mobile/views/pages/user/home.vue: | ||||||
|   recent-notes: "最近的帖子" |   recent-notes: "最近的帖子" | ||||||
|   images: "图片" |   images: "图片" | ||||||
| @@ -1460,6 +1525,7 @@ deck/deck.user-column.vue: | |||||||
|   posts: "帖子" |   posts: "帖子" | ||||||
|   following: "关注中" |   following: "关注中" | ||||||
|   followers: "关注者" |   followers: "关注者" | ||||||
|  |   mention: "メンション" | ||||||
|   images: "图片" |   images: "图片" | ||||||
|   activity: "活动" |   activity: "活动" | ||||||
|   timeline: "时间线" |   timeline: "时间线" | ||||||
|   | |||||||
							
								
								
									
										103
									
								
								package.json
									
									
									
									
									
								
							
							
						
						| @@ -1,8 +1,8 @@ | |||||||
| { | { | ||||||
| 	"name": "misskey", | 	"name": "misskey", | ||||||
| 	"author": "syuilo <i@syuilo.com>", | 	"author": "syuilo <i@syuilo.com>", | ||||||
| 	"version": "10.57.1", | 	"version": "10.74.0", | ||||||
| 	"clientVersion": "2.0.12082", | 	"clientVersion": "2.0.13345", | ||||||
| 	"codename": "nighthike", | 	"codename": "nighthike", | ||||||
| 	"main": "./built/index.js", | 	"main": "./built/index.js", | ||||||
| 	"private": true, | 	"private": true, | ||||||
| @@ -20,24 +20,23 @@ | |||||||
| 		"format": "gulp format" | 		"format": "gulp format" | ||||||
| 	}, | 	}, | ||||||
| 	"dependencies": { | 	"dependencies": { | ||||||
| 		"@fortawesome/fontawesome-svg-core": "1.2.8", | 		"@fortawesome/fontawesome-svg-core": "1.2.12", | ||||||
| 		"@fortawesome/free-brands-svg-icons": "5.5.0", | 		"@fortawesome/free-brands-svg-icons": "5.6.3", | ||||||
| 		"@fortawesome/free-regular-svg-icons": "5.5.0", | 		"@fortawesome/free-regular-svg-icons": "5.5.0", | ||||||
| 		"@fortawesome/free-solid-svg-icons": "5.5.0", | 		"@fortawesome/free-solid-svg-icons": "5.6.3", | ||||||
| 		"@fortawesome/vue-fontawesome": "0.1.2", | 		"@fortawesome/vue-fontawesome": "0.1.2", | ||||||
| 		"@koa/cors": "2.2.2", | 		"@koa/cors": "2.2.3", | ||||||
| 		"@prezzemolo/rap": "0.1.2", | 		"@prezzemolo/rap": "0.1.2", | ||||||
| 		"@prezzemolo/zip": "0.0.3", | 		"@prezzemolo/zip": "0.0.3", | ||||||
| 		"@types/bcryptjs": "2.4.2", | 		"@types/bcryptjs": "2.4.2", | ||||||
| 		"@types/chai-http": "3.0.5", | 		"@types/chai-http": "3.0.5", | ||||||
| 		"@types/dateformat": "1.0.1", | 		"@types/dateformat": "3.0.0", | ||||||
| 		"@types/debug": "0.0.31", | 		"@types/debug": "0.0.31", | ||||||
| 		"@types/deep-equal": "1.0.1", | 		"@types/deep-equal": "1.0.1", | ||||||
| 		"@types/double-ended-queue": "2.1.0", | 		"@types/double-ended-queue": "2.1.0", | ||||||
| 		"@types/elasticsearch": "5.0.28", | 		"@types/elasticsearch": "5.0.30", | ||||||
| 		"@types/file-type": "5.2.1", | 		"@types/file-type": "10.6.0", | ||||||
| 		"@types/gulp": "3.8.36", | 		"@types/gulp": "3.8.36", | ||||||
| 		"@types/gulp-htmlmin": "1.3.32", |  | ||||||
| 		"@types/gulp-mocha": "0.0.32", | 		"@types/gulp-mocha": "0.0.32", | ||||||
| 		"@types/gulp-rename": "0.0.33", | 		"@types/gulp-rename": "0.0.33", | ||||||
| 		"@types/gulp-replace": "0.0.31", | 		"@types/gulp-replace": "0.0.31", | ||||||
| @@ -45,10 +44,10 @@ | |||||||
| 		"@types/gulp-util": "3.0.34", | 		"@types/gulp-util": "3.0.34", | ||||||
| 		"@types/is-root": "1.0.0", | 		"@types/is-root": "1.0.0", | ||||||
| 		"@types/is-url": "1.2.28", | 		"@types/is-url": "1.2.28", | ||||||
| 		"@types/js-yaml": "3.11.2", | 		"@types/js-yaml": "3.11.4", | ||||||
| 		"@types/katex": "0.5.0", | 		"@types/katex": "0.5.0", | ||||||
| 		"@types/koa": "2.0.47", | 		"@types/koa": "2.0.48", | ||||||
| 		"@types/koa-bodyparser": "5.0.1", | 		"@types/koa-bodyparser": "5.0.2", | ||||||
| 		"@types/koa-compress": "2.0.8", | 		"@types/koa-compress": "2.0.8", | ||||||
| 		"@types/koa-favicon": "2.0.19", | 		"@types/koa-favicon": "2.0.19", | ||||||
| 		"@types/koa-logger": "3.1.1", | 		"@types/koa-logger": "3.1.1", | ||||||
| @@ -63,32 +62,33 @@ | |||||||
| 		"@types/mocha": "5.2.5", | 		"@types/mocha": "5.2.5", | ||||||
| 		"@types/mongodb": "3.1.14", | 		"@types/mongodb": "3.1.14", | ||||||
| 		"@types/ms": "0.7.30", | 		"@types/ms": "0.7.30", | ||||||
| 		"@types/node": "10.12.10", | 		"@types/node": "10.12.18", | ||||||
|  | 		"@types/nodemailer": "4.6.5", | ||||||
| 		"@types/oauth": "0.9.1", | 		"@types/oauth": "0.9.1", | ||||||
| 		"@types/parsimmon": "1.10.0", | 		"@types/parsimmon": "1.10.0", | ||||||
| 		"@types/portscanner": "2.1.0", | 		"@types/portscanner": "2.1.0", | ||||||
| 		"@types/pug": "2.0.4", | 		"@types/pug": "2.0.4", | ||||||
| 		"@types/qrcode": "1.3.0", | 		"@types/qrcode": "1.3.0", | ||||||
| 		"@types/ratelimiter": "2.1.28", | 		"@types/ratelimiter": "2.1.28", | ||||||
| 		"@types/redis": "2.8.8", | 		"@types/redis": "2.8.10", | ||||||
| 		"@types/request": "2.48.1", | 		"@types/request": "2.48.1", | ||||||
| 		"@types/request-promise-native": "1.0.15", | 		"@types/request-promise-native": "1.0.15", | ||||||
| 		"@types/rimraf": "2.0.2", | 		"@types/rimraf": "2.0.2", | ||||||
| 		"@types/seedrandom": "2.4.27", | 		"@types/seedrandom": "2.4.27", | ||||||
| 		"@types/sharp": "0.21.0", | 		"@types/sharp": "0.21.0", | ||||||
| 		"@types/showdown": "1.7.5", | 		"@types/showdown": "1.9.0", | ||||||
| 		"@types/speakeasy": "2.0.3", | 		"@types/speakeasy": "2.0.3", | ||||||
| 		"@types/systeminformation": "3.23.1", | 		"@types/systeminformation": "3.23.1", | ||||||
| 		"@types/tinycolor2": "1.4.1", | 		"@types/tinycolor2": "1.4.1", | ||||||
| 		"@types/tmp": "0.0.33", | 		"@types/tmp": "0.0.33", | ||||||
| 		"@types/uuid": "3.4.4", | 		"@types/uuid": "3.4.4", | ||||||
| 		"@types/webpack": "4.4.19", | 		"@types/webpack": "4.4.21", | ||||||
| 		"@types/webpack-stream": "3.2.10", | 		"@types/webpack-stream": "3.2.10", | ||||||
| 		"@types/websocket": "0.0.40", | 		"@types/websocket": "0.0.40", | ||||||
| 		"@types/ws": "6.0.1", | 		"@types/ws": "6.0.1", | ||||||
| 		"animejs": "2.2.0", | 		"animejs": "2.2.0", | ||||||
| 		"apexcharts": "2.2.3", | 		"apexcharts": "2.5.1", | ||||||
| 		"autobind-decorator": "2.2.1", | 		"autobind-decorator": "2.4.0", | ||||||
| 		"autosize": "4.0.2", | 		"autosize": "4.0.2", | ||||||
| 		"autwh": "0.1.0", | 		"autwh": "0.1.0", | ||||||
| 		"bcryptjs": "2.4.3", | 		"bcryptjs": "2.4.3", | ||||||
| @@ -106,40 +106,39 @@ | |||||||
| 		"debug": "4.1.0", | 		"debug": "4.1.0", | ||||||
| 		"deep-equal": "1.0.1", | 		"deep-equal": "1.0.1", | ||||||
| 		"deepcopy": "0.6.3", | 		"deepcopy": "0.6.3", | ||||||
| 		"diskusage": "0.2.5", | 		"diskusage": "1.0.0", | ||||||
| 		"double-ended-queue": "2.1.0-0", | 		"double-ended-queue": "2.1.0-0", | ||||||
| 		"elasticsearch": "15.2.0", | 		"elasticsearch": "15.2.0", | ||||||
| 		"emojilib": "2.4.0", | 		"emojilib": "2.4.0", | ||||||
| 		"escape-regexp": "0.0.1", | 		"escape-regexp": "0.0.1", | ||||||
| 		"eslint": "5.8.0", | 		"eslint": "5.11.1", | ||||||
| 		"eslint-plugin-vue": "4.7.1", | 		"eslint-plugin-vue": "5.0.0", | ||||||
| 		"eventemitter3": "3.1.0", | 		"eventemitter3": "3.1.0", | ||||||
|  | 		"feed": "2.0.2", | ||||||
| 		"file-loader": "2.0.0", | 		"file-loader": "2.0.0", | ||||||
| 		"file-type": "10.4.0", | 		"file-type": "10.7.0", | ||||||
| 		"fuckadblock": "3.2.1", | 		"fuckadblock": "3.2.1", | ||||||
| 		"gulp": "3.9.1", | 		"gulp": "3.9.1", | ||||||
| 		"gulp-cssnano": "2.1.3", | 		"gulp-cssnano": "2.1.3", | ||||||
| 		"gulp-htmlmin": "5.0.1", |  | ||||||
| 		"gulp-imagemin": "4.1.0", | 		"gulp-imagemin": "4.1.0", | ||||||
| 		"gulp-mocha": "6.0.0", | 		"gulp-mocha": "6.0.0", | ||||||
| 		"gulp-pug": "4.0.1", |  | ||||||
| 		"gulp-rename": "1.4.0", | 		"gulp-rename": "1.4.0", | ||||||
| 		"gulp-replace": "1.0.0", | 		"gulp-replace": "1.0.0", | ||||||
| 		"gulp-sourcemaps": "2.6.4", | 		"gulp-sourcemaps": "2.6.4", | ||||||
| 		"gulp-stylus": "2.7.0", | 		"gulp-stylus": "2.7.0", | ||||||
| 		"gulp-tslint": "8.1.3", | 		"gulp-tslint": "8.1.3", | ||||||
| 		"gulp-typescript": "4.0.2", | 		"gulp-typescript": "5.0.0", | ||||||
| 		"gulp-uglify": "3.0.1", | 		"gulp-uglify": "3.0.1", | ||||||
| 		"gulp-util": "3.0.8", | 		"gulp-util": "3.0.8", | ||||||
| 		"gulp-yaml": "2.0.2", | 		"gulp-yaml": "2.0.2", | ||||||
| 		"hard-source-webpack-plugin": "0.12.0", | 		"hard-source-webpack-plugin": "0.13.1", | ||||||
| 		"html-minifier": "3.5.21", | 		"html-minifier": "3.5.21", | ||||||
| 		"http-signature": "1.2.0", | 		"http-signature": "1.2.0", | ||||||
| 		"insert-text-at-cursor": "0.1.1", | 		"insert-text-at-cursor": "0.1.1", | ||||||
| 		"is-root": "2.0.0", | 		"is-root": "2.0.0", | ||||||
| 		"is-url": "1.2.4", | 		"is-url": "1.2.4", | ||||||
| 		"js-yaml": "3.12.0", | 		"js-yaml": "3.12.0", | ||||||
| 		"jsdom": "13.0.0", | 		"jsdom": "13.1.0", | ||||||
| 		"json5": "2.1.0", | 		"json5": "2.1.0", | ||||||
| 		"json5-loader": "1.0.1", | 		"json5-loader": "1.0.1", | ||||||
| 		"katex": "0.10.0", | 		"katex": "0.10.0", | ||||||
| @@ -155,17 +154,20 @@ | |||||||
| 		"koa-send": "5.0.0", | 		"koa-send": "5.0.0", | ||||||
| 		"koa-slow": "2.1.0", | 		"koa-slow": "2.1.0", | ||||||
| 		"koa-views": "6.1.4", | 		"koa-views": "6.1.4", | ||||||
| 		"loader-utils": "1.1.0", | 		"langmap": "0.0.16", | ||||||
| 		"minio": "7.0.1", | 		"loader-utils": "1.2.3", | ||||||
|  | 		"lookup-dns-cache": "2.1.0", | ||||||
|  | 		"minio": "7.0.2", | ||||||
| 		"mkdirp": "0.5.1", | 		"mkdirp": "0.5.1", | ||||||
| 		"mocha": "5.2.0", | 		"mocha": "5.2.0", | ||||||
| 		"moji": "0.5.1", | 		"moji": "0.5.1", | ||||||
| 		"moment": "2.22.2", | 		"moment": "2.23.0", | ||||||
| 		"mongodb": "3.1.9", | 		"mongodb": "3.1.10", | ||||||
| 		"monk": "6.0.6", | 		"monk": "6.0.6", | ||||||
| 		"ms": "2.1.1", | 		"ms": "2.1.1", | ||||||
| 		"nan": "2.11.1", | 		"nan": "2.12.1", | ||||||
| 		"nested-property": "0.0.7", | 		"nested-property": "0.0.7", | ||||||
|  | 		"nodemailer": "5.0.0", | ||||||
| 		"nprogress": "0.2.0", | 		"nprogress": "0.2.0", | ||||||
| 		"object-assign-deep": "0.4.0", | 		"object-assign-deep": "0.4.0", | ||||||
| 		"on-build-webpack": "0.1.0", | 		"on-build-webpack": "0.1.0", | ||||||
| @@ -175,6 +177,7 @@ | |||||||
| 		"portscanner": "2.2.0", | 		"portscanner": "2.2.0", | ||||||
| 		"postcss-loader": "3.0.0", | 		"postcss-loader": "3.0.0", | ||||||
| 		"progress-bar-webpack-plugin": "1.11.0", | 		"progress-bar-webpack-plugin": "1.11.0", | ||||||
|  | 		"promise-any": "0.2.0", | ||||||
| 		"promise-limit": "2.7.0", | 		"promise-limit": "2.7.0", | ||||||
| 		"promise-sequential": "1.1.1", | 		"promise-sequential": "1.1.1", | ||||||
| 		"pug": "2.0.3", | 		"pug": "2.0.3", | ||||||
| @@ -192,7 +195,7 @@ | |||||||
| 		"rndstr": "1.0.0", | 		"rndstr": "1.0.0", | ||||||
| 		"s-age": "1.1.2", | 		"s-age": "1.1.2", | ||||||
| 		"seedrandom": "2.4.4", | 		"seedrandom": "2.4.4", | ||||||
| 		"sharp": "0.21.0", | 		"sharp": "0.21.1", | ||||||
| 		"showdown": "1.9.0", | 		"showdown": "1.9.0", | ||||||
| 		"showdown-highlightjs-extension": "0.1.2", | 		"showdown-highlightjs-extension": "0.1.2", | ||||||
| 		"speakeasy": "2.0.0", | 		"speakeasy": "2.0.0", | ||||||
| @@ -201,40 +204,42 @@ | |||||||
| 		"stylus": "0.54.5", | 		"stylus": "0.54.5", | ||||||
| 		"stylus-loader": "3.0.2", | 		"stylus-loader": "3.0.2", | ||||||
| 		"summaly": "2.2.0", | 		"summaly": "2.2.0", | ||||||
| 		"systeminformation": "3.49.3", | 		"systeminformation": "3.52.2", | ||||||
| 		"syuilo-password-strength": "0.0.1", | 		"syuilo-password-strength": "0.0.1", | ||||||
| 		"terser-webpack-plugin": "1.1.0", | 		"terser-webpack-plugin": "1.1.0", | ||||||
| 		"textarea-caret": "3.1.0", | 		"textarea-caret": "3.1.0", | ||||||
| 		"tinycolor2": "1.4.1", | 		"tinycolor2": "1.4.1", | ||||||
| 		"tmp": "0.0.33", | 		"tmp": "0.0.33", | ||||||
| 		"ts-loader": "5.3.0", | 		"ts-loader": "5.3.1", | ||||||
| 		"ts-node": "7.0.1", | 		"ts-node": "7.0.1", | ||||||
| 		"tslint": "5.10.0", | 		"tslint": "5.12.0", | ||||||
| 		"typescript": "3.1.6", | 		"tslint-sonarts": "1.8.0", | ||||||
| 		"typescript-eslint-parser": "21.0.1", | 		"typescript": "3.2.2", | ||||||
|  | 		"typescript-eslint-parser": "21.0.2", | ||||||
| 		"uglify-es": "3.3.9", | 		"uglify-es": "3.3.9", | ||||||
| 		"url-loader": "1.1.2", | 		"url-loader": "1.1.2", | ||||||
| 		"uuid": "3.3.2", | 		"uuid": "3.3.2", | ||||||
| 		"v-animate-css": "0.0.2", | 		"v-animate-css": "0.0.3", | ||||||
| 		"vue": "2.5.17", | 		"vue": "2.5.17", | ||||||
| 		"vue-color": "2.7.0", | 		"vue-color": "2.7.0", | ||||||
| 		"vue-content-loading": "1.5.3", | 		"vue-content-loading": "1.5.3", | ||||||
| 		"vue-cropperjs": "2.2.2", | 		"vue-cropperjs": "3.0.0", | ||||||
| 		"vue-i18n": "8.3.2", | 		"vue-i18n": "8.6.0", | ||||||
| 		"vue-js-modal": "1.3.26", | 		"vue-js-modal": "1.3.28", | ||||||
| 		"vue-loader": "15.4.2", | 		"vue-loader": "15.4.2", | ||||||
| 		"vue-marquee-text-component": "1.1.0", | 		"vue-marquee-text-component": "1.1.1", | ||||||
| 		"vue-router": "3.0.1", | 		"vue-router": "3.0.2", | ||||||
|  | 		"vue-sequential-entrance": "1.1.3", | ||||||
| 		"vue-style-loader": "4.1.2", | 		"vue-style-loader": "4.1.2", | ||||||
| 		"vue-svg-inline-loader": "1.2.2", | 		"vue-svg-inline-loader": "1.2.7", | ||||||
| 		"vue-template-compiler": "2.5.17", | 		"vue-template-compiler": "2.5.17", | ||||||
| 		"vuedraggable": "2.16.0", | 		"vuedraggable": "2.17.0", | ||||||
| 		"vuewordcloud": "18.7.11", | 		"vuewordcloud": "18.7.11", | ||||||
| 		"vuex": "3.0.1", | 		"vuex": "3.0.1", | ||||||
| 		"vuex-persistedstate": "2.5.4", | 		"vuex-persistedstate": "2.5.4", | ||||||
| 		"web-push": "3.3.3", | 		"web-push": "3.3.3", | ||||||
| 		"webfinger.js": "2.6.6", | 		"webfinger.js": "2.7.0", | ||||||
| 		"webpack": "4.26.0", | 		"webpack": "4.28.3", | ||||||
| 		"webpack-cli": "3.1.2", | 		"webpack-cli": "3.1.2", | ||||||
| 		"websocket": "1.0.28", | 		"websocket": "1.0.28", | ||||||
| 		"ws": "6.1.2", | 		"ws": "6.1.2", | ||||||
|   | |||||||
| @@ -61,11 +61,12 @@ export default abstract class Chart<T> { | |||||||
|  |  | ||||||
| 	constructor(name: string, grouped = false) { | 	constructor(name: string, grouped = false) { | ||||||
| 		this.collection = db.get<Log<T>>(`chart.${name}`); | 		this.collection = db.get<Log<T>>(`chart.${name}`); | ||||||
| 		if (grouped) { | 		const keys = { | ||||||
| 			this.collection.createIndex({ span: -1, date: -1, group: -1 }, { unique: true }); | 			span: -1, | ||||||
| 		} else { | 			date: -1 | ||||||
| 			this.collection.createIndex({ span: -1, date: -1 }, { unique: true }); | 		} as { [key: string]: 1 | -1; }; | ||||||
| 		} | 		if (grouped) keys.group = -1; | ||||||
|  | 		this.collection.createIndex(keys, { unique: true }); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@autobind | 	@autobind | ||||||
| @@ -73,14 +74,14 @@ export default abstract class Chart<T> { | |||||||
| 		const query: Obj = {}; | 		const query: Obj = {}; | ||||||
|  |  | ||||||
| 		const dive = (x: Obj, path: string) => { | 		const dive = (x: Obj, path: string) => { | ||||||
| 			Object.entries(x).forEach(([k, v]) => { | 			for (const [k, v] of Object.entries(x)) { | ||||||
| 				const p = path ? `${path}.${k}` : k; | 				const p = path ? `${path}.${k}` : k; | ||||||
| 				if (typeof v === 'number') { | 				if (typeof v === 'number') { | ||||||
| 					query[p] = v; | 					query[p] = v; | ||||||
| 				} else { | 				} else { | ||||||
| 					dive(v, p); | 					dive(v, p); | ||||||
| 				} | 				} | ||||||
| 			}); | 			} | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		dive(x, path); | 		dive(x, path); | ||||||
| @@ -333,14 +334,14 @@ export default abstract class Chart<T> { | |||||||
| 		 * にする | 		 * にする | ||||||
| 		 */ | 		 */ | ||||||
| 		const dive = (x: Obj, path?: string) => { | 		const dive = (x: Obj, path?: string) => { | ||||||
| 			Object.entries(x).forEach(([k, v]) => { | 			for (const [k, v] of Object.entries(x)) { | ||||||
| 				const p = path ? `${path}.${k}` : k; | 				const p = path ? `${path}.${k}` : k; | ||||||
| 				if (typeof v == 'object') { | 				if (typeof v == 'object') { | ||||||
| 					dive(v, p); | 					dive(v, p); | ||||||
| 				} else { | 				} else { | ||||||
| 					nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p))); | 					nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p))); | ||||||
| 				} | 				} | ||||||
| 			}); | 			} | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		dive(chart[0]); | 		dive(chart[0]); | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ import './style.styl'; | |||||||
|  |  | ||||||
| import init from '../init'; | import init from '../init'; | ||||||
| import Index from './views/index.vue'; | import Index from './views/index.vue'; | ||||||
|  | import NotFound from '../common/views/pages/not-found.vue'; | ||||||
|  |  | ||||||
| init(launch => { | init(launch => { | ||||||
| 	document.title = 'Admin'; | 	document.title = 'Admin'; | ||||||
| @@ -19,6 +20,7 @@ init(launch => { | |||||||
| 		base: '/admin/', | 		base: '/admin/', | ||||||
| 		routes: [ | 		routes: [ | ||||||
| 			{ path: '/', component: Index }, | 			{ path: '/', component: Index }, | ||||||
|  | 			{ path: '*', component: NotFound } | ||||||
| 		] | 		] | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -48,15 +48,15 @@ export default Vue.extend({ | |||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		remove(i) { | 		remove(i) { | ||||||
| 			this.$root.alert({ | 			this.$root.dialog({ | ||||||
| 				type: 'warning', | 				type: 'warning', | ||||||
| 				text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title), | 				text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title), | ||||||
| 				showCancelButton: true | 				showCancelButton: true | ||||||
| 			}).then(res => { | 			}).then(({ canceled }) => { | ||||||
| 				if (!res) return; | 				if (canceled) return; | ||||||
| 				this.announcements = this.announcements.filter((_, j) => j !== i); | 				this.announcements = this.announcements.filter((_, j) => j !== i); | ||||||
| 				this.save(true); | 				this.save(true); | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('_remove.removed') | 					text: this.$t('_remove.removed') | ||||||
| 				}); | 				}); | ||||||
| @@ -68,13 +68,13 @@ export default Vue.extend({ | |||||||
| 				broadcasts: this.announcements | 				broadcasts: this.announcements | ||||||
| 			}).then(() => { | 			}).then(() => { | ||||||
| 				if (!silent) { | 				if (!silent) { | ||||||
| 					this.$root.alert({ | 					this.$root.dialog({ | ||||||
| 						type: 'success', | 						type: 'success', | ||||||
| 						text: this.$t('saved') | 						text: this.$t('saved') | ||||||
| 					}); | 					}); | ||||||
| 				} | 				} | ||||||
| 			}).catch(e => { | 			}).catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e | 					text: e | ||||||
| 				}); | 				}); | ||||||
|   | |||||||
| @@ -56,7 +56,9 @@ export default Vue.extend({ | |||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		onLogs(logs) { | 		onLogs(logs) { | ||||||
| 			logs.reverse().forEach(log => this.onLog(log)); | 			for (const log of logs.reverse()) { | ||||||
|  | 				this.onLog(log) | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
| @@ -67,7 +69,7 @@ export default Vue.extend({ | |||||||
| 	display block | 	display block | ||||||
| 	padding 12px 16px 16px 16px | 	padding 12px 16px 16px 16px | ||||||
| 	height 250px | 	height 250px | ||||||
| 	overflow hidden | 	overflow auto | ||||||
| 	box-shadow 0 2px 4px rgba(0, 0, 0, 0.1) | 	box-shadow 0 2px 4px rgba(0, 0, 0, 0.1) | ||||||
| 	background var(--adminDashboardCardBg) | 	background var(--adminDashboardCardBg) | ||||||
| 	border-radius 8px | 	border-radius 8px | ||||||
|   | |||||||
| @@ -132,7 +132,9 @@ export default Vue.extend({ | |||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		onStatsLog(statsLog) { | 		onStatsLog(statsLog) { | ||||||
| 			statsLog.reverse().forEach(stats => this.onStats(stats)); | 			for (const stats of statsLog.reverse()) { | ||||||
|  | 				this.onStats(stats); | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -127,12 +127,12 @@ export default Vue.extend({ | |||||||
| 		this.$root.api('instances', { | 		this.$root.api('instances', { | ||||||
| 			sort: '+notes' | 			sort: '+notes' | ||||||
| 		}).then(instances => { | 		}).then(instances => { | ||||||
| 			instances.forEach(i => { | 			for (const i of instances) { | ||||||
| 				i.bg = randomColor({ | 				i.bg = randomColor({ | ||||||
| 					seed: i.host, | 					seed: i.host, | ||||||
| 					luminosity: 'dark' | 					luminosity: 'dark' | ||||||
| 				}); | 				}); | ||||||
| 			}); | 			} | ||||||
| 			this.instances = instances; | 			this.instances = instances; | ||||||
| 		}); | 		}); | ||||||
| 	}, | 	}, | ||||||
|   | |||||||
							
								
								
									
										189
									
								
								src/client/app/admin/views/drive.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,189 @@ | |||||||
|  | <template> | ||||||
|  | <div class="pwnqwyet"> | ||||||
|  | 	<ui-card> | ||||||
|  | 		<div slot="title"><fa :icon="faCloud"/> {{ $t('@.drive') }}</div> | ||||||
|  | 		<section class="fit-top"> | ||||||
|  | 			<ui-horizon-group inputs> | ||||||
|  | 				<ui-select v-model="sort"> | ||||||
|  | 					<span slot="label">{{ $t('sort.title') }}</span> | ||||||
|  | 					<option value="-createdAt">{{ $t('sort.createdAtAsc') }}</option> | ||||||
|  | 					<option value="+createdAt">{{ $t('sort.createdAtDesc') }}</option> | ||||||
|  | 					<option value="-size">{{ $t('sort.sizeAsc') }}</option> | ||||||
|  | 					<option value="+size">{{ $t('sort.sizeDesc') }}</option> | ||||||
|  | 				</ui-select> | ||||||
|  | 				<ui-select v-model="origin"> | ||||||
|  | 					<span slot="label">{{ $t('origin.title') }}</span> | ||||||
|  | 					<option value="combined">{{ $t('origin.combined') }}</option> | ||||||
|  | 					<option value="local">{{ $t('origin.local') }}</option> | ||||||
|  | 					<option value="remote">{{ $t('origin.remote') }}</option> | ||||||
|  | 				</ui-select> | ||||||
|  | 			</ui-horizon-group> | ||||||
|  | 			<sequential-entrance animation="entranceFromTop" delay="25"> | ||||||
|  | 				<div class="kidvdlkg" v-for="file in files"> | ||||||
|  | 					<div @click="file._open = !file._open"> | ||||||
|  | 						<div> | ||||||
|  | 							<div class="thumbnail" :style="thumbnail(file)"></div> | ||||||
|  | 						</div> | ||||||
|  | 						<div> | ||||||
|  | 							<header> | ||||||
|  | 								<b>{{ file.name }}</b> | ||||||
|  | 								<span class="username">@{{ file.user | acct }}</span> | ||||||
|  | 							</header> | ||||||
|  | 							<div> | ||||||
|  | 								<div> | ||||||
|  | 									<span style="margin-right:16px;">{{ file.type }}</span> | ||||||
|  | 									<span>{{ file.datasize | bytes }}</span> | ||||||
|  | 								</div> | ||||||
|  | 								<div><mk-time :time="file.createdAt" mode="detail"/></div> | ||||||
|  | 							</div> | ||||||
|  | 						</div> | ||||||
|  | 					</div> | ||||||
|  | 					<div v-show="file._open"> | ||||||
|  | 						<ui-input readonly :value="file.url"></ui-input> | ||||||
|  | 						<ui-horizon-group> | ||||||
|  | 							<ui-button @click="toggleSensitive(file)" v-if="file.isSensitive"><fa :icon="faEye"/> {{ $t('unmark-as-sensitive') }}</ui-button> | ||||||
|  | 							<ui-button @click="toggleSensitive(file)" v-else><fa :icon="faEyeSlash"/> {{ $t('mark-as-sensitive') }}</ui-button> | ||||||
|  | 							<ui-button @click="del(file)"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</ui-button> | ||||||
|  | 						</ui-horizon-group> | ||||||
|  | 					</div> | ||||||
|  | 				</div> | ||||||
|  | 			</sequential-entrance> | ||||||
|  | 			<ui-button v-if="existMore" @click="fetch">{{ $t('@.load-more') }}</ui-button> | ||||||
|  | 		</section> | ||||||
|  | 	</ui-card> | ||||||
|  | </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import Vue from 'vue'; | ||||||
|  | import i18n from '../../i18n'; | ||||||
|  | import { faCloud } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { faTrashAlt, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons'; | ||||||
|  |  | ||||||
|  | export default Vue.extend({ | ||||||
|  | 	i18n: i18n('admin/views/drive.vue'), | ||||||
|  |  | ||||||
|  | 	data() { | ||||||
|  | 		return { | ||||||
|  | 			sort: '+createdAt', | ||||||
|  | 			origin: 'combined', | ||||||
|  | 			limit: 10, | ||||||
|  | 			offset: 0, | ||||||
|  | 			files: [], | ||||||
|  | 			existMore: false, | ||||||
|  | 			faCloud, faTrashAlt, faEye, faEyeSlash | ||||||
|  | 		}; | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	watch: { | ||||||
|  | 		sort() { | ||||||
|  | 			this.files = []; | ||||||
|  | 			this.offset = 0; | ||||||
|  | 			this.fetch(); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		origin() { | ||||||
|  | 			this.files = []; | ||||||
|  | 			this.offset = 0; | ||||||
|  | 			this.fetch(); | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	mounted() { | ||||||
|  | 		this.fetch(); | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	methods: { | ||||||
|  | 		fetch() { | ||||||
|  | 			this.$root.api('admin/drive/files', { | ||||||
|  | 				origin: this.origin, | ||||||
|  | 				sort: this.sort, | ||||||
|  | 				offset: this.offset, | ||||||
|  | 				limit: this.limit + 1 | ||||||
|  | 			}).then(files => { | ||||||
|  | 				if (files.length == this.limit + 1) { | ||||||
|  | 					files.pop(); | ||||||
|  | 					this.existMore = true; | ||||||
|  | 				} else { | ||||||
|  | 					this.existMore = false; | ||||||
|  | 				} | ||||||
|  | 				for (const x of files) { | ||||||
|  | 					x._open = false; | ||||||
|  | 				} | ||||||
|  | 				this.files = this.files.concat(files); | ||||||
|  | 				this.offset += this.limit; | ||||||
|  | 			}); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		thumbnail(file: any): any { | ||||||
|  | 			return { | ||||||
|  | 				'background-color': file.properties.avgColor && file.properties.avgColor.length == 3 ? `rgb(${file.properties.avgColor.join(',')})` : 'transparent', | ||||||
|  | 				'background-image': `url(${file.thumbnailUrl})` | ||||||
|  | 			}; | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		async del(file: any) { | ||||||
|  | 			const process = async () => { | ||||||
|  | 				await this.$root.api('drive/files/delete', { fileId: file.id }); | ||||||
|  | 				this.$root.dialog({ | ||||||
|  | 					type: 'success', | ||||||
|  | 					text: this.$t('deleted') | ||||||
|  | 				}); | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			await process().catch(e => { | ||||||
|  | 				this.$root.dialog({ | ||||||
|  | 					type: 'error', | ||||||
|  | 					text: e.toString() | ||||||
|  | 				}); | ||||||
|  | 			}); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		toggleSensitive(file: any) { | ||||||
|  | 			this.$root.api('drive/files/update', { | ||||||
|  | 				fileId: file.id, | ||||||
|  | 				isSensitive: !file.isSensitive | ||||||
|  | 			}); | ||||||
|  |  | ||||||
|  | 			file.isSensitive = !file.isSensitive; | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="stylus" scoped> | ||||||
|  | .pwnqwyet | ||||||
|  | 	@media (min-width 500px) | ||||||
|  | 		padding 16px | ||||||
|  |  | ||||||
|  | 	.kidvdlkg | ||||||
|  | 		padding 16px 0 | ||||||
|  | 		border-top solid 1px var(--faceDivider) | ||||||
|  |  | ||||||
|  | 		> div:first-child | ||||||
|  | 			display flex | ||||||
|  | 			cursor pointer | ||||||
|  |  | ||||||
|  | 			> div:nth-child(1) | ||||||
|  | 				> .thumbnail | ||||||
|  | 					display block | ||||||
|  | 					width 64px | ||||||
|  | 					height 64px | ||||||
|  | 					background-size cover | ||||||
|  | 					background-position center center | ||||||
|  |  | ||||||
|  | 			> div:nth-child(2) | ||||||
|  | 				flex 1 | ||||||
|  | 				padding-left 16px | ||||||
|  |  | ||||||
|  | 				@media (max-width 500px) | ||||||
|  | 					font-size 14px | ||||||
|  |  | ||||||
|  | 				> header | ||||||
|  | 					word-break break-word | ||||||
|  |  | ||||||
|  | 					> .username | ||||||
|  | 						margin-left 8px | ||||||
|  | 						opacity 0.7 | ||||||
|  |  | ||||||
|  | </style> | ||||||
| @@ -24,9 +24,12 @@ | |||||||
|  |  | ||||||
| 	<ui-card> | 	<ui-card> | ||||||
| 		<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div> | 		<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div> | ||||||
| 		<section v-for="emoji in emojis"> | 		<section v-for="emoji in emojis" class="oryfrbft"> | ||||||
|  | 			<div> | ||||||
| 				<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/> | 				<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/> | ||||||
| 			<ui-horizon-group inputs> | 			</div> | ||||||
|  | 			<div> | ||||||
|  | 				<ui-horizon-group> | ||||||
| 					<ui-input v-model="emoji.name"> | 					<ui-input v-model="emoji.name"> | ||||||
| 						<span>{{ $t('add-emoji.name') }}</span> | 						<span>{{ $t('add-emoji.name') }}</span> | ||||||
| 					</ui-input> | 					</ui-input> | ||||||
| @@ -42,6 +45,7 @@ | |||||||
| 					<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button> | 					<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button> | ||||||
| 					<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button> | 					<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button> | ||||||
| 				</ui-horizon-group> | 				</ui-horizon-group> | ||||||
|  | 			</div> | ||||||
| 		</section> | 		</section> | ||||||
| 	</ui-card> | 	</ui-card> | ||||||
| </div> | </div> | ||||||
| @@ -75,13 +79,13 @@ export default Vue.extend({ | |||||||
| 				url: this.url, | 				url: this.url, | ||||||
| 				aliases: this.aliases.split(' ').filter(x => x.length > 0) | 				aliases: this.aliases.split(' ').filter(x => x.length > 0) | ||||||
| 			}).then(() => { | 			}).then(() => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('add-emoji.added') | 					text: this.$t('add-emoji.added') | ||||||
| 				}); | 				}); | ||||||
| 				this.fetchEmojis(); | 				this.fetchEmojis(); | ||||||
| 			}).catch(e => { | 			}).catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e | 					text: e | ||||||
| 				}); | 				}); | ||||||
| @@ -91,7 +95,9 @@ export default Vue.extend({ | |||||||
| 		fetchEmojis() { | 		fetchEmojis() { | ||||||
| 			this.$root.api('admin/emoji/list').then(emojis => { | 			this.$root.api('admin/emoji/list').then(emojis => { | ||||||
| 				emojis.reverse(); | 				emojis.reverse(); | ||||||
| 				emojis.forEach(e => e.aliases = (e.aliases || []).join(' ')); | 				for (const e of emojis) { | ||||||
|  | 					e.aliases = (e.aliases || []).join(' '); | ||||||
|  | 				} | ||||||
| 				this.emojis = emojis; | 				this.emojis = emojis; | ||||||
| 			}); | 			}); | ||||||
| 		}, | 		}, | ||||||
| @@ -103,12 +109,12 @@ export default Vue.extend({ | |||||||
| 				url: emoji.url, | 				url: emoji.url, | ||||||
| 				aliases: emoji.aliases.split(' ').filter(x => x.length > 0) | 				aliases: emoji.aliases.split(' ').filter(x => x.length > 0) | ||||||
| 			}).then(() => { | 			}).then(() => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('updated') | 					text: this.$t('updated') | ||||||
| 				}); | 				}); | ||||||
| 			}).catch(e => { | 			}).catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e | 					text: e | ||||||
| 				}); | 				}); | ||||||
| @@ -116,23 +122,23 @@ export default Vue.extend({ | |||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		removeEmoji(emoji) { | 		removeEmoji(emoji) { | ||||||
| 			this.$root.alert({ | 			this.$root.dialog({ | ||||||
| 				type: 'warning', | 				type: 'warning', | ||||||
| 				text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name), | 				text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name), | ||||||
| 				showCancelButton: true | 				showCancelButton: true | ||||||
| 			}).then(res => { | 			}).then(({ canceled }) => { | ||||||
| 				if (!res) return; | 				if (canceled) return; | ||||||
|  |  | ||||||
| 				this.$root.api('admin/emoji/remove', { | 				this.$root.api('admin/emoji/remove', { | ||||||
| 					id: emoji.id | 					id: emoji.id | ||||||
| 				}).then(() => { | 				}).then(() => { | ||||||
| 					this.$root.alert({ | 					this.$root.dialog({ | ||||||
| 						type: 'success', | 						type: 'success', | ||||||
| 						text: this.$t('remove-emoji.removed') | 						text: this.$t('remove-emoji.removed') | ||||||
| 					}); | 					}); | ||||||
| 					this.fetchEmojis(); | 					this.fetchEmojis(); | ||||||
| 				}).catch(e => { | 				}).catch(e => { | ||||||
| 					this.$root.alert({ | 					this.$root.dialog({ | ||||||
| 						type: 'error', | 						type: 'error', | ||||||
| 						text: e | 						text: e | ||||||
| 					}); | 					}); | ||||||
| @@ -148,4 +154,21 @@ export default Vue.extend({ | |||||||
| 	@media (min-width 500px) | 	@media (min-width 500px) | ||||||
| 		padding 16px | 		padding 16px | ||||||
|  |  | ||||||
|  | 	.oryfrbft | ||||||
|  | 		@media (min-width 500px) | ||||||
|  | 			display flex | ||||||
|  |  | ||||||
|  | 		> div:first-child | ||||||
|  | 			@media (max-width 500px) | ||||||
|  | 				padding-bottom 16px | ||||||
|  |  | ||||||
|  | 			> img | ||||||
|  | 				vertical-align bottom | ||||||
|  |  | ||||||
|  | 		> div:last-child | ||||||
|  | 			flex 1 | ||||||
|  |  | ||||||
|  | 			@media (min-width 500px) | ||||||
|  | 				padding-left 16px | ||||||
|  |  | ||||||
| </style> | </style> | ||||||
|   | |||||||
| @@ -15,19 +15,18 @@ | |||||||
| 		</div> | 		</div> | ||||||
| 		<div class="me"> | 		<div class="me"> | ||||||
| 			<img class="avatar" :src="$store.state.i.avatarUrl" alt="avatar"/> | 			<img class="avatar" :src="$store.state.i.avatarUrl" alt="avatar"/> | ||||||
| 			<p class="name">{{ $store.state.i | userName }}</p> | 			<p class="name"><mk-user-name :user="$store.state.i"/></p> | ||||||
| 		</div> | 		</div> | ||||||
| 		<ul> | 		<ul> | ||||||
| 			<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li> | 			<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li> | ||||||
| 			<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li> | 			<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li> | ||||||
| 			<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li> | 			<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li> | ||||||
| 			<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li> | 			<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li> | ||||||
|  | 			<li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> | ||||||
| 			<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> --> | 			<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> --> | ||||||
| 			<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li> | 			<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li> | ||||||
| 			<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li> | 			<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li> | ||||||
| 			<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li> | 			<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li> | ||||||
|  |  | ||||||
| 			<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> --> |  | ||||||
| 		</ul> | 		</ul> | ||||||
| 		<div class="back-to-misskey"> | 		<div class="back-to-misskey"> | ||||||
| 			<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a> | 			<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a> | ||||||
| @@ -45,7 +44,7 @@ | |||||||
| 			<div v-if="page == 'emoji'"><x-emoji/></div> | 			<div v-if="page == 'emoji'"><x-emoji/></div> | ||||||
| 			<div v-if="page == 'announcements'"><x-announcements/></div> | 			<div v-if="page == 'announcements'"><x-announcements/></div> | ||||||
| 			<div v-if="page == 'hashtags'"><x-hashtags/></div> | 			<div v-if="page == 'hashtags'"><x-hashtags/></div> | ||||||
| 			<div v-if="page == 'drive'"></div> | 			<div v-if="page == 'drive'"><x-drive/></div> | ||||||
| 			<div v-if="page == 'update'"></div> | 			<div v-if="page == 'update'"></div> | ||||||
| 		</div> | 		</div> | ||||||
| 	</main> | 	</main> | ||||||
| @@ -63,6 +62,7 @@ import XEmoji from "./emoji.vue"; | |||||||
| import XAnnouncements from "./announcements.vue"; | import XAnnouncements from "./announcements.vue"; | ||||||
| import XHashtags from "./hashtags.vue"; | import XHashtags from "./hashtags.vue"; | ||||||
| import XUsers from "./users.vue"; | import XUsers from "./users.vue"; | ||||||
|  | import XDrive from "./drive.vue"; | ||||||
| import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons'; | import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons'; | ||||||
| import { faGrin } from '@fortawesome/free-regular-svg-icons'; | import { faGrin } from '@fortawesome/free-regular-svg-icons'; | ||||||
|  |  | ||||||
| @@ -79,7 +79,8 @@ export default Vue.extend({ | |||||||
| 		XEmoji, | 		XEmoji, | ||||||
| 		XAnnouncements, | 		XAnnouncements, | ||||||
| 		XHashtags, | 		XHashtags, | ||||||
| 		XUsers | 		XUsers, | ||||||
|  | 		XDrive, | ||||||
| 	}, | 	}, | ||||||
| 	provide: { | 	provide: { | ||||||
| 		isMobile | 		isMobile | ||||||
|   | |||||||
| @@ -6,17 +6,23 @@ | |||||||
| 			<ui-input :value="host" readonly>{{ $t('host') }}</ui-input> | 			<ui-input :value="host" readonly>{{ $t('host') }}</ui-input> | ||||||
| 			<ui-input v-model="name">{{ $t('instance-name') }}</ui-input> | 			<ui-input v-model="name">{{ $t('instance-name') }}</ui-input> | ||||||
| 			<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea> | 			<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea> | ||||||
|  | 			<ui-input v-model="mascotImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('logo-url') }}</ui-input> | ||||||
| 			<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input> | 			<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input> | ||||||
|  | 			<ui-input v-model="errorImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('error-image-url') }}</ui-input> | ||||||
| 			<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input> | 			<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input> | ||||||
| 		</section> | 		</section> | ||||||
| 		<section class="fit-bottom"> | 		<section class="fit-bottom"> | ||||||
| 			<header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header> | 			<header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header> | ||||||
| 			<ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input> | 			<ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input> | ||||||
| 			<ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="['far', 'envelope']"/></i>{{ $t('maintainer-email') }}</ui-input> | 			<ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="farEnvelope"/></i>{{ $t('maintainer-email') }}</ui-input> | ||||||
| 		</section> | 		</section> | ||||||
| 		<section class="fit-top fit-bottom"> | 		<section class="fit-top fit-bottom"> | ||||||
| 			<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input> | 			<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input> | ||||||
| 		</section> | 		</section> | ||||||
|  | 		<section> | ||||||
|  | 			<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch> | ||||||
|  | 			<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch> | ||||||
|  | 		</section> | ||||||
| 		<section class="fit-bottom"> | 		<section class="fit-bottom"> | ||||||
| 			<header><fa icon="cloud"/> {{ $t('drive-config') }}</header> | 			<header><fa icon="cloud"/> {{ $t('drive-config') }}</header> | ||||||
| 			<ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch> | 			<ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch> | ||||||
| @@ -27,8 +33,10 @@ | |||||||
| 			<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header> | 			<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header> | ||||||
| 			<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch> | 			<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch> | ||||||
| 			<ui-info>{{ $t('recaptcha-info') }}</ui-info> | 			<ui-info>{{ $t('recaptcha-info') }}</ui-info> | ||||||
|  | 			<ui-horizon-group inputs> | ||||||
| 				<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input> | 				<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input> | ||||||
| 				<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input> | 				<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
| 		</section> | 		</section> | ||||||
| 		<section> | 		<section> | ||||||
| 			<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header> | 			<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header> | ||||||
| @@ -37,10 +45,27 @@ | |||||||
| 			<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info> | 			<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info> | ||||||
| 		</section> | 		</section> | ||||||
| 		<section> | 		<section> | ||||||
| 			<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch> | 			<header><fa :icon="farEnvelope"/> {{ $t('email-config') }}</header> | ||||||
|  | 			<ui-switch v-model="enableEmail">{{ $t('enable-email') }}<span slot="desc">{{ $t('email-config-info') }}</span></ui-switch> | ||||||
|  | 			<ui-input v-model="email" type="email" :disabled="!enableEmail">{{ $t('email') }}</ui-input> | ||||||
|  | 			<ui-horizon-group inputs> | ||||||
|  | 				<ui-input v-model="smtpHost" :disabled="!enableEmail">{{ $t('smtp-host') }}</ui-input> | ||||||
|  | 				<ui-input v-model="smtpPort" type="number" :disabled="!enableEmail">{{ $t('smtp-port') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
|  | 			<ui-horizon-group inputs> | ||||||
|  | 				<ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input> | ||||||
|  | 				<ui-input v-model="smtpPass" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
|  | 			<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch> | ||||||
| 		</section> | 		</section> | ||||||
| 		<section> | 		<section> | ||||||
| 			<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch> | 			<header><fa :icon="faBolt"/> {{ $t('serviceworker-config') }}</header> | ||||||
|  | 			<ui-switch v-model="enableServiceWorker">{{ $t('enable-serviceworker') }}<span slot="desc">{{ $t('serviceworker-info') }}</span></ui-switch> | ||||||
|  | 			<ui-info>{{ $t('vapid-info') }}<br><code>npm i web-push -g<br>web-push generate-vapid-keys</code></ui-info> | ||||||
|  | 			<ui-horizon-group inputs class="fit-bottom"> | ||||||
|  | 				<ui-input v-model="swPublicKey" :disabled="!enableServiceWorker"><i slot="icon"><fa icon="key"/></i>{{ $t('vapid-publickey') }}</ui-input> | ||||||
|  | 				<ui-input v-model="swPrivateKey" :disabled="!enableServiceWorker"><i slot="icon"><fa icon="key"/></i>{{ $t('vapid-privatekey') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
| 		</section> | 		</section> | ||||||
| 		<section> | 		<section> | ||||||
| 			<header>summaly Proxy</header> | 			<header>summaly Proxy</header> | ||||||
| @@ -69,9 +94,11 @@ | |||||||
| 		<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div> | 		<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div> | ||||||
| 		<section> | 		<section> | ||||||
| 			<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch> | 			<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch> | ||||||
| 			<ui-info>{{ $t('twitter-integration-info') }}</ui-info> | 			<ui-horizon-group> | ||||||
| 				<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input> | 				<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input> | ||||||
| 				<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input> | 				<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
|  | 			<ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info> | ||||||
| 			<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> | 			<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> | ||||||
| 		</section> | 		</section> | ||||||
| 	</ui-card> | 	</ui-card> | ||||||
| @@ -80,9 +107,11 @@ | |||||||
| 		<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div> | 		<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div> | ||||||
| 		<section> | 		<section> | ||||||
| 			<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch> | 			<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch> | ||||||
| 			<ui-info>{{ $t('github-integration-info') }}</ui-info> | 			<ui-horizon-group> | ||||||
| 				<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input> | 				<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input> | ||||||
| 				<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input> | 				<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
|  | 			<ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info> | ||||||
| 			<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> | 			<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> | ||||||
| 		</section> | 		</section> | ||||||
| 	</ui-card> | 	</ui-card> | ||||||
| @@ -91,9 +120,11 @@ | |||||||
| 		<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div> | 		<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div> | ||||||
| 		<section> | 		<section> | ||||||
| 			<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch> | 			<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch> | ||||||
| 			<ui-info>{{ $t('discord-integration-info') }}</ui-info> | 			<ui-horizon-group> | ||||||
| 				<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input> | 				<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input> | ||||||
| 				<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input> | 				<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input> | ||||||
|  | 			</ui-horizon-group> | ||||||
|  | 			<ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info> | ||||||
| 			<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> | 			<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> | ||||||
| 		</section> | 		</section> | ||||||
| 	</ui-card> | 	</ui-card> | ||||||
| @@ -103,21 +134,25 @@ | |||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
| import i18n from '../../i18n'; | import i18n from '../../i18n'; | ||||||
| import { host } from '../../config'; | import { url, host } from '../../config'; | ||||||
| import { toUnicode } from 'punycode'; | import { toUnicode } from 'punycode'; | ||||||
| import { faHeadset, faShieldAlt, faGhost, faUserPlus } from '@fortawesome/free-solid-svg-icons'; | import { faHeadset, faShieldAlt, faGhost, faUserPlus, faBolt } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons'; | ||||||
|  |  | ||||||
| export default Vue.extend({ | export default Vue.extend({ | ||||||
| 	i18n: i18n('admin/views/instance.vue'), | 	i18n: i18n('admin/views/instance.vue'), | ||||||
|  |  | ||||||
| 	data() { | 	data() { | ||||||
| 		return { | 		return { | ||||||
|  | 			url, | ||||||
| 			host: toUnicode(host), | 			host: toUnicode(host), | ||||||
| 			maintainerName: null, | 			maintainerName: null, | ||||||
| 			maintainerEmail: null, | 			maintainerEmail: null, | ||||||
| 			disableRegistration: false, | 			disableRegistration: false, | ||||||
| 			disableLocalTimeline: false, | 			disableLocalTimeline: false, | ||||||
|  | 			mascotImageUrl: null, | ||||||
| 			bannerUrl: null, | 			bannerUrl: null, | ||||||
|  | 			errorImageUrl: null, | ||||||
| 			name: null, | 			name: null, | ||||||
| 			description: null, | 			description: null, | ||||||
| 			languages: null, | 			languages: null, | ||||||
| @@ -143,7 +178,17 @@ export default Vue.extend({ | |||||||
| 			externalUserRecommendationEngine: null, | 			externalUserRecommendationEngine: null, | ||||||
| 			externalUserRecommendationTimeout: null, | 			externalUserRecommendationTimeout: null, | ||||||
| 			summalyProxy: null, | 			summalyProxy: null, | ||||||
| 			faHeadset, faShieldAlt, faGhost, faUserPlus | 			enableEmail: false, | ||||||
|  | 			email: null, | ||||||
|  | 			smtpSecure: false, | ||||||
|  | 			smtpHost: null, | ||||||
|  | 			smtpPort: null, | ||||||
|  | 			smtpUser: null, | ||||||
|  | 			smtpPass: null, | ||||||
|  | 			enableServiceWorker: false, | ||||||
|  | 			swPublicKey: null, | ||||||
|  | 			swPrivateKey: null, | ||||||
|  | 			faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope, faBolt | ||||||
| 		}; | 		}; | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
| @@ -151,7 +196,11 @@ export default Vue.extend({ | |||||||
| 		this.$root.getMeta().then(meta => { | 		this.$root.getMeta().then(meta => { | ||||||
| 			this.maintainerName = meta.maintainer.name; | 			this.maintainerName = meta.maintainer.name; | ||||||
| 			this.maintainerEmail = meta.maintainer.email; | 			this.maintainerEmail = meta.maintainer.email; | ||||||
|  | 			this.disableRegistration = meta.disableRegistration; | ||||||
|  | 			this.disableLocalTimeline = meta.disableLocalTimeline; | ||||||
|  | 			this.mascotImageUrl = meta.mascotImageUrl; | ||||||
| 			this.bannerUrl = meta.bannerUrl; | 			this.bannerUrl = meta.bannerUrl; | ||||||
|  | 			this.errorImageUrl = meta.errorImageUrl; | ||||||
| 			this.name = meta.name; | 			this.name = meta.name; | ||||||
| 			this.description = meta.description; | 			this.description = meta.description; | ||||||
| 			this.languages = meta.langs.join(' '); | 			this.languages = meta.langs.join(' '); | ||||||
| @@ -176,6 +225,16 @@ export default Vue.extend({ | |||||||
| 			this.externalUserRecommendationEngine = meta.externalUserRecommendationEngine; | 			this.externalUserRecommendationEngine = meta.externalUserRecommendationEngine; | ||||||
| 			this.externalUserRecommendationTimeout = meta.externalUserRecommendationTimeout; | 			this.externalUserRecommendationTimeout = meta.externalUserRecommendationTimeout; | ||||||
| 			this.summalyProxy = meta.summalyProxy; | 			this.summalyProxy = meta.summalyProxy; | ||||||
|  | 			this.enableEmail = meta.enableEmail; | ||||||
|  | 			this.email = meta.email; | ||||||
|  | 			this.smtpSecure = meta.smtpSecure; | ||||||
|  | 			this.smtpHost = meta.smtpHost; | ||||||
|  | 			this.smtpPort = meta.smtpPort; | ||||||
|  | 			this.smtpUser = meta.smtpUser; | ||||||
|  | 			this.smtpPass = meta.smtpPass; | ||||||
|  | 			this.enableServiceWorker = meta.enableServiceWorker; | ||||||
|  | 			this.swPublicKey = meta.swPublickey; | ||||||
|  | 			this.swPrivateKey = meta.swPrivateKey; | ||||||
| 		}); | 		}); | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
| @@ -184,7 +243,7 @@ export default Vue.extend({ | |||||||
| 			this.$root.api('admin/invite').then(x => { | 			this.$root.api('admin/invite').then(x => { | ||||||
| 				this.inviteCode = x.code; | 				this.inviteCode = x.code; | ||||||
| 			}).catch(e => { | 			}).catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e | 					text: e | ||||||
| 				}); | 				}); | ||||||
| @@ -197,7 +256,9 @@ export default Vue.extend({ | |||||||
| 				maintainerEmail: this.maintainerEmail, | 				maintainerEmail: this.maintainerEmail, | ||||||
| 				disableRegistration: this.disableRegistration, | 				disableRegistration: this.disableRegistration, | ||||||
| 				disableLocalTimeline: this.disableLocalTimeline, | 				disableLocalTimeline: this.disableLocalTimeline, | ||||||
|  | 				mascotImageUrl: this.mascotImageUrl, | ||||||
| 				bannerUrl: this.bannerUrl, | 				bannerUrl: this.bannerUrl, | ||||||
|  | 				errorImageUrl: this.errorImageUrl, | ||||||
| 				name: this.name, | 				name: this.name, | ||||||
| 				description: this.description, | 				description: this.description, | ||||||
| 				langs: this.languages.split(' '), | 				langs: this.languages.split(' '), | ||||||
| @@ -221,14 +282,24 @@ export default Vue.extend({ | |||||||
| 				enableExternalUserRecommendation: this.enableExternalUserRecommendation, | 				enableExternalUserRecommendation: this.enableExternalUserRecommendation, | ||||||
| 				externalUserRecommendationEngine: this.externalUserRecommendationEngine, | 				externalUserRecommendationEngine: this.externalUserRecommendationEngine, | ||||||
| 				externalUserRecommendationTimeout: parseInt(this.externalUserRecommendationTimeout, 10), | 				externalUserRecommendationTimeout: parseInt(this.externalUserRecommendationTimeout, 10), | ||||||
| 				summalyProxy: this.summalyProxy | 				summalyProxy: this.summalyProxy, | ||||||
|  | 				enableEmail: this.enableEmail, | ||||||
|  | 				email: this.email, | ||||||
|  | 				smtpSecure: this.smtpSecure, | ||||||
|  | 				smtpHost: this.smtpHost, | ||||||
|  | 				smtpPort: parseInt(this.smtpPort, 10), | ||||||
|  | 				smtpUser: this.smtpUser, | ||||||
|  | 				smtpPass: this.smtpPass, | ||||||
|  | 				enableServiceWorker: this.enableServiceWorker, | ||||||
|  | 				swPublicKey: this.swPublicKey, | ||||||
|  | 				swPrivateKey: this.swPrivateKey | ||||||
| 			}).then(() => { | 			}).then(() => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('saved') | 					text: this.$t('saved') | ||||||
| 				}); | 				}); | ||||||
| 			}).catch(e => { | 			}).catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e | 					text: e | ||||||
| 				}); | 				}); | ||||||
|   | |||||||
| @@ -34,14 +34,14 @@ export default Vue.extend({ | |||||||
| 			const process = async () => { | 			const process = async () => { | ||||||
| 				const user = await this.$root.api('users/show', parseAcct(this.username)); | 				const user = await this.$root.api('users/show', parseAcct(this.username)); | ||||||
| 				await this.$root.api('admin/moderators/add', { userId: user.id }); | 				await this.$root.api('admin/moderators/add', { userId: user.id }); | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('add-moderator.added') | 					text: this.$t('add-moderator.added') | ||||||
| 				}); | 				}); | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			await process().catch(e => { | 			await process().catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e.toString() | 					text: e.toString() | ||||||
| 				}); | 				}); | ||||||
|   | |||||||
| @@ -38,6 +38,7 @@ | |||||||
| 					<option value="remote">{{ $t('users.origin.remote') }}</option> | 					<option value="remote">{{ $t('users.origin.remote') }}</option> | ||||||
| 				</ui-select> | 				</ui-select> | ||||||
| 			</ui-horizon-group> | 			</ui-horizon-group> | ||||||
|  | 			<sequential-entrance animation="entranceFromTop" delay="25"> | ||||||
| 				<div class="kofvwchc" v-for="user in users"> | 				<div class="kofvwchc" v-for="user in users"> | ||||||
| 					<div> | 					<div> | ||||||
| 						<a :href="user | userPage(null, true)"> | 						<a :href="user | userPage(null, true)"> | ||||||
| @@ -46,7 +47,7 @@ | |||||||
| 					</div> | 					</div> | ||||||
| 					<div> | 					<div> | ||||||
| 						<header> | 						<header> | ||||||
| 						<b>{{ user | userName }}</b> | 							<b><mk-user-name :user="user"/></b> | ||||||
| 							<span class="username">@{{ user | acct }}</span> | 							<span class="username">@{{ user | acct }}</span> | ||||||
| 						</header> | 						</header> | ||||||
| 						<div> | 						<div> | ||||||
| @@ -57,6 +58,7 @@ | |||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
|  | 			</sequential-entrance> | ||||||
| 			<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button> | 			<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button> | ||||||
| 		</section> | 		</section> | ||||||
| 	</ui-card> | 	</ui-card> | ||||||
| @@ -115,12 +117,12 @@ export default Vue.extend({ | |||||||
| 				return await this.$root.api('users/show', this.target.startsWith('@') ? parseAcct(this.target) : { userId: this.target }); | 				return await this.$root.api('users/show', this.target.startsWith('@') ? parseAcct(this.target) : { userId: this.target }); | ||||||
| 			} catch (e) { | 			} catch (e) { | ||||||
| 				if (e == 'user not found') { | 				if (e == 'user not found') { | ||||||
| 					this.$root.alert({ | 					this.$root.dialog({ | ||||||
| 						type: 'error', | 						type: 'error', | ||||||
| 						text: this.$t('user-not-found') | 						text: this.$t('user-not-found') | ||||||
| 					}); | 					}); | ||||||
| 				} else { | 				} else { | ||||||
| 					this.$root.alert({ | 					this.$root.dialog({ | ||||||
| 						type: 'error', | 						type: 'error', | ||||||
| 						text: e.toString() | 						text: e.toString() | ||||||
| 					}); | 					}); | ||||||
| @@ -138,7 +140,7 @@ export default Vue.extend({ | |||||||
| 		async resetPassword() { | 		async resetPassword() { | ||||||
| 			const user = await this.fetchUser(); | 			const user = await this.fetchUser(); | ||||||
| 			this.$root.api('admin/reset-password', { userId: user.id }).then(res => { | 			this.$root.api('admin/reset-password', { userId: user.id }).then(res => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('password-updated', { password: res.password }) | 					text: this.$t('password-updated', { password: res.password }) | ||||||
| 				}); | 				}); | ||||||
| @@ -151,14 +153,14 @@ export default Vue.extend({ | |||||||
| 			const process = async () => { | 			const process = async () => { | ||||||
| 				const user = await this.fetchUser(); | 				const user = await this.fetchUser(); | ||||||
| 				await this.$root.api('admin/verify-user', { userId: user.id }); | 				await this.$root.api('admin/verify-user', { userId: user.id }); | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('verified') | 					text: this.$t('verified') | ||||||
| 				}); | 				}); | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			await process().catch(e => { | 			await process().catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e.toString() | 					text: e.toString() | ||||||
| 				}); | 				}); | ||||||
| @@ -173,14 +175,14 @@ export default Vue.extend({ | |||||||
| 			const process = async () => { | 			const process = async () => { | ||||||
| 				const user = await this.fetchUser(); | 				const user = await this.fetchUser(); | ||||||
| 				await this.$root.api('admin/unverify-user', { userId: user.id }); | 				await this.$root.api('admin/unverify-user', { userId: user.id }); | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('unverified') | 					text: this.$t('unverified') | ||||||
| 				}); | 				}); | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			await process().catch(e => { | 			await process().catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e.toString() | 					text: e.toString() | ||||||
| 				}); | 				}); | ||||||
| @@ -195,14 +197,14 @@ export default Vue.extend({ | |||||||
| 			const process = async () => { | 			const process = async () => { | ||||||
| 				const user = await this.fetchUser(); | 				const user = await this.fetchUser(); | ||||||
| 				await this.$root.api('admin/suspend-user', { userId: user.id }); | 				await this.$root.api('admin/suspend-user', { userId: user.id }); | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('suspended') | 					text: this.$t('suspended') | ||||||
| 				}); | 				}); | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			await process().catch(e => { | 			await process().catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e.toString() | 					text: e.toString() | ||||||
| 				}); | 				}); | ||||||
| @@ -217,14 +219,14 @@ export default Vue.extend({ | |||||||
| 			const process = async () => { | 			const process = async () => { | ||||||
| 				const user = await this.fetchUser(); | 				const user = await this.fetchUser(); | ||||||
| 				await this.$root.api('admin/unsuspend-user', { userId: user.id }); | 				await this.$root.api('admin/unsuspend-user', { userId: user.id }); | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					text: this.$t('unsuspended') | 					text: this.$t('unsuspended') | ||||||
| 				}); | 				}); | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			await process().catch(e => { | 			await process().catch(e => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'error', | 					type: 'error', | ||||||
| 					text: e.toString() | 					text: e.toString() | ||||||
| 				}); | 				}); | ||||||
| @@ -274,6 +276,9 @@ export default Vue.extend({ | |||||||
| 			flex 1 | 			flex 1 | ||||||
| 			padding-left 16px | 			padding-left 16px | ||||||
|  |  | ||||||
|  | 			@media (max-width 500px) | ||||||
|  | 				font-size 14px | ||||||
|  |  | ||||||
| 			> header | 			> header | ||||||
| 				> .username | 				> .username | ||||||
| 					margin-left 8px | 					margin-left 8px | ||||||
|   | |||||||
| @@ -10,3 +10,19 @@ | |||||||
| 	opacity: 0; | 	opacity: 0; | ||||||
| 	transform: scaleY(0); | 	transform: scaleY(0); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .entranceFromTop { | ||||||
|  | 	animation-duration: 0.5s; | ||||||
|  | 	animation-name: entranceFromTop; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @keyframes entranceFromTop { | ||||||
|  | 	from { | ||||||
|  | 		opacity: 0; | ||||||
|  | 		transform: translateY(-64px); | ||||||
|  | 	} | ||||||
|  | 	to { | ||||||
|  | 		opacity: 1; | ||||||
|  | 		transform: translateY(0); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ import './style.styl'; | |||||||
|  |  | ||||||
| import init from '../init'; | import init from '../init'; | ||||||
| import Index from './views/index.vue'; | import Index from './views/index.vue'; | ||||||
|  | import NotFound from '../common/views/pages/not-found.vue'; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * init |  * init | ||||||
| @@ -20,6 +21,7 @@ init(launch => { | |||||||
| 		base: '/auth/', | 		base: '/auth/', | ||||||
| 		routes: [ | 		routes: [ | ||||||
| 			{ path: '/:token', component: Index }, | 			{ path: '/:token', component: Index }, | ||||||
|  | 			{ path: '*', component: NotFound } | ||||||
| 		] | 		] | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,9 +17,9 @@ | |||||||
| 	//#region Apply theme | 	//#region Apply theme | ||||||
| 	const theme = localStorage.getItem('theme'); | 	const theme = localStorage.getItem('theme'); | ||||||
| 	if (theme) { | 	if (theme) { | ||||||
| 		Object.entries(JSON.parse(theme)).forEach(([k, v]) => { | 		for (const [k, v] of Object.entries(JSON.parse(theme))) { | ||||||
| 			document.documentElement.style.setProperty(`--${k}`, v.toString()); | 			document.documentElement.style.setProperty(`--${k}`, v.toString()); | ||||||
| 		}); | 		} | ||||||
| 	} | 	} | ||||||
| 	//#endregion | 	//#endregion | ||||||
|  |  | ||||||
| @@ -160,7 +160,7 @@ | |||||||
| 			navigator.serviceWorker.controller.postMessage('clear'); | 			navigator.serviceWorker.controller.postMessage('clear'); | ||||||
|  |  | ||||||
| 			navigator.serviceWorker.getRegistrations().then(registrations => { | 			navigator.serviceWorker.getRegistrations().then(registrations => { | ||||||
| 				registrations.forEach(registration => registration.unregister()); | 				for (const registration of registrations) registration.unregister(); | ||||||
| 			}); | 			}); | ||||||
| 		} catch (e) { | 		} catch (e) { | ||||||
| 			console.error(e); | 			console.error(e); | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
|  |  | ||||||
| export default function<T extends object>(data: { | export default function <T extends object>(data: { | ||||||
| 	name: string; | 	name: string; | ||||||
| 	props?: () => T; | 	props?: () => T; | ||||||
| }) { | }) { | ||||||
| @@ -53,11 +53,10 @@ export default function<T extends object>(data: { | |||||||
| 			mergeProps() { | 			mergeProps() { | ||||||
| 				if (data.props) { | 				if (data.props) { | ||||||
| 					const defaultProps = data.props(); | 					const defaultProps = data.props(); | ||||||
| 					Object.keys(defaultProps).forEach(prop => { | 					for (const prop of Object.keys(defaultProps)) { | ||||||
| 						if (!this.props.hasOwnProperty(prop)) { | 						if (this.props.hasOwnProperty(prop)) continue; | ||||||
| 						Vue.set(this.props, prop, defaultProps[prop]); | 						Vue.set(this.props, prop, defaultProps[prop]); | ||||||
| 					} | 					} | ||||||
| 					}); |  | ||||||
| 				} | 				} | ||||||
| 			}, | 			}, | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,15 +28,15 @@ const getKeyMap = keymap => Object.entries(keymap).map(([patterns, callback]): a | |||||||
| 			shift: false | 			shift: false | ||||||
| 		} as pattern; | 		} as pattern; | ||||||
|  |  | ||||||
| 		part.trim().split('+').forEach(key => { | 		const keys = part.trim().split('+').map(x => x.trim().toLowerCase()); | ||||||
| 			key = key.trim().toLowerCase(); | 		for (const key of keys) { | ||||||
| 			switch (key) { | 			switch (key) { | ||||||
| 				case 'ctrl': pattern.ctrl = true; break; | 				case 'ctrl': pattern.ctrl = true; break; | ||||||
| 				case 'alt': pattern.alt = true; break; | 				case 'alt': pattern.alt = true; break; | ||||||
| 				case 'shift': pattern.shift = true; break; | 				case 'shift': pattern.shift = true; break; | ||||||
| 				default: pattern.which = keyCode(key).map(k => k.toLowerCase()); | 				default: pattern.which = keyCode(key).map(k => k.toLowerCase()); | ||||||
| 			} | 			} | ||||||
| 		}); | 		} | ||||||
|  |  | ||||||
| 		return pattern; | 		return pattern; | ||||||
| 	}); | 	}); | ||||||
| @@ -77,11 +77,7 @@ export default { | |||||||
| 						const matched = match(e, action.patterns); | 						const matched = match(e, action.patterns); | ||||||
|  |  | ||||||
| 						if (matched) { | 						if (matched) { | ||||||
| 							if (el._hotkey_global) { | 							if (el._hotkey_global && match(e, targetReservedKeys)) return; | ||||||
| 								if (match(e, targetReservedKeys)) { |  | ||||||
| 									return; |  | ||||||
| 								} |  | ||||||
| 							} |  | ||||||
|  |  | ||||||
| 							e.preventDefault(); | 							e.preventDefault(); | ||||||
| 							e.stopPropagation(); | 							e.stopPropagation(); | ||||||
|   | |||||||
| @@ -14,19 +14,20 @@ export default async function($root: any, force = false, silent = false) { | |||||||
| 				navigator.serviceWorker.controller.postMessage('clear'); | 				navigator.serviceWorker.controller.postMessage('clear'); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			navigator.serviceWorker.getRegistrations().then(registrations => { | 			const registrations = await navigator.serviceWorker.getRegistrations(); | ||||||
| 				registrations.forEach(registration => registration.unregister()); | 			for (const registration of registrations) { | ||||||
| 			}); | 				registration.unregister(); | ||||||
|  | 			} | ||||||
| 		} catch (e) { | 		} catch (e) { | ||||||
| 			console.error(e); | 			console.error(e); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if (!silent) { | 		/*if (!silent) { | ||||||
| 			$root.alert({ | 			$root.dialog({ | ||||||
| 				title: $root.$t('@.update-available-title'), | 				title: $root.$t('@.update-available-title'), | ||||||
| 				text: $root.$t('@.update-available', { newer, current }) | 				text: $root.$t('@.update-available', { newer, current }) | ||||||
| 			}); | 			}); | ||||||
| 		} | 		}*/ | ||||||
|  |  | ||||||
| 		return newer; | 		return newer; | ||||||
| 	} else { | 	} else { | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ export default function(type, data): Notification { | |||||||
|  |  | ||||||
| 		case 'unreadMessagingMessage': | 		case 'unreadMessagingMessage': | ||||||
| 			return { | 			return { | ||||||
| 				title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] , | 				title: '%i18n:common.notification.message-from%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split('{}')[1] , | ||||||
| 				body: data.text, // TODO: getMessagingMessageSummary(data), | 				body: data.text, // TODO: getMessagingMessageSummary(data), | ||||||
| 				icon: data.user.avatarUrl | 				icon: data.user.avatarUrl | ||||||
| 			}; | 			}; | ||||||
| @@ -30,7 +30,7 @@ export default function(type, data): Notification { | |||||||
| 		case 'reversiInvited': | 		case 'reversiInvited': | ||||||
| 			return { | 			return { | ||||||
| 				title: '%i18n:common.notification.reversi-invited%', | 				title: '%i18n:common.notification.reversi-invited%', | ||||||
| 				body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1], | 				body: '%i18n:common.notification.reversi-invited-by%'.split('{}')[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split('{}')[1], | ||||||
| 				icon: data.parent.avatarUrl | 				icon: data.parent.avatarUrl | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| @@ -38,21 +38,21 @@ export default function(type, data): Notification { | |||||||
| 			switch (data.type) { | 			switch (data.type) { | ||||||
| 				case 'mention': | 				case 'mention': | ||||||
| 					return { | 					return { | ||||||
| 						title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split("{}")[1], | 						title: '%i18n:common.notification.notified-by%'.split('{}')[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split('{}')[1], | ||||||
| 						body: getNoteSummary(data), | 						body: getNoteSummary(data), | ||||||
| 						icon: data.user.avatarUrl | 						icon: data.user.avatarUrl | ||||||
| 					}; | 					}; | ||||||
|  |  | ||||||
| 				case 'reply': | 				case 'reply': | ||||||
| 					return { | 					return { | ||||||
| 						title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1], | 						title: '%i18n:common.notification.reply-from%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split('{}')[1], | ||||||
| 						body: getNoteSummary(data), | 						body: getNoteSummary(data), | ||||||
| 						icon: data.user.avatarUrl | 						icon: data.user.avatarUrl | ||||||
| 					}; | 					}; | ||||||
|  |  | ||||||
| 				case 'quote': | 				case 'quote': | ||||||
| 					return { | 					return { | ||||||
| 						title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1], | 						title: '%i18n:common.notification.quoted-by%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split('{}')[1], | ||||||
| 						body: getNoteSummary(data), | 						body: getNoteSummary(data), | ||||||
| 						icon: data.user.avatarUrl | 						icon: data.user.avatarUrl | ||||||
| 					}; | 					}; | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								src/client/app/common/scripts/format-uptime.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,25 @@ | |||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Format like the uptime command | ||||||
|  |  */ | ||||||
|  | export default function(sec) { | ||||||
|  | 	if (!sec) return sec; | ||||||
|  |  | ||||||
|  | 	const day = Math.floor(sec / 86400); | ||||||
|  | 	const tod = sec % 86400; | ||||||
|  |  | ||||||
|  | 	// Days part in string: 2 days, 1 day, null | ||||||
|  | 	const d = day >= 2 ? `${day} days` : day >= 1 ? `${day} day` : null; | ||||||
|  |  | ||||||
|  | 	// Time part in string: 1 sec, 1 min, 1:01 | ||||||
|  | 	const t | ||||||
|  | 		= tod < 60 ? `${Math.floor(tod)} sec` | ||||||
|  | 		: tod < 3600 ? `${Math.floor(tod / 60)} min` | ||||||
|  | 		: `${Math.floor(tod / 60 / 60)}:${Math.floor((tod / 60) % 60).toString().padStart(2, '0')}`; | ||||||
|  |  | ||||||
|  | 	let str = ''; | ||||||
|  | 	if (d) str += `${d}, `; | ||||||
|  | 	str += t; | ||||||
|  |  | ||||||
|  | 	return str; | ||||||
|  | } | ||||||
| @@ -4,7 +4,7 @@ export default ($root: any) => { | |||||||
| 	require('fuckadblock'); | 	require('fuckadblock'); | ||||||
|  |  | ||||||
| 	function adBlockDetected() { | 	function adBlockDetected() { | ||||||
| 		$root.alert({ | 		$root.dialog({ | ||||||
| 			title: $root.$t('@.adblock.detected'), | 			title: $root.$t('@.adblock.detected'), | ||||||
| 			text: $root.$t('@.adblock.warning') | 			text: $root.$t('@.adblock.warning') | ||||||
| 		}); | 		}); | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ const faces = [ | |||||||
| 	'(=^・・^=)', | 	'(=^・・^=)', | ||||||
| 	'v(\'ω\')v', | 	'v(\'ω\')v', | ||||||
| 	'🐡( \'-\' 🐡 )フグパンチ!!!!', | 	'🐡( \'-\' 🐡 )フグパンチ!!!!', | ||||||
| 	'🖕(´・_・`)🖕', | 	'✌️(´・_・`)✌️', | ||||||
| 	'(。>﹏<。)', | 	'(。>﹏<。)', | ||||||
| 	'(Δ・x・Δ)' | 	'(Δ・x・Δ)' | ||||||
| ]; | ]; | ||||||
|   | |||||||
| @@ -3,8 +3,8 @@ | |||||||
|  |  | ||||||
| export default (data: ArrayBuffer) => { | export default (data: ArrayBuffer) => { | ||||||
| 	//const buf = new Buffer(data); | 	//const buf = new Buffer(data); | ||||||
| 	//const hash = crypto.createHash("md5"); | 	//const hash = crypto.createHash('md5'); | ||||||
| 	//hash.update(buf); | 	//hash.update(buf); | ||||||
| 	//return hash.digest("hex"); | 	//return hash.digest('hex'); | ||||||
| 	return ''; | 	return ''; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -1,11 +0,0 @@ | |||||||
| /** |  | ||||||
|  * 中央値を求めます |  | ||||||
|  * @param samples サンプル |  | ||||||
|  */ |  | ||||||
| export default function(samples) { |  | ||||||
| 	if (!samples.length) return 0; |  | ||||||
| 	const numbers = samples.slice(0).sort((a, b) => a - b); |  | ||||||
| 	const middle = Math.floor(numbers.length / 2); |  | ||||||
| 	const isEven = numbers.length % 2 === 0; |  | ||||||
| 	return isEven ? (numbers[middle] + numbers[middle - 1]) / 2 : numbers[middle]; |  | ||||||
| } |  | ||||||
| @@ -65,6 +65,10 @@ export default (opts: Opts = {}) => ({ | |||||||
| 			return this.isRenote ? this.note.renote : this.note; | 			return this.isRenote ? this.note.renote : this.note; | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
|  | 		isMyNote(): boolean { | ||||||
|  | 			return this.$store.getters.isSignedIn && (this.$store.state.i.id === this.appearNote.userId); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
| 		reactionsCount(): number { | 		reactionsCount(): number { | ||||||
| 			return this.appearNote.reactionCounts | 			return this.appearNote.reactionCounts | ||||||
| 				? sum(Object.values(this.appearNote.reactionCounts)) | 				? sum(Object.values(this.appearNote.reactionCounts)) | ||||||
| @@ -78,9 +82,10 @@ export default (opts: Opts = {}) => ({ | |||||||
| 		urls(): string[] { | 		urls(): string[] { | ||||||
| 			if (this.appearNote.text) { | 			if (this.appearNote.text) { | ||||||
| 				const ast = parse(this.appearNote.text); | 				const ast = parse(this.appearNote.text); | ||||||
|  | 				// TODO: 再帰的にURL要素がないか調べる | ||||||
| 				return unique(ast | 				return unique(ast | ||||||
| 					.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent) | 					.filter(t => ((t.node.type == 'url' || t.node.type == 'link') && t.node.props.url && !t.node.props.silent)) | ||||||
| 					.map(t => t.url)); | 					.map(t => t.node.props.url)); | ||||||
| 			} else { | 			} else { | ||||||
| 				return null; | 				return null; | ||||||
| 			} | 			} | ||||||
| @@ -124,9 +129,7 @@ export default (opts: Opts = {}) => ({ | |||||||
| 				source: this.$refs.reactButton, | 				source: this.$refs.reactButton, | ||||||
| 				note: this.appearNote, | 				note: this.appearNote, | ||||||
| 				showFocus: viaKeyboard, | 				showFocus: viaKeyboard, | ||||||
| 				animation: !viaKeyboard, | 				animation: !viaKeyboard | ||||||
| 				compact: opts.mobile, |  | ||||||
| 				big: opts.mobile |  | ||||||
| 			}).$once('closed', this.focus); | 			}).$once('closed', this.focus); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| @@ -137,11 +140,19 @@ export default (opts: Opts = {}) => ({ | |||||||
| 			}); | 			}); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
|  | 		undoReact(note) { | ||||||
|  | 			const oldReaction = note.myReaction; | ||||||
|  | 			if (!oldReaction) return; | ||||||
|  | 			this.$root.api('notes/reactions/delete', { | ||||||
|  | 				noteId: note.id | ||||||
|  | 			}); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
| 		favorite() { | 		favorite() { | ||||||
| 			this.$root.api('notes/favorites/create', { | 			this.$root.api('notes/favorites/create', { | ||||||
| 				noteId: this.appearNote.id | 				noteId: this.appearNote.id | ||||||
| 			}).then(() => { | 			}).then(() => { | ||||||
| 				this.$root.alert({ | 				this.$root.dialog({ | ||||||
| 					type: 'success', | 					type: 'success', | ||||||
| 					splash: true | 					splash: true | ||||||
| 				}); | 				}); | ||||||
| @@ -158,8 +169,7 @@ export default (opts: Opts = {}) => ({ | |||||||
| 			this.$root.new(MkNoteMenu, { | 			this.$root.new(MkNoteMenu, { | ||||||
| 				source: this.$refs.menuButton, | 				source: this.$refs.menuButton, | ||||||
| 				note: this.appearNote, | 				note: this.appearNote, | ||||||
| 				animation: !viaKeyboard, | 				animation: !viaKeyboard | ||||||
| 				compact: opts.mobile, |  | ||||||
| 			}).$once('closed', this.focus); | 			}).$once('closed', this.focus); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
|   | |||||||
| @@ -95,6 +95,7 @@ export default prop => ({ | |||||||
| 						Vue.set(this.$_ns_target.reactionCounts, reaction, 0); | 						Vue.set(this.$_ns_target.reactionCounts, reaction, 0); | ||||||
| 					} | 					} | ||||||
|  |  | ||||||
|  | 					// Increment the count | ||||||
| 					this.$_ns_target.reactionCounts[reaction]++; | 					this.$_ns_target.reactionCounts[reaction]++; | ||||||
|  |  | ||||||
| 					if (body.userId == this.$store.state.i.id) { | 					if (body.userId == this.$store.state.i.id) { | ||||||
| @@ -103,6 +104,26 @@ export default prop => ({ | |||||||
| 					break; | 					break; | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
|  | 				case 'unreacted': { | ||||||
|  | 					const reaction = body.reaction; | ||||||
|  |  | ||||||
|  | 					if (this.$_ns_target.reactionCounts == null) { | ||||||
|  | 						return; | ||||||
|  | 					} | ||||||
|  |  | ||||||
|  | 					if (this.$_ns_target.reactionCounts[reaction] == null) { | ||||||
|  | 						return; | ||||||
|  | 					} | ||||||
|  |  | ||||||
|  | 					// Decrement the count | ||||||
|  | 					if (this.$_ns_target.reactionCounts[reaction] > 0) this.$_ns_target.reactionCounts[reaction]--; | ||||||
|  |  | ||||||
|  | 					if (body.userId == this.$store.state.i.id) { | ||||||
|  | 						Vue.set(this.$_ns_target, 'myReaction', null); | ||||||
|  | 					} | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  |  | ||||||
| 				case 'pollVoted': { | 				case 'pollVoted': { | ||||||
| 					if (body.userId == this.$store.state.i.id) return; | 					if (body.userId == this.$store.state.i.id) return; | ||||||
| 					const choice = body.choice; | 					const choice = body.choice; | ||||||
|   | |||||||
| @@ -2,27 +2,17 @@ export default function(me, settings, note) { | |||||||
| 	const isMyNote = note.userId == me.id; | 	const isMyNote = note.userId == me.id; | ||||||
| 	const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null; | 	const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null; | ||||||
|  |  | ||||||
| 	if (settings.showMyRenotes === false) { | 	const includesMutedWords = (text: string) => | ||||||
| 		if (isMyNote && isPureRenote) { | 		text | ||||||
| 			return true; | 			? settings.mutedWords.some(q => q.length > 0 && !q.some(word => !text.includes(word))) | ||||||
| 		} | 			: false; | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (settings.showRenotedMyNotes === false) { | 	return ( | ||||||
| 		if (isPureRenote && (note.renote.userId == me.id)) { | 		(!isMyNote && note.reply && includesMutedWords(note.reply.text)) || | ||||||
| 			return true; | 		(!isMyNote && note.renote && includesMutedWords(note.renote.text)) || | ||||||
| 		} | 		(settings.showMyRenotes === false && isMyNote && isPureRenote) || | ||||||
| 	} | 		(settings.showRenotedMyNotes === false && isPureRenote && note.renote.userId == me.id) || | ||||||
|  | 		(settings.showLocalRenotes === false && isPureRenote && note.renote.user.host == null) || | ||||||
| 	if (settings.showLocalRenotes === false) { | 		(!isMyNote && includesMutedWords(note.text)) | ||||||
| 		if (isPureRenote && (note.renote.user.host == null)) { | 	); | ||||||
| 			return true; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (!isMyNote && note.text && settings.mutedWords.some(q => !q.some(word => !note.text.includes(word)))) { |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return false; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -75,12 +75,10 @@ export default class Stream extends EventEmitter { | |||||||
|  |  | ||||||
| 		// チャンネル再接続 | 		// チャンネル再接続 | ||||||
| 		if (isReconnect) { | 		if (isReconnect) { | ||||||
| 			this.sharedConnectionPools.forEach(p => { | 			for (const p of this.sharedConnectionPools) | ||||||
| 				p.connect(); | 				p.connect(); | ||||||
| 			}); | 			for (const c of this.nonSharedConnections) | ||||||
| 			this.nonSharedConnections.forEach(c => { |  | ||||||
| 				c.connect(); | 				c.connect(); | ||||||
| 			}); |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -113,9 +111,9 @@ export default class Stream extends EventEmitter { | |||||||
| 				connections = [this.nonSharedConnections.find(c => c.id === id)]; | 				connections = [this.nonSharedConnections.find(c => c.id === id)]; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			connections.filter(c => c != null).forEach(c => { | 			for (const c of connections.filter(c => c != null)) { | ||||||
| 				c.emit(body.type, body.body); | 				c.emit(body.type, body.body); | ||||||
| 			}); | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			this.emit(type, body); | 			this.emit(type, body); | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ | |||||||
| <span class="mk-acct"> | <span class="mk-acct"> | ||||||
| 	<span class="name">@{{ user.username }}</span> | 	<span class="name">@{{ user.username }}</span> | ||||||
| 	<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span> | 	<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span> | ||||||
|  | 	<fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/> | ||||||
| </span> | </span> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| @@ -23,4 +24,8 @@ export default Vue.extend({ | |||||||
| .mk-acct | .mk-acct | ||||||
| 	> .host.fade | 	> .host.fade | ||||||
| 		opacity 0.5 | 		opacity 0.5 | ||||||
|  |  | ||||||
|  | 	> .locked | ||||||
|  | 		opacity 0.8 | ||||||
|  | 		margin-left 0.5em | ||||||
| </style> | </style> | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ | |||||||
|  |  | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
| import { themeColor } from '../../../config'; | import * as tinycolor from 'tinycolor2'; | ||||||
|  |  | ||||||
| export default Vue.extend({ | export default Vue.extend({ | ||||||
| 	props: { | 	props: { | ||||||
| @@ -75,7 +75,7 @@ export default Vue.extend({ | |||||||
| 			return this.dark ? '#fff' : '#777'; | 			return this.dark ? '#fff' : '#777'; | ||||||
| 		}, | 		}, | ||||||
| 		hHandColor(): string { | 		hHandColor(): string { | ||||||
| 			return themeColor; | 			return tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--primary')).toHexString(); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		ms(): number { | 		ms(): number { | ||||||
|   | |||||||
| @@ -50,10 +50,13 @@ export default Vue.extend({ | |||||||
|  |  | ||||||
| 	methods: { | 	methods: { | ||||||
| 		regenerateToken() { | 		regenerateToken() { | ||||||
| 			this.$input({ | 			this.$root.dialog({ | ||||||
| 				title: this.$t('enter-password'), | 				title: this.$t('enter-password'), | ||||||
|  | 				input: { | ||||||
| 					type: 'password' | 					type: 'password' | ||||||
| 			}).then(password => { | 				} | ||||||
|  | 			}).then(({ canceled, result: password }) => { | ||||||
|  | 				if (canceled) return; | ||||||
| 				this.$root.api('i/regenerate_token', { | 				this.$root.api('i/regenerate_token', { | ||||||
| 					password: password | 					password: password | ||||||
| 				}); | 				}); | ||||||
|   | |||||||
| @@ -3,7 +3,9 @@ | |||||||
| 	<ol class="users" ref="suggests" v-if="users.length > 0"> | 	<ol class="users" ref="suggests" v-if="users.length > 0"> | ||||||
| 		<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1"> | 		<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1"> | ||||||
| 			<img class="avatar" :src="user.avatarUrl" alt=""/> | 			<img class="avatar" :src="user.avatarUrl" alt=""/> | ||||||
| 			<span class="name">{{ user | userName }}</span> | 			<span class="name"> | ||||||
|  | 				<mk-user-name :user="user"/> | ||||||
|  | 			</span> | ||||||
| 			<span class="username">@{{ user | acct }}</span> | 			<span class="username">@{{ user | acct }}</span> | ||||||
| 		</li> | 		</li> | ||||||
| 	</ol> | 	</ol> | ||||||
| @@ -42,8 +44,9 @@ const lib = Object.entries(emojilib.lib).filter((x: any) => { | |||||||
| }); | }); | ||||||
|  |  | ||||||
| const char2file = (char: string) => { | const char2file = (char: string) => { | ||||||
| 	let codes = [...char].map(x => x.codePointAt(0).toString(16)); | 	let codes = Array.from(char).map(x => x.codePointAt(0).toString(16)); | ||||||
| 	if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f'); | 	if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f'); | ||||||
|  | 	codes = codes.filter(x => x && x.length); | ||||||
| 	return codes.join('-'); | 	return codes.join('-'); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -54,18 +57,18 @@ const emjdb: EmojiDef[] = lib.map((x: any) => ({ | |||||||
| 	url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg` | 	url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg` | ||||||
| })); | })); | ||||||
|  |  | ||||||
| lib.forEach((x: any) => { | for (const x of lib as any) { | ||||||
| 	if (x[1].keywords) { | 	if (x[1].keywords) { | ||||||
| 		x[1].keywords.forEach(k => { | 		for (const k of x[1].keywords) { | ||||||
| 			emjdb.push({ | 			emjdb.push({ | ||||||
| 				emoji: x[1].char, | 				emoji: x[1].char, | ||||||
| 				name: k, | 				name: k, | ||||||
| 				aliasOf: x[0], | 				aliasOf: x[0], | ||||||
| 				url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg` | 				url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg` | ||||||
| 			}); | 			}); | ||||||
| 		}); |  | ||||||
| 		} | 		} | ||||||
| }); | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
| emjdb.sort((a, b) => a.name.length - b.name.length); | emjdb.sort((a, b) => a.name.length - b.name.length); | ||||||
|  |  | ||||||
| @@ -117,7 +120,7 @@ export default Vue.extend({ | |||||||
| 		const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || []; | 		const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || []; | ||||||
| 		const emojiDefinitions: EmojiDef[] = []; | 		const emojiDefinitions: EmojiDef[] = []; | ||||||
|  |  | ||||||
| 		customEmojis.forEach(x => { | 		for (const x of customEmojis) { | ||||||
| 			emojiDefinitions.push({ | 			emojiDefinitions.push({ | ||||||
| 				name: x.name, | 				name: x.name, | ||||||
| 				emoji: `:${x.name}:`, | 				emoji: `:${x.name}:`, | ||||||
| @@ -126,7 +129,7 @@ export default Vue.extend({ | |||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
| 			if (x.aliases) { | 			if (x.aliases) { | ||||||
| 				x.aliases.forEach(alias => { | 				for (const alias of x.aliases) { | ||||||
| 					emojiDefinitions.push({ | 					emojiDefinitions.push({ | ||||||
| 						name: alias, | 						name: alias, | ||||||
| 						aliasOf: x.name, | 						aliasOf: x.name, | ||||||
| @@ -134,9 +137,9 @@ export default Vue.extend({ | |||||||
| 						url: x.url, | 						url: x.url, | ||||||
| 						isCustomEmoji: true | 						isCustomEmoji: true | ||||||
| 					}); | 					}); | ||||||
| 				}); |  | ||||||
| 				} | 				} | ||||||
| 		}); | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		emojiDefinitions.sort((a, b) => a.name.length - b.name.length); | 		emojiDefinitions.sort((a, b) => a.name.length - b.name.length); | ||||||
|  |  | ||||||
| @@ -145,9 +148,9 @@ export default Vue.extend({ | |||||||
|  |  | ||||||
| 		this.textarea.addEventListener('keydown', this.onKeydown); | 		this.textarea.addEventListener('keydown', this.onKeydown); | ||||||
|  |  | ||||||
| 		Array.from(document.querySelectorAll('body *')).forEach(el => { | 		for (const el of Array.from(document.querySelectorAll('body *'))) { | ||||||
| 			el.addEventListener('mousedown', this.onMousedown); | 			el.addEventListener('mousedown', this.onMousedown); | ||||||
| 		}); | 		} | ||||||
|  |  | ||||||
| 		this.$nextTick(() => { | 		this.$nextTick(() => { | ||||||
| 			this.exec(); | 			this.exec(); | ||||||
| @@ -163,18 +166,18 @@ export default Vue.extend({ | |||||||
| 	beforeDestroy() { | 	beforeDestroy() { | ||||||
| 		this.textarea.removeEventListener('keydown', this.onKeydown); | 		this.textarea.removeEventListener('keydown', this.onKeydown); | ||||||
|  |  | ||||||
| 		Array.from(document.querySelectorAll('body *')).forEach(el => { | 		for (const el of Array.from(document.querySelectorAll('body *'))) { | ||||||
| 			el.removeEventListener('mousedown', this.onMousedown); | 			el.removeEventListener('mousedown', this.onMousedown); | ||||||
| 		}); | 		} | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
| 	methods: { | 	methods: { | ||||||
| 		exec() { | 		exec() { | ||||||
| 			this.select = -1; | 			this.select = -1; | ||||||
| 			if (this.$refs.suggests) { | 			if (this.$refs.suggests) { | ||||||
| 				Array.from(this.items).forEach(el => { | 				for (const el of Array.from(this.items)) { | ||||||
| 					el.removeAttribute('data-selected'); | 					el.removeAttribute('data-selected'); | ||||||
| 				}); | 				} | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			if (this.type == 'user') { | 			if (this.type == 'user') { | ||||||
| @@ -187,7 +190,8 @@ export default Vue.extend({ | |||||||
| 				} else { | 				} else { | ||||||
| 					this.$root.api('users/search', { | 					this.$root.api('users/search', { | ||||||
| 						query: this.q, | 						query: this.q, | ||||||
| 						limit: 30 | 						limit: 10, | ||||||
|  | 						detail: false | ||||||
| 					}).then(users => { | 					}).then(users => { | ||||||
| 						this.users = users; | 						this.users = users; | ||||||
| 						this.fetching = false; | 						this.fetching = false; | ||||||
| @@ -312,9 +316,9 @@ export default Vue.extend({ | |||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		applySelect() { | 		applySelect() { | ||||||
| 			Array.from(this.items).forEach(el => { | 			for (const el of Array.from(this.items)) { | ||||||
| 				el.removeAttribute('data-selected'); | 				el.removeAttribute('data-selected'); | ||||||
| 			}); | 			} | ||||||
|  |  | ||||||
| 			this.items[this.select].setAttribute('data-selected', 'true'); | 			this.items[this.select].setAttribute('data-selected', 'true'); | ||||||
| 			(this.items[this.select] as any).focus(); | 			(this.items[this.select] as any).focus(); | ||||||
|   | |||||||
| @@ -1,21 +1,43 @@ | |||||||
| <template> | <template> | ||||||
| <button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle">{{ value ? this.$t('hide') : this.$t('show') }}</button> | <button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle"> | ||||||
|  | 	<b>{{ value ? this.$t('hide') : this.$t('show') }}</b> | ||||||
|  | 	<span v-if="!value">{{ this.label }}</span> | ||||||
|  | </button> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
| import i18n from '../../../i18n'; | import i18n from '../../../i18n'; | ||||||
|  | import { length } from 'stringz'; | ||||||
|  | import { concat } from '../../../../../prelude/array'; | ||||||
|  |  | ||||||
| export default Vue.extend({ | export default Vue.extend({ | ||||||
| 	i18n: i18n('common/views/components/cw-button.vue'), | 	i18n: i18n('common/views/components/cw-button.vue'), | ||||||
|  |  | ||||||
| 	props: { | 	props: { | ||||||
| 		value: { | 		value: { | ||||||
| 			type: Boolean, | 			type: Boolean, | ||||||
| 			required: true | 			required: true | ||||||
|  | 		}, | ||||||
|  | 		note: { | ||||||
|  | 			type: Object, | ||||||
|  | 			required: true | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	computed: { | ||||||
|  | 		label(): string { | ||||||
|  | 			return concat([ | ||||||
|  | 				this.note.text ? [this.$t('chars', { count: length(this.note.text) })] : [], | ||||||
|  | 				this.note.files && this.note.files.length !== 0 ? [this.$t('files', { count: this.note.files.length }) ] : [], | ||||||
|  | 				this.note.poll != null ? [this.$t('poll')] : [] | ||||||
|  | 			] as string[][]).join(' / '); | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
| 	methods: { | 	methods: { | ||||||
|  | 		length, | ||||||
|  |  | ||||||
| 		toggle() { | 		toggle() { | ||||||
| 			this.$emit('input', !this.value); | 			this.$emit('input', !this.value); | ||||||
| 		} | 		} | ||||||
| @@ -37,4 +59,12 @@ export default Vue.extend({ | |||||||
| 	&:hover | 	&:hover | ||||||
| 		background var(--cwButtonHoverBg) | 		background var(--cwButtonHoverBg) | ||||||
|  |  | ||||||
|  | 	> span | ||||||
|  | 		margin-left 4px | ||||||
|  |  | ||||||
|  | 		&:before | ||||||
|  | 			content '(' | ||||||
|  | 		&:after | ||||||
|  | 			content ')' | ||||||
|  |  | ||||||
| </style> | </style> | ||||||
|   | |||||||
| @@ -2,12 +2,17 @@ | |||||||
| <div class="felqjxyj" :class="{ splash }"> | <div class="felqjxyj" :class="{ splash }"> | ||||||
| 	<div class="bg" ref="bg" @click="onBgClick"></div> | 	<div class="bg" ref="bg" @click="onBgClick"></div> | ||||||
| 	<div class="main" ref="main"> | 	<div class="main" ref="main"> | ||||||
| 		<div class="icon" :class="type"><fa :icon="icon"/></div> | 		<div class="icon" v-if="!input && !select && !user" :class="type"><fa :icon="icon"/></div> | ||||||
| 		<header v-if="title" v-html="title"></header> | 		<header v-if="title" v-html="title"></header> | ||||||
| 		<div class="body" v-if="text" v-html="text"></div> | 		<div class="body" v-if="text" v-html="text"></div> | ||||||
|  | 		<ui-input v-if="input" v-model="inputValue" autofocus :type="input.type || 'text'" :placeholder="input.placeholder" @keydown="onInputKeydown"></ui-input> | ||||||
|  | 		<ui-input v-if="user" v-model="userInputValue" autofocus @keydown="onInputKeydown"><span slot="prefix">@</span></ui-input> | ||||||
|  | 		<ui-select v-if="select" v-model="selectedValue"> | ||||||
|  | 			<option v-for="item in select.items" :value="item.value">{{ item.text }}</option> | ||||||
|  | 		</ui-select> | ||||||
| 		<ui-horizon-group no-grow class="buttons fit-bottom" v-if="!splash"> | 		<ui-horizon-group no-grow class="buttons fit-bottom" v-if="!splash"> | ||||||
| 			<ui-button @click="ok" primary autofocus>OK</ui-button> | 			<ui-button @click="ok" primary :autofocus="!input && !select && !user">OK</ui-button> | ||||||
| 			<ui-button @click="cancel" v-if="showCancelButton">Cancel</ui-button> | 			<ui-button @click="cancel" v-if="showCancelButton || input || select || user">Cancel</ui-button> | ||||||
| 		</ui-horizon-group> | 		</ui-horizon-group> | ||||||
| 	</div> | 	</div> | ||||||
| </div> | </div> | ||||||
| @@ -17,6 +22,7 @@ | |||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
| import * as anime from 'animejs'; | import * as anime from 'animejs'; | ||||||
| import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons'; | import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons'; | ||||||
|  | import parseAcct from "../../../../../misc/acct/parse"; | ||||||
| 
 | 
 | ||||||
| export default Vue.extend({ | export default Vue.extend({ | ||||||
| 	props: { | 	props: { | ||||||
| @@ -33,6 +39,15 @@ export default Vue.extend({ | |||||||
| 			type: String, | 			type: String, | ||||||
| 			required: false | 			required: false | ||||||
| 		}, | 		}, | ||||||
|  | 		input: { | ||||||
|  | 			required: false | ||||||
|  | 		}, | ||||||
|  | 		select: { | ||||||
|  | 			required: false | ||||||
|  | 		}, | ||||||
|  | 		user: { | ||||||
|  | 			required: false | ||||||
|  | 		}, | ||||||
| 		showCancelButton: { | 		showCancelButton: { | ||||||
| 			type: Boolean, | 			type: Boolean, | ||||||
| 			default: false | 			default: false | ||||||
| @@ -43,6 +58,14 @@ export default Vue.extend({ | |||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
|  | 	data() { | ||||||
|  | 		return { | ||||||
|  | 			inputValue: this.input && this.input.default ? this.input.default : null, | ||||||
|  | 			userInputValue: null, | ||||||
|  | 			selectedValue: null | ||||||
|  | 		}; | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
| 	computed: { | 	computed: { | ||||||
| 		icon(): any { | 		icon(): any { | ||||||
| 			switch (this.type) { | 			switch (this.type) { | ||||||
| @@ -82,9 +105,21 @@ export default Vue.extend({ | |||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	methods: { | 	methods: { | ||||||
| 		ok() { | 		async ok() { | ||||||
| 			this.$emit('ok'); | 			if (this.user) { | ||||||
|  | 				const user = await this.$root.api('users/show', parseAcct(this.userInputValue)); | ||||||
|  | 				if (user) { | ||||||
|  | 					this.$emit('ok', user); | ||||||
| 					this.close(); | 					this.close(); | ||||||
|  | 				} | ||||||
|  | 			} else { | ||||||
|  | 				const result = | ||||||
|  | 					this.input ? this.inputValue : | ||||||
|  | 					this.select ? this.selectedValue : | ||||||
|  | 					true; | ||||||
|  | 				this.$emit('ok', result); | ||||||
|  | 				this.close(); | ||||||
|  | 			} | ||||||
| 		}, | 		}, | ||||||
| 
 | 
 | ||||||
| 		cancel() { | 		cancel() { | ||||||
| @@ -114,6 +149,14 @@ export default Vue.extend({ | |||||||
| 
 | 
 | ||||||
| 		onBgClick() { | 		onBgClick() { | ||||||
| 			this.cancel(); | 			this.cancel(); | ||||||
|  | 		}, | ||||||
|  | 
 | ||||||
|  | 		onInputKeydown(e) { | ||||||
|  | 			if (e.which == 13) { // Enter | ||||||
|  | 				e.preventDefault(); | ||||||
|  | 				e.stopPropagation(); | ||||||
|  | 				this.ok(); | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
| @@ -180,8 +223,11 @@ export default Vue.extend({ | |||||||
| 				display block | 				display block | ||||||
| 				margin 0 auto | 				margin 0 auto | ||||||
| 
 | 
 | ||||||
|  | 			& + header | ||||||
|  | 				margin-top 16px | ||||||
|  | 
 | ||||||
| 		> header | 		> header | ||||||
| 			margin 16px 0 8px 0 | 			margin 0 0 8px 0 | ||||||
| 			font-weight bold | 			font-weight bold | ||||||
| 			font-size 20px | 			font-size 20px | ||||||
| 
 | 
 | ||||||
| @@ -1,64 +0,0 @@ | |||||||
| <template> |  | ||||||
| <div class="mk-discord-setting"> |  | ||||||
| 	<p>{{ $t('description') }}</p> |  | ||||||
| 	<p class="account" v-if="$store.state.i.discord" :title="`Discord ID: ${$store.state.i.discord.id}`">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p> |  | ||||||
| 	<p> |  | ||||||
| 		<a :href="`${apiUrl}/connect/discord`" target="_blank" @click.prevent="connect">{{ $store.state.i.discord ? this.$t('reconnect') : this.$t('connect') }}</a> |  | ||||||
| 		<span v-if="$store.state.i.discord"> or </span> |  | ||||||
| 		<a :href="`${apiUrl}/disconnect/discord`" target="_blank" v-if="$store.state.i.discord" @click.prevent="disconnect">{{ $t('disconnect') }}</a> |  | ||||||
| 	</p> |  | ||||||
| 	<p class="id" v-if="$store.state.i.discord">Discord ID: {{ $store.state.i.discord.id }}</p> |  | ||||||
| </div> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <script lang="ts"> |  | ||||||
| import Vue from 'vue'; |  | ||||||
| import i18n from '../../../i18n'; |  | ||||||
| import { apiUrl } from '../../../config'; |  | ||||||
|  |  | ||||||
| export default Vue.extend({ |  | ||||||
| 	i18n: i18n('common/views/components/discord-setting.vue'), |  | ||||||
| 	data() { |  | ||||||
| 		return { |  | ||||||
| 			form: null, |  | ||||||
| 			apiUrl |  | ||||||
| 		}; |  | ||||||
| 	}, |  | ||||||
| 	mounted() { |  | ||||||
| 		this.$watch('$store.state.i', () => { |  | ||||||
| 			if (this.$store.state.i.discord && this.form) |  | ||||||
| 				this.form.close(); |  | ||||||
| 		}, { |  | ||||||
| 			deep: true |  | ||||||
| 		}); |  | ||||||
| 	}, |  | ||||||
| 	methods: { |  | ||||||
| 		connect() { |  | ||||||
| 			this.form = window.open(apiUrl + '/connect/discord', |  | ||||||
| 				'discord_connect_window', |  | ||||||
| 				'height=570, width=520'); |  | ||||||
| 		}, |  | ||||||
|  |  | ||||||
| 		disconnect() { |  | ||||||
| 			window.open(apiUrl + '/disconnect/discord', |  | ||||||
| 				'discord_disconnect_window', |  | ||||||
| 				'height=570, width=520'); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| }); |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <style lang="stylus" scoped> |  | ||||||
| .mk-discord-setting |  | ||||||
| 	.account |  | ||||||
| 		border solid 1px #e1e8ed |  | ||||||
| 		border-radius 4px |  | ||||||
| 		padding 16px |  | ||||||
|  |  | ||||||
| 		a |  | ||||||
| 			font-weight bold |  | ||||||
| 			color inherit |  | ||||||
|  |  | ||||||
| 	.id |  | ||||||
| 		color #8899a6 |  | ||||||
| </style> |  | ||||||
| @@ -114,11 +114,11 @@ export default Vue.extend({ | |||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		onScroll(e) { | 		onScroll(e) { | ||||||
| 			const section = this.categories.forEach(x => { | 			for (const x of this.categories) { | ||||||
| 				const top = e.target.scrollTop; | 				const top = e.target.scrollTop; | ||||||
| 				const el = this.$refs[x.ref][0]; | 				const el = this.$refs[x.ref][0]; | ||||||
| 				x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top; | 				x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top; | ||||||
| 			}); | 			} | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		chosen(emoji) { | 		chosen(emoji) { | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| <template> | <template> | ||||||
| <img v-if="customEmoji" class="fvgwvorwhxigeolkkrcderjzcawqrscl custom" :src="url" :alt="alt" :title="alt"/> | <img v-if="customEmoji" class="fvgwvorwhxigeolkkrcderjzcawqrscl custom" :class="{ normal: normal }" :src="url" :alt="alt" :title="alt"/> | ||||||
| <img v-else-if="char && !useOsDefaultEmojis" class="fvgwvorwhxigeolkkrcderjzcawqrscl" :src="url" :alt="alt" :title="alt"/> | <img v-else-if="char && !useOsDefaultEmojis" class="fvgwvorwhxigeolkkrcderjzcawqrscl" :src="url" :alt="alt" :title="alt"/> | ||||||
| <span v-else-if="char && useOsDefaultEmojis">{{ char }}</span> | <span v-else-if="char && useOsDefaultEmojis">{{ char }}</span> | ||||||
| <span v-else>:{{ name }}:</span> | <span v-else>:{{ name }}:</span> | ||||||
| @@ -20,6 +20,11 @@ export default Vue.extend({ | |||||||
| 			type: String, | 			type: String, | ||||||
| 			required: false | 			required: false | ||||||
| 		}, | 		}, | ||||||
|  | 		normal: { | ||||||
|  | 			type: Boolean, | ||||||
|  | 			required: false, | ||||||
|  | 			default: false | ||||||
|  | 		}, | ||||||
| 		customEmojis: { | 		customEmojis: { | ||||||
| 			required: false, | 			required: false, | ||||||
| 			default: () => [] | 			default: () => [] | ||||||
| @@ -61,8 +66,9 @@ export default Vue.extend({ | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if (this.char) { | 		if (this.char) { | ||||||
| 			let codes = [...this.char].map(x => x.codePointAt(0).toString(16)); | 			let codes = Array.from(this.char).map(x => x.codePointAt(0).toString(16)); | ||||||
| 			if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f'); | 			if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f'); | ||||||
|  | 			codes = codes.filter(x => x && x.length); | ||||||
|  |  | ||||||
| 			this.url = `https://twemoji.maxcdn.com/2/svg/${codes.join('-')}.svg`; | 			this.url = `https://twemoji.maxcdn.com/2/svg/${codes.join('-')}.svg`; | ||||||
| 		} | 		} | ||||||
| @@ -83,4 +89,11 @@ export default Vue.extend({ | |||||||
| 		&:hover | 		&:hover | ||||||
| 			transform scale(1.2) | 			transform scale(1.2) | ||||||
|  |  | ||||||
|  | 		&.normal | ||||||
|  | 			height 1.25em | ||||||
|  | 			vertical-align -0.25em | ||||||
|  |  | ||||||
|  | 			&:hover | ||||||
|  | 				transform none | ||||||
|  |  | ||||||
| </style> | </style> | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ export default Vue.extend({ | |||||||
| 		iconAndText(): any[] { | 		iconAndText(): any[] { | ||||||
| 			return ( | 			return ( | ||||||
| 				(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] : | 				(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] : | ||||||
| 				(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['hourglass-start', this.$t('follow-processing')] : | 				(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['spinner', this.$t('follow-processing')] : | ||||||
| 				(this.isFollowing) ? ['minus', this.$t('following')] : | 				(this.isFollowing) ? ['minus', this.$t('following')] : | ||||||
| 				(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] : | 				(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] : | ||||||
| 				(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] : | 				(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] : | ||||||
|   | |||||||
| @@ -15,7 +15,9 @@ export default Vue.extend({ | |||||||
| 	}, | 	}, | ||||||
| 	computed: { | 	computed: { | ||||||
| 		compiledFormula(): any { | 		compiledFormula(): any { | ||||||
| 			return katex.renderToString(this.formula); | 			return katex.renderToString(this.formula, { | ||||||
|  | 				throwOnError: false | ||||||
|  | 			} as any); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| <template> | <template> | ||||||
| <div class="xqnhankfuuilcwvhgsopeqncafzsquya"> | <div class="xqnhankfuuilcwvhgsopeqncafzsquya"> | ||||||
| 	<button class="go-index" v-if="selfNav" @click="goIndex"><fa icon="arrow-left"/></button> | 	<button class="go-index" v-if="selfNav" @click="goIndex"><fa icon="arrow-left"/></button> | ||||||
| 	<header><b><router-link :to="blackUser | userPage">{{ blackUser | userName }}</router-link></b>({{ $t('@.reversi.black') }}) vs <b><router-link :to="whiteUser | userPage">{{ whiteUser | userName }}</router-link></b>({{ $t('@.reversi.white') }})</header> | 	<header><b><router-link :to="blackUser | userPage"><mk-user-name :user="blackUser"/></router-link></b>({{ $t('@.reversi.black') }}) vs <b><router-link :to="whiteUser | userPage"><mk-user-name :user="whiteUser"/></router-link></b>({{ $t('@.reversi.white') }})</header> | ||||||
|  |  | ||||||
| 	<div style="overflow: hidden; line-height: 28px;"> | 	<div style="overflow: hidden; line-height: 28px;"> | ||||||
| 		<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ $t('@.reversi.turn-of', { name: $options.filters.userName(turnUser) }) }}<mk-ellipsis/></p> | 		<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ $t('@.reversi.turn-of', { name: $options.filters.userName(turnUser) }) }}<mk-ellipsis/></p> | ||||||
| @@ -10,7 +10,7 @@ | |||||||
| 		<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">{{ $t('@.reversi.my-turn') }}</p> | 		<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">{{ $t('@.reversi.my-turn') }}</p> | ||||||
| 		<p class="result" v-if="game.isEnded && logPos == logs.length"> | 		<p class="result" v-if="game.isEnded && logPos == logs.length"> | ||||||
| 			<template v-if="game.winner"> | 			<template v-if="game.winner"> | ||||||
| 				<span>{{ $t('@.reversi.won', { name: $options.filters.userName(game.winner) }) }}</span> | 				<misskey-flavored-markdown :text="$t('@.reversi.won', { name: $options.filters.userName(game.winner) })" :shouldBreak="false" :plainText="true" :custom-emojis="game.winner.emojis"/> | ||||||
| 				<span v-if="game.surrendered != null"> ({{ $t('surrendered') }})</span> | 				<span v-if="game.surrendered != null"> ({{ $t('surrendered') }})</span> | ||||||
| 			</template> | 			</template> | ||||||
| 			<template v-else>{{ $t('@.reversi.drawn') }}</template> | 			<template v-else>{{ $t('@.reversi.drawn') }}</template> | ||||||
| @@ -30,8 +30,14 @@ | |||||||
| 						:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }" | 						:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }" | ||||||
| 						@click="set(i)" | 						@click="set(i)" | ||||||
| 						:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`"> | 						:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`"> | ||||||
| 					<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }"> | 					<template v-if="$store.state.settings.games.reversi.useAvatarStones"> | ||||||
| 					<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }"> | 						<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black"> | ||||||
|  | 						<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white"> | ||||||
|  | 					</template> | ||||||
|  | 					<template v-else> | ||||||
|  | 						<fa v-if="stone === true" :icon="fasCircle"/> | ||||||
|  | 						<fa v-if="stone === false" :icon="farCircle"/> | ||||||
|  | 					</template> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 			<div class="labels-y" v-if="this.$store.state.settings.games.reversi.showBoardLabels"> | 			<div class="labels-y" v-if="this.$store.state.settings.games.reversi.showBoardLabels"> | ||||||
| @@ -50,15 +56,13 @@ | |||||||
| 	</div> | 	</div> | ||||||
|  |  | ||||||
| 	<div class="player" v-if="game.isEnded"> | 	<div class="player" v-if="game.isEnded"> | ||||||
| 		<div> |  | ||||||
| 			<button @click="logPos = 0" :disabled="logPos == 0"><fa icon="angle-double-left"/></button> |  | ||||||
| 			<button @click="logPos--" :disabled="logPos == 0"><fa icon="angle-left"/></button> |  | ||||||
| 		</div> |  | ||||||
| 		<span>{{ logPos }} / {{ logs.length }}</span> | 		<span>{{ logPos }} / {{ logs.length }}</span> | ||||||
| 		<div> | 		<ui-horizon-group> | ||||||
| 			<button @click="logPos++" :disabled="logPos == logs.length"><fa icon="angle-right"/></button> | 			<ui-button @click="logPos = 0" :disabled="logPos == 0"><fa :icon="faAngleDoubleLeft"/></ui-button> | ||||||
| 			<button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa icon="angle-double-right"/></button> | 			<ui-button @click="logPos--" :disabled="logPos == 0"><fa :icon="faAngleLeft"/></ui-button> | ||||||
| 		</div> | 			<ui-button @click="logPos++" :disabled="logPos == logs.length"><fa :icon="faAngleRight"/></ui-button> | ||||||
|  | 			<ui-button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa :icon="faAngleDoubleRight"/></ui-button> | ||||||
|  | 		</ui-horizon-group> | ||||||
| 	</div> | 	</div> | ||||||
|  |  | ||||||
| 	<div class="info"> | 	<div class="info"> | ||||||
| @@ -75,6 +79,9 @@ import i18n from '../../../../../i18n'; | |||||||
| import * as CRC32 from 'crc-32'; | import * as CRC32 from 'crc-32'; | ||||||
| import Reversi, { Color } from '../../../../../../../games/reversi/core'; | import Reversi, { Color } from '../../../../../../../games/reversi/core'; | ||||||
| import { url } from '../../../../../config'; | import { url } from '../../../../../config'; | ||||||
|  | import { faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons'; | ||||||
|  |  | ||||||
| export default Vue.extend({ | export default Vue.extend({ | ||||||
| 	i18n: i18n('common/views/components/games/reversi/reversi.game.vue'), | 	i18n: i18n('common/views/components/games/reversi/reversi.game.vue'), | ||||||
| @@ -99,7 +106,8 @@ export default Vue.extend({ | |||||||
| 			o: null as Reversi, | 			o: null as Reversi, | ||||||
| 			logs: [], | 			logs: [], | ||||||
| 			logPos: 0, | 			logPos: 0, | ||||||
| 			pollingClock: null | 			pollingClock: null, | ||||||
|  | 			faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight, fasCircle, farCircle | ||||||
| 		}; | 		}; | ||||||
| 	}, | 	}, | ||||||
|  |  | ||||||
| @@ -177,9 +185,9 @@ export default Vue.extend({ | |||||||
| 			loopedBoard: this.game.settings.loopedBoard | 			loopedBoard: this.game.settings.loopedBoard | ||||||
| 		}); | 		}); | ||||||
|  |  | ||||||
| 		this.game.logs.forEach(log => { | 		for (const log of this.game.logs) { | ||||||
| 			this.o.put(log.color, log.pos); | 			this.o.put(log.color, log.pos); | ||||||
| 		}); | 		} | ||||||
|  |  | ||||||
| 		this.logs = this.game.logs; | 		this.logs = this.game.logs; | ||||||
| 		this.logPos = this.logs.length; | 		this.logPos = this.logs.length; | ||||||
| @@ -279,9 +287,9 @@ export default Vue.extend({ | |||||||
| 				loopedBoard: this.game.settings.loopedBoard | 				loopedBoard: this.game.settings.loopedBoard | ||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
| 			this.game.logs.forEach(log => { | 			for (const log of this.game.logs) { | ||||||
| 				this.o.put(log.color, log.pos, true); | 				this.o.put(log.color, log.pos, true); | ||||||
| 			}); | 			} | ||||||
|  |  | ||||||
| 			this.logs = this.game.logs; | 			this.logs = this.game.logs; | ||||||
| 			this.logPos = this.logs.length; | 			this.logPos = this.logs.length; | ||||||
| @@ -412,17 +420,15 @@ export default Vue.extend({ | |||||||
| 					&.none | 					&.none | ||||||
| 						border-color transparent !important | 						border-color transparent !important | ||||||
|  |  | ||||||
| 					> img | 					> svg | ||||||
| 						display block | 						display block | ||||||
| 						width 100% | 						width 100% | ||||||
| 						height 100% | 						height 100% | ||||||
|  |  | ||||||
| 						&.contrast | 					> img | ||||||
| 							&[alt="black"] | 						display block | ||||||
| 								filter brightness(.5) | 						width 100% | ||||||
|  | 						height 100% | ||||||
| 							&[alt="white"] |  | ||||||
| 								filter brightness(2) |  | ||||||
|  |  | ||||||
| 	> .graph | 	> .graph | ||||||
| 		display grid | 		display grid | ||||||
| @@ -449,7 +455,9 @@ export default Vue.extend({ | |||||||
| 		padding-bottom 16px | 		padding-bottom 16px | ||||||
|  |  | ||||||
| 	> .player | 	> .player | ||||||
| 		padding-bottom 32px | 		padding 0 16px 32px 16px | ||||||
|  | 		margin 0 auto | ||||||
|  | 		max-width 500px | ||||||
|  |  | ||||||
| 		> span | 		> span | ||||||
| 			display inline-block | 			display inline-block | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ | |||||||
| 		<h2>{{ $t('invitations') }}</h2> | 		<h2>{{ $t('invitations') }}</h2> | ||||||
| 		<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)"> | 		<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)"> | ||||||
| 			<mk-avatar class="avatar" :user="i.parent"/> | 			<mk-avatar class="avatar" :user="i.parent"/> | ||||||
| 			<span class="name"><b>{{ i.parent | userName }}</b></span> | 			<span class="name"><b><mk-user-name :user="i.parent"/></b></span> | ||||||
| 			<span class="username">@{{ i.parent.username }}</span> | 			<span class="username">@{{ i.parent.username }}</span> | ||||||
| 			<mk-time :time="i.createdAt"/> | 			<mk-time :time="i.createdAt"/> | ||||||
| 		</div> | 		</div> | ||||||
| @@ -29,7 +29,7 @@ | |||||||
| 		<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`"> | 		<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`"> | ||||||
| 			<mk-avatar class="avatar" :user="g.user1"/> | 			<mk-avatar class="avatar" :user="g.user1"/> | ||||||
| 			<mk-avatar class="avatar" :user="g.user2"/> | 			<mk-avatar class="avatar" :user="g.user2"/> | ||||||
| 			<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span> | 			<span><b><mk-user-name :user="g.user1"/></b> vs <b><mk-user-name :user="g.user2"/></b></span> | ||||||
| 			<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span> | 			<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span> | ||||||
| 			<mk-time :time="g.createdAt" /> | 			<mk-time :time="g.createdAt" /> | ||||||
| 		</a> | 		</a> | ||||||
| @@ -39,7 +39,7 @@ | |||||||
| 		<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`"> | 		<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`"> | ||||||
| 			<mk-avatar class="avatar" :user="g.user1"/> | 			<mk-avatar class="avatar" :user="g.user1"/> | ||||||
| 			<mk-avatar class="avatar" :user="g.user2"/> | 			<mk-avatar class="avatar" :user="g.user2"/> | ||||||
| 			<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span> | 			<span><b><mk-user-name :user="g.user1"/></b> vs <b><mk-user-name :user="g.user2"/></b></span> | ||||||
| 			<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span> | 			<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span> | ||||||
| 			<mk-time :time="g.createdAt" /> | 			<mk-time :time="g.createdAt" /> | ||||||
| 		</a> | 		</a> | ||||||
| @@ -99,13 +99,14 @@ export default Vue.extend({ | |||||||
| 			this.$emit('go', game); | 			this.$emit('go', game); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		match() { | 		async match() { | ||||||
| 			this.$input({ | 			const { result: user } = await this.$root.dialog({ | ||||||
| 				title: this.$t('enter-username') | 				title: this.$t('enter-username'), | ||||||
| 			}).then(username => { | 				user: { | ||||||
| 				this.$root.api('users/show', { | 					local: true | ||||||
| 					username | 				} | ||||||
| 				}).then(user => { | 			}); | ||||||
|  | 			if (user == null) return; | ||||||
| 			this.$root.api('games/reversi/match', { | 			this.$root.api('games/reversi/match', { | ||||||
| 				userId: user.id | 				userId: user.id | ||||||
| 			}).then(res => { | 			}).then(res => { | ||||||
| @@ -115,8 +116,6 @@ export default Vue.extend({ | |||||||
| 					this.$emit('go', res); | 					this.$emit('go', res); | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| 				}); |  | ||||||
| 			}); |  | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		accept(invitation) { | 		accept(invitation) { | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| <template> | <template> | ||||||
| <div class="urbixznjwwuukfsckrwzwsqzsxornqij"> | <div class="urbixznjwwuukfsckrwzwsqzsxornqij"> | ||||||
| 	<header><b>{{ game.user1 | userName }}</b> vs <b>{{ game.user2 | userName }}</b></header> | 	<header><b><mk-user-name :user="game.user1"/></b> vs <b><mk-user-name :user="game.user2"/></b></header> | ||||||
|  |  | ||||||
| 	<div> | 	<div> | ||||||
| 		<p>{{ $t('settings-of-the-game') }}</p> | 		<p>{{ $t('settings-of-the-game') }}</p> | ||||||
| @@ -36,8 +36,8 @@ | |||||||
|  |  | ||||||
| 			<div> | 			<div> | ||||||
| 				<form-radio v-model="game.settings.bw" value="random" @change="updateSettings">{{ $t('random') }}</form-radio> | 				<form-radio v-model="game.settings.bw" value="random" @change="updateSettings">{{ $t('random') }}</form-radio> | ||||||
| 				<form-radio v-model="game.settings.bw" :value="1" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b>{{ game.user1 | userName }}</b>{{ this.$t('black-is').split('{}')[1] }}</form-radio> | 				<form-radio v-model="game.settings.bw" :value="1" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b><mk-user-name :user="game.user1"/></b>{{ this.$t('black-is').split('{}')[1] }}</form-radio> | ||||||
| 				<form-radio v-model="game.settings.bw" :value="2" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b>{{ game.user2 | userName }}</b>{{ this.$t('black-is').split('{}')[1] }}</form-radio> | 				<form-radio v-model="game.settings.bw" :value="2" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b><mk-user-name :user="game.user2"/></b>{{ this.$t('black-is').split('{}')[1] }}</form-radio> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
|  |  | ||||||
| @@ -60,7 +60,7 @@ | |||||||
|  |  | ||||||
| 			<div> | 			<div> | ||||||
| 				<template v-for="item in form"> | 				<template v-for="item in form"> | ||||||
| 					<ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</ui-switch> | 					<ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" @change="onChangeForm(item)">{{ item.label || item.desc || '' }}</ui-switch> | ||||||
|  |  | ||||||
| 					<div class="card" v-if="item.type == 'radio'" :key="item.id"> | 					<div class="card" v-if="item.type == 'radio'" :key="item.id"> | ||||||
| 						<header> | 						<header> | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| 		<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/> | 		<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/> | ||||||
| 	</div> | 	</div> | ||||||
| 	<div class="matching" v-else-if="matching"> | 	<div class="matching" v-else-if="matching"> | ||||||
| 		<h1>{{ this.$t('matching.waiting-for').split('{}')[0] }}<b>{{ matching | userName }}</b>{{ this.$t('matching.waiting-for').split('{}')[1] }}<mk-ellipsis/></h1> | 		<h1>{{ this.$t('matching.waiting-for').split('{}')[0] }}<b><mk-user-name :user="matching"/></b>{{ this.$t('matching.waiting-for').split('{}')[1] }}<mk-ellipsis/></h1> | ||||||
| 		<div class="cancel"> | 		<div class="cancel"> | ||||||
| 			<form-button round @click="cancel">{{ $t('matching.cancel') }}</form-button> | 			<form-button round @click="cancel">{{ $t('matching.cancel') }}</form-button> | ||||||
| 		</div> | 		</div> | ||||||
|   | |||||||
| @@ -1,64 +0,0 @@ | |||||||
| <template> |  | ||||||
| <div class="mk-github-setting"> |  | ||||||
| 	<p>{{ $t('description') }}</p> |  | ||||||
| 	<p class="account" v-if="$store.state.i.github" :title="`GitHub ID: ${$store.state.i.github.id}`">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p> |  | ||||||
| 	<p> |  | ||||||
| 		<a :href="`${apiUrl}/connect/github`" target="_blank" @click.prevent="connect">{{ $store.state.i.github ? this.$t('reconnect') : this.$t('connect') }}</a> |  | ||||||
| 		<span v-if="$store.state.i.github"> or </span> |  | ||||||
| 		<a :href="`${apiUrl}/disconnect/github`" target="_blank" v-if="$store.state.i.github" @click.prevent="disconnect">{{ $t('disconnect') }}</a> |  | ||||||
| 	</p> |  | ||||||
| 	<p class="id" v-if="$store.state.i.github">GitHub ID: {{ $store.state.i.github.id }}</p> |  | ||||||
| </div> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <script lang="ts"> |  | ||||||
| import Vue from 'vue'; |  | ||||||
| import i18n from '../../../i18n'; |  | ||||||
| import { apiUrl } from '../../../config'; |  | ||||||
|  |  | ||||||
| export default Vue.extend({ |  | ||||||
| 	i18n: i18n('common/views/components/github-setting.vue'), |  | ||||||
| 	data() { |  | ||||||
| 		return { |  | ||||||
| 			form: null, |  | ||||||
| 			apiUrl |  | ||||||
| 		}; |  | ||||||
| 	}, |  | ||||||
| 	mounted() { |  | ||||||
| 		this.$watch('$store.state.i', () => { |  | ||||||
| 			if (this.$store.state.i.github && this.form) |  | ||||||
| 				this.form.close(); |  | ||||||
| 		}, { |  | ||||||
| 			deep: true |  | ||||||
| 		}); |  | ||||||
| 	}, |  | ||||||
| 	methods: { |  | ||||||
| 		connect() { |  | ||||||
| 			this.form = window.open(apiUrl + '/connect/github', |  | ||||||
| 				'github_connect_window', |  | ||||||
| 				'height=570, width=520'); |  | ||||||
| 		}, |  | ||||||
|  |  | ||||||
| 		disconnect() { |  | ||||||
| 			window.open(apiUrl + '/disconnect/github', |  | ||||||
| 				'github_disconnect_window', |  | ||||||
| 				'height=570, width=520'); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| }); |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <style lang="stylus" scoped> |  | ||||||
| .mk-github-setting |  | ||||||
| 	.account |  | ||||||
| 		border solid 1px #e1e8ed |  | ||||||
| 		border-radius 4px |  | ||||||
| 		padding 16px |  | ||||||
|  |  | ||||||
| 		a |  | ||||||
| 			font-weight bold |  | ||||||
| 			color inherit |  | ||||||
|  |  | ||||||
| 	.id |  | ||||||
| 		color #8899a6 |  | ||||||
| </style> |  | ||||||
| @@ -22,7 +22,10 @@ export default Vue.extend({ | |||||||
| 	}, | 	}, | ||||||
| 	methods: { | 	methods: { | ||||||
| 		search() { | 		search() { | ||||||
| 			window.open(`https://www.google.com/?#q=${this.query}`, '_blank'); | 			const engine = this.$store.state.settings.webSearchEngine || | ||||||
|  | 				'https://www.google.com/?#q={{query}}'; | ||||||
|  | 			const url = engine.replace('{{query}}', this.query) | ||||||
|  | 			window.open(url, '_blank'); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
|  |  | ||||||
|  | import userName from './user-name.vue'; | ||||||
| import followButton from './follow-button.vue'; | import followButton from './follow-button.vue'; | ||||||
| import error from './error.vue'; | import error from './error.vue'; | ||||||
| import noteSkeleton from './note-skeleton.vue'; | import noteSkeleton from './note-skeleton.vue'; | ||||||
| @@ -44,6 +45,7 @@ import uiInfo from './ui/info.vue'; | |||||||
| import formButton from './ui/form/button.vue'; | import formButton from './ui/form/button.vue'; | ||||||
| import formRadio from './ui/form/radio.vue'; | import formRadio from './ui/form/radio.vue'; | ||||||
|  |  | ||||||
|  | Vue.component('mk-user-name', userName); | ||||||
| Vue.component('mk-follow-button', followButton); | Vue.component('mk-follow-button', followButton); | ||||||
| Vue.component('mk-error', error); | Vue.component('mk-error', error); | ||||||
| Vue.component('mk-note-skeleton', noteSkeleton); | Vue.component('mk-note-skeleton', noteSkeleton); | ||||||
|   | |||||||
							
								
								
									
										114
									
								
								src/client/app/common/views/components/integration-settings.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,114 @@ | |||||||
|  | <template> | ||||||
|  | <ui-card v-if="enableTwitterIntegration || enableDiscordIntegration || enableGithubIntegration"> | ||||||
|  | 	<div slot="title"><fa icon="share-alt"/> {{ $t('title') }}</div> | ||||||
|  |  | ||||||
|  | 	<section v-if="enableTwitterIntegration"> | ||||||
|  | 		<header><fa :icon="['fab', 'twitter']"/> Twitter</header> | ||||||
|  | 		<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p> | ||||||
|  | 		<ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button> | ||||||
|  | 		<ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button> | ||||||
|  | 	</section> | ||||||
|  |  | ||||||
|  | 	<section v-if="enableDiscordIntegration"> | ||||||
|  | 		<header><fa :icon="['fab', 'discord']"/> Discord</header> | ||||||
|  | 		<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p> | ||||||
|  | 		<ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button> | ||||||
|  | 		<ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button> | ||||||
|  | 	</section> | ||||||
|  |  | ||||||
|  | 	<section v-if="enableGithubIntegration"> | ||||||
|  | 		<header><fa :icon="['fab', 'github']"/> GitHub</header> | ||||||
|  | 		<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p> | ||||||
|  | 		<ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button> | ||||||
|  | 		<ui-button v-else @click="connectGithub">{{ $t('connect') }}</ui-button> | ||||||
|  | 	</section> | ||||||
|  | </ui-card> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import Vue from 'vue'; | ||||||
|  | import i18n from '../../../i18n'; | ||||||
|  | import { apiUrl } from '../../../config'; | ||||||
|  |  | ||||||
|  | export default Vue.extend({ | ||||||
|  | 	i18n: i18n('common/views/components/integration-settings.vue'), | ||||||
|  |  | ||||||
|  | 	data() { | ||||||
|  | 		return { | ||||||
|  | 			apiUrl, | ||||||
|  | 			twitterForm: null, | ||||||
|  | 			discordForm: null, | ||||||
|  | 			githubForm: null, | ||||||
|  | 			enableTwitterIntegration: false, | ||||||
|  | 			enableDiscordIntegration: false, | ||||||
|  | 			enableGithubIntegration: false, | ||||||
|  | 		}; | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	created() { | ||||||
|  | 		this.$root.getMeta().then(meta => { | ||||||
|  | 			this.enableTwitterIntegration = meta.enableTwitterIntegration; | ||||||
|  | 			this.enableDiscordIntegration = meta.enableDiscordIntegration; | ||||||
|  | 			this.enableGithubIntegration = meta.enableGithubIntegration; | ||||||
|  | 		}); | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	mounted() { | ||||||
|  | 		document.cookie = `i=${this.$store.state.i.token}`; | ||||||
|  | 		this.$watch('$store.state.i', () => { | ||||||
|  | 			if (this.$store.state.i.twitter) { | ||||||
|  | 				if (this.twitterForm) this.twitterForm.close(); | ||||||
|  | 			} | ||||||
|  | 			if (this.$store.state.i.discord) { | ||||||
|  | 				if (this.discordForm) this.discordForm.close(); | ||||||
|  | 			} | ||||||
|  | 			if (this.$store.state.i.github) { | ||||||
|  | 				if (this.githubForm) this.githubForm.close(); | ||||||
|  | 			} | ||||||
|  | 		}, { | ||||||
|  | 			deep: true | ||||||
|  | 		}); | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	methods: { | ||||||
|  | 		connectTwitter() { | ||||||
|  | 			this.twitterForm = window.open(apiUrl + '/connect/twitter', | ||||||
|  | 				'twitter_connect_window', | ||||||
|  | 				'height=570, width=520'); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		disconnectTwitter() { | ||||||
|  | 			window.open(apiUrl + '/disconnect/twitter', | ||||||
|  | 				'twitter_disconnect_window', | ||||||
|  | 				'height=570, width=520'); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		connectDiscord() { | ||||||
|  | 			this.discordForm = window.open(apiUrl + '/connect/discord', | ||||||
|  | 				'discord_connect_window', | ||||||
|  | 				'height=570, width=520'); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		disconnectDiscord() { | ||||||
|  | 			window.open(apiUrl + '/disconnect/discord', | ||||||
|  | 				'discord_disconnect_window', | ||||||
|  | 				'height=570, width=520'); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		connectGithub() { | ||||||
|  | 			this.githubForm = window.open(apiUrl + '/connect/github', | ||||||
|  | 				'github_connect_window', | ||||||
|  | 				'height=570, width=520'); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		disconnectGithub() { | ||||||
|  | 			window.open(apiUrl + '/disconnect/github', | ||||||
|  | 				'github_disconnect_window', | ||||||
|  | 				'height=570, width=520'); | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="stylus" scoped> | ||||||
|  | </style> | ||||||
							
								
								
									
										54
									
								
								src/client/app/common/views/components/language-settings.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,54 @@ | |||||||
|  | <template> | ||||||
|  | <ui-card> | ||||||
|  | 	<div slot="title"><fa icon="language"/> {{ $t('title') }}</div> | ||||||
|  |  | ||||||
|  | 	<section class="fit-top"> | ||||||
|  | 		<ui-select v-model="lang" :placeholder="$t('pick-language')"> | ||||||
|  | 			<optgroup :label="$t('recommended')"> | ||||||
|  | 				<option value="">{{ $t('auto') }}</option> | ||||||
|  | 			</optgroup> | ||||||
|  |  | ||||||
|  | 			<optgroup :label="$t('specify-language')"> | ||||||
|  | 				<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option> | ||||||
|  | 			</optgroup> | ||||||
|  | 		</ui-select> | ||||||
|  | 		<ui-info>Current: <i>{{ currentLanguage }}</i></ui-info> | ||||||
|  | 		<ui-info warn>{{ $t('info') }}</ui-info> | ||||||
|  | 	</section> | ||||||
|  | </ui-card> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import Vue from 'vue'; | ||||||
|  | import i18n from '../../../i18n'; | ||||||
|  | import { langs } from '../../../config'; | ||||||
|  |  | ||||||
|  | export default Vue.extend({ | ||||||
|  | 	i18n: i18n('common/views/components/language-settings.vue'), | ||||||
|  |  | ||||||
|  | 	data() { | ||||||
|  | 		return { | ||||||
|  | 			langs, | ||||||
|  | 			currentLanguage: 'Unknown', | ||||||
|  | 		}; | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	computed: { | ||||||
|  | 		lang: { | ||||||
|  | 			get() { return this.$store.state.device.lang; }, | ||||||
|  | 			set(value) { this.$store.commit('device/set', { key: 'lang', value }); } | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	created() { | ||||||
|  | 		try { | ||||||
|  | 			const locale = JSON.parse(localStorage.getItem('locale') || "{}"); | ||||||
|  | 			const localeKey = localStorage.getItem('localeKey'); | ||||||
|  | 			this.currentLanguage = `${locale.meta.lang} (${localeKey})`; | ||||||
|  | 		} catch { } | ||||||
|  | 	}, | ||||||
|  |  | ||||||
|  | 	methods: { | ||||||
|  | 	} | ||||||
|  | }); | ||||||
|  | </script> | ||||||
							
								
								
									
										70
									
								
								src/client/app/common/views/components/mention.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,70 @@ | |||||||
|  | <template> | ||||||
|  | <router-link class="ldlomzub" :to="`/${ canonical }`" v-user-preview="canonical"> | ||||||
|  | 	<span class="me" v-if="isMe">{{ $t('@.you') }}</span> | ||||||
|  | 	<span class="main"> | ||||||
|  | 		<span class="username">@{{ username }}</span> | ||||||
|  | 		<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="(host != localHost) || $store.state.settings.showFullAcct">@{{ toUnicode(host) }}</span> | ||||||
|  | 	</span> | ||||||
|  | </router-link> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script lang="ts"> | ||||||
|  | import Vue from 'vue'; | ||||||
|  | import i18n from '../../../i18n'; | ||||||
|  | import { toUnicode } from 'punycode'; | ||||||
|  | import { host as localHost } from '../../../config'; | ||||||
|  |  | ||||||
|  | export default Vue.extend({ | ||||||
|  | 	i18n: i18n(), | ||||||
|  | 	props: { | ||||||
|  | 		username: { | ||||||
|  | 			type: String, | ||||||
|  | 			required: true | ||||||
|  | 		}, | ||||||
|  | 		host: { | ||||||
|  | 			type: String, | ||||||
|  | 			required: true | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	data() { | ||||||
|  | 		return { | ||||||
|  | 			localHost | ||||||
|  | 		}; | ||||||
|  | 	}, | ||||||
|  | 	computed: { | ||||||
|  | 		canonical(): string { | ||||||
|  | 			return `@${this.username}@${toUnicode(this.host)}`; | ||||||
|  | 		}, | ||||||
|  | 		isMe(): boolean { | ||||||
|  | 			return this.$store.getters.isSignedIn && this.canonical.toLowerCase() === `@${this.$store.state.i.username}@${toUnicode(localHost)}`.toLowerCase(); | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	methods: { | ||||||
|  | 		toUnicode | ||||||
|  | 	} | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  |  | ||||||
|  | <style lang="stylus" scoped> | ||||||
|  | .ldlomzub | ||||||
|  | 	color var(--mfmMention) | ||||||
|  |  | ||||||
|  | 	> .me | ||||||
|  | 		pointer-events none | ||||||
|  | 		user-select none | ||||||
|  | 		padding 0 4px | ||||||
|  | 		background var(--mfmMention) | ||||||
|  | 		border solid var(--lineWidth) var(--mfmMention) | ||||||
|  | 		border-radius 4px 0 0 4px | ||||||
|  | 		color var(--mfmMentionForeground) | ||||||
|  |  | ||||||
|  | 		& + .main | ||||||
|  | 			padding 0 4px | ||||||
|  | 			border solid var(--lineWidth) var(--mfmMention) | ||||||
|  | 			border-radius 0 4px 4px 0 | ||||||
|  |  | ||||||
|  | 	> .main | ||||||
|  | 		> .host.fade | ||||||
|  | 			opacity 0.5 | ||||||
|  |  | ||||||
|  | </style> | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| <template> | <template> | ||||||
| <div class="onchrpzrvnoruiaenfcqvccjfuupzzwv"> | <div class="onchrpzrvnoruiaenfcqvccjfuupzzwv" :class="{ isMobile: $root.isMobile }"> | ||||||
| 	<div class="backdrop" ref="backdrop" @click="close"></div> | 	<div class="backdrop" ref="backdrop" @click="close"></div> | ||||||
| 	<div class="popover" :class="{ hukidasi }" ref="popover"> | 	<div class="popover" :class="{ hukidasi }" ref="popover"> | ||||||
| 		<template v-for="item, i in items"> | 		<template v-for="item, i in items"> | ||||||
| @@ -24,16 +24,11 @@ export default Vue.extend({ | |||||||
| 		items: { | 		items: { | ||||||
| 			type: Array, | 			type: Array, | ||||||
| 			required: true | 			required: true | ||||||
| 		}, |  | ||||||
| 		compact: { |  | ||||||
| 			type: Boolean, |  | ||||||
| 			required: false, |  | ||||||
| 			default: false |  | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	data() { | 	data() { | ||||||
| 		return { | 		return { | ||||||
| 			hukidasi: !this.compact | 			hukidasi: !this.$root.isMobile | ||||||
| 		}; | 		}; | ||||||
| 	}, | 	}, | ||||||
| 	mounted() { | 	mounted() { | ||||||
| @@ -47,7 +42,7 @@ export default Vue.extend({ | |||||||
| 			let left; | 			let left; | ||||||
| 			let top; | 			let top; | ||||||
|  |  | ||||||
| 			if (this.compact) { | 			if (this.$root.isMobile) { | ||||||
| 				const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2); | 				const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2); | ||||||
| 				const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2); | 				const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2); | ||||||
| 				left = (x - (width / 2)); | 				left = (x - (width / 2)); | ||||||
| @@ -121,10 +116,14 @@ export default Vue.extend({ | |||||||
| <style lang="stylus" scoped> | <style lang="stylus" scoped> | ||||||
| .onchrpzrvnoruiaenfcqvccjfuupzzwv | .onchrpzrvnoruiaenfcqvccjfuupzzwv | ||||||
| 	$bg-color = var(--popupBg) | 	$bg-color = var(--popupBg) | ||||||
| 	$border-color = rgba(27, 31, 35, 0.15) |  | ||||||
|  |  | ||||||
| 	position initial | 	position initial | ||||||
|  |  | ||||||
|  | 	&.isMobile | ||||||
|  | 		> .popover | ||||||
|  | 			> button | ||||||
|  | 				font-size 15px | ||||||
|  |  | ||||||
| 	> .backdrop | 	> .backdrop | ||||||
| 		position fixed | 		position fixed | ||||||
| 		top 0 | 		top 0 | ||||||
| @@ -140,7 +139,6 @@ export default Vue.extend({ | |||||||
| 		z-index 10001 | 		z-index 10001 | ||||||
| 		padding 8px 0 | 		padding 8px 0 | ||||||
| 		background $bg-color | 		background $bg-color | ||||||
| 		border 1px solid $border-color |  | ||||||
| 		border-radius 4px | 		border-radius 4px | ||||||
| 		box-shadow 0 3px 12px rgba(27, 31, 35, 0.15) | 		box-shadow 0 3px 12px rgba(27, 31, 35, 0.15) | ||||||
| 		transform scale(0.5) | 		transform scale(0.5) | ||||||
| @@ -165,14 +163,6 @@ export default Vue.extend({ | |||||||
| 				border-top solid $balloon-size transparent | 				border-top solid $balloon-size transparent | ||||||
| 				border-left solid $balloon-size transparent | 				border-left solid $balloon-size transparent | ||||||
| 				border-right solid $balloon-size transparent | 				border-right solid $balloon-size transparent | ||||||
| 				border-bottom solid $balloon-size $border-color |  | ||||||
|  |  | ||||||
| 			&:after |  | ||||||
| 				top -($balloon-size * 2) + 1.5px |  | ||||||
| 				left s('calc(50% - %s)', $balloon-size) |  | ||||||
| 				border-top solid $balloon-size transparent |  | ||||||
| 				border-left solid $balloon-size transparent |  | ||||||
| 				border-right solid $balloon-size transparent |  | ||||||
| 				border-bottom solid $balloon-size $bg-color | 				border-bottom solid $balloon-size $bg-color | ||||||
|  |  | ||||||
| 		> button | 		> button | ||||||
| @@ -180,6 +170,7 @@ export default Vue.extend({ | |||||||
| 			padding 8px 16px | 			padding 8px 16px | ||||||
| 			width 100% | 			width 100% | ||||||
| 			color var(--popupFg) | 			color var(--popupFg) | ||||||
|  | 			white-space nowrap | ||||||
|  |  | ||||||
| 			&:hover | 			&:hover | ||||||
| 				color var(--primaryForeground) | 				color var(--primaryForeground) | ||||||
| @@ -195,7 +186,7 @@ export default Vue.extend({ | |||||||
|  |  | ||||||
| 		> div | 		> div | ||||||
| 			margin 8px 0 | 			margin 8px 0 | ||||||
| 			height 1px | 			height var(--lineWidth) | ||||||
| 			background var(--faceDivider) | 			background var(--faceDivider) | ||||||
|  |  | ||||||
| </style> | </style> | ||||||
|   | |||||||