Compare commits
518 Commits
Author | SHA1 | Date | |
---|---|---|---|
35a1fa5bf0 | |||
8d3f71d490 | |||
9776d8e06b | |||
10f845ae76 | |||
2c8f962889 | |||
1721a82352 | |||
59bec546e4 | |||
86503f2d69 | |||
e4b8c688bb | |||
4535ab4c43 | |||
dcdb57df9d | |||
cfc2808c56 | |||
4a3d74c608 | |||
e18655d18f | |||
12b4b78763 | |||
550a528fc1 | |||
4e3429a5c7 | |||
ef98383075 | |||
d66d1f142f | |||
c896055cb1 | |||
2e8b2e0cf9 | |||
59012b5693 | |||
dfb51e8d26 | |||
5107824352 | |||
bf7ec18316 | |||
77d82d2d17 | |||
2777460150 | |||
9476a240d9 | |||
bddb878931 | |||
b0768d8a4a | |||
46bb7f9efb | |||
a507b7c0b0 | |||
939c0dc5f9 | |||
a89c206572 | |||
8b55263e72 | |||
f2ad1e4639 | |||
0fbcec1c16 | |||
ec2b73d076 | |||
6630bb0b39 | |||
bef0d4c8bd | |||
a57cb3bd31 | |||
1e4577a988 | |||
fe792b5bbb | |||
d4005133d0 | |||
abe8e80268 | |||
e38e4940b4 | |||
48dc1678c3 | |||
431383ab54 | |||
7a8d252f63 | |||
04525e2997 | |||
a2f96f3f20 | |||
a81ecb0b28 | |||
1122368ee0 | |||
6c54328391 | |||
1a26816f7a | |||
8538334d08 | |||
9387ebc569 | |||
c99dce68ed | |||
6dea84c6d2 | |||
39060374c2 | |||
d3ebb5d13f | |||
4e7c10d3d9 | |||
e93ea66d2d | |||
152dd70ea5 | |||
7b94cf9f84 | |||
d70e27a865 | |||
b780ea336c | |||
bd9f589d32 | |||
d9d18bd8f9 | |||
ffdaa6bc56 | |||
c7f60e337e | |||
7f265dbd52 | |||
8929c5cabc | |||
4a610f3b0a | |||
55ec19edb5 | |||
c319c61832 | |||
66db99b8cd | |||
ff2162974d | |||
78e86af086 | |||
2dcf89eecf | |||
fdf94be998 | |||
0e913a5727 | |||
f3be077adc | |||
a6e0471f8c | |||
c5d734f9ad | |||
ee12d887ae | |||
b78d24be1e | |||
d5379e2b36 | |||
cf36557084 | |||
fd1ee129dc | |||
1471b7a6b5 | |||
1d39d7efcb | |||
69ee97f6e2 | |||
12092e6083 | |||
6e29e40b8b | |||
842c9e735b | |||
2f63a25058 | |||
d3b084003c | |||
0da9d3d8b0 | |||
58f3c6aab7 | |||
22e79675ad | |||
e5c350d740 | |||
210124ac34 | |||
7f9a35d7ac | |||
71a30f9001 | |||
95a34d55fb | |||
34f052b672 | |||
0178c2e696 | |||
5cb0c07627 | |||
d8fdbfe164 | |||
74e0b2734d | |||
3f5785bd03 | |||
15e5c69c15 | |||
57019c0b40 | |||
9d6641be3a | |||
ac15c2e71f | |||
1fc9206c6d | |||
a8fb0d477f | |||
0c372b68d4 | |||
e7d9018944 | |||
ce16884587 | |||
3345733d00 | |||
f91cccb6b1 | |||
6183262037 | |||
1c7a194950 | |||
286e15b967 | |||
744d366874 | |||
afa62d3d44 | |||
270c7997c6 | |||
fa95641f88 | |||
aa9fe38c25 | |||
0d33cbbbbb | |||
bf077da72f | |||
d8f8e19d06 | |||
3c3d3e4c0c | |||
0efbeb36df | |||
73c396cb39 | |||
8e75f8a125 | |||
e8a7e95c65 | |||
70a6889fe5 | |||
6aff7375f6 | |||
d2ef95a8c3 | |||
1ae51df74a | |||
3098c6a915 | |||
ab3f8fd10c | |||
4bdef3720c | |||
c02cecc9e5 | |||
08b431723a | |||
83dcfec053 | |||
69ac7b739f | |||
9ccf9a2496 | |||
78563ef9a0 | |||
019d157b92 | |||
14de35e3f5 | |||
a860479e88 | |||
b351b3fae5 | |||
89918a9f79 | |||
cadd020915 | |||
e80933b8ae | |||
4c0832884f | |||
e4ca940979 | |||
3fd9be3967 | |||
79ec7aba1d | |||
42b1f7eddd | |||
889a73caa4 | |||
c34a89e962 | |||
2b4bf681e5 | |||
d1d59e3557 | |||
668c21830c | |||
7c37ed07f8 | |||
a135d8fd59 | |||
0db9aae162 | |||
1875c362af | |||
9b36dd9565 | |||
69452a27de | |||
6aa5c5895f | |||
12f20c67b1 | |||
66b8e5647d | |||
188a23fec7 | |||
b408b45000 | |||
c53cb94250 | |||
ba2eeabe38 | |||
259fac224e | |||
aad5440c9e | |||
5c40f0010f | |||
fb1d181424 | |||
12cbd8ef5b | |||
cfc4385d1f | |||
880ef024d0 | |||
c6c6edbc0a | |||
83ba951bf9 | |||
9c22b1a68a | |||
cd6a1d3446 | |||
4a9fc0c8ed | |||
fada899b30 | |||
22b099fa8a | |||
e0bc0d2830 | |||
90768d30aa | |||
177c549493 | |||
5e1ee68189 | |||
175f6303bc | |||
cf9f2a5562 | |||
f04526baca | |||
f085ecedb3 | |||
0986301788 | |||
fe418d8d9a | |||
6009be34dc | |||
01a0a54a2c | |||
cfcaf77e21 | |||
3b37bdc0b9 | |||
ec07112f94 | |||
464faf2673 | |||
bde20a1a65 | |||
86c7276da9 | |||
fec988bb79 | |||
0702d0974b | |||
f443d36dbb | |||
5477f0a865 | |||
dc02168f33 | |||
cc5c32b4d2 | |||
a35680a838 | |||
770cba73a6 | |||
401fc758fd | |||
e8503e6351 | |||
de23753409 | |||
4857d86cdd | |||
dc4a072678 | |||
c6ee5ccd88 | |||
68b630cb37 | |||
94c0238d3a | |||
dbea387433 | |||
d35f62d0e4 | |||
09b8e81a77 | |||
3b38979a34 | |||
0fd8c86c24 | |||
58d0ed1a2e | |||
8939452036 | |||
a2931d6f7e | |||
38b75ad977 | |||
dc4f585954 | |||
1fbe5365f7 | |||
04257db938 | |||
ba08d1aa53 | |||
c29cb5bfb9 | |||
fb1e2efbdd | |||
131a454e7c | |||
92e5cff285 | |||
b24e32e14e | |||
943805bdcd | |||
ba9340a26b | |||
00119328f2 | |||
a73c65da07 | |||
9021bb5694 | |||
a3cf63823f | |||
f15878cc6f | |||
33469ff87a | |||
23b0723168 | |||
fda1ab3e05 | |||
490c05a869 | |||
f0137daebe | |||
b9fc0e6d71 | |||
979efee412 | |||
f079041827 | |||
4edd9efc0b | |||
2913c7ccfb | |||
e1f460f90f | |||
70f927ea43 | |||
80d343bb0b | |||
9e41fddea3 | |||
8384efc8c7 | |||
7797c86581 | |||
4da8cc478f | |||
285deeec52 | |||
2916e49422 | |||
41e5b9134b | |||
d0d853dcb2 | |||
be46c7e4c5 | |||
8e0f41d608 | |||
a7b438072c | |||
99958e2fce | |||
b82843d359 | |||
4dfc2dfa89 | |||
50c945607f | |||
01f28b21dd | |||
2cb39a8882 | |||
6ddb6bc160 | |||
92befbb4cc | |||
ab701bb93e | |||
7f9a88fd1c | |||
c5073b33ef | |||
765b922a8b | |||
9b7d6274fa | |||
26b384aef1 | |||
0b1e5e3e08 | |||
5b7506756e | |||
1f28a0dfeb | |||
f56ec82f6b | |||
8ccbabf5ca | |||
7c763600b7 | |||
499491003b | |||
3a77d871d5 | |||
4ee6d0b549 | |||
64aa733b16 | |||
c8c4ec6ad4 | |||
c9ee737078 | |||
ebc2cca0b4 | |||
fc94df06eb | |||
190a03103e | |||
0d75ae9d9a | |||
3129f8f073 | |||
7f751d3f20 | |||
0b5b834f8b | |||
0f649f7d37 | |||
a1b100d412 | |||
dd4ee1627e | |||
1da0fdcf78 | |||
800eec73b8 | |||
166cb5e179 | |||
4a5e145048 | |||
be68f42220 | |||
7942aa677f | |||
2fcf9288a5 | |||
9bc17974f2 | |||
19c872a1f3 | |||
9252c59d90 | |||
a8f142096c | |||
3c90abfb96 | |||
12037fab9b | |||
73cc425093 | |||
5c97da935d | |||
0b154ac7ba | |||
d4eb0c8df9 | |||
5ba6f20701 | |||
695a082582 | |||
a52c588f49 | |||
fa469725c7 | |||
a1f0cb1bc7 | |||
fbbd33ded2 | |||
9658e2b3fb | |||
3d10b19727 | |||
ab7725ff69 | |||
6372451d17 | |||
2c11cc3f0a | |||
7f65f896f9 | |||
def823ceea | |||
454d294cf3 | |||
1affdbdbab | |||
52286f4be8 | |||
1b9f293959 | |||
7289d5b401 | |||
01d3f5f09d | |||
4333ff00a0 | |||
25b88afbb7 | |||
6a92c19227 | |||
5bdbf98f8c | |||
56b69b5fb7 | |||
ebf0479ecc | |||
196c55edbc | |||
e724c1e7e8 | |||
4e915e96a5 | |||
e148f6ce5e | |||
652d7d2c05 | |||
0b0111fe23 | |||
869c19c666 | |||
86a5f715d3 | |||
514aeac2d8 | |||
8980a26713 | |||
a39e2b28d1 | |||
bef617cb7c | |||
1dc1feca0f | |||
5d097fb29d | |||
f29fe986af | |||
0c774979c0 | |||
f0bc2ed1d7 | |||
b174e5e57a | |||
90eed0ea0d | |||
ae50b71c07 | |||
c730e5edfa | |||
b2eb50f260 | |||
790c7f2249 | |||
6a0f34c283 | |||
d151445db7 | |||
18a3007273 | |||
bea8c3c65c | |||
391ee01fe3 | |||
be7cf9f731 | |||
b92c2aa40e | |||
45ebcbf785 | |||
5f32484be0 | |||
7bd33ecc72 | |||
e245122f12 | |||
d4f7058574 | |||
21570e2111 | |||
63e1165a01 | |||
89b5a69127 | |||
1152a9d03a | |||
10092d4570 | |||
429b4bec64 | |||
99f96583b6 | |||
5adb765f85 | |||
0eb787e0d0 | |||
4493c856a9 | |||
59d3d4a749 | |||
980ae3dcb3 | |||
3a76113b78 | |||
ec8105b2ae | |||
bf05785345 | |||
82346d788b | |||
d86cfa86e4 | |||
b85f13dad3 | |||
eb8c3fe884 | |||
ff325d9588 | |||
a98392ff27 | |||
22b8aab7a0 | |||
24de518922 | |||
a169c7756f | |||
249a7f4f68 | |||
4f590e0a96 | |||
f5b5b290e4 | |||
1f75cf4ace | |||
1e4f11a979 | |||
be12e23aa1 | |||
790e6ceca4 | |||
a303d52990 | |||
096fab575c | |||
a256393b81 | |||
e8eee9057a | |||
d81acae17e | |||
313715bc75 | |||
94dabd2038 | |||
a3d58e5bc7 | |||
bfdfd026a2 | |||
b713f06599 | |||
2172c5edca | |||
9bc0cfacfa | |||
546cfeadbe | |||
2413583ce9 | |||
d7510491a5 | |||
61db07edf4 | |||
5c3ac8f952 | |||
5bfcb75ec3 | |||
d733a1b445 | |||
75c44cd349 | |||
f4d247cfae | |||
4260ec713f | |||
99f4ab7000 | |||
b6157e0012 | |||
4405c19852 | |||
5f208a7d99 | |||
2ec4cc9a07 | |||
06390380f8 | |||
752186066b | |||
10f9549a04 | |||
84a4174883 | |||
ee765d0812 | |||
1ccd2def50 | |||
0d9782571f | |||
973018fc98 | |||
d0926a3ba1 | |||
be67f5f422 | |||
b70b607c4f | |||
2bd38fa052 | |||
43b6140dbe | |||
813804a43e | |||
bec9604445 | |||
2e454dad2d | |||
7d64435e56 | |||
6ef28214df | |||
5bbc95d659 | |||
83794f254c | |||
005d25a07b | |||
255222bfb4 | |||
9e5e3c2f2e | |||
5bd80f115f | |||
c86e1a3e9b | |||
128a201b9d | |||
b68f74f39c | |||
cd28504dd8 | |||
911762fedf | |||
de448fc99f | |||
a3531981ee | |||
fc8d06a9ab | |||
5de8edf15f | |||
f762cf2770 | |||
d84cae9358 | |||
9c54721010 | |||
16f35c81a1 | |||
d0dbb62a54 | |||
9fa68f4478 | |||
0d76625868 | |||
5a8a701188 | |||
121344afbb | |||
d647cf3446 | |||
04a23b3f2f | |||
08826e1c41 | |||
2e31e3c7cb | |||
7aed50f9fa | |||
2de782dbe4 | |||
50693fbe25 | |||
9a2ff56a79 | |||
daed63d66c | |||
f2241a47b7 | |||
de95aac59b | |||
8612ac0c6a | |||
2118e500a8 | |||
a7063eab85 | |||
5b5ae0e47f | |||
b19ecc1a0d | |||
ac9223957f | |||
e580adc41e | |||
607a105b78 | |||
cc601cf600 | |||
be9f6ad294 | |||
a2952c02cf | |||
244d567b3a | |||
61a9ad23f1 | |||
864d1a39cd | |||
e14f244e83 |
25
.autogen/README.foot.md
Normal file
25
.autogen/README.foot.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
:four_leaf_clover: Copyright
|
||||||
|
----------------------------------------------------------------
|
||||||
|
> Copyright (c) 2014-2018 syuilo
|
||||||
|
|
||||||
|
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
||||||
|
|
||||||
|
[![][agpl-3.0-badge]][AGPL-3.0]
|
||||||
|
|
||||||
|
[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
|
||||||
|
[travis-link]: https://travis-ci.org/syuilo/misskey
|
||||||
|
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
|
||||||
|
[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-badge]: https://opencollective.com/misskey/backers/badge.svg
|
||||||
|
[backers-image]: https://opencollective.com/misskey/backers.svg
|
||||||
|
[sponsor-url]: #sponsors
|
||||||
|
[sponsor-badge]: https://opencollective.com/misskey/sponsors/badge.svg
|
||||||
|
[sponsors-image]: https://opencollective.com/misskey/sponsors.svg
|
||||||
|
[support-url]: https://opencollective.com/misskey#support
|
||||||
|
|
||||||
|
[syuilo-link]: https://syuilo.com
|
||||||
|
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70
|
45
.autogen/README.head.md
Normal file
45
.autogen/README.head.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<img src="https://github.com/syuilo/misskey/blob/b3f42e62af698a67c2250533c437569559f1fdf9/src/himasaku/resources/himasaku.png?raw=true" align="right" width="320px"/>
|
||||||
|
|
||||||
|
[](https://misskey.xyz/)
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
[![][travis-badge]][travis-link]
|
||||||
|
[![][dependencies-badge]][dependencies-link]
|
||||||
|
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
||||||
|
|
||||||
|
**Microblogging. Redefined.**
|
||||||
|
|
||||||
|
**[Misskey](https://misskey.xyz)** is a completely open source,
|
||||||
|
ultimately sophisticated professional microblogging software.
|
||||||
|
|
||||||
|
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
:sparkles: Features
|
||||||
|
----------------------------------------------------------------
|
||||||
|
* Rich text contents
|
||||||
|
* Reactions
|
||||||
|
* User lists
|
||||||
|
* Customizable column view (called MisskeyDeck)
|
||||||
|
* and widgets!
|
||||||
|
* Private messages
|
||||||
|
* ActivityPub support
|
||||||
|
|
||||||
|
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
|
||||||
|
|
||||||
|
:package: Create your instance
|
||||||
|
----------------------------------------------------------------
|
||||||
|
If you want to run your own instance of Misskey,
|
||||||
|
please see [Setup and installation guide](./docs/setup.en.md).
|
||||||
|
|
||||||
|
:wrench: Contribute
|
||||||
|
----------------------------------------------------------------
|
||||||
|
**[PR](https://github.com/syuilo/misskey/pulls)s welcome!**
|
||||||
|
|
||||||
|
If you want to...
|
||||||
|
* i18n ... please see [Translation guide](./docs/translate.en.md).
|
||||||
|
* l10n ... please visit https://crowdin.com/project/misskey
|
||||||
|
|
||||||
|
:heart: Backers & Sponsors
|
||||||
|
----------------------------------------------------------------
|
@ -50,8 +50,11 @@ remoteDriveCapacityMb: 8
|
|||||||
# If enabled:
|
# If enabled:
|
||||||
# Server will not cache remote files (Using direct link instead).
|
# Server will not cache remote files (Using direct link instead).
|
||||||
# You can save your storage.
|
# You can save your storage.
|
||||||
# Users cannot see remote images when they turn off "Show media from a remote server" setting.
|
#
|
||||||
preventCache: false
|
# NOTE:
|
||||||
|
# * Users cannot see remote images when they turn off "Show media from a remote server" setting.
|
||||||
|
# * Since thumbnails are not provided, traffic increases.
|
||||||
|
preventCacheRemoteFiles: false
|
||||||
|
|
||||||
drive:
|
drive:
|
||||||
storage: 'db'
|
storage: 'db'
|
||||||
@ -64,7 +67,7 @@ drive:
|
|||||||
# config:
|
# config:
|
||||||
# endPoint:
|
# endPoint:
|
||||||
# port:
|
# port:
|
||||||
# secure:
|
# useSSL:
|
||||||
# accessKey:
|
# accessKey:
|
||||||
# secretKey:
|
# secretKey:
|
||||||
|
|
||||||
@ -75,7 +78,7 @@ drive:
|
|||||||
# config:
|
# config:
|
||||||
# endPoint: s3-us-west-2.amazonaws.com
|
# endPoint: s3-us-west-2.amazonaws.com
|
||||||
# region: us-west-2
|
# region: us-west-2
|
||||||
# secure: true
|
# useSSL: true
|
||||||
# accessKey: XXX
|
# accessKey: XXX
|
||||||
# secretKey: YYY
|
# secretKey: YYY
|
||||||
|
|
||||||
@ -87,7 +90,7 @@ drive:
|
|||||||
# config:
|
# config:
|
||||||
# endPoint: s3-us-west-2.amazonaws.com
|
# endPoint: s3-us-west-2.amazonaws.com
|
||||||
# region: us-west-2
|
# region: us-west-2
|
||||||
# secure: true
|
# useSSL: true
|
||||||
# accessKey: XXX
|
# accessKey: XXX
|
||||||
# secretKey: YYY
|
# secretKey: YYY
|
||||||
|
|
||||||
@ -123,6 +126,7 @@ drive:
|
|||||||
# google_maps_api_key: example-google-maps-api-key
|
# google_maps_api_key: example-google-maps-api-key
|
||||||
|
|
||||||
# Twitter integration
|
# Twitter integration
|
||||||
|
# You need to set the oauth callback url as : https://<your-misskey-instance>/api/tw/cb
|
||||||
# twitter:
|
# twitter:
|
||||||
# consumer_key: example-twitter-consumer-key
|
# consumer_key: example-twitter-consumer-key
|
||||||
# consumer_secret: example-twitter-consumer-secret-key
|
# consumer_secret: example-twitter-consumer-secret-key
|
||||||
|
@ -22,7 +22,6 @@ addons:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
packages:
|
packages:
|
||||||
- g++-4.8
|
- g++-4.8
|
||||||
- graphicsmagick
|
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
|
4
.vsls.json
Normal file
4
.vsls.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json.schemastore.org/vsls",
|
||||||
|
"gitignore": "exclude"
|
||||||
|
}
|
@ -5,6 +5,15 @@ ChangeLog
|
|||||||
|
|
||||||
This document describes breaking changes only.
|
This document describes breaking changes only.
|
||||||
|
|
||||||
|
6.0.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
### Migration
|
||||||
|
|
||||||
|
オブジェクトストレージを使用している場合、設定ファイルの`drive.config.secure`を`drive.config.useSSL`にリネームしてください。
|
||||||
|
|
||||||
|
If you use object storage, please rename `drive.config.secure` to `drive.config.useSSL` in config.
|
||||||
|
|
||||||
5.0.0
|
5.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
31
README.md
31
README.md
@ -43,9 +43,34 @@ If you want to...
|
|||||||
|
|
||||||
:heart: Backers & Sponsors
|
:heart: Backers & Sponsors
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
| <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"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D"> | <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"> |
|
<table>
|
||||||
|:-:|:-:|:-:|:-:|
|
<tr>
|
||||||
| [Gargron](https://www.patreon.com/mastodon) | [39ff](https://www.patreon.com/user/creators?u=12378075) | [dansup](https://www.patreon.com/dansup) | [Takashi Shibuya](https://www.patreon.com/user/creators?u=12531784) |
|
<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"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"></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"></td>
|
||||||
|
<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"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12959468/c249e15aebec4424b5c0f427173671b6/1?token-time=2145916800&token-hash=lubpCEdxAkxPlpR2O6bvZ7BIh8Q4nGf-U_mE1qpjVAQ%3D"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/2?token-time=2145916800&token-hash=zElv7ZcPL3viGsXbNG_KWiKrbV0vvw1gk0panx8DJoo%3D"></td>
|
||||||
|
<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"></td>
|
||||||
|
<td><img src="https://c8.patreon.com/2/100/12718187"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D"></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"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user/creators?u=12378075">39ff</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user/creators?u=12531784">Takashi Shibuya</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/fujishan">fujishan</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12731202">negao</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=12931605">Reiju</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
FROM base/archlinux
|
|
||||||
|
|
||||||
MAINTAINER Aya Morisawa
|
|
||||||
|
|
||||||
RUN rm /etc/pacman.d/mirrorlist
|
|
||||||
RUN echo 'Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist
|
|
||||||
RUN echo 'Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist
|
|
||||||
|
|
||||||
RUN rm /etc/localtime
|
|
||||||
RUN ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
|
|
||||||
|
|
||||||
RUN pacman -Sy --noconfirm
|
|
||||||
RUN pacman -S --noconfirm pacman
|
|
||||||
RUN pacman-db-upgrade
|
|
||||||
RUN pacman -S --noconfirm archlinux-keyring
|
|
||||||
RUN pacman -Syyu --noconfirm
|
|
||||||
RUN pacman -S --noconfirm git nodejs npm mongodb redis
|
|
||||||
|
|
||||||
COPY misskey.sh /root/misskey.sh
|
|
||||||
RUN chmod u+x /root/misskey.sh
|
|
||||||
|
|
||||||
EXPOSE 80
|
|
||||||
EXPOSE 443
|
|
||||||
EXPOSE 27017
|
|
||||||
|
|
||||||
CMD ["/root/misskey.sh"]
|
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
redis-server --daemonize yes
|
|
||||||
mongod > /dev/null &
|
|
||||||
cd /root/misskey
|
|
||||||
npm start
|
|
||||||
tail -f /dev/null
|
|
@ -1,29 +0,0 @@
|
|||||||
Setup with Docker :whale:
|
|
||||||
================================================================
|
|
||||||
|
|
||||||
Ensure that the working directory is the repository root directory.
|
|
||||||
|
|
||||||
To create misskey image:
|
|
||||||
``` console
|
|
||||||
$ sudo docker build -t misskey ./docker
|
|
||||||
```
|
|
||||||
|
|
||||||
To run misskey:
|
|
||||||
``` console
|
|
||||||
$ sudo docker run --rm -i -t -p $PORT:80 -v $(pwd):/root/misskey -v $DBPATH:/data/db misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
where `$PORT` is the port used to access Misskey Web from host browser
|
|
||||||
and `$DBPATH` is the path of MongoDB database on the host for data persistence.
|
|
||||||
|
|
||||||
ex:
|
|
||||||
``` console
|
|
||||||
$ sudo docker run --rm -i -t -p 80:80 -v $(pwd):/root/misskey -v /data/db:/data/db misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to run misskey in production mode, add `--env NODE_ENV=production` like this:
|
|
||||||
``` console
|
|
||||||
$ sudo docker run --rm -i -t -p 80:80 -v $(pwd):/root/misskey -v /data/db:/data/db --env NODE_ENV=production misskey
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that `$(pwd)` is the working directory.
|
|
@ -62,6 +62,13 @@ npm install web-push -g
|
|||||||
web-push generate-vapid-keys
|
web-push generate-vapid-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
|
*(optional)* Create a twitter application
|
||||||
|
----------------------------------------------------------------
|
||||||
|
If you want to enable the twitter integration, you need to create a twitter app at [https://developer.twitter.com/en/apply/user](https://developer.twitter.com/en/apply/user).
|
||||||
|
|
||||||
|
In the app you need to set the oauth callback url as : https://misskey-instance/api/tw/cb
|
||||||
|
|
||||||
|
|
||||||
*5.* Make configuration file
|
*5.* Make configuration file
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
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`.
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "Unbekannt"
|
unknown: "Unbekannt"
|
||||||
future: "Zukunft"
|
future: "Zukunft"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "vor {0} Woche{0:n}"
|
weeks_ago: "vor {0} Woche{0:n}"
|
||||||
months_ago: "vor {0} Monat{0:en}"
|
months_ago: "vor {0} Monat{0:en}"
|
||||||
years_ago: "vor {} Jahr{0:en}"
|
years_ago: "vor {} Jahr{0:en}"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "So"
|
sunday: "So"
|
||||||
monday: "Mo"
|
monday: "Mo"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "Glückwunsch!"
|
congrats: "Glückwunsch!"
|
||||||
angry: "Wütend"
|
angry: "Wütend"
|
||||||
confused: "Verwirrt"
|
confused: "Verwirrt"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Was machst du gerade?"
|
a: "Was machst du gerade?"
|
||||||
@ -87,7 +84,8 @@ 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: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "Keine weitere Chronik vorhanden"
|
no-history: "Keine weitere Chronik vorhanden"
|
||||||
resize-form: "Ziehen um die Größe zu verändern"
|
resize-form: "Ziehen um die Größe zu verändern"
|
||||||
new-message: "Neue Nachricht"
|
new-message: "Neue Nachricht"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Nachricht hier eingeben"
|
input-message-here: "Nachricht hier eingeben"
|
||||||
send: "Senden"
|
send: "Senden"
|
||||||
attach-from-local: "Wähle Dateien von deinem PC aus"
|
attach-from-local: "Wähle Dateien von deinem PC aus"
|
||||||
attach-from-drive: "Wähle Dateien von deinem Speicher aus"
|
attach-from-drive: "Wähle Dateien von deinem Speicher aus"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Gelesen"
|
is-read: "Gelesen"
|
||||||
deleted: "Diese Nachricht wurde gelöscht"
|
deleted: "Diese Nachricht wurde gelöscht"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Melde an..."
|
signing-in: "Melde an..."
|
||||||
signin: "Anmelden"
|
signin: "Anmelden"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "Benutzername"
|
username: "Benutzername"
|
||||||
checking: "Überprüfung..."
|
checking: "Überprüfung..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Schwarz ... komplett"
|
total: "Schwarz ... komplett"
|
||||||
notes: "Blau ... Hinweise"
|
notes: "Blau ... Hinweise"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Zeige Details"
|
detail: "Zeige Details"
|
||||||
private: "Dieser Beitrag ist eine privat"
|
private: "Dieser Beitrag ist eine privat"
|
||||||
deleted: "Dieser Beitrag wurde entfernt"
|
deleted: "Dieser Beitrag wurde entfernt"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Laden fehlgeschlagen."
|
error: "Laden fehlgeschlagen."
|
||||||
retry: "Erneut versuchen"
|
retry: "Erneut versuchen"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Neue Notiz"
|
note: "Neue Notiz"
|
||||||
reply: "Antworten"
|
reply: "Antworten"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Kreisförmige Icons"
|
circle-icons: "Kreisförmige Icons"
|
||||||
gradient-window-header: "Übergang in Fensterköpfen"
|
gradient-window-header: "Übergang in Fensterköpfen"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "Zeige Antworten"
|
show-reply-target: "Zeige Antworten"
|
||||||
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
||||||
show-renoted-my-notes: "Zeige meine Reposts, die geteilt wurden, auf der Zeitleiste"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Karte anzeigen"
|
show-maps: "Karte anzeigen"
|
||||||
show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
|
show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
|
||||||
sound: "Ton"
|
sound: "Ton"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "Listen"
|
list: "Listen"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Dein Profil"
|
profile: "Dein Profil"
|
||||||
drive: "Speicher"
|
drive: "Speicher"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
289
locales/en.yml
289
locales/en.yml
@ -8,15 +8,17 @@ 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?"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Please disable ad blocker."
|
detected: "Please disable ad blocker."
|
||||||
warning: "<strong>Misskey is not running ads</strong>, but some features may be unavailable or malfunctioning if ad blocking features are enabled."
|
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
||||||
application-authorization: "Application authorizations."
|
application-authorization: "Application authorizations"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
|
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
||||||
|
got-it: "Got it!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Customization tips"
|
title: "Customization tips"
|
||||||
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
|
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
|
||||||
paragraph2: "You can change the display by <strong>right clicking</strong> on some widgets."
|
paragraph2: "You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets."
|
||||||
paragraph3: "To delete a widget, <strong>drag and drop the widget onto the area labeled \"Trash\"</strong> in the header."
|
paragraph3: "To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header."
|
||||||
paragraph4: "To finish the customization, click \"Finish\" in the upper right."
|
paragraph4: "To finish the customization, click \"Finish\" on the upper right."
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "File uploaded!"
|
file-uploaded: "File uploaded!"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "Notified by {}:"
|
notified-by: "Notified by {}:"
|
||||||
reply-from: "Reply from {}:"
|
reply-from: "Reply from {}:"
|
||||||
quoted-by: "Quoted by {}:"
|
quoted-by: "Quoted by {}:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "unknown"
|
unknown: "unknown"
|
||||||
future: "future"
|
future: "future"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{}week(s) ago"
|
weeks_ago: "{}week(s) ago"
|
||||||
months_ago: "{}month(s) ago"
|
months_ago: "{}month(s) ago"
|
||||||
years_ago: "{}year(s) ago"
|
years_ago: "{}year(s) ago"
|
||||||
|
month-and-day: "{month}/{day}"
|
||||||
trash: "Trash"
|
trash: "Trash"
|
||||||
date:
|
|
||||||
full-year: "Year"
|
|
||||||
month: "Month"
|
|
||||||
day: "Day"
|
|
||||||
hours: "Hour"
|
|
||||||
minutes: "Minutes"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "S"
|
sunday: "S"
|
||||||
monday: "M"
|
monday: "M"
|
||||||
@ -70,14 +66,15 @@ common:
|
|||||||
congrats: "Congrats!"
|
congrats: "Congrats!"
|
||||||
angry: "Angry"
|
angry: "Angry"
|
||||||
confused: "Confused"
|
confused: "Confused"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "What are you doing?"
|
a: "What are you doing?"
|
||||||
b: "What's happening?"
|
b: "What's happening?"
|
||||||
c: "What’s on your mind?"
|
c: "What’s on your mind?"
|
||||||
d: "What do you wish to say?"
|
d: "Would you post any words?"
|
||||||
e: "Write here"
|
e: "Write here"
|
||||||
f: "Waiting for your writing..."
|
f: "Waiting for your writing."
|
||||||
search: "Search"
|
search: "Search"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
@ -87,7 +84,8 @@ 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"
|
||||||
verified-user: "Verified user"
|
verified-user: "Verified account"
|
||||||
|
disable-animated-mfm: "Disable animated texts in a post"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Draw"
|
drawn: "Draw"
|
||||||
my-turn: "Your turn"
|
my-turn: "Your turn"
|
||||||
@ -143,23 +141,23 @@ common:
|
|||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
|
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
|
||||||
permission-ask: "This application requires the following permissions:"
|
permission-ask: "This application requires the following permissions:"
|
||||||
account-read: "Viewing account information:"
|
account-read: "View account information."
|
||||||
account-write: "Modify account informations:"
|
account-write: "Modify account information."
|
||||||
note-write: "Post."
|
note-write: "Post."
|
||||||
like-write: "To react to posts."
|
like-write: "React to posts."
|
||||||
following-write: "Follow or unfollow."
|
following-write: "Follow and unfollow."
|
||||||
drive-read: "Read your drive."
|
drive-read: "Read your drive."
|
||||||
drive-write: "Upload/delete files in your drive."
|
drive-write: "Upload/delete files in your drive."
|
||||||
notification-read: "Read your notifications."
|
notification-read: "Read your notifications."
|
||||||
notification-write: "Manage your notifications."
|
notification-write: "Manage your notifications."
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
accept: "Grant access."
|
accept: "Allow access."
|
||||||
auth/views/index.vue:
|
auth/views/index.vue:
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
denied: "Application authorization denied."
|
denied: "Application authorization has been denied."
|
||||||
denied-paragraph: "This application will not access your account."
|
denied-paragraph: "This application will not access your account."
|
||||||
already-authorized: "This application has already been authorized."
|
already-authorized: "This application has already been authorized."
|
||||||
allowed: "Application authorizations allowed.+"
|
allowed: "Application authorizations allowed."
|
||||||
callback-url: "Going back to the application."
|
callback-url: "Going back to the application."
|
||||||
please-go-back: "Please go back to the application."
|
please-go-back: "Please go back to the application."
|
||||||
error: "Session does not exist."
|
error: "Session does not exist."
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "Waiting for {}"
|
waiting-for: "Waiting for {}"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "Surrender"
|
||||||
|
surrendered: "By surrender"
|
||||||
|
is-llotheo: "The lesser one wins(Llotheo)"
|
||||||
|
looped-map: "Looped map"
|
||||||
|
can-put-everywhere: "Can put everywhere"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "Play reversi with your friends!"
|
sub-title: "Play reversi with your friends!"
|
||||||
@ -175,13 +179,13 @@ common/views/components/games/reversi/reversi.index.vue:
|
|||||||
rule: "How to play"
|
rule: "How to play"
|
||||||
rule-desc: "Reversi is a strategy board game for two players, played on an 8×8 uncheckered board. There are sixty-four identical game pieces called disks (often spelled \"discs\"), which are light on one side and dark on the other. Players take turns placing disks on the board with their assigned color facing up. During a play, any disks of the opponent's color that are in a straight line and bounded by the disk just placed and another disk of the current player's color are turned over to the current player's color. The object of the game is to have the majority of disks turned to display your color when the last playable empty square is filled."
|
rule-desc: "Reversi is a strategy board game for two players, played on an 8×8 uncheckered board. There are sixty-four identical game pieces called disks (often spelled \"discs\"), which are light on one side and dark on the other. Players take turns placing disks on the board with their assigned color facing up. During a play, any disks of the opponent's color that are in a straight line and bounded by the disk just placed and another disk of the current player's color are turned over to the current player's color. The object of the game is to have the majority of disks turned to display your color when the last playable empty square is filled."
|
||||||
mode-invite: "Invite"
|
mode-invite: "Invite"
|
||||||
mode-invite-desc: "Invite to the game a user."
|
mode-invite-desc: "Game with a specified user."
|
||||||
invitations: "You received invitation!"
|
invitations: "You’ve got an invitation!"
|
||||||
my-games: "My games"
|
my-games: "My game"
|
||||||
all-games: "All games"
|
all-games: "All games"
|
||||||
enter-username: "Enter username"
|
enter-username: "Enter a username"
|
||||||
game-state:
|
game-state:
|
||||||
ended: "Ended"
|
ended: "Finished"
|
||||||
playing: "In Progress"
|
playing: "In Progress"
|
||||||
common/views/components/games/reversi/reversi.room.vue:
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
settings-of-the-game: "Game settings"
|
settings-of-the-game: "Game settings"
|
||||||
@ -190,20 +194,20 @@ 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 one wins"
|
is-llotheo: "The lesser side wins"
|
||||||
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"
|
||||||
this-game-is-started-soon: "The game will begin soon"
|
this-game-is-started-soon: "The game will begin in seconds"
|
||||||
waiting-for-other: "Waiting for the other party's preparation"
|
waiting-for-other: "Waiting for the opponent"
|
||||||
waiting-for-me: "Waiting for the your preparation"
|
waiting-for-me: "Waiting for the your preparation"
|
||||||
waiting-for-both: "Waiting for yours"
|
waiting-for-both: "Prepareing"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
ready: "Ready"
|
ready: "Ready"
|
||||||
cancel-ready: "Cancel \"Ready\""
|
cancel-ready: "Cancel \"Ready\""
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Unable to connect to the server"
|
title: "Unable to connect to the server"
|
||||||
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please try again later."
|
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please {try again} later."
|
||||||
thanks: "Thank you for using Misskey."
|
thanks: "Thank you for using Misskey."
|
||||||
troubleshoot: "Troubleshoot"
|
troubleshoot: "Troubleshoot"
|
||||||
common/views/components/connect-failed.troubleshooter.vue:
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
@ -222,7 +226,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-server: "Unable to connect to the Misskey server"
|
no-server: "Unable to connect to the Misskey server"
|
||||||
no-server-desc: "The network connection of your device is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down, or under maintenance, please try again later."
|
no-server-desc: "The network connection of your device is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down, or under maintenance, please try again later."
|
||||||
success: "Successfully connected to the Misskey server"
|
success: "Successfully connected to the Misskey server"
|
||||||
success-desc: "It seems to be able to connect. Please reload the page."
|
success-desc: "Looks like we have a connection. Please reload the page."
|
||||||
flush: "Clean cache"
|
flush: "Clean cache"
|
||||||
set-version: "Specify version"
|
set-version: "Specify version"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "There is no further history"
|
no-history: "There is no further history"
|
||||||
resize-form: "Drag to resize"
|
resize-form: "Drag to resize"
|
||||||
new-message: "New message"
|
new-message: "New message"
|
||||||
|
only-one-file-attached: "Only ONE file can be attached to a message."
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Enter message here"
|
input-message-here: "Enter message here"
|
||||||
send: "Send"
|
send: "Send"
|
||||||
attach-from-local: "Attach files from your device"
|
attach-from-local: "Attach files from your device"
|
||||||
attach-from-drive: "Attach files from your Drive"
|
attach-from-drive: "Attach files from your Drive"
|
||||||
|
only-one-file-attached: "Only one file can be attached to the message."
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Read"
|
is-read: "Read"
|
||||||
deleted: "This message has been deleted"
|
deleted: "This message has been deleted"
|
||||||
@ -254,9 +260,9 @@ common/views/components/nav.vue:
|
|||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
favorite: "Favorite this note"
|
favorite: "Favorite this note"
|
||||||
pin: "Pin to your profile page"
|
pin: "Pin to your profile"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
delete-confirm: "Are you sure you want to delete this post?"
|
delete-confirm: "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 '{}'"
|
||||||
@ -266,30 +272,33 @@ common/views/components/poll.vue:
|
|||||||
show-result: "Show results"
|
show-result: "Show results"
|
||||||
voted: "Voted"
|
voted: "Voted"
|
||||||
common/views/components/poll-editor.vue:
|
common/views/components/poll-editor.vue:
|
||||||
no-only-one-choice: "At least two choices are required for this survey."
|
no-only-one-choice: "At least two choices are required"
|
||||||
choice-n: "Choice {}"
|
choice-n: "Choice {}"
|
||||||
remove: "Delete this choice"
|
remove: "Delete the choice"
|
||||||
add: "+ Add a choice"
|
add: "+ Add a choice"
|
||||||
destroy: "Discard the poll"
|
destroy: "Discard the poll"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Express a reaction"
|
choose-reaction: "Send a reaction"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Username"
|
username: "Username"
|
||||||
password: "Password"
|
password: "Password"
|
||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Signing in..."
|
signing-in: "Signing in..."
|
||||||
signin: "Sign in"
|
signin: "Sign in"
|
||||||
|
or: "Or"
|
||||||
|
signin-with-twitter: "Log in with Twitter"
|
||||||
|
login-failed: "Log in failed. Make sure you have entered your correct username and password."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "Username"
|
username: "Username"
|
||||||
checking: "Checking..."
|
checking: "Confirming..."
|
||||||
available: "Available"
|
available: "Available"
|
||||||
unavailable: "Unavailable"
|
unavailable: "Unavailable"
|
||||||
error: "Network error"
|
error: "Network error"
|
||||||
invalid-format: "Only use letters, numbers and -."
|
invalid-format: "letters, numbers and _ are acceptable."
|
||||||
too-short: "Please enter at least 1 character!"
|
too-short: "Should not be blank!"
|
||||||
too-long: "Please enter up to 20 characters."
|
too-long: "Enter within 20 characters."
|
||||||
password: "Password"
|
password: "Password"
|
||||||
password-placeholder: "We recommend more than 8 characters."
|
password-placeholder: "More than 8 characters are recommended."
|
||||||
weak-password: "Weak password"
|
weak-password: "Weak password"
|
||||||
normal-password: "Fair password"
|
normal-password: "Fair password"
|
||||||
strong-password: "Strong password"
|
strong-password: "Strong password"
|
||||||
@ -319,9 +328,9 @@ common/views/components/uploader.vue:
|
|||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
public: "Public"
|
public: "Public"
|
||||||
home: "Home"
|
home: "Home"
|
||||||
home-desc: "Post to the home timeline only"
|
home-desc: "Post to Home only"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
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"
|
private: "Private"
|
||||||
@ -332,14 +341,14 @@ common/views/widgets/broadcast.vue:
|
|||||||
next: "Next"
|
next: "Next"
|
||||||
common/views/widgets/calendar.vue:
|
common/views/widgets/calendar.vue:
|
||||||
year: "Year {}"
|
year: "Year {}"
|
||||||
month: "Month {}"
|
month: "{},"
|
||||||
day: "Day {}"
|
day: "{}"
|
||||||
today: "Today: "
|
today: "Today: "
|
||||||
this-month: "This month: "
|
this-month: "This month: "
|
||||||
this-year: "This year: "
|
this-year: "This year: "
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Request for donations"
|
title: "Request for donations"
|
||||||
text: "To keep Misskey up and running, we have to spend money on our domain name, the server costs and so on. Since we don't receive money from advertisements, we count on donations from all of you. If you're interested in helping, contact {}. Thank you for your contribution!"
|
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"
|
||||||
@ -380,14 +389,25 @@ common/views/widgets/tips.vue:
|
|||||||
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: "Mayu is so cute with its eyebrows."
|
||||||
tips-line24: "Misskey started in 2014."
|
tips-line24: "Misskey has been running since 2014."
|
||||||
tips-line25: "You can receive notification even if Misskey is not open in a compatible browser."
|
tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open"
|
||||||
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"
|
||||||
follow: "Follow"
|
follow: "Follow"
|
||||||
request-pending: "Pending follow request"
|
request-pending: "Pending follow request"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "Crop the part that appears as a banner"
|
||||||
|
banner: "Banner"
|
||||||
|
uploading-banner: "Uploading a new banner"
|
||||||
|
banner-updated: "Successfully updated the banner"
|
||||||
|
choose-banner: "Choose the banner"
|
||||||
|
avatar-crop-title: "Crop the part that appears as an avatar"
|
||||||
|
avatar: "Avatar"
|
||||||
|
uploading-avatar: "Uploading a new avatar"
|
||||||
|
avatar-updated: "Successfully updated the avatar"
|
||||||
|
choose-avatar: "Select an image for the avatar"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -435,7 +455,7 @@ desktop/views/components/drive.file.vue:
|
|||||||
rename-file: "Rename file"
|
rename-file: "Rename file"
|
||||||
input-new-file-name: "Enter new name"
|
input-new-file-name: "Enter new name"
|
||||||
copied: "Copied"
|
copied: "Copied"
|
||||||
copied-url-to-clipboard: "Copied URL to clipboard"
|
copied-url-to-clipboard: "URL has been copied to clipboard"
|
||||||
desktop/views/components/drive.folder.vue:
|
desktop/views/components/drive.folder.vue:
|
||||||
unable-to-process: "The operation could not be completed."
|
unable-to-process: "The operation could not be completed."
|
||||||
circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move."
|
circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move."
|
||||||
@ -451,7 +471,7 @@ desktop/views/components/drive.nav-folder.vue:
|
|||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
load-more: "Load more"
|
load-more: "Load more"
|
||||||
empty-draghover: "Drop it here, don't I look cute?"
|
empty-draghover: "Drop it here! Yep, cuz you know I'm cute, right?"
|
||||||
empty-drive: "Your media storage is empty"
|
empty-drive: "Your media storage is empty"
|
||||||
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
|
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
|
||||||
empty-folder: "This folder is empty"
|
empty-folder: "This folder is empty"
|
||||||
@ -461,7 +481,7 @@ desktop/views/components/drive.vue:
|
|||||||
url-upload: "Upload from a URL"
|
url-upload: "Upload from a URL"
|
||||||
url-of-file: "URL of file you want to upload"
|
url-of-file: "URL of file you want to upload"
|
||||||
url-upload-requested: "Upload requested"
|
url-upload-requested: "Upload requested"
|
||||||
may-take-time: "It may take some time for the upload to complete."
|
may-take-time: "It may take some time until the upload is complete."
|
||||||
create-folder: "Create a folder"
|
create-folder: "Create a folder"
|
||||||
folder-name: "Folder name"
|
folder-name: "Folder name"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
@ -469,7 +489,7 @@ desktop/views/components/drive.vue:
|
|||||||
upload: "Upload a file"
|
upload: "Upload a file"
|
||||||
url-upload: "Upload from a URL"
|
url-upload: "Upload from a URL"
|
||||||
desktop/views/components/media-image.vue:
|
desktop/views/components/media-image.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
@ -486,7 +506,7 @@ desktop/views/components/followers.vue:
|
|||||||
desktop/views/components/following-window.vue:
|
desktop/views/components/following-window.vue:
|
||||||
following: "Following {}"
|
following: "Following {}"
|
||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "You don’t follow anyone."
|
empty: "It seems you don't have any following users…"
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "Recommended users:"
|
title: "Recommended users:"
|
||||||
empty: "Couldn't find any recommended users."
|
empty: "Couldn't find any recommended users."
|
||||||
@ -508,8 +528,8 @@ desktop/views/components/messaging-window.vue:
|
|||||||
title: "Messaging"
|
title: "Messaging"
|
||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
more: "Load more conversations"
|
more: "Load more conversations"
|
||||||
private: "This post is private"
|
private: "Post is private"
|
||||||
deleted: "This post has been removed"
|
deleted: "Post has been removed"
|
||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
@ -520,8 +540,10 @@ desktop/views/components/notes.note.vue:
|
|||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
add-reaction: "Add a reaction"
|
add-reaction: "Add a reaction"
|
||||||
detail: "Show details"
|
detail: "Show details"
|
||||||
private: "This post is private"
|
private: "Post is private"
|
||||||
deleted: "The post has been deleted"
|
deleted: "Post has been deleted"
|
||||||
|
hide: "Hide"
|
||||||
|
see-more: "See more"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Loading failed."
|
error: "Loading failed."
|
||||||
retry: "Retry"
|
retry: "Retry"
|
||||||
@ -533,15 +555,15 @@ desktop/views/components/post-form.vue:
|
|||||||
add-visible-user: "+Add a user"
|
add-visible-user: "+Add a user"
|
||||||
attach-location-information: "Attach location information"
|
attach-location-information: "Attach location information"
|
||||||
hide-contents: "Hide contents"
|
hide-contents: "Hide contents"
|
||||||
reply-placeholder: "Reply to this note..."
|
reply-placeholder: "Reply to this post..."
|
||||||
quote-placeholder: "Quote this note..."
|
quote-placeholder: "Quote this Post..."
|
||||||
submit: "Post"
|
submit: "Post"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
posted: "Posted!"
|
posted: "Posted!"
|
||||||
replied: "Replied!"
|
replied: "Replied!"
|
||||||
reposted: "Reposted!"
|
reposted: "Reposted!"
|
||||||
note-failed: "Failed to post the note"
|
note-failed: "Failed to post"
|
||||||
reply-failed: "Failed to reply"
|
reply-failed: "Failed to reply"
|
||||||
renote-failed: "Failed to repost"
|
renote-failed: "Failed to repost"
|
||||||
posting: "Posting"
|
posting: "Posting"
|
||||||
@ -554,11 +576,12 @@ desktop/views/components/post-form.vue:
|
|||||||
recent-tags: "Recent"
|
recent-tags: "Recent"
|
||||||
click-to-tagging: "Click to tagging"
|
click-to-tagging: "Click to tagging"
|
||||||
visibility: "Visibility"
|
visibility: "Visibility"
|
||||||
geolocation-alert: "Your device does not support geolocalization."
|
geolocation-alert: "Your device does not provide location services."
|
||||||
error: "Error"
|
error: "Error"
|
||||||
enter-username: "Please enter a username..."
|
enter-username: "Please enter a username..."
|
||||||
|
annotations: "Annotations for the post (optional)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "New note"
|
note: "New Post"
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
attaches: "{} media attached"
|
attaches: "{} media attached"
|
||||||
uploading-media: "Uploading {} media"
|
uploading-media: "Uploading {} media"
|
||||||
@ -570,9 +593,9 @@ desktop/views/components/renote-form.vue:
|
|||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
reposting: "Reposting..."
|
reposting: "Reposting..."
|
||||||
success: "Reposted!"
|
success: "Reposted!"
|
||||||
failure: "Repost failed"
|
failure: "Failed to Repost"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "Are you sure you want to repost this?"
|
title: "Do you want to Repost it?"
|
||||||
desktop/views/components/settings-window.vue:
|
desktop/views/components/settings-window.vue:
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
desktop/views/components/settings.vue:
|
desktop/views/components/settings.vue:
|
||||||
@ -591,7 +614,7 @@ desktop/views/components/settings.vue:
|
|||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
||||||
auto-popout: "Auto pop-out window"
|
auto-popout: "Auto pop-out window"
|
||||||
auto-popout-desc: "Pops-out a newly opened window (onto a new tab), if possible. This setting is stored in the 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"
|
||||||
api-via-stream: "API request via stream"
|
api-via-stream: "API request via stream"
|
||||||
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
||||||
@ -603,11 +626,13 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
gradient-window-header: "Use gradients on window headers"
|
gradient-window-header: "Use gradients on window headers"
|
||||||
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-reply-target: "Display reply target"
|
show-reply-target: "Display reply target"
|
||||||
show-my-renotes: "Show my reposts in the timeline"
|
show-my-renotes: "Show my renotes in the timeline"
|
||||||
show-renoted-my-notes: "Show my posts that have been shared in the timeline"
|
show-renoted-my-notes: "Show renoted my posts in timelines"
|
||||||
show-maps: "Show the map"
|
show-local-renotes: "Show renoted local posts in timelines"
|
||||||
show-maps-desc: "Automatically show the location on the map attached to this post."
|
show-maps: "Display a map to show the location"
|
||||||
|
show-maps-desc: "If there comes a post contains location information, show a map to display the location."
|
||||||
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."
|
||||||
@ -652,34 +677,34 @@ desktop/views/components/settings.vue:
|
|||||||
third-parties: "Third-parties"
|
third-parties: "Third-parties"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "If you set up 2-step verification, you will not only need a password at sign-in, but also a pre-registered physical device (such as your smartphone), which will improve security."
|
intro: "If you set up 2-step verification, you will not only need a password at sign-in, but also a pre-registered physical device (such as your smartphone), which will improve security."
|
||||||
detail: "See details..."
|
detail: "Details…"
|
||||||
url: "https://www.google.com/landing/2step/"
|
url: "https://www.google.com/landing/2step/"
|
||||||
caution: "If you lose access to your device, you won't be able to connect to Misskey anymore!"
|
caution: "If you lose access to your registered device, you won't be able to connect to Misskey anymore!"
|
||||||
register: "Register a device"
|
register: "Register a device"
|
||||||
already-registered: "A device is already registered"
|
already-registered: "This device is already registered"
|
||||||
unregister: "Disable"
|
unregister: "Unregister"
|
||||||
unregistered: "Two-factor authentication has been disabled."
|
unregistered: "Two-factor authentication has been disabled."
|
||||||
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"
|
||||||
scan: "And then, scan the QR code:"
|
scan: "And then, scan the QR code:"
|
||||||
done: "Please enter the token displaying on your device:"
|
done: "Please enter the token displayed on your device:"
|
||||||
submit: "Submit"
|
submit: "Submit"
|
||||||
success: "Settings saved!"
|
success: "Settings saved!"
|
||||||
failed: "Failed to setup. Please ensure that the token is correct."
|
failed: "Failed to setup. Please ensure that the token is correct."
|
||||||
info: "From now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey."
|
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
|
||||||
desktop/views/components/settings.api.vue:
|
desktop/views/components/settings.api.vue:
|
||||||
intro: "To access the API, set this token as the key 'i' of request parameters."
|
intro: "To access the API, set this token as the key 'i' of request parameters."
|
||||||
caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
|
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
|
||||||
regeneration-of-token: "In the unlikely event that this token leaks out, you can regenerate it."
|
regeneration-of-token: "If your token gets leaked, you can regenerate it."
|
||||||
regenerate-token: "Regenerate the token"
|
regenerate-token: "Regenerate the token"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Please enter the password"
|
enter-password: "Please enter the password"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "No linked applications"
|
no-apps: "No linked applications"
|
||||||
desktop/views/components/settings.drive.vue:
|
desktop/views/components/settings.drive.vue:
|
||||||
max: "Max "
|
max: "Max"
|
||||||
in-use: " in use."
|
in-use: "In use"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "No muted users"
|
no-users: "No muted users"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
@ -691,18 +716,18 @@ desktop/views/components/settings.password.vue:
|
|||||||
changed: "Password updated"
|
changed: "Password updated"
|
||||||
desktop/views/components/settings.profile.vue:
|
desktop/views/components/settings.profile.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
choice-avatar: "Choose an image"
|
choice-avatar: "Select an image"
|
||||||
name: "Name"
|
name: "Name"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
save: "Update profile"
|
save: "Update profile"
|
||||||
locked-account: "Protect your account"
|
locked-account: "Protect your account"
|
||||||
is-locked: "Make a note private"
|
is-locked: "Make your posts private"
|
||||||
other: "Other"
|
other: "Other"
|
||||||
is-bot: "This account is a Bot"
|
is-bot: "This account is a Bot"
|
||||||
is-cat: "This account is a Cat"
|
is-cat: "This account is a Cat"
|
||||||
profile-updated: "Profile updated"
|
profile-updated: "Your profile has been updated"
|
||||||
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"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "Lists"
|
list: "Lists"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Welcome back,"
|
welcome-back: "Welcome back,"
|
||||||
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Your profile"
|
profile: "Your profile"
|
||||||
drive: "Media storage"
|
drive: "Media storage"
|
||||||
@ -745,7 +771,8 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
reject: "Reject"
|
reject: "Reject"
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "User lists"
|
title: "User lists"
|
||||||
create-list: "Create new list"
|
create-list: "Create list"
|
||||||
|
list-name: "List name"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Posts"
|
notes: "Posts"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "Dashboard"
|
||||||
|
drive: "Drive"
|
||||||
|
users: "Users"
|
||||||
|
update: "Updates"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "Dashboard"
|
||||||
|
all-users: "All Users"
|
||||||
|
original-users: "Users on this instance"
|
||||||
|
all-notes: "All Posts"
|
||||||
|
original-notes: "Posts on this instance"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "Suspend a user"
|
||||||
|
suspend: "Suspend"
|
||||||
|
suspended: "Successfully suspended."
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "Unsuspend users"
|
||||||
|
unsuspend: "Unsuspend"
|
||||||
|
unsuspended: "The user has successfully unsuspended."
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Only media posts"
|
is-media-only: "Only media posts"
|
||||||
is-media-view: "Media view"
|
is-media-view: "Media view"
|
||||||
@ -773,7 +819,7 @@ desktop/views/pages/welcome.vue:
|
|||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
signin: "Log In"
|
signin: "Log In"
|
||||||
signup: "Sign up"
|
signup: "Sign up"
|
||||||
signin-button: "Log in"
|
signin-button: "Logging in..."
|
||||||
signup-button: "Sign up"
|
signup-button: "Sign up"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
@ -784,35 +830,35 @@ desktop/views/pages/favorites.vue:
|
|||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "Customize home layout"
|
title: "Customize home layout"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "Previous note"
|
prev: "Previous post"
|
||||||
next: "Next note"
|
next: "Next post"
|
||||||
desktop/views/pages/selectdrive.vue:
|
desktop/views/pages/selectdrive.vue:
|
||||||
title: "Choose file(s)"
|
title: "Choose file(s)"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
upload: "Upload files from your device"
|
upload: "Upload files from your device"
|
||||||
desktop/views/pages/search.vue:
|
desktop/views/pages/search.vue:
|
||||||
not-available: "The search function can not be used."
|
not-available: "The search feature is not available for now."
|
||||||
not-found: "No posts were found for '{}'"
|
not-found: "No posts were found for '{}'"
|
||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "Share with {}."
|
share-with: "Share with {}."
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "No posts \"{}\" found."
|
no-posts-found: "No posts contains \"{}\" found."
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "User"
|
users: "User"
|
||||||
add-user: "Add a user"
|
add-user: "Add a user"
|
||||||
username: "Username"
|
username: "Username"
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "Followers you know"
|
title: "Followers you may know"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No followers you know"
|
no-users: "No followers you know"
|
||||||
desktop/views/pages/user/user.friends.vue:
|
desktop/views/pages/user/user.friends.vue:
|
||||||
title: "Frequent mentions"
|
title: "Frequent mentions"
|
||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-users: "No users"
|
no-users: "No frequent mentions"
|
||||||
desktop/views/pages/user/user.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
is-remote: "This user is a remote user, so the information about them that you see here is not complete. "
|
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
||||||
view-remote: "See their complete profile"
|
view-remote: "See their complete profile"
|
||||||
desktop/views/pages/user/user.home.vue:
|
desktop/views/pages/user/user.home.vue:
|
||||||
last-used-at: "Last active:"
|
last-used-at: "Last active:"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Mute"
|
mute: "Mute"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Unmute"
|
unmute: "Unmute"
|
||||||
|
push-to-a-list: "Add to list"
|
||||||
|
list-pushed: "Successfully added {user} to {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "Notes"
|
posts: "Notes"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@ -835,18 +883,18 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
is-bot: "This account is a Bot"
|
is-bot: "This account is a Bot"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Posts"
|
default: "Posts"
|
||||||
with-replies: "Notes and replies"
|
with-replies: "Posts and replies"
|
||||||
with-media: "Media"
|
with-media: "Media"
|
||||||
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: "Messaging"
|
title: "Message"
|
||||||
desktop/views/widgets/notifications.vue:
|
desktop/views/widgets/notifications.vue:
|
||||||
title: "Notifications"
|
title: "Notifications"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
desktop/views/widgets/polls.vue:
|
desktop/views/widgets/polls.vue:
|
||||||
title: "Polls"
|
title: "Polls"
|
||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
nothing: "Nothing"
|
nothing: "No polls found!"
|
||||||
desktop/views/widgets/post-form.vue:
|
desktop/views/widgets/post-form.vue:
|
||||||
title: "Post"
|
title: "Post"
|
||||||
note: "Post"
|
note: "Post"
|
||||||
@ -856,11 +904,11 @@ desktop/views/widgets/profile.vue:
|
|||||||
desktop/views/widgets/trends.vue:
|
desktop/views/widgets/trends.vue:
|
||||||
title: "Trend"
|
title: "Trend"
|
||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
nothing: "Nothing"
|
nothing: "No trends found!"
|
||||||
desktop/views/widgets/users.vue:
|
desktop/views/widgets/users.vue:
|
||||||
title: "Recommended users"
|
title: "Recommended users"
|
||||||
refresh: "refresh"
|
refresh: "refresh"
|
||||||
no-one: "No one"
|
no-one: "Anyone!"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
drive: "Media storage"
|
drive: "Media storage"
|
||||||
used: "used"
|
used: "used"
|
||||||
@ -890,7 +938,7 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
@ -901,7 +949,7 @@ mobile/views/components/follow-button.vue:
|
|||||||
request-pending: "Pending follow request"
|
request-pending: "Pending follow request"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Let's follow users"
|
title: "Let's follow them"
|
||||||
empty: "Featured user was not found."
|
empty: "Featured user was not found."
|
||||||
fetching: "Loading"
|
fetching: "Loading"
|
||||||
refresh: "See more"
|
refresh: "See more"
|
||||||
@ -932,7 +980,7 @@ mobile/views/components/notes.vue:
|
|||||||
failed: "Failed to load"
|
failed: "Failed to load"
|
||||||
retry: "Retry"
|
retry: "Retry"
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
more: "More"
|
more: "See more"
|
||||||
empty: "No notifications"
|
empty: "No notifications"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "Add a user"
|
add-visible-user: "Add a user"
|
||||||
@ -941,7 +989,7 @@ mobile/views/components/post-form.vue:
|
|||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
quote-placeholder: "Quote this post... (optional)"
|
quote-placeholder: "Quote this post... (optional)"
|
||||||
reply-placeholder: "Reply to this note..."
|
reply-placeholder: "Reply to this note..."
|
||||||
cw-placeholder: "Comments about content (optional)"
|
cw-placeholder: "Comments for the post (optional)"
|
||||||
location-alert: "Your device does not provide location services"
|
location-alert: "Your device does not provide location services"
|
||||||
error: "Error"
|
error: "Error"
|
||||||
username-prompt: "Enter user name"
|
username-prompt: "Enter user name"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "More"
|
load-more: "More"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "Welcome back, "
|
welcome-back: "Welcome back, "
|
||||||
|
adjective: "Sir"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
@ -966,12 +1015,12 @@ mobile/views/components/ui.nav.vue:
|
|||||||
user-lists: "Lists"
|
user-lists: "Lists"
|
||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
game: "Games"
|
game: "Games"
|
||||||
darkmode: "Dark mode"
|
darkmode: "Dark theme"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
about: "About Misskey"
|
about: "About Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "It seems this user hasn't posted anything yet."
|
no-notes: "It seems this user hasn't posted anything yet."
|
||||||
no-notes-with-media: "There are no notes with media attachments"
|
no-notes-with-media: "There are no posts attaching media"
|
||||||
load-more: "More"
|
load-more: "More"
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "All"
|
all: "All"
|
||||||
@ -986,7 +1035,7 @@ mobile/views/pages/drive.vue:
|
|||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
more: "Load more"
|
more: "Load more"
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "Let's start! 📦"
|
lets-start: "Your account is now ready! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Followers of {}"
|
followers-of: "Followers of {}"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@ -1002,7 +1051,9 @@ mobile/views/pages/welcome.vue:
|
|||||||
signup: "Sign up"
|
signup: "Sign up"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "Dashboard"
|
dashboard: "Dashboard"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping."
|
||||||
|
add-widget: "Add"
|
||||||
|
customization-tips: "Customization tips"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "Activity"
|
activity: "Activity"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Search"
|
search: "Search"
|
||||||
empty: "No posts were found for '{}'"
|
empty: "No posts were found for '{}'"
|
||||||
|
not-found: "No posts were found for \"{}\"."
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Choose files"
|
select-file: "Choose files"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1052,19 +1104,20 @@ mobile/views/pages/settings.vue:
|
|||||||
specify-language: "Select your language"
|
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 under limited internet"
|
i-am-under-limited-internet: "I'm in limited bandwidth"
|
||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
show-reply-target: "Show reply target"
|
show-reply-target: "Show reply target"
|
||||||
show-my-renotes: "Show my reposts"
|
show-my-renotes: "Show my reposts"
|
||||||
show-renoted-my-notes: "Show my reposted posts"
|
show-renoted-my-notes: "Show renoted my posts"
|
||||||
|
show-local-renotes: "Show renoted local posts"
|
||||||
post-style: "Post design"
|
post-style: "Post design"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Smart"
|
post-style-smart: "Smart"
|
||||||
behavior: "Behavior"
|
behavior: "Behavior"
|
||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
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 high-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: "Twitter integration"
|
||||||
twitter-connect: "Connect to your Twitter account"
|
twitter-connect: "Connect to your Twitter account"
|
||||||
@ -1085,13 +1138,13 @@ mobile/views/pages/user.vue:
|
|||||||
follows-you: "Follows you"
|
follows-you: "Follows you"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
followers: "Followers"
|
followers: "Followers"
|
||||||
notes: "Notes"
|
notes: "Posts"
|
||||||
overview: "Overview"
|
overview: "Overview"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
media: "Media"
|
media: "Media"
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
is-remote: "This user is a remote user, so the information you see here is not complete."
|
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
||||||
view-remote: "See their complete profile"
|
view-remote: "See his/her complete profile"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Recent notes"
|
recent-notes: "Recent notes"
|
||||||
images: "Images"
|
images: "Images"
|
||||||
@ -1114,8 +1167,8 @@ mobile/views/pages/user/home.photos.vue:
|
|||||||
loading: "Loading"
|
loading: "Loading"
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Did you find an error or do you want to contribute to the documentation? "
|
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?"
|
||||||
edit-this-page-on-github-link: "Edit this page on Github!"
|
edit-this-page-on-github-link: "Edit this page at GitHub!"
|
||||||
api:
|
api:
|
||||||
entities:
|
entities:
|
||||||
properties: "Properties"
|
properties: "Properties"
|
||||||
@ -1126,12 +1179,14 @@ docs:
|
|||||||
require-credential: "This endpoint requires the authentication information."
|
require-credential: "This endpoint requires the authentication information."
|
||||||
require-permission: "This endpoint requires {permission} permission."
|
require-permission: "This endpoint requires {permission} permission."
|
||||||
has-limit: "There is a rate limit."
|
has-limit: "There is a rate limit."
|
||||||
duration-limit: "You can't request when a frequency of a request in during {duration} milliseconds exceeds {max} times."
|
duration-limit: "If you have sent your requests more than {max} times in {duration} milliseconds, you will be unable to send more requests."
|
||||||
min-interval-limit: "You can't request before {interval} milliseconds have passed since the previous request."
|
min-interval-limit: "If {interval} milliseconds haven't passed since the last request, you can't send a request."
|
||||||
show-src: "You can view the source code for this endpoint."
|
show-src: "You can view the source code for this endpoint."
|
||||||
show-src-link: "See the code on GitHub"
|
show-src-link: "See the code on GitHub"
|
||||||
generated: "This doc is generated by an API definition."
|
generated: "This document is generated by the API definition."
|
||||||
props:
|
props:
|
||||||
name: "Name"
|
name: "Name"
|
||||||
type: "Type"
|
type: "Type"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "Manage apps"
|
||||||
|
231
locales/es.yml
231
locales/es.yml
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
|
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
|
||||||
application-authorization: "Autorizaciones de la aplicación."
|
application-authorization: "Autorizaciones de la aplicación."
|
||||||
close: "Cerrar"
|
close: "Cerrar"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "¡Listo!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Consejos de personalización"
|
title: "Consejos de personalización"
|
||||||
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
|
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "Notificado por {}:"
|
notified-by: "Notificado por {}:"
|
||||||
reply-from: "Respuesta de {}:"
|
reply-from: "Respuesta de {}:"
|
||||||
quoted-by: "Citado por {}:"
|
quoted-by: "Citado por {}:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "Desconocido"
|
unknown: "Desconocido"
|
||||||
future: "Futuro"
|
future: "Futuro"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "Hace {} semana(s)"
|
weeks_ago: "Hace {} semana(s)"
|
||||||
months_ago: "Hace {} mes(es)"
|
months_ago: "Hace {} mes(es)"
|
||||||
years_ago: "Hace {} año(s)"
|
years_ago: "Hace {} año(s)"
|
||||||
|
month-and-day: "{day} de {month}"
|
||||||
trash: "Papelera"
|
trash: "Papelera"
|
||||||
date:
|
|
||||||
full-year: "Año"
|
|
||||||
month: "Mes"
|
|
||||||
day: "Día"
|
|
||||||
hours: "horas"
|
|
||||||
minutes: "minutos"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "domingo"
|
sunday: "domingo"
|
||||||
monday: "lunes"
|
monday: "lunes"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "felicidades"
|
congrats: "felicidades"
|
||||||
angry: "enfadado"
|
angry: "enfadado"
|
||||||
confused: "confundido"
|
confused: "confundido"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Chafado"
|
pudding: "Chafado"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "¿Qué haces?"
|
a: "¿Qué haces?"
|
||||||
@ -87,7 +84,8 @@ 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"
|
||||||
verified-user: "Usuario verificado"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Empatado"
|
drawn: "Empatado"
|
||||||
my-turn: "Mi turno"
|
my-turn: "Mi turno"
|
||||||
@ -168,21 +166,27 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "Esperando por {}"
|
waiting-for: "Esperando por {}"
|
||||||
cancel: "Cancelar"
|
cancel: "Cancelar"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "Rendirse"
|
||||||
|
surrendered: "Por rendirse"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "¡Juega Reversi con tus amigos!"
|
||||||
invite: "招待"
|
invite: "Invitar"
|
||||||
rule: "遊び方"
|
rule: "Cómo jugar"
|
||||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||||
mode-invite: "招待"
|
mode-invite: "Invitar"
|
||||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
mode-invite-desc: "Invitar un usuario al juego."
|
||||||
invitations: "対局の招待があります!"
|
invitations: "¡Has recibido una invitación!"
|
||||||
my-games: "自分の対局"
|
my-games: "Mis juegos"
|
||||||
all-games: "みんなの対局"
|
all-games: "Todos los juegos"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "Ingresar nombre de usuario"
|
||||||
game-state:
|
game-state:
|
||||||
ended: "終了"
|
ended: "Finalizado"
|
||||||
playing: "進行中"
|
playing: "En progreso"
|
||||||
common/views/components/games/reversi/reversi.room.vue:
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
settings-of-the-game: "Configuración de juego"
|
settings-of-the-game: "Configuración de juego"
|
||||||
choose-map: "Elije un mapa"
|
choose-map: "Elije un mapa"
|
||||||
@ -194,7 +198,7 @@ common/views/components/games/reversi/reversi.room.vue:
|
|||||||
looped-map: "Mapa en bucle"
|
looped-map: "Mapa en bucle"
|
||||||
can-put-everywhere: "Puedes colocar donde quieras"
|
can-put-everywhere: "Puedes colocar donde quieras"
|
||||||
settings-of-the-bot: "Configuración de bot"
|
settings-of-the-bot: "Configuración de bot"
|
||||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
this-game-is-started-soon: "El juego comenzará pronto"
|
||||||
waiting-for-other: "Esperando a que se prepare el adversario"
|
waiting-for-other: "Esperando a que se prepare el adversario"
|
||||||
waiting-for-me: "Esperando por la preparación"
|
waiting-for-me: "Esperando por la preparación"
|
||||||
waiting-for-both: "Esperando por ti"
|
waiting-for-both: "Esperando por ti"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "El historial se ha acabado"
|
no-history: "El historial se ha acabado"
|
||||||
resize-form: "Arrastra para redimensionar"
|
resize-form: "Arrastra para redimensionar"
|
||||||
new-message: "Nuevo mensaje"
|
new-message: "Nuevo mensaje"
|
||||||
|
only-one-file-attached: "Un único archivo se puede conectar al mensaje"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Escribe el mensaje aquí"
|
input-message-here: "Escribe el mensaje aquí"
|
||||||
send: "Enviar"
|
send: "Enviar"
|
||||||
attach-from-local: "Adjunta ficheros desde tu PC"
|
attach-from-local: "Adjunta ficheros desde tu PC"
|
||||||
attach-from-drive: "Adjunta ficheros desde tu disco"
|
attach-from-drive: "Adjunta ficheros desde tu disco"
|
||||||
|
only-one-file-attached: "Un único archivo se puede conectar al mensaje"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Leer"
|
is-read: "Leer"
|
||||||
deleted: "El mensaje se ha borrado"
|
deleted: "El mensaje se ha borrado"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "Identificador"
|
token: "Identificador"
|
||||||
signing-in: "Entrando..."
|
signing-in: "Entrando..."
|
||||||
signin: "Entra"
|
signin: "Entra"
|
||||||
|
or: "O"
|
||||||
|
signin-with-twitter: "Ingresar con Twitter"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "Usuario"
|
username: "Usuario"
|
||||||
checking: "Comprobando..."
|
checking: "Comprobando..."
|
||||||
@ -373,46 +382,57 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line9: "Misskey está hecho bajo licencia AGPLv3"
|
tips-line9: "Misskey está hecho bajo licencia AGPLv3"
|
||||||
tips-line10: "Usando el accesorio de Máquina del Tiempo puedes encontrar publicaciones antiguas"
|
tips-line10: "Usando el accesorio de Máquina del Tiempo puedes encontrar publicaciones antiguas"
|
||||||
tips-line11: "Puedes resaltar publicaciones en la página de usuario haciendo click en \"...\""
|
tips-line11: "Puedes resaltar publicaciones en la página de usuario haciendo click en \"...\""
|
||||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
tips-line13: "Todos los archivos añadidos a la publicación se han guardado en tu unidad."
|
||||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
tips-line14: "Cuando personalizas el inicio puedas dar click derecho a un accesorio y cambiar el diseño."
|
||||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
tips-line17: "Al colocar ** delante y luego del texto, lo estarás destacando en negrillas"
|
||||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador"
|
||||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido."
|
||||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
tips-line21: "También puedes usar la API para desarrollar tus propios bots."
|
||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "Mayu is tan bonito con sus cejas."
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskey inició en 2014."
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible."
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "Autenticado como {}"
|
||||||
following: "フォロー中"
|
following: "Siguiendo"
|
||||||
follow: "フォロー"
|
follow: "Seguir"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "Solicitud pendiente"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "Solicitar suscripción"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "Corta la parte que aparece como un banner"
|
||||||
|
banner: "Banner"
|
||||||
|
uploading-banner: "Cargando un nuevo banner"
|
||||||
|
banner-updated: "Banner actualizado"
|
||||||
|
choose-banner: "Escoge un banner"
|
||||||
|
avatar-crop-title: "Corta la parte que aparece como un avatar"
|
||||||
|
avatar: "Avatar"
|
||||||
|
uploading-avatar: "Cargando un nuevo avatar"
|
||||||
|
avatar-updated: "Avatar actualizado"
|
||||||
|
choose-avatar: "Escoge una imagen de avatar"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Negro ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Azul ... Notas"
|
||||||
replies: "Red ... Replies"
|
replies: "Rojo ... Respuestas"
|
||||||
renotes: "Green ... Renotes"
|
renotes: "Verde ... Republicaciones"
|
||||||
desktop/views/components/activity.vue:
|
desktop/views/components/activity.vue:
|
||||||
title: "アクティビティ"
|
title: "Actividad"
|
||||||
toggle: "表示を切り替え"
|
toggle: "Alternar vistas"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{1} / {2}"
|
||||||
prev: "前の月"
|
prev: "Mes anterior"
|
||||||
next: "次の月"
|
next: "Próximo mes"
|
||||||
go: "クリックして時間遡行"
|
go: "Click para navegar"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "ファイル選択中"
|
choose-file: "Escoger archivos"
|
||||||
upload: "PCからドライブにファイルをアップロード"
|
upload: "Cargar archivos de tu dispositivo"
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
ok: "決定"
|
ok: "OK"
|
||||||
choose-prompt: "ファイルを選択"
|
choose-prompt: "Escoger archivos"
|
||||||
desktop/views/components/choose-folder-from-drive-window.vue:
|
desktop/views/components/choose-folder-from-drive-window.vue:
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
ok: "決定"
|
ok: "OK"
|
||||||
choose-prompt: "Escoge una Carpeta"
|
choose-prompt: "Escoge una Carpeta"
|
||||||
desktop/views/components/crop-window.vue:
|
desktop/views/components/crop-window.vue:
|
||||||
skip: "クロップをスキップ"
|
skip: "Ignorar el cortado"
|
||||||
cancel: "Cancelar"
|
cancel: "Cancelar"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
desktop/views/components/drive-window.vue:
|
desktop/views/components/drive-window.vue:
|
||||||
@ -423,8 +443,8 @@ desktop/views/components/drive.file.vue:
|
|||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Renombrar"
|
rename: "Renombrar"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "Marcar como 'sensible'"
|
||||||
unmark-as-sensitive: "閲覧注意を解除"
|
unmark-as-sensitive: "Desmarcar como 'sensible'"
|
||||||
copy-url: "Copia la URL"
|
copy-url: "Copia la URL"
|
||||||
download: "Descargar"
|
download: "Descargar"
|
||||||
else-files: "Otros"
|
else-files: "Otros"
|
||||||
@ -469,8 +489,8 @@ desktop/views/components/drive.vue:
|
|||||||
upload: "Subir fichero"
|
upload: "Subir fichero"
|
||||||
url-upload: "Subir desde una URL"
|
url-upload: "Subir desde una URL"
|
||||||
desktop/views/components/media-image.vue:
|
desktop/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Mostrar detalles"
|
detail: "Mostrar detalles"
|
||||||
private: "Esta publicación es privada"
|
private: "Esta publicación es privada"
|
||||||
deleted: "Esta publicación ha sido borrada"
|
deleted: "Esta publicación ha sido borrada"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Error al cargar."
|
error: "Error al cargar."
|
||||||
retry: "Reintentar"
|
retry: "Reintentar"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
||||||
error: "Error"
|
error: "Error"
|
||||||
enter-username: "Por favor escribe un nombre de usuario..."
|
enter-username: "Por favor escribe un nombre de usuario..."
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nota nueva"
|
note: "Nota nueva"
|
||||||
reply: "Responder"
|
reply: "Responder"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Usar iconos circulares"
|
circle-icons: "Usar iconos circulares"
|
||||||
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
||||||
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-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -634,26 +659,26 @@ desktop/views/components/settings.vue:
|
|||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
update-checking: "アップデートを確認中"
|
update-checking: "アップデートを確認中"
|
||||||
do-update: "アップデートを確認"
|
do-update: "Chequear por actualizaciones"
|
||||||
update-settings: "詳細設定"
|
update-settings: "Configuración avanzada"
|
||||||
prevent-update: "アップデートを延期する(非推奨)"
|
prevent-update: "Posponer actualizaciones (no recomendado)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "Incluso si activas esta configuración, algunas actualizaciones podrían aplicarse. Esta configuración está habilitada sólo para este dispositivo."
|
||||||
no-updates: "利用可能な更新はありません"
|
no-updates: "No hay actualizaciones disponibles"
|
||||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
no-updates-desc: "Tu Misskey está actualizado"
|
||||||
update-available: "新しいバージョンが利用可能です"
|
update-available: "Una nueva versión está disponible"
|
||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "Las actualizaciones se aplicarán cuando actualices la página nuevamente."
|
||||||
advanced-settings: "高度な設定"
|
advanced-settings: "Avanzado"
|
||||||
debug-mode: "デバッグモードを有効にする"
|
debug-mode: "Habilitar modo de depuración"
|
||||||
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
debug-mode-desc: "Esta configuración se ha guardado en el navegador."
|
||||||
experimental: "実験的機能を有効にする"
|
experimental: "Habilitar herramientas experimentales"
|
||||||
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
|
experimental-desc: "Activar esto puede hacer que tu cliente de Misskey se vuelva inestable. La configuración se ha guardado en el navegador."
|
||||||
tools: "ツール"
|
tools: "Herramientas"
|
||||||
task-manager: "タスクマネージャ"
|
task-manager: "Navegador de tareas"
|
||||||
third-parties: "サードパーティ"
|
third-parties: "Servicios externos"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||||
detail: "詳細..."
|
detail: "Ver detalles..."
|
||||||
url: "https://www.google.co.jp/intl/ja/landing/2step/"
|
url: "https://www.google.com/landing/2step/"
|
||||||
caution: "Si pierdes acceso al dispositivo, no podrás conectarte a Misskey."
|
caution: "Si pierdes acceso al dispositivo, no podrás conectarte a Misskey."
|
||||||
register: "Registrar un dispositivo"
|
register: "Registrar un dispositivo"
|
||||||
already-registered: "Un dispositivo ya fue registrado"
|
already-registered: "Un dispositivo ya fue registrado"
|
||||||
@ -686,19 +711,19 @@ desktop/views/components/settings.password.vue:
|
|||||||
reset: "Cambiar contraseña"
|
reset: "Cambiar contraseña"
|
||||||
enter-current-password: "Ingresar contraseña actual"
|
enter-current-password: "Ingresar contraseña actual"
|
||||||
enter-new-password: "Ingresar nueva contraseña"
|
enter-new-password: "Ingresar nueva contraseña"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "Ingresar nueva contraseña de nuevo"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "Las nuevas contraseñas no se corresponden consigo mismas"
|
||||||
changed: "パスワードを変更しました"
|
changed: "Contraseña actualizada"
|
||||||
desktop/views/components/settings.profile.vue:
|
desktop/views/components/settings.profile.vue:
|
||||||
avatar: "アイコン"
|
avatar: "Avatar"
|
||||||
choice-avatar: "画像を選択"
|
choice-avatar: "Escoger una imagen"
|
||||||
name: "名前"
|
name: "Nombre"
|
||||||
location: "場所"
|
location: "Localización"
|
||||||
description: "自己紹介"
|
description: "Descripción"
|
||||||
birthday: "誕生日"
|
birthday: "Fecha de nacimiento"
|
||||||
save: "保存"
|
save: "Perfil actualizado"
|
||||||
locked-account: "アカウントの保護"
|
locked-account: "Protege tu cuenta"
|
||||||
is-locked: "投稿を非公開にする"
|
is-locked: "Crear una nota privada"
|
||||||
other: "その他"
|
other: "その他"
|
||||||
is-bot: "このアカウントはBotです"
|
is-bot: "このアカウントはBotです"
|
||||||
is-cat: "このアカウントはCatです"
|
is-cat: "このアカウントはCatです"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
157
locales/fr.yml
157
locales/fr.yml
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
|
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
|
||||||
application-authorization: "Permissions de l'application"
|
application-authorization: "Permissions de l'application"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
|
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte peut être compromis."
|
||||||
|
got-it: "J'ai compris !"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Conseils de personnalisation"
|
title: "Conseils de personnalisation"
|
||||||
paragraph1: "La personnalisation à la maison vous permet d'ajouter / supprimer, glisser et déposer et réorganiser les widgets."
|
paragraph1: "La personnalisation à la maison vous permet d'ajouter / supprimer, glisser et déposer et réorganiser les widgets."
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "Notifié par {} :"
|
notified-by: "Notifié par {} :"
|
||||||
reply-from: "Réponse de {} :"
|
reply-from: "Réponse de {} :"
|
||||||
quoted-by: "Cité·e par {} :"
|
quoted-by: "Cité·e par {} :"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "inconnu"
|
unknown: "inconnu"
|
||||||
future: "future"
|
future: "future"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "Il y a {} semaines·s"
|
weeks_ago: "Il y a {} semaines·s"
|
||||||
months_ago: "Il y a {} mois"
|
months_ago: "Il y a {} mois"
|
||||||
years_ago: "Il y a {} an·s"
|
years_ago: "Il y a {} an·s"
|
||||||
|
month-and-day: "{month}/{day}"
|
||||||
trash: "Corbeille"
|
trash: "Corbeille"
|
||||||
date:
|
|
||||||
full-year: "Année "
|
|
||||||
month: "Mois"
|
|
||||||
day: "Jour"
|
|
||||||
hours: "heures"
|
|
||||||
minutes: "minutes"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "D"
|
sunday: "D"
|
||||||
monday: "L"
|
monday: "L"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "Félicitations !"
|
congrats: "Félicitations !"
|
||||||
angry: "En colère"
|
angry: "En colère"
|
||||||
confused: "Confus"
|
confused: "Confus"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Que faîtes vous maintenant ?"
|
a: "Que faîtes vous maintenant ?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "Votre token vient d'être généré, vous allez maintenant être déconnecté."
|
my-token-regenerated: "Votre token vient d'être généré, vous allez maintenant être déconnecté."
|
||||||
i-like-sushi: "Je préfère les sushis (au pudding)"
|
i-like-sushi: "Je préfère les sushis (au pudding)"
|
||||||
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
||||||
verified-user: "Utilisateur·trice vérifié·e"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "Désactiver les textes animés dans les publications"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Partie nulle"
|
drawn: "Partie nulle"
|
||||||
my-turn: "C’est votre tour"
|
my-turn: "C’est votre tour"
|
||||||
@ -98,7 +96,7 @@ common:
|
|||||||
black: "Noirs"
|
black: "Noirs"
|
||||||
white: "Blancs"
|
white: "Blancs"
|
||||||
total: "Total"
|
total: "Total"
|
||||||
this-turn: "Tour de {}"
|
this-turn: "Tour {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Horloge analogique"
|
analog-clock: "Horloge analogique"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
@ -116,7 +114,7 @@ common:
|
|||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
users: "Utilisateurs"
|
users: "Utilisateurs"
|
||||||
polls: "Sondages"
|
polls: "Sondages"
|
||||||
post-form: "投稿フォーム"
|
post-form: "Formulaire de publication"
|
||||||
messaging: "Messagerie"
|
messaging: "Messagerie"
|
||||||
server: "Info sur le serveur"
|
server: "Info sur le serveur"
|
||||||
donation: "Dons"
|
donation: "Dons"
|
||||||
@ -156,7 +154,7 @@ auth/views/form.vue:
|
|||||||
accept: "Autoriser l’accès"
|
accept: "Autoriser l’accès"
|
||||||
auth/views/index.vue:
|
auth/views/index.vue:
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
denied: "アプリケーションの連携をキャンセルしました。"
|
denied: "L'autorisation de l'application a été refusée."
|
||||||
denied-paragraph: "Cette application ne va pas accéder à votre compte."
|
denied-paragraph: "Cette application ne va pas accéder à votre compte."
|
||||||
already-authorized: "Cette application est déjà autorisée"
|
already-authorized: "Cette application est déjà autorisée"
|
||||||
allowed: "アプリケーションの連携を許可しました"
|
allowed: "アプリケーションの連携を許可しました"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "En attente de {}"
|
waiting-for: "En attente de {}"
|
||||||
cancel: "Annuler"
|
cancel: "Annuler"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "Se rendre"
|
||||||
|
surrendered: "Par abandon"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "Carte en boucle"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "Jouer à Reversi avec vos amis·es !"
|
sub-title: "Jouer à Reversi avec vos amis·es !"
|
||||||
@ -197,12 +201,12 @@ common/views/components/games/reversi/reversi.room.vue:
|
|||||||
this-game-is-started-soon: "La partie commencera dans quelques instants"
|
this-game-is-started-soon: "La partie commencera dans quelques instants"
|
||||||
waiting-for-other: "En attente que l'adversaire soit prêt"
|
waiting-for-other: "En attente que l'adversaire soit prêt"
|
||||||
waiting-for-me: "En attente que vous soyez prêt"
|
waiting-for-me: "En attente que vous soyez prêt"
|
||||||
waiting-for-both: "準備中"
|
waiting-for-both: "En attente que vous soyez prêt"
|
||||||
cancel: "Annuler"
|
cancel: "Annuler"
|
||||||
ready: "Prêt"
|
ready: "Prêt"
|
||||||
cancel-ready: "準備続行"
|
cancel-ready: "Annuler \"Je suis prêt\""
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Impossible de se connecter au server."
|
title: "Échec de connexion au serveur"
|
||||||
description: "Il y a soit un problème avec votre connexion internet, soit le serveur est hors-ligne ou en maintenance. Veuillez {ressayer} plus tard."
|
description: "Il y a soit un problème avec votre connexion internet, soit le serveur est hors-ligne ou en maintenance. Veuillez {ressayer} plus tard."
|
||||||
thanks: "On vous remercie d'utiliser Misskey."
|
thanks: "On vous remercie d'utiliser Misskey."
|
||||||
troubleshoot: "dépanner"
|
troubleshoot: "dépanner"
|
||||||
@ -212,7 +216,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
checking-network: "Vérification de la connexion au réseau"
|
checking-network: "Vérification de la connexion au réseau"
|
||||||
internet: "Connexion Internet"
|
internet: "Connexion Internet"
|
||||||
checking-internet: "Vérification de la connexion internet"
|
checking-internet: "Vérification de la connexion internet"
|
||||||
server: "Connexion au server"
|
server: "Connexion au serveur"
|
||||||
checking-server: "Vérification de la connexion au serveur"
|
checking-server: "Vérification de la connexion au serveur"
|
||||||
finding: "Recherche d'un problème"
|
finding: "Recherche d'un problème"
|
||||||
no-network: "Aucune connexion au réseau"
|
no-network: "Aucune connexion au réseau"
|
||||||
@ -220,9 +224,9 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-internet: "Aucune connexion internet."
|
no-internet: "Aucune connexion internet."
|
||||||
no-internet-desc: "Veuillez vérifier que vous êtes bien connecté à internet."
|
no-internet-desc: "Veuillez vérifier que vous êtes bien connecté à internet."
|
||||||
no-server: "Impossible de se connecter au serveur"
|
no-server: "Impossible de se connecter au serveur"
|
||||||
no-server-desc: "Votre connexion est OK, mais il a été impossible de vous connecter au serveur de Misskey. Il y a des chances que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard."
|
no-server-desc: "Votre connexion semble correcte, mais il a été impossible de vous connecter au serveur de Misskey. Il se peut que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard."
|
||||||
success: "Connexion au serveur de Misskey reussie!"
|
success: "Connexion au serveur de Misskey réussie !"
|
||||||
success-desc: "La connexion au serveur a été reussie. Veuillez recharger la page."
|
success-desc: "Succès de la connexion au serveur de Misskey. Veuillez recharger la page."
|
||||||
flush: "Vider le cache"
|
flush: "Vider le cache"
|
||||||
set-version: "Choisissez une version"
|
set-version: "Choisissez une version"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "Il n'y a pas plus d'historique"
|
no-history: "Il n'y a pas plus d'historique"
|
||||||
resize-form: "Faites glisser pour redimensionner"
|
resize-form: "Faites glisser pour redimensionner"
|
||||||
new-message: "Nouveau message"
|
new-message: "Nouveau message"
|
||||||
|
only-one-file-attached: "Un seul fichier uniquement peut être joint au message"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Tapez ici votre message"
|
input-message-here: "Tapez ici votre message"
|
||||||
send: "Envoyer"
|
send: "Envoyer"
|
||||||
attach-from-local: "Joindre un fichier depuis votre PC"
|
attach-from-local: "Joindre un fichier depuis votre PC"
|
||||||
attach-from-drive: "Joindre un fichier depuis votre Drive"
|
attach-from-drive: "Joindre un fichier depuis votre Drive"
|
||||||
|
only-one-file-attached: "Un seul fichier uniquement peut être joint au message"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Lu"
|
is-read: "Lu"
|
||||||
deleted: "Ce message a été supprimé"
|
deleted: "Ce message a été supprimé"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Connexion...."
|
signing-in: "Connexion...."
|
||||||
signin: "Se connecter"
|
signin: "Se connecter"
|
||||||
|
or: "Ou"
|
||||||
|
signin-with-twitter: "Se connecter via Twitter"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "Nom d'utilisateur"
|
username: "Nom d'utilisateur"
|
||||||
checking: "Vérification"
|
checking: "Vérification"
|
||||||
@ -286,10 +295,10 @@ common/views/components/signup.vue:
|
|||||||
unavailable: "Non disponible"
|
unavailable: "Non disponible"
|
||||||
error: "Erreur de réseau"
|
error: "Erreur de réseau"
|
||||||
invalid-format: "Utilisez seulement des lettres, nombres et/ou -."
|
invalid-format: "Utilisez seulement des lettres, nombres et/ou -."
|
||||||
too-short: "Veuillez taper au moins un charactère!"
|
too-short: "Veuillez saisir au moins un caractère !"
|
||||||
too-long: "Veuillez entrer au maximum 20 charactères."
|
too-long: "Veuillez entrer au maximum 20 caractères."
|
||||||
password: "Mot de Passe"
|
password: "Mot de Passe"
|
||||||
password-placeholder: "Nous recommendons au moins 8 charactères."
|
password-placeholder: "Nous recommendons au moins 8 caractères."
|
||||||
weak-password: "Faible"
|
weak-password: "Faible"
|
||||||
normal-password: "Moyen"
|
normal-password: "Moyen"
|
||||||
strong-password: "Fort"
|
strong-password: "Fort"
|
||||||
@ -299,21 +308,21 @@ common/views/components/signup.vue:
|
|||||||
password-not-matched: "Les mots de passes ne correspondent pas."
|
password-not-matched: "Les mots de passes ne correspondent pas."
|
||||||
recaptcha: "Vérifier"
|
recaptcha: "Vérifier"
|
||||||
create: "Créer un compte"
|
create: "Créer un compte"
|
||||||
some-error: "La création de compte a échoué. Veuillez ressayer."
|
some-error: "La création du compte a échoué. Veuillez réessayer."
|
||||||
common/views/components/special-message.vue:
|
common/views/components/special-message.vue:
|
||||||
new-year: "Bonne année!"
|
new-year: "Bonne année !"
|
||||||
christmas: "Joyeux Noël!"
|
christmas: "Joyeux Noël !"
|
||||||
common/views/components/stream-indicator.vue:
|
common/views/components/stream-indicator.vue:
|
||||||
connecting: "Connexion en cours"
|
connecting: "Connexion en cours"
|
||||||
reconnecting: "Re-connexion en cours"
|
reconnecting: "Reconnexion en cours"
|
||||||
connected: "Connecté"
|
connected: "Connecté"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/twitter-setting.vue:
|
||||||
description: "Si vous liez votre compte Twitter à votre compte Misskey, vous verrez ensuite votre compte Twitter s'afficher sur votre profile, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Twitter."
|
description: "Si vous liez votre compte Twitter à votre compte Misskey, vous verrez ensuite votre compte Twitter s'afficher sur votre profile, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Twitter."
|
||||||
connected-to: "Vous êtes connecté à ce compte"
|
connected-to: "Vous êtes connecté à ce compte Twitter"
|
||||||
detail: "Detail..."
|
detail: "Détails …"
|
||||||
reconnect: "Reconnecter"
|
reconnect: "Reconnecter"
|
||||||
connect: "Lier votre compte Twitter"
|
connect: "Lier votre compte Twitter"
|
||||||
disconnect: "Deconnecter"
|
disconnect: "Déconnecter"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "En attente"
|
waiting: "En attente"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@ -323,12 +332,12 @@ common/views/components/visibility-chooser.vue:
|
|||||||
followers: "Abonné·e·s"
|
followers: "Abonné·e·s"
|
||||||
followers-desc: "Publier à vos abonné·e·s uniquement"
|
followers-desc: "Publier à vos abonné·e·s uniquement"
|
||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Publier aux utilisateurs mentionnés"
|
specified-desc: "Publier aux utilisateurs·trices mentionné·es"
|
||||||
private: "Privé"
|
private: "Privé"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Récuperation"
|
fetching: "Récuperation"
|
||||||
no-broadcasts: "No broadcasts"
|
no-broadcasts: "Aucune annonce"
|
||||||
have-a-nice-day: "Passez une bonne journée!"
|
have-a-nice-day: "Passez une bonne journée !"
|
||||||
next: "Suivant"
|
next: "Suivant"
|
||||||
common/views/widgets/calendar.vue:
|
common/views/widgets/calendar.vue:
|
||||||
year: "{} année"
|
year: "{} année"
|
||||||
@ -339,13 +348,13 @@ common/views/widgets/calendar.vue:
|
|||||||
this-year: "Cette année :"
|
this-year: "Cette année :"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "Dons"
|
title: "Dons"
|
||||||
text: "Toutes les depences pour couvrir les frais de Misskey sortent directement de notre poche. Nous ne recevons pas d'argent, si vous pouvez nous faire dons d'argent, on vous serait eternellement reconnaissant. Si vous êtes intéressés veuilles contacter {}. Merci pour votre contribution!"
|
text: "Les frais pour faire fonctionner Misskey sortent directement de notre poche. Nous ne recevons pas d'argent issu de la publicité, si vous pouvez nous faire des dons, on vous serait éternellement reconnaissants. Si vous êtes intéressé·es veuillez contacter {}. Merci pour votre contribution !"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Flux de photo"
|
title: "Flux de photo"
|
||||||
no-photos: "Pas de photos"
|
no-photos: "Pas de photos"
|
||||||
common/views/widgets/posts-monitor.vue:
|
common/views/widgets/posts-monitor.vue:
|
||||||
title: "Graph des publications"
|
title: "Graph des publications"
|
||||||
toggle: "Basculer les vues"
|
toggle: "Basculer entre les vues"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Étiquettes"
|
title: "Étiquettes"
|
||||||
count: "{} utilisateurs mentionnés"
|
count: "{} utilisateurs mentionnés"
|
||||||
@ -364,18 +373,18 @@ common/views/widgets/slideshow.vue:
|
|||||||
common/views/widgets/tips.vue:
|
common/views/widgets/tips.vue:
|
||||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
tips-line3: "Vous pouvez glisser et déposer des fichiers sur la fenêtre de la note"
|
||||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
tips-line4: "Vous pouvez coller des images à partir du presse-papier sur la fenêtre de la note"
|
||||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
tips-line5: "Vous pouvez téléverser des fichiers sur le Drive en faisant un glisser/déplacer"
|
||||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||||
tips-line8: "Vous pouvez personnaliser l'Accueil via les paramètres"
|
tips-line8: "Vous pouvez personnaliser l'Accueil via les paramètres"
|
||||||
tips-line9: "Misskey est sous licence AGPLv3"
|
tips-line9: "Misskey est sous licence AGPLv3"
|
||||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
tips-line11: "Vous pouvez épingler des notes sur votre page en appuyant sur \"…\""
|
||||||
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
|
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
|
||||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **"
|
||||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||||
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
|
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "Suivre"
|
follow: "Suivre"
|
||||||
request-pending: "Demande d'abonnement en attente"
|
request-pending: "Demande d'abonnement en attente"
|
||||||
follow-request: "Demande d'abonnement"
|
follow-request: "Demande d'abonnement"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "Découpez la partie qui apparaîtra comme une bannière"
|
||||||
|
banner: "Bannière"
|
||||||
|
uploading-banner: "Téléversement d'une nouvelle bannière"
|
||||||
|
banner-updated: "La bannière est mise à jour"
|
||||||
|
choose-banner: "Choisir une bannière"
|
||||||
|
avatar-crop-title: "Découpez la partie qui apparaîtra dans l'avatar"
|
||||||
|
avatar: "Avatar"
|
||||||
|
uploading-avatar: "Téléversement du nouvel avatar"
|
||||||
|
avatar-updated: "L'avatar est mis à jour"
|
||||||
|
choose-avatar: "Choisir un avatar"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Noirs ... Total"
|
total: "Noirs ... Total"
|
||||||
notes: "Bleu ... Notes"
|
notes: "Bleu ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Afficher les détails"
|
detail: "Afficher les détails"
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
|
hide: "Masquer"
|
||||||
|
see-more: "Voir plus"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Échec du chargement."
|
error: "Échec du chargement."
|
||||||
retry: "Réessayer"
|
retry: "Réessayer"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
||||||
error: "Erreur"
|
error: "Erreur"
|
||||||
enter-username: "Saisir un nom d'utilisateur …"
|
enter-username: "Saisir un nom d'utilisateur …"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nouvelle note"
|
note: "Nouvelle note"
|
||||||
reply: "Répondre"
|
reply: "Répondre"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
|
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications dans le fil"
|
show-my-renotes: "Afficher mes republications dans le fil"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Afficher la carte"
|
show-maps: "Afficher la carte"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "Son"
|
sound: "Son"
|
||||||
@ -717,7 +742,8 @@ desktop/views/components/timeline.vue:
|
|||||||
global: "Global"
|
global: "Global"
|
||||||
list: "Listes"
|
list: "Listes"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Vous êtes de retour !"
|
welcome-back: "Content de vous revoir !"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Votre profil"
|
profile: "Votre profil"
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "Listes de l'utilisateur"
|
title: "Listes de l'utilisateur"
|
||||||
create-list: "Créer une liste"
|
create-list: "Créer une liste"
|
||||||
|
list-name: "Nom de la liste"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Publications"
|
notes: "Publications"
|
||||||
following: "Abonné à"
|
following: "Abonné à"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Les publications médias uniquement"
|
is-media-only: "Les publications médias uniquement"
|
||||||
is-media-view: "Vue média"
|
is-media-view: "Vue média"
|
||||||
@ -797,7 +843,7 @@ desktop/views/pages/search.vue:
|
|||||||
desktop/views/pages/share.vue:
|
desktop/views/pages/share.vue:
|
||||||
share-with: "Partager avec {}"
|
share-with: "Partager avec {}"
|
||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "Pas de message avec un hashtag {} trouvé."
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Utilisateurs"
|
users: "Utilisateurs"
|
||||||
add-user: "Ajouter un utilisateur"
|
add-user: "Ajouter un utilisateur"
|
||||||
@ -822,12 +868,14 @@ desktop/views/pages/user/user.photos.vue:
|
|||||||
no-photos: "Pas de photos"
|
no-photos: "Pas de photos"
|
||||||
desktop/views/pages/user/user.profile.vue:
|
desktop/views/pages/user/user.profile.vue:
|
||||||
follows-you: "Vous suis"
|
follows-you: "Vous suis"
|
||||||
stalk: "ストークする"
|
stalk: "Traquer"
|
||||||
stalking: "ストーキングしています"
|
stalking: "ストーキングしています"
|
||||||
unstalk: "ストーク解除"
|
unstalk: "ストーク解除"
|
||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Enlever la sourdine"
|
unmute: "Enlever la sourdine"
|
||||||
|
push-to-a-list: "Ajouter à la liste"
|
||||||
|
list-pushed: "Vous avez ajouté {user} à la liste {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "Notes"
|
posts: "Notes"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
@ -870,11 +918,11 @@ mobile/views/components/drive.vue:
|
|||||||
load-more: "Charger plus"
|
load-more: "Charger plus"
|
||||||
nothing-in-drive: "Rien"
|
nothing-in-drive: "Rien"
|
||||||
folder-is-empty: "Ce dossier est vide"
|
folder-is-empty: "Ce dossier est vide"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >"
|
||||||
deletion-alert: "Désolé ! La suppression d’un dossier n’est pas encore implémentée."
|
deletion-alert: "Désolé ! La suppression d’un dossier n’est pas encore implémentée."
|
||||||
folder-name: "Nom du dossier"
|
folder-name: "Nom du dossier"
|
||||||
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
|
root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom."
|
||||||
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
|
root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer."
|
||||||
url-prompt: "URL du fichier que vous souhaitez téléverser"
|
url-prompt: "URL du fichier que vous souhaitez téléverser"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
||||||
mobile/views/components/drive-file-detail.vue:
|
mobile/views/components/drive-file-detail.vue:
|
||||||
@ -954,7 +1002,8 @@ mobile/views/components/timeline.vue:
|
|||||||
empty: "Pas de notes"
|
empty: "Pas de notes"
|
||||||
load-more: "Afficher plus"
|
load-more: "Afficher plus"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "Content de vous revoir ! "
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
@ -986,7 +1035,7 @@ mobile/views/pages/drive.vue:
|
|||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
more: "Afficher plus ..."
|
more: "Afficher plus ..."
|
||||||
mobile/views/pages/signup.vue:
|
mobile/views/pages/signup.vue:
|
||||||
lets-start: "📦 始めましょう"
|
lets-start: "Commençons ! 📦"
|
||||||
mobile/views/pages/followers.vue:
|
mobile/views/pages/followers.vue:
|
||||||
followers-of: "Abonné·e·s de {}"
|
followers-of: "Abonné·e·s de {}"
|
||||||
mobile/views/pages/following.vue:
|
mobile/views/pages/following.vue:
|
||||||
@ -997,12 +1046,14 @@ mobile/views/pages/home.vue:
|
|||||||
hybrid: "Social"
|
hybrid: "Social"
|
||||||
global: "Global"
|
global: "Global"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "Pas de message avec un hashtag {} trouvé."
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "S'enregistrer"
|
signup: "S'enregistrer"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "Tableau de bord"
|
dashboard: "Tableau de bord"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "Ajouter"
|
||||||
|
customization-tips: "Conseils de personnalisation"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "Activité"
|
activity: "Activité"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Chercher"
|
search: "Chercher"
|
||||||
empty: "Aucun message trouvé pour '{}' "
|
empty: "Aucun message trouvé pour '{}' "
|
||||||
|
not-found: "Aucun post pour {} n'a été trouvé."
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Choisissez un fichier"
|
select-file: "Choisissez un fichier"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1055,9 +1107,10 @@ mobile/views/pages/settings.vue:
|
|||||||
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications"
|
show-my-renotes: "Afficher mes republications"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "Style de la publication"
|
post-style: "Style de la publication"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Intelligent"
|
post-style-smart: "Intelligent"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "Nom"
|
name: "Nom"
|
||||||
type: "Type"
|
type: "Type"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "Gestion des applications"
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@ -38,16 +39,10 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
|
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
|
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@ -75,6 +70,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
@ -94,7 +90,8 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
@ -182,6 +179,13 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
|
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -254,12 +258,14 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
|
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
|
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
@ -306,8 +312,13 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
|
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
|
invitation-code: "招待コード"
|
||||||
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
available: "利用できます"
|
available: "利用できます"
|
||||||
@ -433,6 +444,18 @@ common/views/pages/follow.vue:
|
|||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -592,6 +615,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
|
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
@ -630,6 +655,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
|
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
@ -684,9 +710,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
|
|
||||||
@ -818,6 +846,7 @@ desktop/views/components/timeline.vue:
|
|||||||
|
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
|
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -850,11 +879,10 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
accept: "承認"
|
accept: "承認"
|
||||||
reject: "拒否"
|
reject: "拒否"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
|
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
@ -874,6 +902,29 @@ desktop/views/components/window.vue:
|
|||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
|
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -959,6 +1010,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
|
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
@ -1114,6 +1167,7 @@ mobile/views/components/timeline.vue:
|
|||||||
|
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
|
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -1175,6 +1229,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
|
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
@ -1223,6 +1279,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
@ -1241,7 +1298,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1327,3 +1385,7 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
|
||||||
|
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
319
locales/ko.yml
319
locales/ko.yml
@ -1,136 +1,134 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "한국어"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskey를 찾아 주셔서 감사합니다. Misskey은 지구에서 태어난 <b>분산 마이크로 블로그 SNS </b> 입니다. Fediverse (다양한 SNS로 구성되는 우주)에 존재하는 다른 SNS와 상호 연결되어 있습니다. 잠시 도시의 번잡함에서 벗어나 새로운 인터넷에 다이브 해 보지 않겠습니까."
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "광고 차단기를 해제하십시오"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "앱의 연계"
|
||||||
close: "閉じる"
|
close: "닫기"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "알았습니다"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "사용자 정의 팁"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "홈 정의는 위젯을 추가 / 삭제하거나 드래그 앤 드롭하여 정렬 할 수 있습니다."
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
paragraph2: "일부 위젯은 <strong>오른쪽 클릭</strong> 하여 모양을 변경할 수 있습니다."
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
paragraph3: "위젯을 삭제하려면 헤더 <strong>\"휴지통\"</strong> 라고 쓰여진 영역으로 끌어다 놓습니다."
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
paragraph4: "사용자 정의를 종료하려면 오른쪽 상단의 '완료' 를 클릭합니다."
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
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: "{}씨가 인용:"
|
||||||
name: "Misskey"
|
|
||||||
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: "{}년전"
|
||||||
trash: "ゴミ箱"
|
month-and-day: "{month}월 {day}일"
|
||||||
date:
|
trash: "휴지통"
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
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: "받으세요"
|
||||||
angry: "おこ"
|
angry: "화냈어"
|
||||||
confused: "こまこまのこまり"
|
confused: "곤란하고 있어"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "지금 어떻게하고있어?"
|
||||||
b: "何かありましたか?"
|
b: "뭔가 있었습니까?"
|
||||||
c: "何をお考えですか?"
|
c: "무엇을 생각하십니까?"
|
||||||
d: "言いたいことは?"
|
d: "말하고 싶은 것은?"
|
||||||
e: "ここに書いてください"
|
e: "여기에 써주십시오"
|
||||||
f: "あなたが書くのを待っています..."
|
f: "당신이 쓸 것을 당신 기다리고 있습니다..."
|
||||||
search: "検索"
|
search: "검색"
|
||||||
delete: "削除"
|
delete: "삭제"
|
||||||
loading: "読み込み中"
|
loading: "로드 중"
|
||||||
ok: "わかった"
|
ok: "확인"
|
||||||
update-available-title: "更新があります"
|
update-available-title: "갱신이 있습니다"
|
||||||
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
|
update-available: "Misskey의 새로운 버전이 있습니다 ({newer} 현재 {current}을 사용 중). 페이지를 다시로드하면 업데이트가 적용됩니다."
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "당신의 토큰이 업데이트되어 있기 때문에 로그 아웃합니다."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "나는(푸딩보다 오히려)스시가 좋아"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "무승부"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "당신의 차례입니다"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "상대의 차례입니다"
|
||||||
turn-of: "{}のターンです"
|
turn-of: "{}의 차례입니다"
|
||||||
past-turn-of: "{}のターン"
|
past-turn-of: "{} 턴"
|
||||||
won: "{}の勝ち"
|
won: "{} 승리"
|
||||||
black: "黒"
|
black: "검정"
|
||||||
white: "白"
|
white: "흰색"
|
||||||
total: "合計"
|
total: "합계"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "{}턴눈"
|
||||||
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: "게시 양식"
|
||||||
messaging: "メッセージ"
|
messaging: "메시지"
|
||||||
server: "サーバー情報"
|
server: "서버 정보"
|
||||||
donation: "寄付のお願い"
|
donation: "기부 요청"
|
||||||
nav: "ナビゲーション"
|
nav: "네비게이션"
|
||||||
tips: "ヒント"
|
tips: "팁"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "해시 태그"
|
||||||
deck:
|
deck:
|
||||||
widgets: "ウィジェット"
|
widgets: "위젯"
|
||||||
home: "ホーム"
|
home: "홈"
|
||||||
local: "ローカル"
|
local: "로컬"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "소셜"
|
||||||
global: "グローバル"
|
global: "글로벌"
|
||||||
notifications: "通知"
|
notifications: "통지"
|
||||||
list: "リスト"
|
list: "목록"
|
||||||
swap-left: "左に移動"
|
swap-left: "左に移動"
|
||||||
swap-right: "右に移動"
|
swap-right: "右に移動"
|
||||||
swap-up: "上に移動"
|
swap-up: "上に移動"
|
||||||
@ -152,10 +150,10 @@ auth/views/form.vue:
|
|||||||
drive-write: "ドライブを操作する。"
|
drive-write: "ドライブを操作する。"
|
||||||
notification-read: "通知を見る。"
|
notification-read: "通知を見る。"
|
||||||
notification-write: "通知を操作する。"
|
notification-write: "通知を操作する。"
|
||||||
cancel: "キャンセル"
|
cancel: "취소"
|
||||||
accept: "アクセスを許可"
|
accept: "アクセスを許可"
|
||||||
auth/views/index.vue:
|
auth/views/index.vue:
|
||||||
loading: "読み込み中"
|
loading: "로드 중"
|
||||||
denied: "アプリケーションの連携をキャンセルしました。"
|
denied: "アプリケーションの連携をキャンセルしました。"
|
||||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||||
already-authorized: "このアプリは既に連携済みです"
|
already-authorized: "このアプリは既に連携済みです"
|
||||||
@ -167,12 +165,18 @@ auth/views/index.vue:
|
|||||||
common/views/components/games/reversi/reversi.vue:
|
common/views/components/games/reversi/reversi.vue:
|
||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "취소"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "기권"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "루프 지도"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
invite: "招待"
|
invite: "초대"
|
||||||
rule: "遊び方"
|
rule: "게임 방법"
|
||||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||||
mode-invite: "招待"
|
mode-invite: "招待"
|
||||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||||
@ -181,26 +185,26 @@ 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: "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: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
@ -227,7 +231,7 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
set-version: "バージョン指定"
|
set-version: "バージョン指定"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "당신"
|
||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
@ -235,13 +239,15 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "전송"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "읽음"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
common/views/components/nav.vue:
|
common/views/components/nav.vue:
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
177
locales/pl.yml
177
locales/pl.yml
@ -11,12 +11,14 @@ common:
|
|||||||
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
|
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "Rozumiem!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Wskazówki o dostosowywaniu"
|
title: "Wskazówki o dostosowywaniu"
|
||||||
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
|
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
|
||||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
paragraph3: "Aby usunąć widżet, <strong>przeciągnij i upuść widżet do części nazwanej „Kosz”</strong> w nagłówku."
|
||||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
paragraph4: "Aby zakończyć dostosowywanie, naciśnij „Zakończ” w w prawym górnym rogu."
|
||||||
gotit: "Rozumiem!"
|
gotit: "Rozumiem!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "Wysłano plik!"
|
file-uploaded: "Wysłano plik!"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "Powiadomiono przez {}:"
|
notified-by: "Powiadomiono przez {}:"
|
||||||
reply-from: "Odpowiedź od {}:"
|
reply-from: "Odpowiedź od {}:"
|
||||||
quoted-by: "Zacytowano przez {}:"
|
quoted-by: "Zacytowano przez {}:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "nieznany"
|
unknown: "nieznany"
|
||||||
future: "w przyszłości"
|
future: "w przyszłości"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{} tyg. temu"
|
weeks_ago: "{} tyg. temu"
|
||||||
months_ago: "{} mies. temu"
|
months_ago: "{} mies. temu"
|
||||||
years_ago: "{} lat temu"
|
years_ago: "{} lat temu"
|
||||||
|
month-and-day: "{month}-{day}"
|
||||||
trash: "Kosz"
|
trash: "Kosz"
|
||||||
date:
|
|
||||||
full-year: "Rok"
|
|
||||||
month: "Miesiąc"
|
|
||||||
day: "Dzień"
|
|
||||||
hours: "Godzina"
|
|
||||||
minutes: "Minuty"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "N"
|
sunday: "N"
|
||||||
monday: "Pn"
|
monday: "Pn"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "Gratuluję!"
|
congrats: "Gratuluję!"
|
||||||
angry: "Wściekły"
|
angry: "Wściekły"
|
||||||
confused: "Zmieszany"
|
confused: "Zmieszany"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Co robisz?"
|
a: "Co robisz?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||||
i-like-sushi: "Wolę sushi od puddingu"
|
i-like-sushi: "Wolę sushi od puddingu"
|
||||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||||
verified-user: "Zweryfikowany użytkownik"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Remis"
|
drawn: "Remis"
|
||||||
my-turn: "Twoja kolej"
|
my-turn: "Twoja kolej"
|
||||||
@ -141,55 +139,61 @@ common:
|
|||||||
stack-left: "Przypnij do lewej"
|
stack-left: "Przypnij do lewej"
|
||||||
pop-right: "Odepnij w prawo"
|
pop-right: "Odepnij w prawo"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
share-access: "Czy chcesz <b>zezwolić</b> <i>{{ app.name }}</i> na dostęp do Twojego konta?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "Wyświetlanie informacji o koncie:"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "Modyfikowanie informacji o koncie:"
|
||||||
note-write: "投稿する。"
|
note-write: "Publikacja."
|
||||||
like-write: "いいねしたりいいね解除する。"
|
like-write: "Reagowanie na wpisy."
|
||||||
following-write: "フォローしたりフォロー解除する。"
|
following-write: "Śledzenie i cofanie śledzenia."
|
||||||
drive-read: "ドライブを見る。"
|
drive-read: "Odczytywanie Twojego dysku."
|
||||||
drive-write: "ドライブを操作する。"
|
drive-write: "Wysyłanie i usuwanie plików na Twoim dysku."
|
||||||
notification-read: "通知を見る。"
|
notification-read: "Odczytywanie Twoich powiadomień."
|
||||||
notification-write: "通知を操作する。"
|
notification-write: "Zarządzanie Twoimi powiadomieniami."
|
||||||
cancel: "キャンセル"
|
cancel: "Anuluj"
|
||||||
accept: "アクセスを許可"
|
accept: "Przyznaj dostęp."
|
||||||
auth/views/index.vue:
|
auth/views/index.vue:
|
||||||
loading: "読み込み中"
|
loading: "Ładowanie"
|
||||||
denied: "アプリケーションの連携をキャンセルしました。"
|
denied: "Odrzucono uwierzytelnianie aplikacji."
|
||||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
denied-paragraph: "Ta aplikacja nie uzyska dostępu do Twojego konta."
|
||||||
already-authorized: "このアプリは既に連携済みです"
|
already-authorized: "Ta aplikacja została już uwierzytelniona."
|
||||||
allowed: "アプリケーションの連携を許可しました"
|
allowed: "アプリケーションの連携を許可しました"
|
||||||
callback-url: "アプリケーションに戻っています"
|
callback-url: "Powracam do aplikacji."
|
||||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
please-go-back: "Wróć do aplikacji."
|
||||||
error: "セッションが存在しません。"
|
error: "Sesja nie istnieje."
|
||||||
sign-in: "サインインしてください"
|
sign-in: "Proszę zalogować się."
|
||||||
common/views/components/games/reversi/reversi.vue:
|
common/views/components/games/reversi/reversi.vue:
|
||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "Oczekiwanie na {}"
|
||||||
cancel: "キャンセル"
|
cancel: "Anuluj"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "Zagraj w Reversi ze znajomymi!"
|
||||||
invite: "招待"
|
invite: "Zaproś"
|
||||||
rule: "遊び方"
|
rule: "Jak grać"
|
||||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||||
mode-invite: "招待"
|
mode-invite: "Zaproś"
|
||||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
mode-invite-desc: "Zaproś użytkownika do gry."
|
||||||
invitations: "対局の招待があります!"
|
invitations: "Otrzymałeś(-aś) zaproszenie!"
|
||||||
my-games: "自分の対局"
|
my-games: "Moje gry"
|
||||||
all-games: "みんなの対局"
|
all-games: "Wszystkie gry"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "Wprowadź nazwę użytkownika"
|
||||||
game-state:
|
game-state:
|
||||||
ended: "終了"
|
ended: "Zakończono"
|
||||||
playing: "進行中"
|
playing: "W trakcie"
|
||||||
common/views/components/games/reversi/reversi.room.vue:
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
settings-of-the-game: "ゲームの設定"
|
settings-of-the-game: "Ustawienia gry"
|
||||||
choose-map: "マップを選択"
|
choose-map: "Wybierz mapę"
|
||||||
random: "ランダム"
|
random: "Losowy"
|
||||||
black-or-white: "先手/後手"
|
black-or-white: "Czarny/biały"
|
||||||
black-is: "{}が黒"
|
black-is: "{}が黒"
|
||||||
rules: "ルール"
|
rules: "Zasady"
|
||||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
looped-map: "ループマップ"
|
looped-map: "ループマップ"
|
||||||
can-put-everywhere: "どこでも置けるモード"
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "Brak dalszej historii"
|
no-history: "Brak dalszej historii"
|
||||||
resize-form: "Przeciągnij aby zmienić rozmiar"
|
resize-form: "Przeciągnij aby zmienić rozmiar"
|
||||||
new-message: "Nowa wiadomość"
|
new-message: "Nowa wiadomość"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "Wprowadź wiadomość tutaj"
|
input-message-here: "Wprowadź wiadomość tutaj"
|
||||||
send: "Wyślij"
|
send: "Wyślij"
|
||||||
attach-from-local: "Załącz pliki z komputera"
|
attach-from-local: "Załącz pliki z komputera"
|
||||||
attach-from-drive: "Załącz pliki z dysku"
|
attach-from-drive: "Załącz pliki z dysku"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "Przeczytano"
|
is-read: "Przeczytano"
|
||||||
deleted: "Wiadomość została usunięta"
|
deleted: "Wiadomość została usunięta"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "Token"
|
token: "Token"
|
||||||
signing-in: "Logowanie…"
|
signing-in: "Logowanie…"
|
||||||
signin: "Zaloguj"
|
signin: "Zaloguj"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "Nazwa użytkownika"
|
username: "Nazwa użytkownika"
|
||||||
checking: "Sprawdzanie…"
|
checking: "Sprawdzanie…"
|
||||||
@ -362,23 +371,23 @@ common/views/widgets/slideshow.vue:
|
|||||||
folder: "Naciśnij i wybierz folder"
|
folder: "Naciśnij i wybierz folder"
|
||||||
no-image: "Brak obrazu w tym folderze"
|
no-image: "Brak obrazu w tym folderze"
|
||||||
common/views/widgets/tips.vue:
|
common/views/widgets/tips.vue:
|
||||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
tips-line1: "Możesz przejść do osi czasu używając <kbd>t</kbd>."
|
||||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
tips-line2: "Otwórz formularz nowego wpisu używając <kbd>p</kbd> lub <kbd>n</kbd>."
|
||||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
tips-line3: "Możesz przeciągnąć i upuścić pliki w formularzu wpisu."
|
||||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
tips-line5: "Możesz wysłać pliki przeciągając i upuszczając je w Dysku."
|
||||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
tips-line6: "Możesz przenieść katalog przeciągając go w Dysku."
|
||||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
tips-line7: "Możesz przenieść katalog przeciągając go w Dysku."
|
||||||
tips-line8: "Strona główna może zostać dostosowana w ustawieniach."
|
tips-line8: "Strona główna może zostać dostosowana w ustawieniach."
|
||||||
tips-line9: "Misskey jest dostępny na licencji AGPLv3."
|
tips-line9: "Misskey jest dostępny na licencji AGPLv3."
|
||||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
tips-line11: "Możesz przypiąć wpis na stronie użytkownika klikając na „…”"
|
||||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
tips-line17: "Oznaczenie tekstu **w ten sposób** wyróżni go."
|
||||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
tips-line19: "Część okien może zostać odłączona z przeglądarki."
|
||||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
tips-line21: "Możesz też używać API, aby tworzyć boty."
|
||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskey zaczął działać w 2014."
|
tips-line24: "Misskey zaczął działać w 2014."
|
||||||
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
|
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "Śledź"
|
follow: "Śledź"
|
||||||
request-pending: "Oczekiwanie na pozwolenie"
|
request-pending: "Oczekiwanie na pozwolenie"
|
||||||
follow-request: "Poproś o śledzenie"
|
follow-request: "Poproś o śledzenie"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "Baner"
|
||||||
|
uploading-banner: "Wysyłanie baneru"
|
||||||
|
banner-updated: "Zmieniono baner"
|
||||||
|
choose-banner: "Wybierz baner"
|
||||||
|
avatar-crop-title: "Wybierz część obrazu, która zostanie użyta jako awatar"
|
||||||
|
avatar: "Awatar"
|
||||||
|
uploading-avatar: "Wysyłanie awatara"
|
||||||
|
avatar-updated: "Wysłano awatar"
|
||||||
|
choose-avatar: "Wybierz awatar"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Czarny … Łącznie"
|
total: "Czarny … Łącznie"
|
||||||
notes: "Niebieski … Wpisy"
|
notes: "Niebieski … Wpisy"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Pokaż szczegóły"
|
detail: "Pokaż szczegóły"
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
|
hide: "Zwiń"
|
||||||
|
see-more: "Więcej"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Ładowanie nie powiodło się."
|
error: "Ładowanie nie powiodło się."
|
||||||
retry: "Spróbuj ponownie"
|
retry: "Spróbuj ponownie"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
|
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
|
||||||
error: "Bład"
|
error: "Bład"
|
||||||
enter-username: "Wprowadź nazwę użytkownika…"
|
enter-username: "Wprowadź nazwę użytkownika…"
|
||||||
|
annotations: "Treść ostrzeżenia (opcjonalnie)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nowy wpis"
|
note: "Nowy wpis"
|
||||||
reply: "Odpowiedz"
|
reply: "Odpowiedz"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||||
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów na osi czasu"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Automatycznie pokazuj mapę"
|
show-maps: "Automatycznie pokazuj mapę"
|
||||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||||
sound: "Dźwięk"
|
sound: "Dźwięk"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "Listy"
|
list: "Listy"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Witaj ponownie,"
|
welcome-back: "Witaj ponownie,"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "Twój profil"
|
profile: "Twój profil"
|
||||||
drive: "Dysk"
|
drive: "Dysk"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "Listy"
|
title: "Listy"
|
||||||
create-list: "Utwórz listę"
|
create-list: "Utwórz listę"
|
||||||
|
list-name: "Nazwa listy"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "Wpisy"
|
notes: "Wpisy"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
||||||
is-media-view: "Widok multimediów"
|
is-media-view: "Widok multimediów"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Wycisz"
|
mute: "Wycisz"
|
||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
unmute: "Cofnij wyciszenie"
|
||||||
|
push-to-a-list: "Dodaj do listy"
|
||||||
|
list-pushed: "Dodałeś(-aś) {user} do {list}."
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "Wpisy"
|
posts: "Wpisy"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "Więcej"
|
load-more: "Więcej"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "Witaj ponownie, "
|
welcome-back: "Witaj ponownie, "
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
notifications: "Powiadomienia"
|
notifications: "Powiadomienia"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "Kokpit"
|
dashboard: "Kokpit"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "Dodaj"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "Aktywność"
|
activity: "Aktywność"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "Szukaj"
|
search: "Szukaj"
|
||||||
empty: "Nie znaleziono wpisów zawierających '{}'"
|
empty: "Nie znaleziono wpisów zawierających '{}'"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "Wybierz plik"
|
select-file: "Wybierz plik"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||||
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "Styl wpisów"
|
post-style: "Styl wpisów"
|
||||||
post-style-standard: "Standardowy"
|
post-style-standard: "Standardowy"
|
||||||
post-style-smart: "Inteligentny"
|
post-style-smart: "Inteligentny"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "Nazwa"
|
name: "Nazwa"
|
||||||
type: "Rodzaj"
|
type: "Rodzaj"
|
||||||
description: "Opis"
|
description: "Opis"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "Zarządzaj aplikacjami"
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
@ -11,6 +11,8 @@ common:
|
|||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||||
@ -26,7 +28,6 @@ common:
|
|||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "{}さんから返信:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "{}さんが引用:"
|
||||||
name: "Misskey"
|
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "なぞのじかん"
|
||||||
future: "未来"
|
future: "未来"
|
||||||
@ -38,13 +39,8 @@ common:
|
|||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{}週間前"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{}ヶ月前"
|
||||||
years_ago: "{}年前"
|
years_ago: "{}年前"
|
||||||
|
month-and-day: "{month}月 {day}日"
|
||||||
trash: "ゴミ箱"
|
trash: "ゴミ箱"
|
||||||
date:
|
|
||||||
full-year: "年"
|
|
||||||
month: "月"
|
|
||||||
day: "日"
|
|
||||||
hours: "時"
|
|
||||||
minutes: "分"
|
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "日"
|
||||||
monday: "月"
|
monday: "月"
|
||||||
@ -70,6 +66,7 @@ common:
|
|||||||
congrats: "おめでとう"
|
congrats: "おめでとう"
|
||||||
angry: "おこ"
|
angry: "おこ"
|
||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@ -87,7 +84,8 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
verified-user: "認証済みのユーザー"
|
verified-user: "公式アカウント"
|
||||||
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
|
surrender: "投了"
|
||||||
|
surrendered: "投了により"
|
||||||
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
|
looped-map: "ループマップ"
|
||||||
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
|
|||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はありません"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあります"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージを入力"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
|
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されました"
|
||||||
@ -279,6 +285,9 @@ common/views/components/signin.vue:
|
|||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "やってます..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
|
or: "または"
|
||||||
|
signin-with-twitter: "Twitterでログイン"
|
||||||
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認しています..."
|
||||||
@ -388,6 +397,17 @@ common/views/pages/follow.vue:
|
|||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
|
desktop:
|
||||||
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
|
banner: "バナー"
|
||||||
|
uploading-banner: "新しいバナーをアップロードしています"
|
||||||
|
banner-updated: "バナーを更新しました"
|
||||||
|
choose-banner: "バナーにする画像を選択"
|
||||||
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
|
avatar: "アバター"
|
||||||
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
|
avatar-updated: "アバターを更新しました"
|
||||||
|
choose-avatar: "アバターにする画像を選択"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -522,6 +542,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
hide: "隠す"
|
||||||
|
see-more: "もっと見る"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "読み込みに失敗しました。"
|
error: "読み込みに失敗しました。"
|
||||||
retry: "リトライ"
|
retry: "リトライ"
|
||||||
@ -557,6 +579,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
@ -603,9 +626,11 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
@ -718,6 +743,7 @@ desktop/views/components/timeline.vue:
|
|||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@ -746,6 +772,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "リストを作成"
|
||||||
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -760,6 +787,25 @@ desktop/views/components/users-list-item.vue:
|
|||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "ポップアウト"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
desktop/views/pages/admin/admin.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
drive: "ドライブ"
|
||||||
|
users: "ユーザー"
|
||||||
|
update: "更新"
|
||||||
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
|
dashboard: "ダッシュボード"
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全てのノート"
|
||||||
|
original-notes: "このインスタンスのノート"
|
||||||
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
|
suspend-user: "ユーザーの凍結"
|
||||||
|
suspend: "凍結"
|
||||||
|
suspended: "凍結しました"
|
||||||
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
|
unsuspend: "凍結の解除"
|
||||||
|
unsuspended: "凍結を解除しました"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿のみ"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
@ -828,6 +874,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしています"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
|
push-to-a-list: "リストに追加"
|
||||||
|
list-pushed: "{user}を{list}に追加しました。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -955,6 +1003,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "もっと"
|
load-more: "もっと"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえりなさい、"
|
||||||
|
adjective: "さん"
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
@ -1003,6 +1052,8 @@ mobile/views/pages/welcome.vue:
|
|||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||||
|
add-widget: "追加"
|
||||||
|
customization-tips: "カスタマイズのヒント"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
@ -1041,6 +1092,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
|||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
empty: "「{}」に関する投稿は見つかりませんでした。"
|
empty: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
|
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイルを選択"
|
select-file: "ファイルを選択"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1057,7 +1109,8 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
||||||
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
@ -1135,3 +1188,5 @@ docs:
|
|||||||
name: "名前"
|
name: "名前"
|
||||||
type: "型"
|
type: "型"
|
||||||
description: "説明"
|
description: "説明"
|
||||||
|
dev/views/index.vue:
|
||||||
|
manage-apps: "アプリの管理"
|
||||||
|
52
package.json
52
package.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "5.13.1",
|
"version": "6.3.0",
|
||||||
"clientVersion": "1.0.7963",
|
"clientVersion": "1.0.8483",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@ -31,6 +31,7 @@
|
|||||||
"@types/dateformat": "1.0.1",
|
"@types/dateformat": "1.0.1",
|
||||||
"@types/debug": "0.0.30",
|
"@types/debug": "0.0.30",
|
||||||
"@types/deep-equal": "1.0.1",
|
"@types/deep-equal": "1.0.1",
|
||||||
|
"@types/double-ended-queue": "2.1.0",
|
||||||
"@types/elasticsearch": "5.0.25",
|
"@types/elasticsearch": "5.0.25",
|
||||||
"@types/file-type": "5.2.1",
|
"@types/file-type": "5.2.1",
|
||||||
"@types/gulp": "3.8.36",
|
"@types/gulp": "3.8.36",
|
||||||
@ -57,9 +58,9 @@
|
|||||||
"@types/minio": "6.0.2",
|
"@types/minio": "6.0.2",
|
||||||
"@types/mkdirp": "0.5.2",
|
"@types/mkdirp": "0.5.2",
|
||||||
"@types/mocha": "5.2.3",
|
"@types/mocha": "5.2.3",
|
||||||
"@types/mongodb": "3.1.3",
|
"@types/mongodb": "3.1.4",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.5.5",
|
"@types/node": "10.7.1",
|
||||||
"@types/portscanner": "2.1.0",
|
"@types/portscanner": "2.1.0",
|
||||||
"@types/pug": "2.0.4",
|
"@types/pug": "2.0.4",
|
||||||
"@types/qrcode": "1.2.0",
|
"@types/qrcode": "1.2.0",
|
||||||
@ -76,10 +77,10 @@
|
|||||||
"@types/systeminformation": "3.23.0",
|
"@types/systeminformation": "3.23.0",
|
||||||
"@types/tmp": "0.0.33",
|
"@types/tmp": "0.0.33",
|
||||||
"@types/uuid": "3.4.3",
|
"@types/uuid": "3.4.3",
|
||||||
"@types/webpack": "4.4.9",
|
"@types/webpack": "4.4.10",
|
||||||
"@types/webpack-stream": "3.2.10",
|
"@types/webpack-stream": "3.2.10",
|
||||||
"@types/websocket": "0.0.39",
|
"@types/websocket": "0.0.39",
|
||||||
"@types/ws": "5.1.2",
|
"@types/ws": "6.0.0",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
@ -88,7 +89,7 @@
|
|||||||
"bootstrap-vue": "2.0.0-rc.11",
|
"bootstrap-vue": "2.0.0-rc.11",
|
||||||
"cafy": "11.3.0",
|
"cafy": "11.3.0",
|
||||||
"chalk": "2.4.1",
|
"chalk": "2.4.1",
|
||||||
"commander": "2.16.0",
|
"commander": "2.17.1",
|
||||||
"crc-32": "1.2.0",
|
"crc-32": "1.2.0",
|
||||||
"css-loader": "1.0.0",
|
"css-loader": "1.0.0",
|
||||||
"dateformat": "3.0.3",
|
"dateformat": "3.0.3",
|
||||||
@ -97,8 +98,9 @@
|
|||||||
"deepcopy": "0.6.3",
|
"deepcopy": "0.6.3",
|
||||||
"diskusage": "0.2.4",
|
"diskusage": "0.2.4",
|
||||||
"dompurify": "1.0.5",
|
"dompurify": "1.0.5",
|
||||||
|
"double-ended-queue": "2.1.0-0",
|
||||||
"elasticsearch": "15.1.1",
|
"elasticsearch": "15.1.1",
|
||||||
"element-ui": "2.4.5",
|
"element-ui": "2.4.6",
|
||||||
"emojilib": "2.3.0",
|
"emojilib": "2.3.0",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eslint": "5.0.1",
|
"eslint": "5.0.1",
|
||||||
@ -106,7 +108,7 @@
|
|||||||
"eventemitter3": "3.1.0",
|
"eventemitter3": "3.1.0",
|
||||||
"exif-js": "2.3.0",
|
"exif-js": "2.3.0",
|
||||||
"file-loader": "1.1.11",
|
"file-loader": "1.1.11",
|
||||||
"file-type": "8.1.0",
|
"file-type": "9.0.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",
|
||||||
@ -145,8 +147,9 @@
|
|||||||
"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",
|
"loader-utils": "1.1.0",
|
||||||
|
"lodash.assign": "4.2.0",
|
||||||
"mecab-async": "0.1.2",
|
"mecab-async": "0.1.2",
|
||||||
"minio": "6.0.0",
|
"minio": "7.0.0",
|
||||||
"mkdirp": "0.5.1",
|
"mkdirp": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
@ -154,13 +157,13 @@
|
|||||||
"monk": "6.0.6",
|
"monk": "6.0.6",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"nan": "2.10.0",
|
"nan": "2.10.0",
|
||||||
"node-sass": "4.9.2",
|
"node-sass": "4.9.3",
|
||||||
"node-sass-json-importer": "3.3.1",
|
"node-sass-json-importer": "3.3.1",
|
||||||
"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",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "5.0.0",
|
"parse5": "5.1.0",
|
||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
"promise-sequential": "1.1.1",
|
"promise-sequential": "1.1.1",
|
||||||
@ -171,49 +174,50 @@
|
|||||||
"recaptcha-promise": "0.1.3",
|
"recaptcha-promise": "0.1.3",
|
||||||
"reconnecting-websocket": "3.2.2",
|
"reconnecting-websocket": "3.2.2",
|
||||||
"redis": "2.8.0",
|
"redis": "2.8.0",
|
||||||
"request": "2.87.0",
|
"request": "2.88.0",
|
||||||
"request-promise-native": "1.0.5",
|
"request-promise-native": "1.0.5",
|
||||||
"rimraf": "2.6.2",
|
"rimraf": "2.6.2",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sass-loader": "7.1.0",
|
"sass-loader": "7.1.0",
|
||||||
"seedrandom": "2.4.3",
|
"seedrandom": "2.4.4",
|
||||||
"sharp": "0.20.5",
|
"sharp": "0.20.5",
|
||||||
"showdown": "1.8.6",
|
"showdown": "1.8.6",
|
||||||
"showdown-highlightjs-extension": "0.1.2",
|
"showdown-highlightjs-extension": "0.1.2",
|
||||||
"single-line-log": "1.1.2",
|
"single-line-log": "1.1.2",
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
"style-loader": "0.21.0",
|
"stringz": "1.0.0",
|
||||||
|
"style-loader": "0.22.1",
|
||||||
"stylus": "0.54.5",
|
"stylus": "0.54.5",
|
||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
"summaly": "2.0.6",
|
"summaly": "2.1.3",
|
||||||
"systeminformation": "3.42.8",
|
"systeminformation": "3.42.9",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
"ts-loader": "4.4.1",
|
"ts-loader": "4.4.1",
|
||||||
"ts-node": "7.0.0",
|
"ts-node": "7.0.1",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "2.9.2",
|
"typescript": "2.9.2",
|
||||||
"typescript-eslint-parser": "17.0.1",
|
"typescript-eslint-parser": "18.0.0",
|
||||||
"uglify-es": "3.3.9",
|
"uglify-es": "3.3.9",
|
||||||
"url-loader": "1.0.1",
|
"url-loader": "1.1.0",
|
||||||
"uuid": "3.3.2",
|
"uuid": "3.3.2",
|
||||||
"v-animate-css": "0.0.2",
|
"v-animate-css": "0.0.2",
|
||||||
"vue": "2.5.17",
|
"vue": "2.5.17",
|
||||||
"vue-cropperjs": "2.2.1",
|
"vue-cropperjs": "2.2.1",
|
||||||
"vue-js-modal": "1.3.16",
|
"vue-js-modal": "1.3.17",
|
||||||
"vue-json-tree-view": "2.1.4",
|
"vue-json-tree-view": "2.1.4",
|
||||||
"vue-loader": "15.2.6",
|
"vue-loader": "15.3.0",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-style-loader": "4.1.1",
|
"vue-style-loader": "4.1.2",
|
||||||
"vue-template-compiler": "2.5.17",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.2",
|
"web-push": "3.3.2",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.6.6",
|
||||||
"webpack": "4.16.4",
|
"webpack": "4.16.5",
|
||||||
"webpack-cli": "3.1.0",
|
"webpack-cli": "3.1.0",
|
||||||
"websocket": "1.0.26",
|
"websocket": "1.0.26",
|
||||||
"ws": "6.0.0",
|
"ws": "6.0.0",
|
||||||
|
@ -8,14 +8,14 @@ import VueRouter from 'vue-router';
|
|||||||
import './style.styl';
|
import './style.styl';
|
||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
|
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import * as config from '../config';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
*/
|
*/
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = '%i18n:common.name% | %i18n:common.application-authorization%';
|
document.title = `${config.name} | %i18n:common.application-authorization%`;
|
||||||
|
|
||||||
// Init router
|
// Init router
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
|
@ -38,7 +38,7 @@ 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
|
||||||
};
|
};
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
export default date => {
|
|
||||||
if (typeof date == 'string') date = new Date(date);
|
|
||||||
return (
|
|
||||||
date.getFullYear() + '%i18n:common.date.full-year%' +
|
|
||||||
(date.getMonth() + 1) + '%i18n:common.date.month%' +
|
|
||||||
date.getDate() + '%i18n:common.date.day%' +
|
|
||||||
' ' +
|
|
||||||
date.getHours() + '%i18n:common.date.hours%' +
|
|
||||||
date.getMinutes() + '%i18n:common.date.minutes%' +
|
|
||||||
' ' +
|
|
||||||
`(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})`
|
|
||||||
);
|
|
||||||
};
|
|
@ -1,5 +1,9 @@
|
|||||||
export default () => [
|
const kaos = [
|
||||||
'(=^・・^=)',
|
'(=^・・^=)',
|
||||||
'v(\'ω\')v',
|
'v(\'ω\')v',
|
||||||
'🐡( \'-\' 🐡 )フグパンチ!!!!'
|
'🐡( \'-\' 🐡 )フグパンチ!!!!',
|
||||||
][Math.floor(Math.random() * 3)];
|
'🖕(´・_・`)🖕',
|
||||||
|
'(。>﹏<。)'
|
||||||
|
];
|
||||||
|
|
||||||
|
export default () => kaos[Math.floor(Math.random() * kaos.length)];
|
||||||
|
@ -132,7 +132,7 @@ export default Vue.extend({
|
|||||||
this.users = users;
|
this.users = users;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
} else {
|
} else {
|
||||||
(this as any).api('users/search_by_username', {
|
(this as any).api('users/search', {
|
||||||
query: this.q,
|
query: this.q,
|
||||||
limit: 30
|
limit: 30
|
||||||
}).then(users => {
|
}).then(users => {
|
||||||
|
@ -1,6 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-if="disablePreview"></router-link>
|
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
|
||||||
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-else v-user-preview="user.id"></router-link>
|
<span class="inner" :style="style"></span>
|
||||||
|
</span>
|
||||||
|
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick">
|
||||||
|
<span class="inner" :style="style"></span>
|
||||||
|
</span>
|
||||||
|
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id">
|
||||||
|
<span class="inner" :style="style"></span>
|
||||||
|
</router-link>
|
||||||
|
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview">
|
||||||
|
<span class="inner" :style="style"></span>
|
||||||
|
</router-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@ -15,6 +25,10 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: null
|
default: null
|
||||||
},
|
},
|
||||||
|
disableLink: {
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
disablePreview: {
|
disablePreview: {
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
@ -24,26 +38,71 @@ export default Vue.extend({
|
|||||||
lightmode(): boolean {
|
lightmode(): boolean {
|
||||||
return this.$store.state.device.lightmode;
|
return this.$store.state.device.lightmode;
|
||||||
},
|
},
|
||||||
|
cat(): boolean {
|
||||||
|
return this.user.isCat && this.$store.state.settings.circleIcons;
|
||||||
|
},
|
||||||
style(): any {
|
style(): any {
|
||||||
return {
|
return {
|
||||||
backgroundColor: this.lightmode
|
backgroundColor: this.lightmode
|
||||||
? `rgb(${ this.user.avatarColor.slice(0, 3).join(',') })`
|
? `rgb(${this.user.avatarColor.slice(0, 3).join(',')})`
|
||||||
: this.user.avatarColor && this.user.avatarColor.length == 3
|
: this.user.avatarColor && this.user.avatarColor.length == 3
|
||||||
? `rgb(${ this.user.avatarColor.join(',') })`
|
? `rgb(${this.user.avatarColor.join(',')})`
|
||||||
: null,
|
: null,
|
||||||
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl })`,
|
backgroundImage: this.lightmode ? null : `url(${this.user.avatarUrl})`,
|
||||||
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClick(e) {
|
||||||
|
this.$emit('click', e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-avatar
|
|
||||||
|
root(isDark)
|
||||||
display inline-block
|
display inline-block
|
||||||
vertical-align bottom
|
vertical-align bottom
|
||||||
background-size cover
|
|
||||||
|
&:not(.cat)
|
||||||
|
overflow hidden
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
&.cat::before,
|
||||||
|
&.cat::after
|
||||||
|
background #df548f
|
||||||
|
border solid 4px isDark ? #e0eefd : #202224
|
||||||
|
box-sizing border-box
|
||||||
|
content ''
|
||||||
|
display inline-block
|
||||||
|
height 50%
|
||||||
|
width 50%
|
||||||
|
|
||||||
|
&.cat::before
|
||||||
|
border-radius 0 75% 75%
|
||||||
|
transform rotate(37.5deg) skew(30deg)
|
||||||
|
|
||||||
|
&.cat::after
|
||||||
|
border-radius 75% 0 75% 75%
|
||||||
|
transform rotate(-37.5deg) skew(-30deg)
|
||||||
|
|
||||||
|
.inner
|
||||||
background-position center center
|
background-position center center
|
||||||
|
background-size cover
|
||||||
|
bottom 0
|
||||||
|
left 0
|
||||||
|
position absolute
|
||||||
|
right 0
|
||||||
|
top 0
|
||||||
transition border-radius 1s ease
|
transition border-radius 1s ease
|
||||||
|
z-index 1
|
||||||
|
|
||||||
|
.mk-avatar[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.mk-avatar:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
||||||
<header><b>{{ blackUser | userName }}</b>(%i18n:common.reversi.black%) vs <b>{{ whiteUser | userName }}</b>(%i18n:common.reversi.white%)</header>
|
<button class="go-index" v-if="selfNav" @click="goIndex">%fa:arrow-left%</button>
|
||||||
|
<header><b><router-link :to="blackUser | userPage">{{ blackUser | userName }}</router-link></b>(%i18n:common.reversi.black%) vs <b><router-link :to="whiteUser | userPage">{{ whiteUser | userName }}</router-link></b>(%i18n:common.reversi.white%)</header>
|
||||||
|
|
||||||
<div style="overflow: hidden">
|
<div style="overflow: hidden; line-height: 28px;">
|
||||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}<mk-ellipsis/></p>
|
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}<mk-ellipsis/></p>
|
||||||
<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}</p>
|
<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}</p>
|
||||||
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
|
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
|
||||||
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.reversi.my-turn%</p>
|
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.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">{{ '%i18n:common.reversi.won%'.replace('{}', $options.filters.userName(game.winner)) }}{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
|
<template v-if="game.winner">
|
||||||
|
<span>{{ '%i18n:common.reversi.won%'.replace('{}', $options.filters.userName(game.winner)) }}</span>
|
||||||
|
<span v-if="game.surrendered != null"> (%i18n:@surrendered%)</span>
|
||||||
|
</template>
|
||||||
<template v-else>%i18n:common.reversi.drawn%</template>
|
<template v-else>%i18n:common.reversi.drawn%</template>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -41,6 +45,10 @@
|
|||||||
|
|
||||||
<p class="status"><b>{{ '%i18n:common.reversi.this-turn%'.split('{}')[0] }}{{ logPos }}{{ '%i18n:common.reversi.this-turn%'.split('{}')[1] }}</b> %i18n:common.reversi.black%:{{ o.blackCount }} %i18n:common.reversi.white%:{{ o.whiteCount }} %i18n:common.reversi.total%:{{ o.blackCount + o.whiteCount }}</p>
|
<p class="status"><b>{{ '%i18n:common.reversi.this-turn%'.split('{}')[0] }}{{ logPos }}{{ '%i18n:common.reversi.this-turn%'.split('{}')[1] }}</b> %i18n:common.reversi.black%:{{ o.blackCount }} %i18n:common.reversi.white%:{{ o.whiteCount }} %i18n:common.reversi.total%:{{ o.blackCount + o.whiteCount }}</p>
|
||||||
|
|
||||||
|
<div class="actions" v-if="!game.isEnded && iAmPlayer">
|
||||||
|
<form-button @click="surrender">%i18n:@surrender%</form-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="player" v-if="game.isEnded">
|
<div class="player" v-if="game.isEnded">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button type="primary" @click="logPos = 0" :disabled="logPos == 0">%fa:angle-double-left%</el-button>
|
<el-button type="primary" @click="logPos = 0" :disabled="logPos == 0">%fa:angle-double-left%</el-button>
|
||||||
@ -52,6 +60,12 @@
|
|||||||
<el-button type="primary" @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</el-button>
|
<el-button type="primary" @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="info">
|
||||||
|
<p v-if="game.settings.isLlotheo">%i18n:@is-llotheo%</p>
|
||||||
|
<p v-if="game.settings.loopedBoard">%i18n:@looped-map%</p>
|
||||||
|
<p v-if="game.settings.canPutEverywhere">%i18n:@can-put-everywhere%</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -62,7 +76,20 @@ import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
|||||||
import { url } from '../../../../../config';
|
import { url } from '../../../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['initGame', 'connection'],
|
props: {
|
||||||
|
initGame: {
|
||||||
|
type: Object,
|
||||||
|
require: true
|
||||||
|
},
|
||||||
|
connection: {
|
||||||
|
type: Object,
|
||||||
|
require: true
|
||||||
|
},
|
||||||
|
selfNav: {
|
||||||
|
type: Boolean,
|
||||||
|
require: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -79,22 +106,27 @@ export default Vue.extend({
|
|||||||
if (!this.$store.getters.isSignedIn) return false;
|
if (!this.$store.getters.isSignedIn) return false;
|
||||||
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
|
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
|
|
||||||
myColor(): Color {
|
myColor(): Color {
|
||||||
if (!this.iAmPlayer) return null;
|
if (!this.iAmPlayer) return null;
|
||||||
if (this.game.user1Id == this.$store.state.i.id && this.game.black == 1) return true;
|
if (this.game.user1Id == this.$store.state.i.id && this.game.black == 1) return true;
|
||||||
if (this.game.user2Id == this.$store.state.i.id && this.game.black == 2) return true;
|
if (this.game.user2Id == this.$store.state.i.id && this.game.black == 2) return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
opColor(): Color {
|
opColor(): Color {
|
||||||
if (!this.iAmPlayer) return null;
|
if (!this.iAmPlayer) return null;
|
||||||
return this.myColor === true ? false : true;
|
return this.myColor === true ? false : true;
|
||||||
},
|
},
|
||||||
|
|
||||||
blackUser(): any {
|
blackUser(): any {
|
||||||
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||||
},
|
},
|
||||||
|
|
||||||
whiteUser(): any {
|
whiteUser(): any {
|
||||||
return this.game.black == 1 ? this.game.user2 : this.game.user1;
|
return this.game.black == 1 ? this.game.user2 : this.game.user1;
|
||||||
},
|
},
|
||||||
|
|
||||||
turnUser(): any {
|
turnUser(): any {
|
||||||
if (this.o.turn === true) {
|
if (this.o.turn === true) {
|
||||||
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
return this.game.black == 1 ? this.game.user1 : this.game.user2;
|
||||||
@ -104,11 +136,13 @@ export default Vue.extend({
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
isMyTurn(): boolean {
|
isMyTurn(): boolean {
|
||||||
if (!this.iAmPlayer) return false;
|
if (!this.iAmPlayer) return false;
|
||||||
if (this.turnUser == null) return false;
|
if (this.turnUser == null) return false;
|
||||||
return this.turnUser.id == this.$store.state.i.id;
|
return this.turnUser.id == this.$store.state.i.id;
|
||||||
},
|
},
|
||||||
|
|
||||||
cellsStyle(): any {
|
cellsStyle(): any {
|
||||||
return {
|
return {
|
||||||
'grid-template-rows': `repeat(${this.game.settings.map.length}, 1fr)`,
|
'grid-template-rows': `repeat(${this.game.settings.map.length}, 1fr)`,
|
||||||
@ -165,11 +199,13 @@ export default Vue.extend({
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.connection.on('set', this.onSet);
|
this.connection.on('set', this.onSet);
|
||||||
this.connection.on('rescue', this.onRescue);
|
this.connection.on('rescue', this.onRescue);
|
||||||
|
this.connection.on('ended', this.onEnded);
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.connection.off('set', this.onSet);
|
this.connection.off('set', this.onSet);
|
||||||
this.connection.off('rescue', this.onRescue);
|
this.connection.off('rescue', this.onRescue);
|
||||||
|
this.connection.off('ended', this.onEnded);
|
||||||
|
|
||||||
clearInterval(this.pollingClock);
|
clearInterval(this.pollingClock);
|
||||||
},
|
},
|
||||||
@ -215,6 +251,10 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onEnded(x) {
|
||||||
|
this.game = x.game;
|
||||||
|
},
|
||||||
|
|
||||||
checkEnd() {
|
checkEnd() {
|
||||||
this.game.isEnded = this.o.isEnded;
|
this.game.isEnded = this.o.isEnded;
|
||||||
if (this.game.isEnded) {
|
if (this.game.isEnded) {
|
||||||
@ -250,6 +290,16 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.checkEnd();
|
this.checkEnd();
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
|
},
|
||||||
|
|
||||||
|
surrender() {
|
||||||
|
(this as any).api('games/reversi/games/surrender', {
|
||||||
|
gameId: this.game.id
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
goIndex() {
|
||||||
|
this.$emit('go-index');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -261,10 +311,21 @@ export default Vue.extend({
|
|||||||
root(isDark)
|
root(isDark)
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
|
> .go-index
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
z-index 1
|
||||||
|
width 42px
|
||||||
|
height 42px
|
||||||
|
|
||||||
> header
|
> header
|
||||||
padding 8px
|
padding 8px
|
||||||
border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4
|
border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4
|
||||||
|
|
||||||
|
a
|
||||||
|
color inherit
|
||||||
|
|
||||||
> .board
|
> .board
|
||||||
width calc(100% - 16px)
|
width calc(100% - 16px)
|
||||||
max-width 500px
|
max-width 500px
|
||||||
@ -381,6 +442,9 @@ root(isDark)
|
|||||||
margin 0
|
margin 0
|
||||||
padding 16px 0
|
padding 16px 0
|
||||||
|
|
||||||
|
> .actions
|
||||||
|
padding-bottom 16px
|
||||||
|
|
||||||
> .player
|
> .player
|
||||||
padding-bottom 32px
|
padding-bottom 32px
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<x-room v-if="!g.isStarted" :game="g" :connection="connection"/>
|
<x-room v-if="!g.isStarted" :game="g" :connection="connection"/>
|
||||||
<x-game v-else :init-game="g" :connection="connection"/>
|
<x-game v-else :init-game="g" :connection="connection" :self-nav="selfNav" @go-index="goIndex"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -16,7 +16,16 @@ export default Vue.extend({
|
|||||||
XGame,
|
XGame,
|
||||||
XRoom
|
XRoom
|
||||||
},
|
},
|
||||||
props: ['game'],
|
props: {
|
||||||
|
game: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
selfNav: {
|
||||||
|
type: Boolean,
|
||||||
|
require: true
|
||||||
|
}
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
connection: null,
|
connection: null,
|
||||||
@ -36,6 +45,9 @@ export default Vue.extend({
|
|||||||
onStarted(game) {
|
onStarted(game) {
|
||||||
Object.assign(this.g, game);
|
Object.assign(this.g, game);
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
|
},
|
||||||
|
goIndex() {
|
||||||
|
this.$emit('go-index');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -96,11 +96,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
go(game) {
|
go(game) {
|
||||||
(this as any).api('games/reversi/games/show', {
|
|
||||||
gameId: game.id
|
|
||||||
}).then(game => {
|
|
||||||
this.$emit('go', game);
|
this.$emit('go', game);
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
match() {
|
match() {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="vchtoekanapleubgzioubdtmlkribzfd">
|
<div class="vchtoekanapleubgzioubdtmlkribzfd">
|
||||||
<div v-if="game">
|
<div v-if="game">
|
||||||
<x-gameroom :game="game"/>
|
<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>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
|
<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
|
||||||
@ -34,6 +34,11 @@ export default Vue.extend({
|
|||||||
gameId: {
|
gameId: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false
|
required: false
|
||||||
|
},
|
||||||
|
selfNav: {
|
||||||
|
type: Boolean,
|
||||||
|
require: false,
|
||||||
|
default: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -48,6 +53,10 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
game() {
|
||||||
|
this.$emit('gamed', this.game);
|
||||||
|
},
|
||||||
|
|
||||||
gameId() {
|
gameId() {
|
||||||
this.fetch();
|
this.fetch();
|
||||||
}
|
}
|
||||||
@ -91,18 +100,24 @@ export default Vue.extend({
|
|||||||
(this as any).api('games/reversi/games/show', {
|
(this as any).api('games/reversi/games/show', {
|
||||||
gameId: this.gameId
|
gameId: this.gameId
|
||||||
}).then(game => {
|
}).then(game => {
|
||||||
this.nav(game, true);
|
this.game = game;
|
||||||
Progress.done();
|
Progress.done();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
nav(game, silent) {
|
async nav(game, actualNav = true) {
|
||||||
this.matching = null;
|
if (this.selfNav) {
|
||||||
this.game = game;
|
// 受け取ったゲーム情報が省略されたものなら完全な情報を取得する
|
||||||
|
if (game != null && (game.settings == null || game.settings.map == null)) {
|
||||||
|
game = await (this as any).api('games/reversi/games/show', {
|
||||||
|
gameId: game.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (!silent) {
|
this.game = game;
|
||||||
this.$emit('nav', this.game);
|
} else {
|
||||||
|
this.$emit('nav', game, actualNav);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -121,7 +136,8 @@ export default Vue.extend({
|
|||||||
}).then(game => {
|
}).then(game => {
|
||||||
if (game) {
|
if (game) {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
this.game = game;
|
|
||||||
|
this.nav(game);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -129,6 +145,11 @@ export default Vue.extend({
|
|||||||
onMatched(game) {
|
onMatched(game) {
|
||||||
this.matching = null;
|
this.matching = null;
|
||||||
this.game = game;
|
this.game = game;
|
||||||
|
this.nav(game, false);
|
||||||
|
},
|
||||||
|
|
||||||
|
goIndex() {
|
||||||
|
this.nav(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -83,7 +83,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (items[0].kind == 'file') {
|
if (items[0].kind == 'file') {
|
||||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
alert('%i18n:only-one-file-attached%');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -105,7 +105,7 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
} else if (e.dataTransfer.files.length > 1) {
|
} else if (e.dataTransfer.files.length > 1) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
alert('%i18n:only-one-file-attached%');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(message.createdAt).getDate();
|
const date = new Date(message.createdAt).getDate();
|
||||||
const month = new Date(message.createdAt).getMonth() + 1;
|
const month = new Date(message.createdAt).getMonth() + 1;
|
||||||
message._date = date;
|
message._date = date;
|
||||||
message._datetext = `${month}月 ${date}日`;
|
message._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return message;
|
return message;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -111,7 +111,7 @@ export default Vue.extend({
|
|||||||
this.form.upload(e.dataTransfer.files[0]);
|
this.form.upload(e.dataTransfer.files[0]);
|
||||||
return;
|
return;
|
||||||
} else if (e.dataTransfer.files.length > 1) {
|
} else if (e.dataTransfer.files.length > 1) {
|
||||||
alert('メッセージに添付できるのはひとつのファイルのみです');
|
alert('%i18n:@only-one-file-attached%');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as emojilib from 'emojilib';
|
import * as emojilib from 'emojilib';
|
||||||
|
import { length } from 'stringz';
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import getAcct from '../../../../../misc/acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
@ -40,10 +41,13 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
ast = this.ast;
|
ast = this.ast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let bigCount = 0;
|
||||||
|
let motionCount = 0;
|
||||||
|
|
||||||
// Parse ast to DOM
|
// Parse ast to DOM
|
||||||
const els = flatten(ast.map(token => {
|
const els = flatten(ast.map(token => {
|
||||||
switch (token.type) {
|
switch (token.type) {
|
||||||
case 'text':
|
case 'text': {
|
||||||
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n');
|
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n');
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
@ -54,30 +58,52 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
} else {
|
} else {
|
||||||
return createElement('span', text.replace(/\n/g, ' '));
|
return createElement('span', text.replace(/\n/g, ' '));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case 'bold':
|
case 'bold': {
|
||||||
return createElement('b', token.bold);
|
return createElement('b', token.bold);
|
||||||
|
}
|
||||||
|
|
||||||
case 'big':
|
case 'big': {
|
||||||
|
bigCount++;
|
||||||
|
const isLong = length(token.big) > 10;
|
||||||
|
const isMany = bigCount > 3;
|
||||||
return (createElement as any)('strong', {
|
return (createElement as any)('strong', {
|
||||||
attrs: {
|
attrs: {
|
||||||
style: 'display: inline-block; font-size: 200%;'
|
style: `display: inline-block; font-size: ${ isMany ? '100%' : '150%' };`
|
||||||
},
|
},
|
||||||
directives: [{
|
directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
|
||||||
name: 'animate-css',
|
name: 'animate-css',
|
||||||
value: { classes: 'tada', iteration: 'infinite' }
|
value: { classes: 'tada', iteration: 'infinite' }
|
||||||
}]
|
}]
|
||||||
}, token.big);
|
}, token.big);
|
||||||
|
}
|
||||||
|
|
||||||
case 'url':
|
case 'motion': {
|
||||||
|
motionCount++;
|
||||||
|
const isLong = length(token.motion) > 10;
|
||||||
|
const isMany = motionCount > 3;
|
||||||
|
return (createElement as any)('span', {
|
||||||
|
attrs: {
|
||||||
|
style: 'display: inline-block;'
|
||||||
|
},
|
||||||
|
directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
|
||||||
|
name: 'animate-css',
|
||||||
|
value: { classes: 'rubberBand', iteration: 'infinite' }
|
||||||
|
}]
|
||||||
|
}, token.motion);
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'url': {
|
||||||
return createElement(MkUrl, {
|
return createElement(MkUrl, {
|
||||||
props: {
|
props: {
|
||||||
url: token.content,
|
url: token.content,
|
||||||
target: '_blank'
|
target: '_blank'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
case 'link':
|
case 'link': {
|
||||||
return createElement('a', {
|
return createElement('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'link',
|
class: 'link',
|
||||||
@ -86,8 +112,9 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
title: token.url
|
title: token.url
|
||||||
}
|
}
|
||||||
}, token.title);
|
}, token.title);
|
||||||
|
}
|
||||||
|
|
||||||
case 'mention':
|
case 'mention': {
|
||||||
return (createElement as any)('a', {
|
return (createElement as any)('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
href: `${url}/@${getAcct(token)}`,
|
href: `${url}/@${getAcct(token)}`,
|
||||||
@ -99,16 +126,18 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
value: token.content
|
value: token.content
|
||||||
}]
|
}]
|
||||||
}, token.content);
|
}, token.content);
|
||||||
|
}
|
||||||
|
|
||||||
case 'hashtag':
|
case 'hashtag': {
|
||||||
return createElement('a', {
|
return createElement('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
|
href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
|
||||||
target: '_blank'
|
target: '_blank'
|
||||||
}
|
}
|
||||||
}, token.content);
|
}, token.content);
|
||||||
|
}
|
||||||
|
|
||||||
case 'code':
|
case 'code': {
|
||||||
return createElement('pre', {
|
return createElement('pre', {
|
||||||
class: 'code'
|
class: 'code'
|
||||||
}, [
|
}, [
|
||||||
@ -118,15 +147,17 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
case 'inline-code':
|
case 'inline-code': {
|
||||||
return createElement('code', {
|
return createElement('code', {
|
||||||
domProps: {
|
domProps: {
|
||||||
innerHTML: token.html
|
innerHTML: token.html
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
case 'quote':
|
case 'quote': {
|
||||||
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
|
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
@ -145,28 +176,33 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}
|
}
|
||||||
}, text2.replace(/\n/g, ' '));
|
}, text2.replace(/\n/g, ' '));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case 'title':
|
case 'title': {
|
||||||
return createElement('div', {
|
return createElement('div', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'title'
|
class: 'title'
|
||||||
}
|
}
|
||||||
}, token.title);
|
}, token.title);
|
||||||
|
}
|
||||||
|
|
||||||
case 'emoji':
|
case 'emoji': {
|
||||||
const emoji = emojilib.lib[token.emoji];
|
const emoji = emojilib.lib[token.emoji];
|
||||||
return createElement('span', emoji ? emoji.char : token.content);
|
return createElement('span', emoji ? emoji.char : token.content);
|
||||||
|
}
|
||||||
|
|
||||||
case 'search':
|
case 'search': {
|
||||||
return createElement(MkGoogle, {
|
return createElement(MkGoogle, {
|
||||||
props: {
|
props: {
|
||||||
q: token.query
|
q: token.query
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default: {
|
||||||
console.log('unknown ast type:', token.type);
|
console.log('unknown ast type:', token.type);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const _els = [];
|
const _els = [];
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
|
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
|
||||||
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
||||||
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:bookmark%</span>
|
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:star%</span>
|
||||||
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||||
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||||
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
|
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
|
||||||
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
|
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
|
||||||
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
|
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
|
||||||
|
<img v-if="reaction == 'rip'" src="/assets/reactions/rip.png" alt="%i18n:common.reactions.rip%">
|
||||||
<template v-if="reaction == 'pudding'">
|
<template v-if="reaction == 'pudding'">
|
||||||
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
|
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
|
||||||
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
|
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
|
||||||
|
@ -10,9 +10,10 @@
|
|||||||
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.hmm%"><mk-reaction-icon reaction='hmm'/></button>
|
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.hmm%"><mk-reaction-icon reaction='hmm'/></button>
|
||||||
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.surprise%"><mk-reaction-icon reaction='surprise'/></button>
|
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.surprise%"><mk-reaction-icon reaction='surprise'/></button>
|
||||||
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.congrats%"><mk-reaction-icon reaction='congrats'/></button>
|
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.congrats%"><mk-reaction-icon reaction='congrats'/></button>
|
||||||
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.angry%"><mk-reaction-icon reaction='angry'/></button>
|
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" title="%i18n:common.reactions.angry%"><mk-reaction-icon reaction='angry'/></button>
|
||||||
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.confused%"><mk-reaction-icon reaction='confused'/></button>
|
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" title="%i18n:common.reactions.confused%"><mk-reaction-icon reaction='confused'/></button>
|
||||||
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.pudding%"><mk-reaction-icon reaction='pudding'/></button>
|
<button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" title="%i18n:common.reactions.rip%"><mk-reaction-icon reaction='rip'/></button>
|
||||||
|
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" title="%i18n:common.reactions.pudding%"><mk-reaction-icon reaction='pudding'/></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-reactions-viewer">
|
<div class="mk-reactions-viewer">
|
||||||
<template v-if="reactions">
|
<template v-if="reactions">
|
||||||
<span v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
|
<span :class="{notReacted}" @click="react('like')" v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
|
||||||
<span v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
|
<span :class="{notReacted}" @click="react('love')" v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
|
||||||
<span v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
|
<span :class="{notReacted}" @click="react('laugh')" v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
|
||||||
<span v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
|
<span :class="{notReacted}" @click="react('hmm')" v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
|
||||||
<span v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
|
<span :class="{notReacted}" @click="react('surprise')" v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
|
||||||
<span v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
|
<span :class="{notReacted}" @click="react('congrats')" v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
|
||||||
<span v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
|
<span :class="{notReacted}" @click="react('angry')" v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
|
||||||
<span v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
|
<span :class="{notReacted}" @click="react('confused')" v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
|
||||||
<span v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
|
<span :class="{notReacted}" @click="react('rip')" v-if="reactions.rip"><mk-reaction-icon reaction="rip"/><span>{{ reactions.rip }}</span></span>
|
||||||
|
<span :class="{notReacted}" @click="react('pudding')" v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -21,6 +22,17 @@ export default Vue.extend({
|
|||||||
computed: {
|
computed: {
|
||||||
reactions(): number {
|
reactions(): number {
|
||||||
return this.note.reactionCounts;
|
return this.note.reactionCounts;
|
||||||
|
},
|
||||||
|
notReacted(): boolean {
|
||||||
|
return this.note.myReaction == null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
react(reaction: string) {
|
||||||
|
(this as any).api('notes/reactions/create', {
|
||||||
|
noteId: this.note.id,
|
||||||
|
reaction: reaction
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -39,6 +51,9 @@ root(isDark)
|
|||||||
> span
|
> span
|
||||||
margin-right 8px
|
margin-right 8px
|
||||||
|
|
||||||
|
&.notReacted
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
> .mk-reaction-icon
|
> .mk-reaction-icon
|
||||||
font-size 1.4em
|
font-size 1.4em
|
||||||
|
|
||||||
|
@ -12,13 +12,13 @@
|
|||||||
</ui-input>
|
</ui-input>
|
||||||
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
|
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
|
||||||
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
|
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
|
||||||
<p style="margin: 8px 0;">または<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a></p>
|
<p style="margin: 8px 0;" v-if="twitterIntegration">%i18n:@or% <a :href="`${apiUrl}/signin/twitter`">%i18n:@signin-with-twitter%</a></p>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { apiUrl, host } from '../../../config';
|
import { apiUrl, host, twitterIntegration } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
@ -36,7 +36,8 @@ export default Vue.extend({
|
|||||||
password: '',
|
password: '',
|
||||||
token: '',
|
token: '',
|
||||||
apiUrl,
|
apiUrl,
|
||||||
host
|
host,
|
||||||
|
twitterIntegration
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -59,7 +60,7 @@ export default Vue.extend({
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
location.reload();
|
location.reload();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
alert('something happened');
|
alert('%i18n:@login-failed%');
|
||||||
this.signing = false;
|
this.signing = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<form class="mk-signup" @submit.prevent="onSubmit" :autocomplete="Math.random()">
|
<form class="mk-signup" @submit.prevent="onSubmit" :autocomplete="Math.random()">
|
||||||
|
<ui-input v-if="meta.disableRegistration" v-model="invitationCode" type="text" :autocomplete="Math.random()" spellcheck="false" required>
|
||||||
|
<span>%i18n:@invitation-code%</span>
|
||||||
|
<span slot="prefix">%fa:id-card-alt%</span>
|
||||||
|
<p slot="text" v-html="'%i18n:@invitation-info%'.replace('{}', meta.maintainer.url)"></p>
|
||||||
|
</ui-input>
|
||||||
<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername">
|
<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername">
|
||||||
<span>%i18n:@username%</span>
|
<span>%i18n:@username%</span>
|
||||||
<span slot="prefix">@</span>
|
<span slot="prefix">@</span>
|
||||||
@ -46,11 +51,13 @@ export default Vue.extend({
|
|||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
retypedPassword: '',
|
retypedPassword: '',
|
||||||
|
invitationCode: '',
|
||||||
url,
|
url,
|
||||||
recaptchaSitekey,
|
recaptchaSitekey,
|
||||||
usernameState: null,
|
usernameState: null,
|
||||||
passwordStrength: '',
|
passwordStrength: '',
|
||||||
passwordRetypeState: null
|
passwordRetypeState: null,
|
||||||
|
meta: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -61,6 +68,11 @@ export default Vue.extend({
|
|||||||
this.usernameState != 'max-range');
|
this.usernameState != 'max-range');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).os.getMeta().then(meta => {
|
||||||
|
this.meta = meta;
|
||||||
|
});
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onChangeUsername() {
|
onChangeUsername() {
|
||||||
if (this.username == '') {
|
if (this.username == '') {
|
||||||
@ -110,6 +122,7 @@ export default Vue.extend({
|
|||||||
(this as any).api('signup', {
|
(this as any).api('signup', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
|
invitationCode: this.invitationCode,
|
||||||
'g-recaptcha-response': recaptchaSitekey != null ? (window as any).grecaptcha.getResponse() : null
|
'g-recaptcha-response': recaptchaSitekey != null ? (window as any).grecaptcha.getResponse() : null
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).api('signin', {
|
(this as any).api('signin', {
|
||||||
|
@ -45,6 +45,9 @@ root(isDark)
|
|||||||
color isDark ? #fff : #606266
|
color isDark ? #fff : #606266
|
||||||
transition 0.1s
|
transition 0.1s
|
||||||
|
|
||||||
|
*
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
&:focus
|
&:focus
|
||||||
color $theme-color
|
color $theme-color
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<iframe v-if="youtubeId" type="text/html" height="250"
|
<iframe v-if="player" :src="player" heigth="250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
|
||||||
:src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
|
|
||||||
frameborder="0"/>
|
|
||||||
<div v-else-if="tweetUrl && detail" class="twitter">
|
<div v-else-if="tweetUrl && detail" class="twitter">
|
||||||
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
|
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
|
||||||
<a :href="url"></a>
|
<a :href="url"></a>
|
||||||
@ -48,7 +46,7 @@ export default Vue.extend({
|
|||||||
thumbnail: null,
|
thumbnail: null,
|
||||||
icon: null,
|
icon: null,
|
||||||
sitename: null,
|
sitename: null,
|
||||||
youtubeId: null,
|
player: null,
|
||||||
tweetUrl: null,
|
tweetUrl: null,
|
||||||
misskeyUrl
|
misskeyUrl
|
||||||
};
|
};
|
||||||
@ -56,11 +54,7 @@ export default Vue.extend({
|
|||||||
created() {
|
created() {
|
||||||
const url = new URL(this.url);
|
const url = new URL(this.url);
|
||||||
|
|
||||||
if (url.hostname == 'www.youtube.com') {
|
if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
|
||||||
this.youtubeId = url.searchParams.get('v');
|
|
||||||
} else if (url.hostname == 'youtu.be') {
|
|
||||||
this.youtubeId = url.pathname;
|
|
||||||
} else if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
|
|
||||||
this.tweetUrl = url;
|
this.tweetUrl = url;
|
||||||
const twttr = (window as any).twttr || {};
|
const twttr = (window as any).twttr || {};
|
||||||
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
|
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
|
||||||
@ -79,20 +73,99 @@ export default Vue.extend({
|
|||||||
twttr.ready = loadTweet;
|
twttr.ready = loadTweet;
|
||||||
(window as any).twttr = twttr;
|
(window as any).twttr = twttr;
|
||||||
}
|
}
|
||||||
} else {
|
return;
|
||||||
|
}
|
||||||
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
|
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
|
||||||
res.json().then(info => {
|
res.json().then(info => {
|
||||||
|
if (info.url != null) {
|
||||||
this.title = info.title;
|
this.title = info.title;
|
||||||
this.description = info.description;
|
this.description = info.description;
|
||||||
this.thumbnail = info.thumbnail;
|
this.thumbnail = info.thumbnail;
|
||||||
this.icon = info.icon;
|
this.icon = info.icon;
|
||||||
this.sitename = info.sitename;
|
this.sitename = info.sitename;
|
||||||
|
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
});
|
if ([ // THIS IS THE WHITELIST FOR THE EMBED PLAYER
|
||||||
});
|
'afreecatv.com',
|
||||||
}
|
'aparat.com',
|
||||||
}
|
'applemusic.com',
|
||||||
|
'amazon.com',
|
||||||
|
'awa.fm',
|
||||||
|
'bandcamp.com',
|
||||||
|
'bbc.co.uk',
|
||||||
|
'beatport.com',
|
||||||
|
'bilibili.com',
|
||||||
|
'boomstream.com',
|
||||||
|
'breakers.tv',
|
||||||
|
'cam4.com',
|
||||||
|
'cavelis.net',
|
||||||
|
'chaturbate.com',
|
||||||
|
'cnn.com',
|
||||||
|
'cybergame.tv',
|
||||||
|
'dailymotion.com',
|
||||||
|
'deezer.com',
|
||||||
|
'djlive.pl',
|
||||||
|
'e-onkyo.com',
|
||||||
|
'eventials.com',
|
||||||
|
'facebook.com',
|
||||||
|
'fc2.com',
|
||||||
|
'gameplank.tv',
|
||||||
|
'goodgame.ru',
|
||||||
|
'google.com',
|
||||||
|
'hardtunes.com',
|
||||||
|
'instagram.com',
|
||||||
|
'johnnylooch.com',
|
||||||
|
'kexp.org',
|
||||||
|
'lahzenegar.com',
|
||||||
|
'liveedu.tv',
|
||||||
|
'livetube.cc',
|
||||||
|
'livestream.com',
|
||||||
|
'meridix.com',
|
||||||
|
'mixcloud.com',
|
||||||
|
'mixer.com',
|
||||||
|
'mobcrush.com',
|
||||||
|
'mylive.in.th',
|
||||||
|
'myspace.com',
|
||||||
|
'netflix.com',
|
||||||
|
'newretrowave.com',
|
||||||
|
'nhk.or.jp',
|
||||||
|
'nicovideo.jp',
|
||||||
|
'nico.ms',
|
||||||
|
'noisetrade.com',
|
||||||
|
'nood.tv',
|
||||||
|
'npr.org',
|
||||||
|
'openrec.tv',
|
||||||
|
'pandora.com',
|
||||||
|
'pandora.tv',
|
||||||
|
'picarto.tv',
|
||||||
|
'pscp.tv',
|
||||||
|
'restream.io',
|
||||||
|
'reverbnation.com',
|
||||||
|
'sermonaudio.com',
|
||||||
|
'smashcast.tv',
|
||||||
|
'songkick.com',
|
||||||
|
'soundcloud.com',
|
||||||
|
'spinninrecords.com',
|
||||||
|
'spotify.com',
|
||||||
|
'stitcher.com',
|
||||||
|
'stream.me',
|
||||||
|
'switchboard.live',
|
||||||
|
'tunein.com',
|
||||||
|
'twitcasting.tv',
|
||||||
|
'twitch.tv',
|
||||||
|
'twitter.com',
|
||||||
|
'vaughnlive.tv',
|
||||||
|
'veoh.com',
|
||||||
|
'vimeo.com',
|
||||||
|
'watchpeoplecode.com',
|
||||||
|
'web.tv',
|
||||||
|
'youtube.com',
|
||||||
|
'youtu.be'
|
||||||
|
].some(x => x == url.hostname || url.hostname.endsWith(`.${x}`)))
|
||||||
|
this.player = info.player;
|
||||||
|
} // info.url
|
||||||
|
}) // json
|
||||||
|
}); // fetch
|
||||||
|
} // created
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -44,7 +44,12 @@ import Vue from 'vue';
|
|||||||
import * as anime from 'animejs';
|
import * as anime from 'animejs';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['source', 'compact', 'v'],
|
props: ['source', 'compact'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
v: this.$store.state.device.visibility || 'public'
|
||||||
|
}
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
const popover = this.$refs.popover as any;
|
const popover = this.$refs.popover as any;
|
||||||
@ -92,6 +97,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
choose(visibility) {
|
choose(visibility) {
|
||||||
|
this.$store.commit('device/setVisibility', visibility);
|
||||||
this.$emit('chosen', visibility);
|
this.$emit('chosen', visibility);
|
||||||
this.$destroy();
|
this.$destroy();
|
||||||
},
|
},
|
||||||
|
@ -71,7 +71,6 @@ export default Vue.extend({
|
|||||||
this.user = user;
|
this.user = user;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
Progress.done();
|
Progress.done();
|
||||||
document.title = getUserName(this.user) + ' | %i18n:common.name%';
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<p>%fa:R hdd%Storage</p>
|
<p>%fa:R hdd%Storage</p>
|
||||||
<p>Total: {{ total | bytes(1) }}</p>
|
<p>Total: {{ total | bytes(1) }}</p>
|
||||||
<p>Available: {{ available | bytes(1) }}</p>
|
<p>Free: {{ available | bytes(1) }}</p>
|
||||||
<p>Used: {{ used | bytes(1) }}</p>
|
<p>Used: {{ used | bytes(1) }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,6 +22,7 @@ declare const _CODENAME_: string;
|
|||||||
declare const _LICENSE_: string;
|
declare const _LICENSE_: string;
|
||||||
declare const _GOOGLE_MAPS_API_KEY_: string;
|
declare const _GOOGLE_MAPS_API_KEY_: string;
|
||||||
declare const _WELCOME_BG_URL_: string;
|
declare const _WELCOME_BG_URL_: string;
|
||||||
|
declare const _TWITTER_INTEGRATION_: boolean;
|
||||||
|
|
||||||
export const host = _HOST_;
|
export const host = _HOST_;
|
||||||
export const hostname = _HOSTNAME_;
|
export const hostname = _HOSTNAME_;
|
||||||
@ -47,3 +48,4 @@ export const codename = _CODENAME_;
|
|||||||
export const license = _LICENSE_;
|
export const license = _LICENSE_;
|
||||||
export const googleMapsApiKey = _GOOGLE_MAPS_API_KEY_;
|
export const googleMapsApiKey = _GOOGLE_MAPS_API_KEY_;
|
||||||
export const welcomeBgUrl = _WELCOME_BG_URL_;
|
export const welcomeBgUrl = _WELCOME_BG_URL_;
|
||||||
|
export const twitterIntegration = _TWITTER_INTEGRATION_;
|
||||||
|
@ -8,7 +8,7 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
|
|
||||||
const w = os.new(CropWindow, {
|
const w = os.new(CropWindow, {
|
||||||
image: file,
|
image: file,
|
||||||
title: 'アバターとして表示する部分を選択',
|
title: '%i18n:desktop.avatar-crop-title%',
|
||||||
aspectRatio: 1 / 1
|
aspectRatio: 1 / 1
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -18,11 +18,11 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
data.append('file', blob, file.name + '.cropped.png');
|
data.append('file', blob, file.name + '.cropped.png');
|
||||||
|
|
||||||
os.api('drive/folders/find', {
|
os.api('drive/folders/find', {
|
||||||
name: 'アイコン'
|
name: '%i18n:desktop.avatar%'
|
||||||
}).then(iconFolder => {
|
}).then(iconFolder => {
|
||||||
if (iconFolder.length === 0) {
|
if (iconFolder.length === 0) {
|
||||||
os.api('drive/folders/create', {
|
os.api('drive/folders/create', {
|
||||||
name: 'アイコン'
|
name: '%i18n:desktop.avatar%'
|
||||||
}).then(iconFolder => {
|
}).then(iconFolder => {
|
||||||
upload(data, iconFolder);
|
upload(data, iconFolder);
|
||||||
});
|
});
|
||||||
@ -41,7 +41,7 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
|
|
||||||
const upload = (data, folder) => {
|
const upload = (data, folder) => {
|
||||||
const dialog = os.new(ProgressDialog, {
|
const dialog = os.new(ProgressDialog, {
|
||||||
title: '新しいアバターをアップロードしています'
|
title: '%i18n:desktop.uploading-avatar%'
|
||||||
});
|
});
|
||||||
document.body.appendChild(dialog.$el);
|
document.body.appendChild(dialog.$el);
|
||||||
|
|
||||||
@ -76,10 +76,10 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:info-circle%アバターを更新しました',
|
title: '%fa:info-circle% %i18n:desktop.avatar-updated%',
|
||||||
text: '新しいアバターが反映されるまで時間がかかる場合があります。',
|
text: null,
|
||||||
actions: [{
|
actions: [{
|
||||||
text: 'わかった'
|
text: '%i18n:common.got-it%'
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
} else {
|
} else {
|
||||||
os.apis.chooseDriveFile({
|
os.apis.chooseDriveFile({
|
||||||
multiple: false,
|
multiple: false,
|
||||||
title: '%fa:image%アバターにする画像を選択'
|
title: '%fa:image% %i18n:desktop.choose-avatar%'
|
||||||
}).then(file => {
|
}).then(file => {
|
||||||
fileSelected(file);
|
fileSelected(file);
|
||||||
});
|
});
|
||||||
|
@ -8,7 +8,7 @@ export default (os: OS) => {
|
|||||||
const cropImage = file => new Promise((resolve, reject) => {
|
const cropImage = file => new Promise((resolve, reject) => {
|
||||||
const w = os.new(CropWindow, {
|
const w = os.new(CropWindow, {
|
||||||
image: file,
|
image: file,
|
||||||
title: 'バナーとして表示する部分を選択',
|
title: '%i18n:desktop.banner-crop-title%',
|
||||||
aspectRatio: 16 / 9
|
aspectRatio: 16 / 9
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -18,11 +18,11 @@ export default (os: OS) => {
|
|||||||
data.append('file', blob, file.name + '.cropped.png');
|
data.append('file', blob, file.name + '.cropped.png');
|
||||||
|
|
||||||
os.api('drive/folders/find', {
|
os.api('drive/folders/find', {
|
||||||
name: 'バナー'
|
name: '%i18n:desktop.banner%'
|
||||||
}).then(bannerFolder => {
|
}).then(bannerFolder => {
|
||||||
if (bannerFolder.length === 0) {
|
if (bannerFolder.length === 0) {
|
||||||
os.api('drive/folders/create', {
|
os.api('drive/folders/create', {
|
||||||
name: 'バナー'
|
name: '%i18n:desktop.banner%'
|
||||||
}).then(iconFolder => {
|
}).then(iconFolder => {
|
||||||
resolve(upload(data, iconFolder));
|
resolve(upload(data, iconFolder));
|
||||||
});
|
});
|
||||||
@ -43,7 +43,7 @@ export default (os: OS) => {
|
|||||||
|
|
||||||
const upload = (data, folder) => new Promise((resolve, reject) => {
|
const upload = (data, folder) => new Promise((resolve, reject) => {
|
||||||
const dialog = os.new(ProgressDialog, {
|
const dialog = os.new(ProgressDialog, {
|
||||||
title: '新しいバナーをアップロードしています'
|
title: '%i18n:desktop.uploading-banner%'
|
||||||
});
|
});
|
||||||
document.body.appendChild(dialog.$el);
|
document.body.appendChild(dialog.$el);
|
||||||
|
|
||||||
@ -79,10 +79,10 @@ export default (os: OS) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
os.apis.dialog({
|
os.apis.dialog({
|
||||||
title: '%fa:info-circle%バナーを更新しました',
|
title: '%fa:info-circle% %i18n:desktop.banner-updated%',
|
||||||
text: '新しいバナーが反映されるまで時間がかかる場合があります。',
|
text: null,
|
||||||
actions: [{
|
actions: [{
|
||||||
text: 'わかった'
|
text: '%i18n:common.got-it%'
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ export default (os: OS) => {
|
|||||||
? Promise.resolve(file)
|
? Promise.resolve(file)
|
||||||
: os.apis.chooseDriveFile({
|
: os.apis.chooseDriveFile({
|
||||||
multiple: false,
|
multiple: false,
|
||||||
title: '%fa:image%バナーにする画像を選択'
|
title: '%fa:image% %i18n:desktop.choose-banner%'
|
||||||
});
|
});
|
||||||
|
|
||||||
return selectedFile
|
return selectedFile
|
||||||
|
@ -24,6 +24,7 @@ import updateBanner from './api/update-banner';
|
|||||||
|
|
||||||
import MkIndex from './views/pages/index.vue';
|
import MkIndex from './views/pages/index.vue';
|
||||||
import MkDeck from './views/pages/deck/deck.vue';
|
import MkDeck from './views/pages/deck/deck.vue';
|
||||||
|
import MkAdmin from './views/pages/admin/admin.vue';
|
||||||
import MkUser from './views/pages/user/user.vue';
|
import MkUser from './views/pages/user/user.vue';
|
||||||
import MkFavorites from './views/pages/favorites.vue';
|
import MkFavorites from './views/pages/favorites.vue';
|
||||||
import MkSelectDrive from './views/pages/selectdrive.vue';
|
import MkSelectDrive from './views/pages/selectdrive.vue';
|
||||||
@ -55,6 +56,7 @@ init(async (launch) => {
|
|||||||
routes: [
|
routes: [
|
||||||
{ path: '/', name: 'index', component: MkIndex },
|
{ path: '/', name: 'index', component: MkIndex },
|
||||||
{ path: '/deck', name: 'deck', component: MkDeck },
|
{ path: '/deck', name: 'deck', component: MkDeck },
|
||||||
|
{ path: '/admin', name: 'admin', component: MkAdmin },
|
||||||
{ path: '/i/customize-home', component: MkHomeCustomize },
|
{ path: '/i/customize-home', component: MkHomeCustomize },
|
||||||
{ path: '/i/favorites', component: MkFavorites },
|
{ path: '/i/favorites', component: MkFavorites },
|
||||||
{ path: '/i/messaging/:user', component: MkMessagingRoom },
|
{ path: '/i/messaging/:user', component: MkMessagingRoom },
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<p>%i18n:@banner%</p>
|
<p>%i18n:@banner%</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`">
|
<div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`">
|
||||||
<img :src="file.url" alt="" @load="onThumbnailLoaded"/>
|
<img :src="file.thumbnailUrl" alt="" @load="onThumbnailLoaded"/>
|
||||||
</div>
|
</div>
|
||||||
<p class="name">
|
<p class="name">
|
||||||
<span>{{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }}</span>
|
<span>{{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }}</span>
|
||||||
@ -99,7 +99,7 @@ export default Vue.extend({
|
|||||||
text: '%i18n:@contextmenu.set-as-banner%',
|
text: '%i18n:@contextmenu.set-as-banner%',
|
||||||
action: this.setAsBanner
|
action: this.setAsBanner
|
||||||
}]
|
}]
|
||||||
}, {
|
}, /*{
|
||||||
type: 'nest',
|
type: 'nest',
|
||||||
text: '%i18n:@contextmenu.open-in-app%',
|
text: '%i18n:@contextmenu.open-in-app%',
|
||||||
menu: [{
|
menu: [{
|
||||||
@ -107,7 +107,7 @@ export default Vue.extend({
|
|||||||
text: '%i18n:@contextmenu.add-app%...',
|
text: '%i18n:@contextmenu.add-app%...',
|
||||||
action: this.addApp
|
action: this.addApp
|
||||||
}]
|
}]
|
||||||
}], {
|
}*/], {
|
||||||
closed: () => {
|
closed: () => {
|
||||||
this.isContextmenuShowing = false;
|
this.isContextmenuShowing = false;
|
||||||
}
|
}
|
||||||
|
@ -67,12 +67,12 @@ export default Vue.extend({
|
|||||||
text: '%i18n:@contextmenu.rename%',
|
text: '%i18n:@contextmenu.rename%',
|
||||||
icon: '%fa:i-cursor%',
|
icon: '%fa:i-cursor%',
|
||||||
action: this.rename
|
action: this.rename
|
||||||
}, null, {
|
}/*, null, {
|
||||||
type: 'item',
|
type: 'item',
|
||||||
text: '%i18n:common.delete%',
|
text: '%i18n:common.delete%',
|
||||||
icon: '%fa:R trash-alt%',
|
icon: '%fa:R trash-alt%',
|
||||||
action: this.deleteFolder
|
action: this.deleteFolder
|
||||||
}], {
|
}*/], {
|
||||||
closed: () => {
|
closed: () => {
|
||||||
this.isContextmenuShowing = false;
|
this.isContextmenuShowing = false;
|
||||||
}
|
}
|
||||||
|
@ -567,6 +567,7 @@ export default Vue.extend({
|
|||||||
// ファイル一覧取得
|
// ファイル一覧取得
|
||||||
(this as any).api('drive/files', {
|
(this as any).api('drive/files', {
|
||||||
folderId: this.folder ? this.folder.id : null,
|
folderId: this.folder ? this.folder.id : null,
|
||||||
|
untilId: this.files[this.files.length - 1].id,
|
||||||
limit: max + 1
|
limit: max + 1
|
||||||
}).then(files => {
|
}).then(files => {
|
||||||
if (files.length == max + 1) {
|
if (files.length == max + 1) {
|
||||||
|
@ -37,7 +37,7 @@ export default Vue.extend({
|
|||||||
style(): any {
|
style(): any {
|
||||||
return {
|
return {
|
||||||
'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
|
'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
|
||||||
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.url})`
|
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.thumbnailUrl})`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -55,15 +55,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :note="p"/>
|
<mk-reactions-viewer :note="p"/>
|
||||||
<button @click="reply" title="">
|
<button class="replyButton" @click="reply" title="">
|
||||||
<template v-if="p.reply">%fa:reply-all%</template>
|
<template v-if="p.reply">%fa:reply-all%</template>
|
||||||
<template v-else>%fa:reply%</template>
|
<template v-else>%fa:reply%</template>
|
||||||
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="renote" title="%i18n:@renote%">
|
<button class="renoteButton" @click="renote" title="%i18n:@renote%">
|
||||||
%fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
|
%fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="%i18n:@add-reaction%">
|
<button class="reactionButton" :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="%i18n:@add-reaction%">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="menu" ref="menuButton">
|
<button @click="menu" ref="menuButton">
|
||||||
@ -79,7 +79,6 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import dateStringify from '../../../common/scripts/date-stringify';
|
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
|
|
||||||
import MkPostFormWindow from './post-form-window.vue';
|
import MkPostFormWindow from './post-form-window.vue';
|
||||||
@ -129,7 +128,7 @@ export default Vue.extend({
|
|||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
title(): string {
|
title(): string {
|
||||||
return dateStringify(this.p.createdAt);
|
return new Date(this.p.createdAt).toLocaleString();
|
||||||
},
|
},
|
||||||
urls(): string[] {
|
urls(): string[] {
|
||||||
if (this.p.text) {
|
if (this.p.text) {
|
||||||
@ -373,15 +372,24 @@ root(isDark)
|
|||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color isDark ? #9198af : #666
|
color isDark ? #a1a8bf : #444
|
||||||
|
|
||||||
|
&.replyButton:hover
|
||||||
|
color #0af
|
||||||
|
|
||||||
|
&.renoteButton:hover
|
||||||
|
color #8d0
|
||||||
|
|
||||||
|
&.reactionButton:hover
|
||||||
|
color #fa0
|
||||||
|
|
||||||
> .count
|
> .count
|
||||||
display inline
|
display inline
|
||||||
margin 0 0 0 8px
|
margin 0 0 0 8px
|
||||||
color #999
|
color #999
|
||||||
|
|
||||||
&.reacted
|
&.reacted, &.reacted:hover
|
||||||
color $theme-color
|
color #fa0
|
||||||
|
|
||||||
> .replies
|
> .replies
|
||||||
> *
|
> *
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import dateStringify from '../../../common/scripts/date-stringify';
|
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
@ -28,7 +27,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
title(): string {
|
title(): string {
|
||||||
return dateStringify(this.note.createdAt);
|
return new Date(this.note.createdAt).toLocaleString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -12,13 +12,12 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import dateStringify from '../../../common/scripts/date-stringify';
|
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note'],
|
props: ['note'],
|
||||||
computed: {
|
computed: {
|
||||||
title(): string {
|
title(): string {
|
||||||
return dateStringify(this.note.createdAt);
|
return new Date(this.note.createdAt).toLocaleString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<div class="body">
|
<div class="body">
|
||||||
<p v-if="p.cw != null" class="cw">
|
<p v-if="p.cw != null" class="cw">
|
||||||
<span class="text" v-if="p.cw != ''">{{ p.cw }}</span>
|
<span class="text" v-if="p.cw != ''">{{ p.cw }}</span>
|
||||||
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '隠す' : 'もっと見る' }}</span>
|
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
|
||||||
</p>
|
</p>
|
||||||
<div class="content" v-show="p.cw == null || showContent">
|
<div class="content" v-show="p.cw == null || showContent">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
@ -42,15 +42,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<mk-reactions-viewer :note="p" ref="reactionsViewer"/>
|
<mk-reactions-viewer :note="p" ref="reactionsViewer"/>
|
||||||
<button @click="reply" title="%i18n:@reply%">
|
<button class="replyButton" @click="reply" title="%i18n:@reply%">
|
||||||
<template v-if="p.reply">%fa:reply-all%</template>
|
<template v-if="p.reply">%fa:reply-all%</template>
|
||||||
<template v-else>%fa:reply%</template>
|
<template v-else>%fa:reply%</template>
|
||||||
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="renote" title="%i18n:@renote%">
|
<button class="renoteButton" @click="renote" title="%i18n:@renote%">
|
||||||
%fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
|
%fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="%i18n:@add-reaction%">
|
<button class="reactionButton" :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="%i18n:@add-reaction%">
|
||||||
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
%fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button @click="menu" ref="menuButton">
|
<button @click="menu" ref="menuButton">
|
||||||
@ -71,7 +71,6 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import dateStringify from '../../../common/scripts/date-stringify';
|
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
|
|
||||||
import MkPostFormWindow from './post-form-window.vue';
|
import MkPostFormWindow from './post-form-window.vue';
|
||||||
@ -128,7 +127,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
title(): string {
|
title(): string {
|
||||||
return dateStringify(this.p.createdAt);
|
return new Date(this.p.createdAt).toLocaleString();
|
||||||
},
|
},
|
||||||
|
|
||||||
urls(): string[] {
|
urls(): string[] {
|
||||||
@ -488,20 +487,24 @@ root(isDark)
|
|||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color isDark ? #9198af : #666
|
color isDark ? #a1a8bf : #444
|
||||||
|
|
||||||
|
&.replyButton:hover
|
||||||
|
color #0af
|
||||||
|
|
||||||
|
&.renoteButton:hover
|
||||||
|
color #8d0
|
||||||
|
|
||||||
|
&.reactionButton:hover
|
||||||
|
color #fa0
|
||||||
|
|
||||||
> .count
|
> .count
|
||||||
display inline
|
display inline
|
||||||
margin 0 0 0 8px
|
margin 0 0 0 8px
|
||||||
color #999
|
color #999
|
||||||
|
|
||||||
&.reacted
|
&.reacted, &.reacted:hover
|
||||||
color $theme-color
|
color #fa0
|
||||||
|
|
||||||
&:last-child
|
|
||||||
position absolute
|
|
||||||
right 0
|
|
||||||
margin 0
|
|
||||||
|
|
||||||
> .detail
|
> .detail
|
||||||
padding-top 4px
|
padding-top 4px
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { url } from '../../../config';
|
import * as config from '../../../config';
|
||||||
import getNoteSummary from '../../../../../misc/get-note-summary';
|
import getNoteSummary from '../../../../../misc/get-note-summary';
|
||||||
|
|
||||||
import XNote from './notes.note.vue';
|
import XNote from './notes.note.vue';
|
||||||
@ -69,7 +69,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(note.createdAt).getDate();
|
const date = new Date(note.createdAt).getDate();
|
||||||
const month = new Date(note.createdAt).getMonth() + 1;
|
const month = new Date(note.createdAt).getMonth() + 1;
|
||||||
note._date = date;
|
note._date = date;
|
||||||
note._datetext = `${month}月 ${date}日`;
|
note._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return note;
|
return note;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -135,6 +135,12 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.$store.state.settings.showLocalRenotes === false) {
|
||||||
|
if (isPureRenote && (note.renote.user.host == null)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
// 投稿が自分のものではないかつ、タブが非表示またはスクロール位置が最上部ではないならタイトルで通知
|
// 投稿が自分のものではないかつ、タブが非表示またはスクロール位置が最上部ではないならタイトルで通知
|
||||||
@ -149,7 +155,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
// サウンドを再生する
|
// サウンドを再生する
|
||||||
if (this.$store.state.device.enableSounds && !silent) {
|
if (this.$store.state.device.enableSounds && !silent) {
|
||||||
const sound = new Audio(`${url}/assets/post.mp3`);
|
const sound = new Audio(`${config.url}/assets/post.mp3`);
|
||||||
sound.volume = this.$store.state.device.soundVolume;
|
sound.volume = this.$store.state.device.soundVolume;
|
||||||
sound.play();
|
sound.play();
|
||||||
}
|
}
|
||||||
@ -187,7 +193,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
clearNotification() {
|
clearNotification() {
|
||||||
this.unreadCount = 0;
|
this.unreadCount = 0;
|
||||||
document.title = '%i18n:common.name%';
|
document.title = config.name;
|
||||||
},
|
},
|
||||||
|
|
||||||
onVisibilitychange() {
|
onVisibilitychange() {
|
||||||
|
@ -130,7 +130,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(notification.createdAt).getDate();
|
const date = new Date(notification.createdAt).getDate();
|
||||||
const month = new Date(notification.createdAt).getMonth() + 1;
|
const month = new Date(notification.createdAt).getMonth() + 1;
|
||||||
notification._date = date;
|
notification._date = date;
|
||||||
notification._datetext = `${month}月 ${date}日`;
|
notification._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return notification;
|
return notification;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,11 @@
|
|||||||
<span v-for="u in visibleUsers">{{ u | userName }}<a @click="removeVisibleUser(u)">[x]</a></span>
|
<span v-for="u in visibleUsers">{{ u | userName }}<a @click="removeVisibleUser(u)">[x]</a></span>
|
||||||
<a @click="addVisibleUser">%i18n:@add-visible-user%</a>
|
<a @click="addVisibleUser">%i18n:@add-visible-user%</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="hashtags" v-if="recentHashtags.length > 0">
|
<div class="hashtags" v-if="recentHashtags.length > 0 && $store.state.settings.suggestRecentHashtags">
|
||||||
<b>%i18n:@recent-tags%:</b>
|
<b>%i18n:@recent-tags%:</b>
|
||||||
<a v-for="tag in recentHashtags.slice(0, 5)" @click="addTag(tag)" title="%@click-to-tagging%">#{{ tag }}</a>
|
<a v-for="tag in recentHashtags.slice(0, 5)" @click="addTag(tag)" title="%@click-to-tagging%">#{{ tag }}</a>
|
||||||
</div>
|
</div>
|
||||||
<input v-show="useCw" v-model="cw" placeholder="内容への注釈 (オプション)">
|
<input v-show="useCw" v-model="cw" placeholder="%i18n:@annotations%">
|
||||||
<textarea :class="{ with: (files.length != 0 || poll) }"
|
<textarea :class="{ with: (files.length != 0 || poll) }"
|
||||||
ref="text" v-model="text" :disabled="posting"
|
ref="text" v-model="text" :disabled="posting"
|
||||||
@keydown="onKeydown" @paste="onPaste" :placeholder="placeholder"
|
@keydown="onKeydown" @paste="onPaste" :placeholder="placeholder"
|
||||||
@ -23,7 +23,7 @@
|
|||||||
<div class="medias" :class="{ with: poll }" v-show="files.length != 0">
|
<div class="medias" :class="{ with: poll }" v-show="files.length != 0">
|
||||||
<x-draggable :list="files" :options="{ animation: 150 }">
|
<x-draggable :list="files" :options="{ animation: 150 }">
|
||||||
<div v-for="file in files" :key="file.id">
|
<div v-for="file in files" :key="file.id">
|
||||||
<div class="img" :style="{ backgroundImage: `url(${file.url})` }" :title="file.name"></div>
|
<div class="img" :style="{ backgroundImage: `url(${file.thumbnailUrl})` }" :title="file.name"></div>
|
||||||
<img class="remove" @click="detachMedia(file.id)" src="/assets/desktop/remove.png" title="%i18n:@attach-cancel%" alt=""/>
|
<img class="remove" @click="detachMedia(file.id)" src="/assets/desktop/remove.png" title="%i18n:@attach-cancel%" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
</x-draggable>
|
</x-draggable>
|
||||||
@ -99,7 +99,7 @@ export default Vue.extend({
|
|||||||
useCw: false,
|
useCw: false,
|
||||||
cw: null,
|
cw: null,
|
||||||
geo: null,
|
geo: null,
|
||||||
visibility: 'public',
|
visibility: this.$store.state.device.visibility || 'public',
|
||||||
visibleUsers: [],
|
visibleUsers: [],
|
||||||
autocomplete: null,
|
autocomplete: null,
|
||||||
draghover: false,
|
draghover: false,
|
||||||
@ -326,8 +326,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
setVisibility() {
|
setVisibility() {
|
||||||
const w = (this as any).os.new(MkVisibilityChooser, {
|
const w = (this as any).os.new(MkVisibilityChooser, {
|
||||||
source: this.$refs.visibilityButton,
|
source: this.$refs.visibilityButton
|
||||||
v: this.visibility
|
|
||||||
});
|
});
|
||||||
w.$once('chosen', v => {
|
w.$once('chosen', v => {
|
||||||
this.visibility = v;
|
this.visibility = v;
|
||||||
|
@ -48,13 +48,16 @@
|
|||||||
<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
|
<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
||||||
|
<mk-switch v-model="$store.state.settings.suggestRecentHashtags" @change="onChangeSuggestRecentHashtags" text="%i18n:@suggest-recent-hashtags%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
<mk-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
<mk-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
||||||
|
<mk-switch v-model="$store.state.settings.showLocalRenotes" @change="onChangeShowLocalRenotes" text="%i18n:@show-local-renotes%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
|
||||||
<span>%i18n:@show-maps-desc%</span>
|
<span>%i18n:@show-maps-desc%</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
<mk-switch v-model="$store.state.settings.reversiBoardLabels" @change="onChangeReversiBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
|
<mk-switch v-model="$store.state.settings.reversiBoardLabels" @change="onChangeReversiBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
|
||||||
|
<mk-switch v-model="$store.state.settings.disableAnimatedMfm" @change="onChangeDisableAnimatedMfm" text="%i18n:common.disable-animated-mfm%"/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="web" v-show="page == 'web'">
|
<section class="web" v-show="page == 'web'">
|
||||||
@ -334,6 +337,12 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeSuggestRecentHashtags(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'suggestRecentHashtags',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeShowReplyTarget(v) {
|
onChangeShowReplyTarget(v) {
|
||||||
this.$store.dispatch('settings/set', {
|
this.$store.dispatch('settings/set', {
|
||||||
key: 'showReplyTarget',
|
key: 'showReplyTarget',
|
||||||
@ -352,6 +361,12 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeShowLocalRenotes(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'showLocalRenotes',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeShowMaps(v) {
|
onChangeShowMaps(v) {
|
||||||
this.$store.dispatch('settings/set', {
|
this.$store.dispatch('settings/set', {
|
||||||
key: 'showMaps',
|
key: 'showMaps',
|
||||||
@ -376,6 +391,12 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeDisableAnimatedMfm(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'disableAnimatedMfm',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeGradientWindowHeader(v) {
|
onChangeGradientWindowHeader(v) {
|
||||||
this.$store.dispatch('settings/set', {
|
this.$store.dispatch('settings/set', {
|
||||||
key: 'gradientWindowHeader',
|
key: 'gradientWindowHeader',
|
||||||
|
@ -100,7 +100,8 @@ export default Vue.extend({
|
|||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilDate: this.date ? this.date.getTime() : undefined,
|
untilDate: this.date ? this.date.getTime() : undefined,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -122,7 +123,8 @@ export default Vue.extend({
|
|||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
});
|
});
|
||||||
|
|
||||||
promise.then(notes => {
|
promise.then(notes => {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="main" ref="main">
|
<div class="main" ref="main">
|
||||||
<div class="backdrop"></div>
|
<div class="backdrop"></div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
|
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>%i18n:@adjective%</p>
|
||||||
<div class="container" ref="mainContainer">
|
<div class="container" ref="mainContainer">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<x-nav/>
|
<x-nav/>
|
||||||
@ -155,10 +155,15 @@ root(isDark)
|
|||||||
max-width 1300px
|
max-width 1300px
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
|
|
||||||
|
> *
|
||||||
|
position absolute
|
||||||
|
height 48px
|
||||||
|
|
||||||
> .center
|
> .center
|
||||||
margin auto
|
right 0
|
||||||
|
|
||||||
> .icon
|
> .icon
|
||||||
|
margin auto
|
||||||
display block
|
display block
|
||||||
width 48px
|
width 48px
|
||||||
height 48px
|
height 48px
|
||||||
@ -169,11 +174,12 @@ root(isDark)
|
|||||||
opacity 0.3
|
opacity 0.3
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
> .left
|
> .left,
|
||||||
height 48px
|
> .center
|
||||||
|
left 0
|
||||||
|
|
||||||
> .right
|
> .right
|
||||||
height 48px
|
right 0
|
||||||
|
|
||||||
> *
|
> *
|
||||||
display inline-block
|
display inline-block
|
||||||
|
@ -47,7 +47,8 @@ export default Vue.extend({
|
|||||||
listId: this.list.id,
|
listId: this.list.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -67,7 +68,8 @@ export default Vue.extend({
|
|||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
});
|
});
|
||||||
|
|
||||||
promise.then(notes => {
|
promise.then(notes => {
|
||||||
|
@ -27,7 +27,7 @@ export default Vue.extend({
|
|||||||
methods: {
|
methods: {
|
||||||
add() {
|
add() {
|
||||||
(this as any).apis.input({
|
(this as any).apis.input({
|
||||||
title: 'リスト名',
|
title: '%i18n:@list-name%',
|
||||||
}).then(async title => {
|
}).then(async title => {
|
||||||
const list = await (this as any).api('users/lists/create', {
|
const list = await (this as any).api('users/lists/create', {
|
||||||
title
|
title
|
||||||
|
@ -10,13 +10,13 @@
|
|||||||
<div class="description">{{ u.description }}</div>
|
<div class="description">{{ u.description }}</div>
|
||||||
<div class="status">
|
<div class="status">
|
||||||
<div>
|
<div>
|
||||||
<p>%i18n:@notes%</p><a>{{ u.notesCount }}</a>
|
<p>%i18n:@notes%</p><span>{{ u.notesCount }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p>%i18n:@following%</p><a>{{ u.followingCount }}</a>
|
<p>%i18n:@following%</p><span>{{ u.followingCount }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
|
<p>%i18n:@followers%</p><span>{{ u.followersCount }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<mk-follow-button v-if="$store.getters.isSignedIn && u.id != $store.state.i.id" :user="u"/>
|
<mk-follow-button v-if="$store.getters.isSignedIn && u.id != $store.state.i.id" :user="u"/>
|
||||||
@ -149,7 +149,7 @@ root(isDark)
|
|||||||
font-size 0.7em
|
font-size 0.7em
|
||||||
color #aaa
|
color #aaa
|
||||||
|
|
||||||
> a
|
> span
|
||||||
font-size 1em
|
font-size 1em
|
||||||
color $theme-color
|
color $theme-color
|
||||||
|
|
||||||
|
49
src/client/app/desktop/views/pages/admin/admin.dashboard.vue
Normal file
49
src/client/app/desktop/views/pages/admin/admin.dashboard.vue
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>%i18n:@dashboard%</h1>
|
||||||
|
<div v-if="stats">
|
||||||
|
<p><b>%i18n:@all-users%</b>: <span>{{ stats.usersCount | number }}</span></p>
|
||||||
|
<p><b>%i18n:@original-users%</b>: <span>{{ stats.originalUsersCount | number }}</span></p>
|
||||||
|
<p><b>%i18n:@all-notes%</b>: <span>{{ stats.notesCount | number }}</span></p>
|
||||||
|
<p><b>%i18n:@original-notes%</b>: <span>{{ stats.originalNotesCount | number }}</span></p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button class="ui" @click="invite">%i18n:@invite%</button>
|
||||||
|
<p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from "vue";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stats: null,
|
||||||
|
inviteCode: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).api('stats').then(stats => {
|
||||||
|
this.stats = stats;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
invite() {
|
||||||
|
(this as any).api('admin/invite').then(x => {
|
||||||
|
this.inviteCode = x.code;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
h1
|
||||||
|
margin 0 0 1em 0
|
||||||
|
padding 0 0 8px 0
|
||||||
|
font-size 1em
|
||||||
|
color #555
|
||||||
|
border-bottom solid 1px #eee
|
||||||
|
</style>
|
@ -0,0 +1,51 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<header>%i18n:@suspend-user%</header>
|
||||||
|
<input v-model="username" type="text" class="ui"/>
|
||||||
|
<button class="ui" @click="suspendUser" :disabled="suspending">%i18n:@suspend%</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from "vue";
|
||||||
|
import parseAcct from "../../../../../../misc/acct/parse";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
username: null,
|
||||||
|
suspending: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async suspendUser() {
|
||||||
|
this.suspending = true;
|
||||||
|
|
||||||
|
const user = await (this as any).os.api(
|
||||||
|
"users/show",
|
||||||
|
parseAcct(this.username)
|
||||||
|
);
|
||||||
|
|
||||||
|
await (this as any).os.api("admin/suspend-user", {
|
||||||
|
userId: user.id
|
||||||
|
});
|
||||||
|
|
||||||
|
this.suspending = false;
|
||||||
|
|
||||||
|
(this as any).os.apis.dialog({ text: "%i18n:@suspended%" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
header
|
||||||
|
margin 10px 0
|
||||||
|
|
||||||
|
|
||||||
|
button
|
||||||
|
margin 16px 0
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,51 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<header>%i18n:@unsuspend-user%</header>
|
||||||
|
<input v-model="username" type="text" class="ui"/>
|
||||||
|
<button class="ui" @click="unsuspendUser" :disabled="unsuspending">%i18n:@unsuspend%</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from "vue";
|
||||||
|
import parseAcct from "../../../../../../misc/acct/parse";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
username: null,
|
||||||
|
unsuspending: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async unsuspendUser() {
|
||||||
|
this.unsuspending = true;
|
||||||
|
|
||||||
|
const user = await (this as any).os.api(
|
||||||
|
"users/show",
|
||||||
|
parseAcct(this.username)
|
||||||
|
);
|
||||||
|
|
||||||
|
await (this as any).os.api("admin/unsuspend-user", {
|
||||||
|
userId: user.id
|
||||||
|
});
|
||||||
|
|
||||||
|
this.unsuspending = false;
|
||||||
|
|
||||||
|
(this as any).os.apis.dialog({ text: "%i18n:@unsuspended%" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
header
|
||||||
|
margin 10px 0
|
||||||
|
|
||||||
|
|
||||||
|
button
|
||||||
|
margin 16px 0
|
||||||
|
|
||||||
|
</style>
|
102
src/client/app/desktop/views/pages/admin/admin.vue
Normal file
102
src/client/app/desktop/views/pages/admin/admin.vue
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mk-admin">
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }">%fa:chalkboard .fw%%i18n:@dashboard%</li>
|
||||||
|
<li @click="nav('users')" :class="{ active: page == 'users' }">%fa:users .fw%%i18n:@users%</li>
|
||||||
|
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }">%fa:cloud .fw%%i18n:@drive%</li> -->
|
||||||
|
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">%i18n:@update%</li> -->
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<div v-if="page == 'dashboard'">
|
||||||
|
<x-dashboard/>
|
||||||
|
</div>
|
||||||
|
<div v-if="page == 'users'">
|
||||||
|
<x-suspend-user/>
|
||||||
|
<x-unsuspend-user/>
|
||||||
|
</div>
|
||||||
|
<div v-if="page == 'drive'"></div>
|
||||||
|
<div v-if="page == 'update'"></div>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from "vue";
|
||||||
|
import XDashboard from "./admin.dashboard.vue";
|
||||||
|
import XSuspendUser from "./admin.suspend-user.vue";
|
||||||
|
import XUnsuspendUser from "./admin.unsuspend-user.vue";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
XDashboard,
|
||||||
|
XSuspendUser,
|
||||||
|
XUnsuspendUser
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
page: 'dashboard'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
nav(page: string) {
|
||||||
|
this.page = page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
.mk-admin
|
||||||
|
display flex
|
||||||
|
height 100%
|
||||||
|
margin 32px
|
||||||
|
|
||||||
|
> nav
|
||||||
|
flex 0 0 250px
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
padding 16px 0 0 0
|
||||||
|
overflow auto
|
||||||
|
border-right solid 1px #ddd
|
||||||
|
|
||||||
|
> ul
|
||||||
|
list-style none
|
||||||
|
|
||||||
|
> li
|
||||||
|
display block
|
||||||
|
padding 10px 16px
|
||||||
|
margin 0
|
||||||
|
color #666
|
||||||
|
cursor pointer
|
||||||
|
user-select none
|
||||||
|
transition margin-left 0.2s ease
|
||||||
|
|
||||||
|
> [data-fa]
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
color #555
|
||||||
|
|
||||||
|
&.active
|
||||||
|
margin-left 8px
|
||||||
|
color $theme-color !important
|
||||||
|
|
||||||
|
> main
|
||||||
|
width 100%
|
||||||
|
padding 16px 32px
|
||||||
|
|
||||||
|
header
|
||||||
|
margin 10px 0
|
||||||
|
|
||||||
|
|
||||||
|
button
|
||||||
|
margin 16px 0
|
||||||
|
position absolute
|
||||||
|
right 0
|
||||||
|
|
||||||
|
</style>
|
@ -70,7 +70,8 @@ export default Vue.extend({
|
|||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
mediaOnly: this.mediaOnly,
|
mediaOnly: this.mediaOnly,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -91,7 +92,8 @@ export default Vue.extend({
|
|||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
mediaOnly: this.mediaOnly,
|
mediaOnly: this.mediaOnly,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
});
|
});
|
||||||
|
|
||||||
promise.then(notes => {
|
promise.then(notes => {
|
||||||
|
@ -72,7 +72,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(note.createdAt).getDate();
|
const date = new Date(note.createdAt).getDate();
|
||||||
const month = new Date(note.createdAt).getMonth() + 1;
|
const month = new Date(note.createdAt).getMonth() + 1;
|
||||||
note._date = date;
|
note._date = date;
|
||||||
note._datetext = `${month}月 ${date}日`;
|
note._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return note;
|
return note;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -140,6 +140,12 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.$store.state.settings.showLocalRenotes === false) {
|
||||||
|
if (isPureRenote && (note.renote.user.host == null)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
if (this.isScrollTop()) {
|
if (this.isScrollTop()) {
|
||||||
|
@ -51,7 +51,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(notification.createdAt).getDate();
|
const date = new Date(notification.createdAt).getDate();
|
||||||
const month = new Date(notification.createdAt).getMonth() + 1;
|
const month = new Date(notification.createdAt).getMonth() + 1;
|
||||||
notification._date = date;
|
notification._date = date;
|
||||||
notification._datetext = `${month}月 ${date}日`;
|
notification._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return notification;
|
return notification;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,8 @@ export default Vue.extend({
|
|||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
mediaOnly: this.mediaOnly,
|
mediaOnly: this.mediaOnly,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -119,7 +120,8 @@ export default Vue.extend({
|
|||||||
mediaOnly: this.mediaOnly,
|
mediaOnly: this.mediaOnly,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
});
|
});
|
||||||
|
|
||||||
promise.then(notes => {
|
promise.then(notes => {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<component :is="ui ? 'mk-ui' : 'div'">
|
<component :is="ui ? 'mk-ui' : 'div'">
|
||||||
<mk-reversi :game-id="$route.params.game" @nav="nav"/>
|
<mk-reversi :game-id="$route.params.game" @nav="nav" :self-nav="false"/>
|
||||||
</component>
|
</component>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -14,9 +14,14 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
nav(game) {
|
nav(game, actualNav) {
|
||||||
history.pushState(null, null, '/reversi/' + game.id);
|
if (actualNav) {
|
||||||
},
|
this.$router.push('/reversi/' + game.id);
|
||||||
|
} else {
|
||||||
|
// TODO: https://github.com/vuejs/vue-router/issues/703
|
||||||
|
this.$router.push('/reversi/' + game.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -4,9 +4,11 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = '%i18n:common.name% - %i18n:@title%';
|
document.title = `${config.name} - %i18n:@title%`;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Progress from '../../../common/scripts/loading';
|
import Progress from '../../../common/scripts/loading';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
@ -16,7 +17,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = '%i18n:common.name%';
|
document.title = config.name;
|
||||||
|
|
||||||
Progress.start();
|
Progress.start();
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="pptjhabgjtt7kwskbfv4y3uml6fpuhmr">
|
<div class="pptjhabgjtt7kwskbfv4y3uml6fpuhmr">
|
||||||
<h1>{{'%i18n:@share-with%'.split("{}")[0] + '%i18n:common.name%' + '%i18n:@share-with%'.split("{}")[1]}}</h1>
|
<h1>{{ '%i18n:@share-with%'.replace('{}', name) }}</h1>
|
||||||
<div>
|
<div>
|
||||||
<mk-signin v-if="!$store.getters.isSignedIn"/>
|
<mk-signin v-if="!$store.getters.isSignedIn"/>
|
||||||
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
|
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
|
||||||
@ -12,10 +12,12 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
name: config.name,
|
||||||
posted: false,
|
posted: false,
|
||||||
text: new URLSearchParams(location.search).get('text')
|
text: new URLSearchParams(location.search).get('text')
|
||||||
};
|
};
|
||||||
|
@ -176,6 +176,10 @@ root(isDark)
|
|||||||
height 120px
|
height 120px
|
||||||
box-shadow 1px 1px 3px rgba(#000, 0.2)
|
box-shadow 1px 1px 3px rgba(#000, 0.2)
|
||||||
|
|
||||||
|
> &.cat::before,
|
||||||
|
> &.cat::after
|
||||||
|
border-width 8px
|
||||||
|
|
||||||
> .body
|
> .body
|
||||||
padding 16px 16px 16px 154px
|
padding 16px 16px 16px 154px
|
||||||
color isDark ? #c5ced6 : #555
|
color isDark ? #c5ced6 : #555
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<span v-if="user.isMuted">%fa:eye% %i18n:@unmute%</span>
|
<span v-if="user.isMuted">%fa:eye% %i18n:@unmute%</span>
|
||||||
<span v-if="!user.isMuted">%fa:eye-slash% %i18n:@mute%</span>
|
<span v-if="!user.isMuted">%fa:eye-slash% %i18n:@mute%</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="mute ui" @click="list">%fa:list% リストに追加</button>
|
<button class="mute ui" @click="list">%fa:list% %i18n:@push-to-a-list%</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -76,7 +76,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
(this as any).apis.dialog({
|
(this as any).apis.dialog({
|
||||||
title: 'Done!',
|
title: 'Done!',
|
||||||
text: `${this.user.name}を${list.title}に追加しました。`
|
text: '%i18n:@list-pushed%'.replace('{user}', this.user.name).replace('{list}', list.title)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,6 @@ export default Vue.extend({
|
|||||||
this.user = user;
|
this.user = user;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
Progress.done();
|
Progress.done();
|
||||||
document.title = getUserName(this.user) + ' | %i18n:common.name%';
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<div class="body" :style="{ backgroundImage: `url('${ welcomeBgUrl }')` }">
|
<div class="body" :style="{ backgroundImage: `url('${ welcomeBgUrl }')` }">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span>%i18n:common.name% <b>{{ host }}</b></span>
|
<span><b>{{ host }}</b></span>
|
||||||
<span class="stats" v-if="stats">
|
<span class="stats" v-if="stats">
|
||||||
<span>%fa:user% {{ stats.originalUsersCount | number }}</span>
|
<span>%fa:user% {{ stats.originalUsersCount | number }}</span>
|
||||||
<span>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</span>
|
<span>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</span>
|
||||||
@ -16,9 +16,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<main>
|
<main>
|
||||||
<div class="about">
|
<div class="about">
|
||||||
<h1 v-if="name">{{ name }}</h1>
|
<h1 v-if="name != 'Misskey'">{{ name }}</h1>
|
||||||
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%"></h1>
|
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" :alt="name"></h1>
|
||||||
<p class="powerd-by" v-if="name">%i18n:@powered-by-misskey%</p>
|
<p class="powerd-by" v-if="name != 'Misskey'" v-html="'%i18n:@powered-by-misskey%'"></p>
|
||||||
<p class="desc" v-html="description || '%i18n:common.about%'"></p>
|
<p class="desc" v-html="description || '%i18n:common.about%'"></p>
|
||||||
<a ref="signup" @click="signup">📦 %i18n:@signup%</a>
|
<a ref="signup" @click="signup">📦 %i18n:@signup%</a>
|
||||||
</div>
|
</div>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
<mk-nav class="nav"/>
|
<mk-nav class="nav"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-forkit class="forkit"/>
|
<mk-forkit class="forkit"/>
|
||||||
<img src="assets/title.dark.svg" alt="%i18n:common.name%">
|
<img src="assets/title.dark.svg" :alt="name">
|
||||||
</div>
|
</div>
|
||||||
<div class="tl">
|
<div class="tl">
|
||||||
<mk-welcome-timeline :max="20"/>
|
<mk-welcome-timeline :max="20"/>
|
||||||
|
@ -55,7 +55,7 @@ export default define({
|
|||||||
}).then(data => {
|
}).then(data => {
|
||||||
this.clear();
|
this.clear();
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
alert('失敗した');
|
alert('Something happened');
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.posting = false;
|
this.posting = false;
|
||||||
});
|
});
|
||||||
|
@ -6,10 +6,11 @@
|
|||||||
<div class="banner"
|
<div class="banner"
|
||||||
:style="$store.state.i.bannerUrl ? `background-image: url(${$store.state.i.bannerUrl})` : ''"
|
:style="$store.state.i.bannerUrl ? `background-image: url(${$store.state.i.bannerUrl})` : ''"
|
||||||
title="%i18n:@update-banner%"
|
title="%i18n:@update-banner%"
|
||||||
@click="os.apis.updateBanner"
|
@click="() => os.apis.updateBanner()"
|
||||||
></div>
|
></div>
|
||||||
<mk-avatar class="avatar" :user="$store.state.i"
|
<mk-avatar class="avatar" :user="$store.state.i"
|
||||||
@click="os.apis.updateAvatar"
|
:disable-link="true"
|
||||||
|
@click="() => os.apis.updateAvatar()"
|
||||||
title="%i18n:@update-avatar%"
|
title="%i18n:@update-avatar%"
|
||||||
/>
|
/>
|
||||||
<router-link class="name" :to="$store.state.i | userPage">{{ $store.state.i | userName }}</router-link>
|
<router-link class="name" :to="$store.state.i | userPage">{{ $store.state.i | userName }}</router-link>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-ui>
|
<mk-ui>
|
||||||
<p v-if="fetching">読み込み中</p>
|
<p v-if="fetching">%i18n:common.loading%</p>
|
||||||
<b-card v-if="!fetching" :header="app.name">
|
<b-card v-if="!fetching" :header="app.name">
|
||||||
<b-form-group label="App Secret">
|
<b-form-group label="App Secret">
|
||||||
<b-input :value="app.secret" readonly/>
|
<b-input :value="app.secret" readonly/>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<mk-ui>
|
<mk-ui>
|
||||||
<b-button to="/apps" variant="primary">アプリの管理</b-button>
|
<b-button to="/apps" variant="primary">%i18n:@manage-apps%</b-button>
|
||||||
</mk-ui>
|
</mk-ui>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<b-navbar toggleable="md" type="dark" variant="info">
|
<b-navbar toggleable="md" type="dark" variant="info">
|
||||||
<b-navbar-brand>%i18n:common.name% Developers</b-navbar-brand>
|
<b-navbar-brand>Developers</b-navbar-brand>
|
||||||
<b-navbar-nav>
|
<b-navbar-nav>
|
||||||
<b-nav-item to="/">Home</b-nav-item>
|
<b-nav-item to="/">Home</b-nav-item>
|
||||||
<b-nav-item to="/apps">Apps</b-nav-item>
|
<b-nav-item to="/apps">Apps</b-nav-item>
|
||||||
|
@ -55,7 +55,7 @@ Vue.mixin({
|
|||||||
|
|
||||||
console.info(`Misskey v${version} (${codename})`);
|
console.info(`Misskey v${version} (${codename})`);
|
||||||
console.info(
|
console.info(
|
||||||
'%cここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。',
|
'%c%i18n:common.do-not-copy-paste%',
|
||||||
'color: red; background: yellow; font-size: 16px; font-weight: bold;');
|
'color: red; background: yellow; font-size: 16px; font-weight: bold;');
|
||||||
|
|
||||||
// BootTimer解除
|
// BootTimer解除
|
||||||
|
@ -43,7 +43,7 @@ export default Vue.extend({
|
|||||||
thumbnail(): any {
|
thumbnail(): any {
|
||||||
return {
|
return {
|
||||||
'background-color': this.file.properties.avgColor && this.file.properties.avgColor.length == 3 ? `rgb(${this.file.properties.avgColor.join(',')})` : 'transparent',
|
'background-color': this.file.properties.avgColor && this.file.properties.avgColor.length == 3 ? `rgb(${this.file.properties.avgColor.join(',')})` : 'transparent',
|
||||||
'background-image': `url(${this.file.url})`
|
'background-image': `url(${this.file.thumbnailUrl})`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -27,7 +27,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
style(): any {
|
style(): any {
|
||||||
let url = `url(${this.image.url})`;
|
let url = `url(${this.image.thumbnailUrl})`;
|
||||||
|
|
||||||
if (this.$store.state.device.loadRemoteMedia || this.$store.state.device.lightmode) {
|
if (this.$store.state.device.loadRemoteMedia || this.$store.state.device.lightmode) {
|
||||||
url = null;
|
url = null;
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import getNoteSummary from '../../../../../misc/get-note-summary';
|
import getNoteSummary from '../../../../../misc/get-note-summary';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
const displayLimit = 30;
|
const displayLimit = 30;
|
||||||
|
|
||||||
@ -66,7 +67,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(note.createdAt).getDate();
|
const date = new Date(note.createdAt).getDate();
|
||||||
const month = new Date(note.createdAt).getMonth() + 1;
|
const month = new Date(note.createdAt).getMonth() + 1;
|
||||||
note._date = date;
|
note._date = date;
|
||||||
note._datetext = `${month}月 ${date}日`;
|
note._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return note;
|
return note;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -138,6 +139,12 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.$store.state.settings.showLocalRenotes === false) {
|
||||||
|
if (isPureRenote && (note.renote.user.host == null)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
// 投稿が自分のものではないかつ、タブが非表示またはスクロール位置が最上部ではないならタイトルで通知
|
// 投稿が自分のものではないかつ、タブが非表示またはスクロール位置が最上部ではないならタイトルで通知
|
||||||
@ -183,7 +190,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
clearNotification() {
|
clearNotification() {
|
||||||
this.unreadCount = 0;
|
this.unreadCount = 0;
|
||||||
document.title = '%i18n:common.name%';
|
document.title = config.name;
|
||||||
},
|
},
|
||||||
|
|
||||||
onVisibilitychange() {
|
onVisibilitychange() {
|
||||||
|
@ -42,7 +42,7 @@ export default Vue.extend({
|
|||||||
const date = new Date(notification.createdAt).getDate();
|
const date = new Date(notification.createdAt).getDate();
|
||||||
const month = new Date(notification.createdAt).getMonth() + 1;
|
const month = new Date(notification.createdAt).getMonth() + 1;
|
||||||
notification._date = date;
|
notification._date = date;
|
||||||
notification._datetext = `${month}月 ${date}日`;
|
notification._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
|
||||||
return notification;
|
return notification;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
<div class="attaches" v-show="files.length != 0">
|
<div class="attaches" v-show="files.length != 0">
|
||||||
<x-draggable class="files" :list="files" :options="{ animation: 150 }">
|
<x-draggable class="files" :list="files" :options="{ animation: 150 }">
|
||||||
<div class="file" v-for="file in files" :key="file.id">
|
<div class="file" v-for="file in files" :key="file.id">
|
||||||
<div class="img" :style="`background-image: url(${file.url})`" @click="detachMedia(file)"></div>
|
<div class="img" :style="`background-image: url(${file.thumbnailUrl})`" @click="detachMedia(file)"></div>
|
||||||
</div>
|
</div>
|
||||||
</x-draggable>
|
</x-draggable>
|
||||||
</div>
|
</div>
|
||||||
@ -45,7 +45,7 @@
|
|||||||
<input ref="file" class="file" type="file" accept="image/*" multiple="multiple" @change="onChangeFile"/>
|
<input ref="file" class="file" type="file" accept="image/*" multiple="multiple" @change="onChangeFile"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hashtags" v-if="recentHashtags.length > 0">
|
<div class="hashtags" v-if="recentHashtags.length > 0 && $store.state.settings.suggestRecentHashtags">
|
||||||
<a v-for="tag in recentHashtags.slice(0, 5)" @click="addTag(tag)">#{{ tag }}</a>
|
<a v-for="tag in recentHashtags.slice(0, 5)" @click="addTag(tag)">#{{ tag }}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -94,7 +94,7 @@ export default Vue.extend({
|
|||||||
files: [],
|
files: [],
|
||||||
poll: false,
|
poll: false,
|
||||||
geo: null,
|
geo: null,
|
||||||
visibility: 'public',
|
visibility: this.$store.state.device.visibility || 'public',
|
||||||
visibleUsers: [],
|
visibleUsers: [],
|
||||||
useCw: false,
|
useCw: false,
|
||||||
cw: null,
|
cw: null,
|
||||||
@ -240,8 +240,7 @@ export default Vue.extend({
|
|||||||
setVisibility() {
|
setVisibility() {
|
||||||
const w = (this as any).os.new(MkVisibilityChooser, {
|
const w = (this as any).os.new(MkVisibilityChooser, {
|
||||||
source: this.$refs.visibilityButton,
|
source: this.$refs.visibilityButton,
|
||||||
compact: true,
|
compact: true
|
||||||
v: this.visibility
|
|
||||||
});
|
});
|
||||||
w.$once('chosen', v => {
|
w.$once('chosen', v => {
|
||||||
this.visibility = v;
|
this.visibility = v;
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
<mk-special-message/>
|
<mk-special-message/>
|
||||||
<div class="main" ref="main">
|
<div class="main" ref="main">
|
||||||
<div class="backdrop"></div>
|
<div class="backdrop"></div>
|
||||||
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
|
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>%i18n:@adjective%</p>
|
||||||
<div class="content" ref="mainContainer">
|
<div class="content" ref="mainContainer">
|
||||||
<button class="nav" @click="$parent.isDrawerOpening = true">%fa:bars%</button>
|
<button class="nav" @click="$parent.isDrawerOpening = true">%fa:bars%</button>
|
||||||
<template v-if="hasUnreadNotification || hasUnreadMessagingMessage || hasGameInvitation">%fa:circle%</template>
|
<template v-if="hasUnreadNotification || hasUnreadMessagingMessage || hasGameInvitation">%fa:circle%</template>
|
||||||
<h1>
|
<h1>
|
||||||
<slot>%i18n:common.name%</slot>
|
<slot>config.name</slot>
|
||||||
</h1>
|
</h1>
|
||||||
<slot name="func"></slot>
|
<slot name="func"></slot>
|
||||||
</div>
|
</div>
|
||||||
@ -20,11 +20,13 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as anime from 'animejs';
|
import * as anime from 'animejs';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['func'],
|
props: ['func'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
config,
|
||||||
hasGameInvitation: false,
|
hasGameInvitation: false,
|
||||||
connection: null,
|
connection: null,
|
||||||
connectionId: null
|
connectionId: null
|
||||||
|
@ -59,7 +59,8 @@ export default Vue.extend({
|
|||||||
listId: this.list.id,
|
listId: this.list.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
if (notes.length == fetchLimit + 1) {
|
if (notes.length == fetchLimit + 1) {
|
||||||
notes.pop();
|
notes.pop();
|
||||||
@ -82,7 +83,8 @@ export default Vue.extend({
|
|||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
});
|
});
|
||||||
|
|
||||||
promise.then(notes => {
|
promise.then(notes => {
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Progress from '../../../common/scripts/loading';
|
import Progress from '../../../common/scripts/loading';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
@ -43,7 +44,7 @@ export default Vue.extend({
|
|||||||
window.addEventListener('popstate', this.onPopState);
|
window.addEventListener('popstate', this.onPopState);
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = '%i18n:common.name% Drive';
|
document.title = `${config.name} Drive`;
|
||||||
document.documentElement.style.background = '#fff';
|
document.documentElement.style.background = '#fff';
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
@ -63,7 +64,7 @@ export default Vue.extend({
|
|||||||
(this.$refs as any).browser.openContextMenu();
|
(this.$refs as any).browser.openContextMenu();
|
||||||
},
|
},
|
||||||
onMoveRoot(silent) {
|
onMoveRoot(silent) {
|
||||||
const title = '%i18n:common.name% Drive';
|
const title = `${config.name} Drive`;
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
// Rewrite URL
|
// Rewrite URL
|
||||||
@ -76,7 +77,7 @@ export default Vue.extend({
|
|||||||
this.folder = null;
|
this.folder = null;
|
||||||
},
|
},
|
||||||
onOpenFolder(folder, silent) {
|
onOpenFolder(folder, silent) {
|
||||||
const title = folder.name + ' | %i18n:common.name% Drive';
|
const title = `${folder.name} | ${config.name} Drive`;
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
// Rewrite URL
|
// Rewrite URL
|
||||||
@ -89,7 +90,7 @@ export default Vue.extend({
|
|||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
},
|
},
|
||||||
onOpenFile(file, silent) {
|
onOpenFile(file, silent) {
|
||||||
const title = file.name + ' | %i18n:common.name% Drive';
|
const title = `${file.name} | ${config.name} Drive`;
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
// Rewrite URL
|
// Rewrite URL
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Progress from '../../../common/scripts/loading';
|
import Progress from '../../../common/scripts/loading';
|
||||||
|
import * as config from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
@ -28,7 +29,7 @@ export default Vue.extend({
|
|||||||
this.fetch();
|
this.fetch();
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
document.title = '%i18n:common.name% | %i18n:@notifications%';
|
document.title = `${config.name} | %i18n:@notifications%`;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
fetch() {
|
fetch() {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user