Compare commits
385 Commits
Author | SHA1 | Date | |
---|---|---|---|
ce395e626f | |||
b0f93588bb | |||
d456e5e45c | |||
84e47bad7e | |||
deee2391ba | |||
5cdd06ca2f | |||
6245a86a6f | |||
c72e8bd88d | |||
c58719348f | |||
40525a9d6d | |||
eac5d6d127 | |||
9cd7af6b99 | |||
5cd441c0cb | |||
32cc778ed3 | |||
c966b3f371 | |||
9baa0128df | |||
42fbc7ab66 | |||
8272118e29 | |||
1dc8d4f926 | |||
4beb93055b | |||
e66ec6823d | |||
1d2b01df5c | |||
5defcd6592 | |||
13451f6843 | |||
6d1d6f1e6e | |||
bb064e47f7 | |||
4e239f6089 | |||
b35b458001 | |||
315c28234e | |||
d996cd6dda | |||
8a61e12cc8 | |||
99f4cbab4b | |||
1b4da6f26d | |||
14ebc8f2b6 | |||
f97c1a0895 | |||
533448d835 | |||
cbcf3fd7f1 | |||
4f4fd65a56 | |||
d2a7b471f6 | |||
df05071636 | |||
bd8aee7b2c | |||
3459112732 | |||
8e8c02840d | |||
f376f0e03a | |||
59f6d767b3 | |||
e46857af00 | |||
e987e47d18 | |||
588cd27d5b | |||
d9efc4793a | |||
9d5983938b | |||
9686f45d24 | |||
cb0a0a7aa4 | |||
254495cd3d | |||
6da9da0e8f | |||
d8260a4aaa | |||
000635252c | |||
faac4dbe22 | |||
a3007a266d | |||
3f0f1048fe | |||
c016d212ed | |||
8f228b20de | |||
a64945a8dd | |||
2986876810 | |||
166ef3ba52 | |||
8bbd36a7dd | |||
55c2254c3f | |||
f7e72829ad | |||
cd6829ca64 | |||
a88942f58a | |||
b4d79ce4a4 | |||
51b4f95f79 | |||
125da8d843 | |||
8385cb436e | |||
95ffeceb7f | |||
1e3cff6174 | |||
3f29a0382b | |||
e42d26f965 | |||
8f91a98b65 | |||
58f62e21ff | |||
fc45d47e15 | |||
5409bc6392 | |||
dcad453069 | |||
5ef1678a8c | |||
a682dff069 | |||
8afa11913c | |||
2cf139145e | |||
a219bee4f0 | |||
2efb0972f6 | |||
7b33c63f78 | |||
0df093383d | |||
cdf65aedcb | |||
b9dfb937f1 | |||
2ea3b57499 | |||
fd9200cbb0 | |||
40d422c6f3 | |||
9d6bbbc4e3 | |||
3fa8433a0e | |||
82af341261 | |||
436519f4f4 | |||
6be5984868 | |||
503d10145a | |||
97ed8d1728 | |||
8c16ed243a | |||
0c482175a2 | |||
acfd7896ea | |||
8d6e0bd43d | |||
b35ef61515 | |||
ec18dac5e5 | |||
ccdc33e476 | |||
3f5972be7b | |||
5fbf3c3f72 | |||
5c497d7563 | |||
7ee3f63eff | |||
ee85a76678 | |||
e691524416 | |||
ce0f6f7ebe | |||
dfa5cb567f | |||
bcf854b7bb | |||
be0e811e45 | |||
ab009cfbd7 | |||
3fc7ebf80b | |||
8c02c0cb30 | |||
11c015c24e | |||
d937730ab7 | |||
b2b5b1e4c9 | |||
d84b3088ec | |||
24f2a4731e | |||
152fba9ba7 | |||
3e2edcb815 | |||
9c8e92b2bc | |||
24c9e1b8d9 | |||
127cad8bc1 | |||
1d4f4b829f | |||
66d7135a5c | |||
635eee980d | |||
23f2370c4b | |||
f2b88002a3 | |||
6c41265625 | |||
b939cb8b4c | |||
d74710260a | |||
609a15cfb1 | |||
644532d4db | |||
e9b0ffef0f | |||
31a133e7f0 | |||
277a24f8e0 | |||
6c07411755 | |||
6894eee6d4 | |||
babdeb5d6e | |||
7f08d84989 | |||
32053d963f | |||
5994ea9465 | |||
7384a3825a | |||
e31bf214a7 | |||
48c143d47c | |||
35d17d4274 | |||
1e2b8cab02 | |||
0a9a45b33b | |||
63a512306d | |||
190c0c687c | |||
c7094986c9 | |||
c201a65f82 | |||
dd167a476f | |||
b255bbf62a | |||
e19300f424 | |||
aeb0512eaf | |||
192abef237 | |||
2d278c563e | |||
7de9066dda | |||
5a2a2371fb | |||
a433a25b16 | |||
9098aaee3e | |||
ea28b788bc | |||
bd9981b998 | |||
b7f1b087e8 | |||
b0fdf25b24 | |||
58f6e4cf00 | |||
d6fe396c76 | |||
5a01c6c9a5 | |||
dc98b2b5c2 | |||
60626c2a07 | |||
0459ce07fa | |||
b480865031 | |||
c928d38ec0 | |||
1f44602f38 | |||
932d007745 | |||
a1dd839909 | |||
12b1c6c886 | |||
e4a4a4a469 | |||
2ffb8f7cf8 | |||
25dec8b977 | |||
8b4ee292b1 | |||
2f8b64d6fb | |||
b608e594af | |||
9652440579 | |||
55d2ae2050 | |||
bdde0c3c63 | |||
08afa44e09 | |||
3ec3fa2d1e | |||
df74a4eb20 | |||
fdaf483293 | |||
5ab4d0c29b | |||
d6fab5fd6c | |||
8df35650e5 | |||
c5b682dc89 | |||
86d49c6704 | |||
9e251b3ea0 | |||
8630cd8df6 | |||
e42c8859b4 | |||
3636db3f85 | |||
fd4d03db58 | |||
2c3ea0cfef | |||
bc34b4f198 | |||
e93503066c | |||
c4351acf7c | |||
bffd7bbb3b | |||
aad131c913 | |||
77faf7a84c | |||
86a7c4772e | |||
7430e258b1 | |||
4efdd90066 | |||
4c0da272ce | |||
cf48b5348f | |||
aa74262564 | |||
209383274e | |||
c6b1f206a6 | |||
be504fc1fc | |||
7118f7fec1 | |||
7451a735e6 | |||
604a900664 | |||
d7066de378 | |||
f0bfb051c3 | |||
54c4eb512f | |||
3750b4d7d0 | |||
29c5f8c8e7 | |||
6b87edf63b | |||
9b3180d74f | |||
70331a0383 | |||
2220b852c0 | |||
e5fa171df5 | |||
d083c10ae3 | |||
7a37b1c641 | |||
e54449fbdb | |||
b5b384772a | |||
733755bb5a | |||
d6341d8ab6 | |||
b39384258c | |||
dfa032d3f2 | |||
f28fc08a57 | |||
e20e35c48d | |||
bddb47b0bd | |||
469b21bb29 | |||
0a8213b851 | |||
460a4edb13 | |||
2855ec0372 | |||
0f34ed3ccd | |||
cbb73e4e15 | |||
99de2cd0ae | |||
aed7d06af5 | |||
2c348b51f1 | |||
14ac8327cf | |||
c520f17f3b | |||
6c3d3ed322 | |||
f4cf3840e4 | |||
3b2f116af0 | |||
bba8f87687 | |||
41b799b369 | |||
d59c6af32c | |||
1b5023793a | |||
f01a62c83b | |||
ca84202f4c | |||
9d7ffd1ae1 | |||
8f6886db82 | |||
da5e708e0f | |||
ff6993478f | |||
a54950f101 | |||
6b567fdc05 | |||
a4788fae45 | |||
1ba1a7aa40 | |||
835057d970 | |||
48f39e70c3 | |||
3314640b01 | |||
83d9730d93 | |||
4e6dcd16ac | |||
6debf45004 | |||
66b57e11db | |||
1fc1c8a025 | |||
6076f52390 | |||
3f33dbf6e8 | |||
33f0dd8d43 | |||
921fb0012b | |||
2bdad9c411 | |||
01f60c829d | |||
1d6c0e1c6f | |||
fb74f1d72b | |||
33e1c08273 | |||
23c32f1211 | |||
c8a5d693ed | |||
4a54d01ca8 | |||
359a7a7b98 | |||
aaa25deaa9 | |||
cd07ae4d2e | |||
1e8c1efe2f | |||
ce405fc4f6 | |||
50a6efd568 | |||
2c6f881093 | |||
e4bf0392af | |||
fcb9133f27 | |||
5c6f24dc39 | |||
ce562f3bca | |||
9ef477f04b | |||
5268fee5b5 | |||
68e28faedc | |||
12f63db62e | |||
08e1c87fa6 | |||
8ee962b729 | |||
3d8b45ecdd | |||
2347d9cea2 | |||
8a57f490ce | |||
a880f5cbb8 | |||
df5a7c7e0c | |||
b7b82456d8 | |||
6b19e54c23 | |||
75d04858e6 | |||
9332551791 | |||
32117a573b | |||
d4d3316d18 | |||
43a7eb233c | |||
178093861b | |||
3fb26534b7 | |||
19a9fdfd38 | |||
6438e97324 | |||
b29492e8eb | |||
5ab4f10230 | |||
80b251e12c | |||
bfd8b12a4f | |||
1c2e94658b | |||
286da28cd6 | |||
a4ee93a355 | |||
ab56cb1788 | |||
32435e4d8e | |||
900cdf9d9a | |||
e79019266f | |||
deee7361f0 | |||
bdcf09c618 | |||
7b5d6dcd9b | |||
0595d87759 | |||
fab0a0d6e2 | |||
3eb6b36866 | |||
50327158e2 | |||
a99756ef85 | |||
1c25dbed66 | |||
7e8c5c0c3c | |||
0b747b901c | |||
8dd5051201 | |||
f7b0fedc9d | |||
0411d0b242 | |||
3fcc793269 | |||
fd27a0efef | |||
4474a2568e | |||
9d944243a3 | |||
8ef38ebab1 | |||
f457a23eab | |||
5d1eeaf1d8 | |||
77f732c6a4 | |||
ac07f04ad8 | |||
dddd760efd | |||
0f7fbacb17 | |||
2697107770 | |||
e1e1cd0574 | |||
93786aa510 | |||
d8b9a8715b | |||
e8783b15b1 | |||
0995d5c5a2 | |||
0852045928 | |||
04de0e9a50 | |||
951b693d17 | |||
308f357c4f | |||
206ddd6d36 | |||
b4cf963bd6 | |||
77b493c9b0 | |||
95a5ff5625 | |||
190753aa99 | |||
f778696a76 | |||
ce4fb49d4c | |||
91b89b79d2 |
@ -68,6 +68,29 @@ drive:
|
||||
# accessKey:
|
||||
# secretKey:
|
||||
|
||||
# S3 example
|
||||
# storage: 'minio'
|
||||
# bucket: bucket-name
|
||||
# prefix: files
|
||||
# config:
|
||||
# endPoint: s3-us-west-2.amazonaws.com
|
||||
# region: us-west-2
|
||||
# secure: true
|
||||
# accessKey: XXX
|
||||
# secretKey: YYY
|
||||
|
||||
# S3 example (with CDN, custom domain)
|
||||
# storage: 'minio'
|
||||
# bucket: drive.example.com
|
||||
# prefix: files
|
||||
# baseUrl: https://drive.example.com
|
||||
# config:
|
||||
# endPoint: s3-us-west-2.amazonaws.com
|
||||
# region: us-west-2
|
||||
# secure: true
|
||||
# accessKey: XXX
|
||||
# secretKey: YYY
|
||||
|
||||
#
|
||||
# Below settings are optional
|
||||
#
|
||||
@ -108,3 +131,6 @@ drive:
|
||||
# Ghost account is an account used for the purpose of delegating
|
||||
# followers when putting users in the list.
|
||||
# ghost: user-id-of-your-ghost-account
|
||||
|
||||
# Clustering
|
||||
# clusterLimit: 1
|
||||
|
@ -43,9 +43,9 @@ If you want to...
|
||||
|
||||
: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"> |
|
||||
|:-:|:-:|:-:|
|
||||
| [Gargron](https://www.patreon.com/mastodon) | [39ff](https://www.patreon.com/user/creators?u=12378075) | [dansup](https://www.patreon.com/dansup) |
|
||||
| <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"> |
|
||||
|:-:|:-:|:-:|:-:|
|
||||
| [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) |
|
||||
|
||||
:four_leaf_clover: Copyright
|
||||
----------------------------------------------------------------
|
||||
|
29
cli/reset-password.js
Normal file
29
cli/reset-password.js
Normal file
@ -0,0 +1,29 @@
|
||||
const mongo = require('mongodb');
|
||||
const bcrypt = require('bcryptjs');
|
||||
const User = require('../built/models/user').default;
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
const user = args[0];
|
||||
|
||||
const q = user.startsWith('@') ? {
|
||||
username: user.split('@')[1],
|
||||
host: user.split('@')[2] || null
|
||||
} : { _id: new mongo.ObjectID(user) };
|
||||
|
||||
console.log(`Resetting password for ${user}...`);
|
||||
|
||||
const passwd = 'yo';
|
||||
|
||||
// Generate hash of password
|
||||
const hash = bcrypt.hashSync(passwd);
|
||||
|
||||
User.update(q, {
|
||||
$set: {
|
||||
password: hash
|
||||
}
|
||||
}).then(() => {
|
||||
console.log(`Password of ${user} is now '${passwd}'`);
|
||||
}, e => {
|
||||
console.error(e);
|
||||
});
|
@ -1,11 +1,7 @@
|
||||
# Management guide
|
||||
|
||||
## Check the status of the job queue
|
||||
In the directory of Misskey:
|
||||
``` shell
|
||||
node_modules/kue/bin/kue-dashboard -p 3050
|
||||
```
|
||||
When you access port 3050, you will see the UI.
|
||||
coming soon
|
||||
|
||||
## Mark as 'admin' user
|
||||
``` shell
|
||||
@ -33,6 +29,11 @@ node cli/suspend @syuilo
|
||||
node cli/suspend @syuilo@misskey.xyz
|
||||
```
|
||||
|
||||
## Reset password
|
||||
``` shell
|
||||
node cli/reset-password (User-ID or Username)
|
||||
```
|
||||
|
||||
## Clean up cached remote files
|
||||
``` shell
|
||||
node cli/clean-cached-remote-files
|
||||
|
@ -1,11 +1,7 @@
|
||||
# 運営ガイド
|
||||
|
||||
## ジョブキューの状態を調べる
|
||||
Misskeyのディレクトリで:
|
||||
``` shell
|
||||
node_modules/kue/bin/kue-dashboard -p 3050
|
||||
```
|
||||
ポート3050にアクセスするとUIが表示されます
|
||||
coming soon
|
||||
|
||||
## 管理者ユーザーを設定する
|
||||
``` shell
|
||||
@ -33,6 +29,11 @@ node cli/suspend @syuilo
|
||||
node cli/suspend @syuilo@misskey.xyz
|
||||
```
|
||||
|
||||
## ユーザーのパスワードをリセットする
|
||||
``` shell
|
||||
node cli/reset-password (ユーザーID または ユーザー名)
|
||||
```
|
||||
|
||||
## キャッシュされたリモートファイルをクリーンアップする
|
||||
``` shell
|
||||
node cli/clean-cached-remote-files
|
||||
|
170
locales/ca.yml
170
locales/ca.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
170
locales/de.yml
170
locales/de.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "Unbekannt"
|
||||
future: "Zukunft"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "vor {0} Woche{0:n}"
|
||||
months_ago: "vor {0} Monat{0:en}"
|
||||
years_ago: "vor {} Jahr{0:en}"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "So"
|
||||
monday: "Mo"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "Do"
|
||||
friday: "Fr"
|
||||
saturday: "Sa"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "Gefällt mir"
|
||||
love: "Lieben"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "Analoge Uhr"
|
||||
profile: "Profil"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "Umbenennen"
|
||||
stack-left: "Nach links schichten"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Verbindung zum Server ist fehlgeschlagen"
|
||||
description: "Es gibt entweder ein Problem mit deiner Internetverbindung, der Server ist nicht erreichbar oder wird gerade gewartet. Bitte versuche es später noch einmal."
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "Keine Broadcasts"
|
||||
have-a-nice-day: "Schönen Tag!"
|
||||
next: "Nächster"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "Spende"
|
||||
text: "Um Misskey am Laufen zu halten geben wir Geld für Domain, Server usw. aus. Wir bekommen dafür kein Geld und würden uns freuen, wenn du spenden würdest. Wenn du interessiert bist, dann kontaktiere {}. Danke für deine Unterstützung!"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "Notizen"
|
||||
memo: "Schreib hier!"
|
||||
save: "Speichern"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "Mehr"
|
||||
empty: "Keine Benachrichtigungen"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "Antworte auf diese Anmerkung..."
|
||||
quote-placeholder: "Zitiere diese Anmerkung..."
|
||||
submit: "Beitragsform"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "{} Zeichen verbleibend"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Neue Notiz"
|
||||
reply: "Antworten"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "Bitte Passwort eingeben"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Abbrechen"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profil"
|
||||
name: "名前"
|
||||
|
178
locales/en.yml
178
locales/en.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of the fediverse"
|
||||
about-title: "A ⭐ of the fediverse."
|
||||
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:
|
||||
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."
|
||||
application-authorization: "Application authorizations."
|
||||
close: "Close"
|
||||
customization-tips:
|
||||
title: "Customization tips"
|
||||
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."
|
||||
paragraph3: "To delete a widget, <strong>drag and drop the widget onto the area labeled \"Trash\"</strong> in the header."
|
||||
paragraph4: "To finish the customization, click \"Finish\" in the upper right."
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "File uploaded!"
|
||||
message-from: "Message from {}:"
|
||||
reversi-invited: "Invited to a game"
|
||||
reversi-invited-by: "Invited by {}:"
|
||||
notified-by: "Notified by {}:"
|
||||
reply-from: "Reply from {}:"
|
||||
quoted-by: "Quoted by {}:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "unknown"
|
||||
future: "future"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}week(s) ago"
|
||||
months_ago: "{}month(s) ago"
|
||||
years_ago: "{}year(s) ago"
|
||||
trash: "Trash"
|
||||
date:
|
||||
full-year: "Year"
|
||||
month: "Month"
|
||||
day: "Day"
|
||||
hours: "Hour"
|
||||
minutes: "Minutes"
|
||||
weekday-short:
|
||||
sunday: "S"
|
||||
monday: "M"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "T"
|
||||
friday: "F"
|
||||
saturday: "S"
|
||||
weekday:
|
||||
sunday: "Sunday"
|
||||
monday: "Monday"
|
||||
tuesday: "Tuesday"
|
||||
wednesday: "Wednesday"
|
||||
thursday: "Thursday"
|
||||
friday: "Friday"
|
||||
saturday: "Saturday"
|
||||
reactions:
|
||||
like: "Like"
|
||||
love: "Love"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "Opponent's turn"
|
||||
turn-of: "{}'s turn"
|
||||
past-turn-of: "{}'s turn"
|
||||
won: "{} won"
|
||||
black: "Black"
|
||||
white: "White"
|
||||
total: "Total"
|
||||
this-turn: "Turn {}"
|
||||
widgets:
|
||||
analog-clock: "Analog clock"
|
||||
profile: "Profile"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "Rename"
|
||||
stack-left: "Stack to the left"
|
||||
pop-right: "Dock on the right"
|
||||
auth/views/form.vue:
|
||||
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
|
||||
permission-ask: "This application requires the following permissions:"
|
||||
account-read: "Viewing account information:"
|
||||
account-write: "Modify account informations:"
|
||||
note-write: "Post."
|
||||
like-write: "To react to posts."
|
||||
following-write: "Follow or unfollow."
|
||||
drive-read: "Read your drive."
|
||||
drive-write: "Upload/delete files in your drive."
|
||||
notification-read: "Read your notifications."
|
||||
notification-write: "Manage your notifications."
|
||||
cancel: "Cancel"
|
||||
accept: "Grant access."
|
||||
auth/views/index.vue:
|
||||
loading: "Loading"
|
||||
denied: "Application authorization denied."
|
||||
denied-paragraph: "This application will not access your account."
|
||||
already-authorized: "This application has already been authorized."
|
||||
allowed: "Application authorizations allowed.+"
|
||||
callback-url: "Going back to the application."
|
||||
please-go-back: "Please go back to the application."
|
||||
error: "Session does not exist."
|
||||
sign-in: "Please sign in."
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "Waiting for {}"
|
||||
cancel: "Cancel"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "Play reversi with your friends!"
|
||||
invite: "Invite"
|
||||
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."
|
||||
mode-invite: "Invite"
|
||||
mode-invite-desc: "Invite to the game a user."
|
||||
invitations: "You received invitation!"
|
||||
my-games: "My games"
|
||||
all-games: "All games"
|
||||
enter-username: "Enter username"
|
||||
game-state:
|
||||
ended: "Ended"
|
||||
playing: "In Progress"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "Game settings"
|
||||
choose-map: "Choose a map"
|
||||
random: "Random"
|
||||
black-or-white: "Black/White"
|
||||
black-is: "Black is {}"
|
||||
rules: "Rules"
|
||||
is-llotheo: "The lesser one wins"
|
||||
looped-map: "Looped map"
|
||||
can-put-everywhere: "Can put everywhere"
|
||||
settings-of-the-bot: "Bot settings"
|
||||
this-game-is-started-soon: "The game will begin soon"
|
||||
waiting-for-other: "Waiting for the other party's preparation"
|
||||
waiting-for-me: "Waiting for the your preparation"
|
||||
waiting-for-both: "Waiting for yours"
|
||||
cancel: "Cancel"
|
||||
ready: "Ready"
|
||||
cancel-ready: "Cancel \"Ready\""
|
||||
common/views/components/connect-failed.vue:
|
||||
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."
|
||||
@ -154,8 +256,8 @@ common/views/components/note-menu.vue:
|
||||
favorite: "Favorite this note"
|
||||
pin: "Pin to your profile page"
|
||||
delete: "Delete"
|
||||
delete-confirm: "Delete this post for sure?"
|
||||
remote: "Show the originating note"
|
||||
delete-confirm: "Are you sure you want to delete this post?"
|
||||
remote: "Show original note"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Vote for '{}'"
|
||||
vote-count: "{} votes"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "No announcements"
|
||||
have-a-nice-day: "Have a nice day!"
|
||||
next: "Next"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "Year {}"
|
||||
month: "Month {}"
|
||||
day: "Day {}"
|
||||
today: "Today: "
|
||||
this-month: "This month: "
|
||||
this-year: "This year: "
|
||||
common/views/widgets/donation.vue:
|
||||
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!"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "Sticky note"
|
||||
memo: "Write here!"
|
||||
save: "Save"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "To specify a folder, please exit customize mode"
|
||||
folder: "Please click and specify a folder"
|
||||
no-image: "There is no image in this folder"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "You can focus on the timeline with <kbd>t</kbd>."
|
||||
tips-line2: "Open posting form with <kbd>p</kbd> or <kbd>n</kbd>."
|
||||
tips-line3: "You can drag and drop files on the post form."
|
||||
tips-line4: "You can paste an image from the clipboard into the submission form."
|
||||
tips-line5: "You can upload files by dragging and dropping them to Drive."
|
||||
tips-line6: "You can move a folder by dragging it within the Drive."
|
||||
tips-line7: "You can move folders by dragging them within the Drive."
|
||||
tips-line8: "Home can be customized from the settings."
|
||||
tips-line9: "Misskey is licensed under AGPLv3."
|
||||
tips-line10: "Using the Time Machine widget makes it easy to trace back to the past timeline."
|
||||
tips-line11: "You can pin posts to user page by clicking on \"...\""
|
||||
tips-line13: "All the files attached to the post are saved to Drive."
|
||||
tips-line14: "While customizing the home, you can right click on the widget and change the design."
|
||||
tips-line17: "Surrounding the text with ** ** will highlight it."
|
||||
tips-line19: "Several windows can be detached outside the browser."
|
||||
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
|
||||
tips-line21: "You can also use the API to develop bots."
|
||||
tips-line23: "Mayu is so cute with its eyebrows."
|
||||
tips-line24: "Misskey started in 2014."
|
||||
tips-line25: "You can receive notification even if Misskey is not open in a compatible browser."
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "Signed in as {}"
|
||||
following: "Following"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "More"
|
||||
empty: "No notifications!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+Add a user"
|
||||
attach-location-information: "Attach location information"
|
||||
hide-contents: "Hide contents"
|
||||
reply-placeholder: "Reply to this note..."
|
||||
quote-placeholder: "Quote this note..."
|
||||
submit: "Post"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "{} characters remaining"
|
||||
recent-tags: "Recent"
|
||||
click-to-tagging: "Click to tagging"
|
||||
visibility: "Visibility"
|
||||
geolocation-alert: "Your device does not support geolocalization."
|
||||
error: "Error"
|
||||
enter-username: "Please enter a username..."
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "New note"
|
||||
reply: "Reply"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "Please enter the password"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "No linked applications"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "Max "
|
||||
in-use: " in use."
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "No muted users"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "Other"
|
||||
is-bot: "This account is a Bot"
|
||||
is-cat: "This account is a Cat"
|
||||
profile-updated: "Profile updated"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "This post is private"
|
||||
deleted: "This post has been deleted"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "Log in"
|
||||
signup-button: "Sign up"
|
||||
timeline: "Timeline"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey storage"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Cancel"
|
||||
upload: "Upload files from your device"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "The search function can not be used."
|
||||
not-found: "No posts were found for '{}'"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "Share with {}."
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "No posts \"{}\" found."
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "User"
|
||||
add-user: "Add a user"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "No notes"
|
||||
load-more: "More"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "Welcome back, "
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "Timeline"
|
||||
notifications: "Notifications"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "Drive"
|
||||
more: "Load more"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "Let's start! 📦"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "Followers of {}"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
global: "Global"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "No posts \"{}\" found."
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "Sign up"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "Dashboard"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "Activity"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "Share with {}."
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "Messaging"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Notifications"
|
||||
read-all: "Do you wish to mark all notifications as read?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "Reversi"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profile"
|
||||
name: "Name"
|
||||
@ -957,8 +1127,8 @@ docs:
|
||||
require-permission: "This endpoint requires {permission} permission."
|
||||
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."
|
||||
min-interval-limit: "You can't request before {interval} milliseconds has passed since previous request."
|
||||
show-src: "You can view source code for this endpoint."
|
||||
min-interval-limit: "You can't request before {interval} milliseconds have passed since the previous request."
|
||||
show-src: "You can view the source code for this endpoint."
|
||||
show-src-link: "See the code on GitHub"
|
||||
generated: "This doc is generated by an API definition."
|
||||
props:
|
||||
|
350
locales/es.yml
350
locales/es.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "Una ⭐️ del fediverso"
|
||||
about-title: "Una ⭐️ del fediverso"
|
||||
about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
|
||||
adblock:
|
||||
detected: "Por favor, desactive el bloqueador de publicidad."
|
||||
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."
|
||||
close: "Cerrar"
|
||||
customization-tips:
|
||||
title: "Consejos de personalización"
|
||||
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
|
||||
paragraph2: "Puede cambiar la visualización de algunos accesorios haciendo <strong> click derecho.</strong>"
|
||||
paragraph3: "Para borrar un widget, <strong> desplace el accesorio hasta el área etiquetada \"Papelera\"</strong> en el encabezado."
|
||||
paragraph4: "Para finalizar la personalización, cliquee \"Finalizar\" en la parte de arriba a la derecha."
|
||||
gotit: "¡Comprendido!"
|
||||
notification:
|
||||
file-uploaded: "Archivo cargado."
|
||||
message-from: "Mensaje de {}:"
|
||||
reversi-invited: "Invitado a un juego"
|
||||
reversi-invited-by: "Invitado por {}:"
|
||||
notified-by: "Notificado por {}:"
|
||||
reply-from: "Respuesta de {}:"
|
||||
quoted-by: "Citado por {}:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "Desconocido"
|
||||
future: "Futuro"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "Hace {} semana(s)"
|
||||
months_ago: "Hace {} mes(es)"
|
||||
years_ago: "Hace {} año(s)"
|
||||
trash: "Papelera"
|
||||
date:
|
||||
full-year: "Año"
|
||||
month: "Mes"
|
||||
day: "Día"
|
||||
hours: "horas"
|
||||
minutes: "minutos"
|
||||
weekday-short:
|
||||
sunday: "domingo"
|
||||
monday: "lunes"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "jueves"
|
||||
friday: "viernes"
|
||||
saturday: "sábado"
|
||||
weekday:
|
||||
sunday: "Domingo"
|
||||
monday: "Lunes"
|
||||
tuesday: "Martes"
|
||||
wednesday: "Miércoles"
|
||||
thursday: "Jueves"
|
||||
friday: "Viernes"
|
||||
saturday: "Sábado"
|
||||
reactions:
|
||||
like: "me gusta"
|
||||
love: "amor"
|
||||
@ -42,22 +78,27 @@ common:
|
||||
d: "¿Quieres decir algo?"
|
||||
e: "¡Escribe aquí!"
|
||||
f: "Esperando a que escribas algo..."
|
||||
search: "検索"
|
||||
search: "Buscar"
|
||||
delete: "eliminar"
|
||||
loading: "cargando"
|
||||
ok: "OK"
|
||||
update-available-title: "更新があります"
|
||||
update-available-title: "Actualización disponible"
|
||||
update-available: "Hay disponible una nueva versión de Misskey ({newer}, la versión actual es {current}). Refresca la página para aplicar las actualizaciones."
|
||||
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||
verified-user: "認証済みのユーザー"
|
||||
i-like-sushi: "Prefiero sushi a pudín"
|
||||
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
||||
verified-user: "Usuario verificado"
|
||||
reversi:
|
||||
drawn: "引き分け"
|
||||
my-turn: "あなたのターンです"
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
drawn: "Empatado"
|
||||
my-turn: "Mi turno"
|
||||
opponent-turn: "Turno del oponente"
|
||||
turn-of: "Es turno de {}"
|
||||
past-turn-of: "Turno de {}"
|
||||
won: "{} ha ganado"
|
||||
black: "Negro"
|
||||
white: "Blanco"
|
||||
total: "Total"
|
||||
this-turn: "Turno de {}"
|
||||
widgets:
|
||||
analog-clock: "Reloj analógico"
|
||||
profile: "Perfil"
|
||||
@ -86,7 +127,7 @@ common:
|
||||
widgets: "Accesorios"
|
||||
home: "Inicio"
|
||||
local: "Local"
|
||||
hybrid: "ソーシャル"
|
||||
hybrid: "Social"
|
||||
global: "Global"
|
||||
notifications: "Notificaciones"
|
||||
list: "Listado"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "Renombrar"
|
||||
stack-left: "A la izqda."
|
||||
pop-right: "A la dcha."
|
||||
auth/views/form.vue:
|
||||
share-access: "¿Deseas <b>permitir</b> a <i>{{ app.name }}</i> acceder a tu cuenta?"
|
||||
permission-ask: "La aplicación requiere los siguientes permisos:"
|
||||
account-read: "Viendo información de la cuenta:"
|
||||
account-write: "Modificar información de la cuenta:"
|
||||
note-write: "Publicación."
|
||||
like-write: "Para reaccionar a las publicaciones."
|
||||
following-write: "Seguir o dejar de seguir"
|
||||
drive-read: "Leer tu unidad."
|
||||
drive-write: "Cargar o borrar archivos de tu unidad."
|
||||
notification-read: "Leer tus notificaciones."
|
||||
notification-write: "Administrar tus notificaciones."
|
||||
cancel: "Cancelar"
|
||||
accept: "Garantizar acceso."
|
||||
auth/views/index.vue:
|
||||
loading: "Cargando"
|
||||
denied: "Acceso de aplicación denegado."
|
||||
denied-paragraph: "Esta aplicación no tendrá acceso a tu cuenta."
|
||||
already-authorized: "Esta aplicación ha sido previamente autorizada."
|
||||
allowed: "Accesos de aplicaciones autorizados."
|
||||
callback-url: "Volviendo a la aplicación."
|
||||
please-go-back: "Por favor, vuelve a la aplicación."
|
||||
error: "Esta sesión no existe."
|
||||
sign-in: "Por favor inicia sesión."
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "Esperando por {}"
|
||||
cancel: "Cancelar"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "Configuración de juego"
|
||||
choose-map: "Elije un mapa"
|
||||
random: "Aleatorio"
|
||||
black-or-white: "Negro/Blanco"
|
||||
black-is: "Negro es {}"
|
||||
rules: "Reglas"
|
||||
is-llotheo: "El que tenga menos gana"
|
||||
looped-map: "Mapa en bucle"
|
||||
can-put-everywhere: "Puedes colocar donde quieras"
|
||||
settings-of-the-bot: "Configuración de bot"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "Esperando a que se prepare el adversario"
|
||||
waiting-for-me: "Esperando por la preparación"
|
||||
waiting-for-both: "Esperando por ti"
|
||||
cancel: "Cancelar"
|
||||
ready: "Listo"
|
||||
cancel-ready: "Cancelar \"Listo\""
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Imposible conectar al servidor"
|
||||
description: "Hay un problema en tu conexió o puede que el servidor esté caido o en mantenimiento. Por favor {try again} más tarde."
|
||||
@ -228,26 +330,58 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "Sin emisión"
|
||||
have-a-nice-day: "¡Buenos dias!"
|
||||
next: "Siguiente"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "Año {}"
|
||||
month: "Mes {}"
|
||||
day: "Día {}"
|
||||
today: "Hoy:"
|
||||
this-month: "Este mes:"
|
||||
this-year: "Este año:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "Donaciones"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
text: "Para mantener Misskey funcionando tenemos que pagar por el dominio, los costos de hospedaje y otros costos. Como no recibimos dinero de publicidad, contamos con el apoyo de todos ustedes. Si estás interesado en ayudar, contacta a {}. ¡Muchas gracias por tu contribución!"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
no-photos: "写真はありません"
|
||||
title: "Galería de fotos"
|
||||
no-photos: "No hay fotos."
|
||||
common/views/widgets/posts-monitor.vue:
|
||||
title: "投稿チャート"
|
||||
toggle: "表示を切り替え"
|
||||
title: "Tabla de publicaciones"
|
||||
toggle: "Alternar vistas"
|
||||
common/views/widgets/hashtags.vue:
|
||||
title: "ハッシュタグ"
|
||||
count: "{}人が投稿"
|
||||
empty: "トレンドなし"
|
||||
title: "Etiquetas"
|
||||
count: "{} usuarios mencionados"
|
||||
empty: "Ninguna tendencia popular ahora"
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
title: "Información del servidor"
|
||||
toggle: "Alternar vistas"
|
||||
common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
title: "Notas"
|
||||
memo: "¡Escribe aquí!"
|
||||
save: "Guardar"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "Para especificar una carpeta, por favor sal de modo de personalización"
|
||||
folder: "Por favor, cliquea y especifica una carpeta"
|
||||
no-image: "No hay imágenes en esta carpeta"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "Puedes enfocarte en las publicaciones con <kbd>t</kbd>"
|
||||
tips-line2: "Abrir formulario de publicación con <kbd>p</kbd> or <kbd>n</kbd>"
|
||||
tips-line3: "Puedes arrastrar y soltar archivos en el formulario de publicación"
|
||||
tips-line4: "Puedes pegar una imagen del portapapeles en el formulario de publicación"
|
||||
tips-line5: "Puedes cargar archivos con sólo arrastrarlos y soltarlos en Drive"
|
||||
tips-line6: "Puedes mover una carpeta arrastrándola hacia el Drive"
|
||||
tips-line7: "Puedes mover una carpeta arrastrándola hacia el Drive"
|
||||
tips-line8: "Inicio se puede personalizar desde la configuración"
|
||||
tips-line9: "Misskey está hecho bajo licencia AGPLv3"
|
||||
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-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -363,59 +497,66 @@ desktop/views/components/game-window.vue:
|
||||
game: "リバーシ"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
add: "追加"
|
||||
add-widget: "Agregar accesorio:"
|
||||
add: "Agregar"
|
||||
desktop/views/input-dialog.vue:
|
||||
cancel: "キャンセル"
|
||||
ok: "決定"
|
||||
cancel: "Cancelar"
|
||||
ok: "OK"
|
||||
desktop/views/components/messaging-room-window.vue:
|
||||
title: "メッセージ:"
|
||||
title: "Mensajes:"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
title: "Mensajes"
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "会話をもっと読み込む"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
reposted-by: "{}がRenote"
|
||||
location: "位置情報"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
more: "Cargar más conversaciones"
|
||||
private: "Esta publicación es privada"
|
||||
deleted: "Esta publicación ha sido removida"
|
||||
reposted-by: "Republicado por {}"
|
||||
location: "Localización"
|
||||
renote: "Republicar"
|
||||
add-reaction: "Agregar una reacción"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
add-reaction: "リアクション"
|
||||
detail: "詳細"
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
reposted-by: "Republicado por {}"
|
||||
reply: "Responder"
|
||||
renote: "Republicar"
|
||||
add-reaction: "Agregar una reacción"
|
||||
detail: "Mostrar detalles"
|
||||
private: "Esta publicación es privada"
|
||||
deleted: "Esta publicación ha sido borrada"
|
||||
desktop/views/components/notes.vue:
|
||||
error: "読み込みに失敗しました。"
|
||||
retry: "リトライ"
|
||||
load-more: "もっと読み込む"
|
||||
error: "Error al cargar."
|
||||
retry: "Reintentar"
|
||||
load-more: "Leer más"
|
||||
desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
more: "Más"
|
||||
empty: "No hay notificaciones"
|
||||
desktop/views/components/post-form.vue:
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
posted: "投稿しました!"
|
||||
replied: "返信しました!"
|
||||
reposted: "Renoteしました!"
|
||||
note-failed: "投稿に失敗しました"
|
||||
reply-failed: "返信に失敗しました"
|
||||
renote-failed: "Renoteに失敗しました"
|
||||
posting: "投稿中"
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
add-visible-user: "+Agregar usuario"
|
||||
attach-location-information: "Agregar localización"
|
||||
hide-contents: "Esconder contenidos"
|
||||
reply-placeholder: "Responder a esta nota..."
|
||||
quote-placeholder: "Citar esta nota..."
|
||||
submit: "Publicar"
|
||||
reply: "Responder"
|
||||
renote: "Republicar"
|
||||
posted: "¡Publicado!"
|
||||
replied: "¡Respondido!"
|
||||
reposted: "¡Republicado!"
|
||||
note-failed: "Error al publicar nota"
|
||||
reply-failed: "Error al responder"
|
||||
renote-failed: "Error al republicar"
|
||||
posting: "Publicando"
|
||||
attach-media-from-local: "Agregar medios de tu dispositivo"
|
||||
attach-media-from-drive: "Adjunta multimedia desde tu Disco"
|
||||
attach-cancel: "Quitar el archivo adjunto"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Crea una encuesta"
|
||||
text-remain: "quedan {} caracteres"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
recent-tags: "Reciente"
|
||||
click-to-tagging: "Click para etiquetar"
|
||||
visibility: "Visibilidad"
|
||||
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
||||
error: "Error"
|
||||
enter-username: "Por favor escribe un nombre de usuario..."
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Nota nueva"
|
||||
reply: "Responder"
|
||||
@ -456,8 +597,8 @@ desktop/views/components/settings.vue:
|
||||
api-via-stream-desc: "Las peticiones de las API se realizan por conexiones WebSocket en lugar de las tradicionales (para una mejora en el rendimiento). Esta función depende del navegador."
|
||||
display: "Diseño y pantalla"
|
||||
customize: "Personaliza la página principal"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
choose-wallpaper: "Elije un fondo"
|
||||
delete-wallpaper: "Suprimir fondo"
|
||||
dark-mode: "Modo Nocturno"
|
||||
circle-icons: "Usar iconos circulares"
|
||||
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
||||
@ -513,35 +654,38 @@ desktop/views/components/settings.2fa.vue:
|
||||
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
|
||||
detail: "詳細..."
|
||||
url: "https://www.google.co.jp/intl/ja/landing/2step/"
|
||||
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
|
||||
register: "デバイスを登録する"
|
||||
already-registered: "既に設定は完了しています。"
|
||||
unregister: "設定を解除"
|
||||
unregistered: "二段階認証が無効になりました。"
|
||||
enter-password: "パスワードを入力してください"
|
||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||
howtoinstall: "インストール方法はこちら"
|
||||
scan: "次に、表示されているQRコードをスキャンします:"
|
||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||
submit: "完了"
|
||||
success: "設定が完了しました!"
|
||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||
caution: "Si pierdes acceso al dispositivo, no podrás conectarte a Misskey."
|
||||
register: "Registrar un dispositivo"
|
||||
already-registered: "Un dispositivo ya fue registrado"
|
||||
unregister: "Inhabilitado"
|
||||
unregistered: "Autenticación de dos pasos fue deshabilitada."
|
||||
enter-password: "Escribe una contraseña"
|
||||
authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:"
|
||||
howtoinstall: "Cómo instalar"
|
||||
scan: "Luego, escanea el código QR:"
|
||||
done: "Por favor ingresa el token mostrado en tu dispositivo:"
|
||||
submit: "Enviar"
|
||||
success: "¡Configuraciones guardadas!"
|
||||
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
|
||||
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
|
||||
desktop/views/components/settings.api.vue:
|
||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
intro: "Para acceder al API, configura este token como la letra \"i\" de los parámetros requeridos."
|
||||
caution: "Por favor no muestres este token a otros (no lo ingreses en otro lugar que no sea aquí). De otra forma, tu cuenta puede llegar a ser comprometida."
|
||||
regeneration-of-token: "En el caso no deseado de que este token lo tenga otra persona, puedes regenerarlo."
|
||||
regenerate-token: "Regenerar el token"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
enter-password: "Por favor ingresa tu contraseña"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
no-apps: "No hay aplicaciones asociadas"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "Max"
|
||||
in-use: "en uso."
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
no-users: "No hay usuarios silenciados"
|
||||
desktop/views/components/settings.password.vue:
|
||||
reset: "パスワードを変更する"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
enter-new-password: "新しいパスワードを入力してください"
|
||||
reset: "Cambiar contraseña"
|
||||
enter-current-password: "Ingresar contraseña actual"
|
||||
enter-new-password: "Ingresar nueva contraseña"
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
204
locales/fr.yml
204
locales/fr.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "Une ⭐ du fédiverse"
|
||||
about-title: "Une ⭐ du fédiverse."
|
||||
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre. Parce qu'il fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "Fermer"
|
||||
customization-tips:
|
||||
title: "Conseils de personnalisation"
|
||||
paragraph1: "La personnalisation à la maison vous permet d'ajouter / supprimer, glisser et déposer et réorganiser les widgets."
|
||||
paragraph2: "Vous pouvez changer l'affichage en <strong>cliquant droit</strong> sur certains widgets."
|
||||
paragraph3: "Pour supprimer un widget, <strong>glissez et déposez le widget sur la zone étiquetée \"Corbeille\"</strong> dans l'en-tête."
|
||||
paragraph4: "Pour terminer la personnalisation, cliquez sur \"Terminer\" dans le coin supérieur droit."
|
||||
gotit: "Compris!"
|
||||
notification:
|
||||
file-uploaded: "Le fichier a été téléversé !"
|
||||
message-from: "Message de {} :"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "Invité par {} :"
|
||||
notified-by: "Notifié par {} :"
|
||||
reply-from: "Réponse de {} :"
|
||||
quoted-by: "Cité·e par {} :"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "inconnu"
|
||||
future: "future"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "Il y a {} semaines·s"
|
||||
months_ago: "Il y a {} mois"
|
||||
years_ago: "Il y a {} an·s"
|
||||
trash: "Corbeille"
|
||||
date:
|
||||
full-year: "Année "
|
||||
month: "Mois"
|
||||
day: "Jour"
|
||||
hours: "heures"
|
||||
minutes: "minutes"
|
||||
weekday-short:
|
||||
sunday: "D"
|
||||
monday: "L"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "J"
|
||||
friday: "V"
|
||||
saturday: "S"
|
||||
weekday:
|
||||
sunday: "Dimanche"
|
||||
monday: "Lundi"
|
||||
tuesday: "Mardi"
|
||||
wednesday: "Mercredi"
|
||||
thursday: "Jeudi"
|
||||
friday: "Vendredi"
|
||||
saturday: "Samedi"
|
||||
reactions:
|
||||
like: "Aime"
|
||||
love: "Adore"
|
||||
@ -51,18 +87,23 @@ common:
|
||||
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)"
|
||||
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
||||
verified-user: "認証済みのユーザー"
|
||||
verified-user: "Utilisateur·trice vérifié·e"
|
||||
reversi:
|
||||
drawn: "Partie nulle"
|
||||
my-turn: "C’est votre tour"
|
||||
opponent-turn: "Tour de l’adversaire"
|
||||
turn-of: "C’est le tour de {}"
|
||||
past-turn-of: "C'est au tour de {}"
|
||||
won: "{} a gagné"
|
||||
black: "Noir"
|
||||
white: "Blanc"
|
||||
total: "Total"
|
||||
this-turn: "Tour de {}"
|
||||
widgets:
|
||||
analog-clock: "Horloge analogique"
|
||||
profile: "Profil"
|
||||
calendar: "Calendrier"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
timemachine: "Calendrier (Machine de temps)"
|
||||
activity: "Activité"
|
||||
rss: "Lecteur de flux RSS"
|
||||
memo: "Pense-bête"
|
||||
@ -86,7 +127,7 @@ common:
|
||||
widgets: "Widgets"
|
||||
home: "Accueil"
|
||||
local: "Local"
|
||||
hybrid: "ソーシャル"
|
||||
hybrid: "Social"
|
||||
global: "Global"
|
||||
notifications: "Notifications"
|
||||
list: "Liste"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "Renommer"
|
||||
stack-left: "Vers la gauche"
|
||||
pop-right: "Vers la droite"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "Cette application nécessite les autorisations suivantes :"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "Modifications des informations du compte :"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "Lire votre Drive"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "Lire vos notifications."
|
||||
notification-write: "Gérer vos notifications."
|
||||
cancel: "Annuler"
|
||||
accept: "Autoriser l’accès"
|
||||
auth/views/index.vue:
|
||||
loading: "Chargement en cours"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "Cette application ne va pas accéder à votre compte."
|
||||
already-authorized: "Cette application est déjà autorisée"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "Retour vers l'application"
|
||||
please-go-back: "Veillez retourner à l'application."
|
||||
error: "La session n'existe pas."
|
||||
sign-in: "Veuillez vous connecter"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "En attente de {}"
|
||||
cancel: "Annuler"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "Jouer à Reversi avec vos amis·es !"
|
||||
invite: "Inviter"
|
||||
rule: "Comment Jouer ?"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "Inviter"
|
||||
mode-invite-desc: "Inviter un joueur."
|
||||
invitations: "Vous avez reçu une invitation !"
|
||||
my-games: "Mes jeux"
|
||||
all-games: "Tous les jeux"
|
||||
enter-username: "Saisir un nom d'utilisateur"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "En cours"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "Paramètres du jeu"
|
||||
choose-map: "Sélectionnez une carte"
|
||||
random: "Aléatoire"
|
||||
black-or-white: "Noir/Blanc"
|
||||
black-is: "{}が黒"
|
||||
rules: "Règles"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Configuration du bot"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "Annuler"
|
||||
ready: "Prêt"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Impossible de se connecter au server."
|
||||
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."
|
||||
@ -218,8 +320,8 @@ common/views/components/visibility-chooser.vue:
|
||||
public: "Public"
|
||||
home: "Accueil"
|
||||
home-desc: "Publier sur le fil d'Accueil uniquement"
|
||||
followers: "Abonnés"
|
||||
followers-desc: "Publier à vos abonnés uniquement"
|
||||
followers: "Abonné·e·s"
|
||||
followers-desc: "Publier à vos abonné·e·s uniquement"
|
||||
specified: "Direct"
|
||||
specified-desc: "Publier aux utilisateurs mentionnés"
|
||||
private: "Privé"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "No broadcasts"
|
||||
have-a-nice-day: "Passez une bonne journée!"
|
||||
next: "Suivant"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{} année"
|
||||
month: "{} mois"
|
||||
day: "{} jour"
|
||||
today: "Aujourd'hui :"
|
||||
this-month: "Ce mois-ci :"
|
||||
this-year: "Cette année :"
|
||||
common/views/widgets/donation.vue:
|
||||
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!"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "Pense-bête"
|
||||
memo: "Écrivez ici !"
|
||||
save: "Enregistrer"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "Veuillez cliquer pour spécifier le dossier"
|
||||
no-image: "Il n'y a aucune image dans ce dossier"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "Misskey est sous licence AGPLv3"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "Connecté en tant que {}"
|
||||
following: "Suit"
|
||||
@ -335,7 +469,7 @@ desktop/views/components/drive.vue:
|
||||
upload: "Uploader un fichier"
|
||||
url-upload: "Uploader d'un URL"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
sensitive: "Le contenu est NSFW"
|
||||
click-to-show: "Cliquer pour afficher"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "Le contenu est NSFW"
|
||||
@ -346,9 +480,9 @@ desktop/views/components/follow-button.vue:
|
||||
request-pending: "En attente d'approbation"
|
||||
follow-request: "Demande d'abonnement"
|
||||
desktop/views/components/followers-window.vue:
|
||||
followers: "{} abonnés"
|
||||
followers: "{} abonné·e·s"
|
||||
desktop/views/components/followers.vue:
|
||||
empty: "Il semble que vous n'avez pas encore d'abonnés."
|
||||
empty: "Il semble que vous n'avez pas encore d'abonné·e·s."
|
||||
desktop/views/components/following-window.vue:
|
||||
following: "Suit {}"
|
||||
desktop/views/components/following.vue:
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "Plus"
|
||||
empty: "Pas de notifications"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "Répondre à cette note"
|
||||
quote-placeholder: "Citer cette note"
|
||||
submit: "Poster"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "{} charactères restants"
|
||||
recent-tags: "Récent"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Nouvelle note"
|
||||
reply: "Répondre"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "Veuillez entrer le mot de passe"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "Aucune application autorisée"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "Aucun utilisateurs mis en sourdine"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -554,10 +698,11 @@ desktop/views/components/settings.profile.vue:
|
||||
birthday: "Date de naissance"
|
||||
save: "Mettre à jour le profil"
|
||||
locked-account: "Protéger votre compte"
|
||||
is-locked: "投稿を非公開にする"
|
||||
is-locked: "Rendre la note privée"
|
||||
other: "Autre"
|
||||
is-bot: "Ce compte est un Bot"
|
||||
is-cat: "Ce compte est un Chat"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "cette publication est privée"
|
||||
deleted: "cette publication a été supprimée"
|
||||
@ -579,7 +724,7 @@ desktop/views/components/ui.header.account.vue:
|
||||
favorites: "Favorites"
|
||||
lists: "Listes"
|
||||
follow-requests: "Demandes de suivi"
|
||||
customize: "ホームのカスタマイズ"
|
||||
customize: "Personnaliser l'Accueil"
|
||||
settings: "Réglages"
|
||||
signout: "Déconnexion"
|
||||
dark: "Fall in dark"
|
||||
@ -604,7 +749,7 @@ desktop/views/components/user-lists-window.vue:
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "Publications"
|
||||
following: "Abonné à"
|
||||
followers: "Abonnés"
|
||||
followers: "Abonné·e·s"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "Tout"
|
||||
iknow: "Vous connaissez"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "Se connecter"
|
||||
signup-button: "S'inscrire"
|
||||
timeline: "Fil d'actualité"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Lecteur de Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,12 +791,19 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Annuler"
|
||||
upload: "Uploader un ou plusieurs fichier(s) depuis votre PC"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "Utilisateurs"
|
||||
add-user: "Ajouter un utilisateur"
|
||||
username: "Nom d'utilisateur"
|
||||
desktop/views/pages/user/user.followers-you-know.vue:
|
||||
title: "Abonnés que vous connaissez"
|
||||
title: "Abonné·e·s que vous connaissez"
|
||||
loading: "Chargement en cours"
|
||||
no-users: "Pas d'utilisateurs"
|
||||
desktop/views/pages/user/user.friends.vue:
|
||||
@ -678,7 +831,7 @@ desktop/views/pages/user/user.profile.vue:
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "Notes"
|
||||
following: "Suit"
|
||||
followers: "Abonnés"
|
||||
followers: "Abonné·e·s"
|
||||
is-bot: "Ce compte est un Bot"
|
||||
desktop/views/pages/user/user.timeline.vue:
|
||||
default: "Publications"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "Pas de notes"
|
||||
load-more: "Afficher plus"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "Fil d'actualité"
|
||||
notifications: "Notifications"
|
||||
@ -830,8 +985,10 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "Drive"
|
||||
more: "Afficher plus ..."
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "Abonnés de {}"
|
||||
followers-of: "Abonné·e·s de {}"
|
||||
mobile/views/pages/following.vue:
|
||||
following-of: "Abonnements de {}"
|
||||
mobile/views/pages/home.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "Local"
|
||||
hybrid: "Social"
|
||||
global: "Global"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "Messagerie"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Notifications"
|
||||
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profil"
|
||||
name: "Nom"
|
||||
@ -914,8 +1084,8 @@ mobile/views/pages/settings.vue:
|
||||
mobile/views/pages/user.vue:
|
||||
follows-you: "vous suit"
|
||||
following: "Abonnements"
|
||||
followers: "Abonnés"
|
||||
notes: "Posts"
|
||||
followers: "Abonné·e·s"
|
||||
notes: "Notes"
|
||||
overview: "Aperçu"
|
||||
timeline: "Fil d'actualité"
|
||||
media: "Media"
|
||||
@ -929,7 +1099,7 @@ mobile/views/pages/user/home.vue:
|
||||
keywords: "Mot clés"
|
||||
domains: "Domaines"
|
||||
frequently-replied-users: "Utilisateurs qui interagissent souvent"
|
||||
followers-you-know: "Abonnés que vous connaissez"
|
||||
followers-you-know: "Abonné·e·s que vous connaissez"
|
||||
last-used-at: "Dernière connexion il y a"
|
||||
mobile/views/pages/user/home.followers-you-know.vue:
|
||||
loading: "Chargement"
|
||||
|
@ -21,7 +21,7 @@ const langs = {
|
||||
|
||||
Object.values(langs).forEach(locale => {
|
||||
// Extend native language (Japanese)
|
||||
Object.assign(locale, native);
|
||||
locale = Object.assign({}, native, locale);
|
||||
});
|
||||
|
||||
module.exports = langs;
|
||||
|
170
locales/it.yml
170
locales/it.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
196
locales/ja.yml
196
locales/ja.yml
@ -6,7 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -19,6 +39,15 @@ common:
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
|
||||
trash: "ゴミ箱"
|
||||
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -28,6 +57,15 @@ common:
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -64,6 +102,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
@ -108,6 +151,72 @@ common:
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -256,6 +365,14 @@ common/views/widgets/broadcast.vue:
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -282,6 +399,33 @@ common/views/widgets/memo.vue:
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -459,6 +603,9 @@ desktop/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -479,6 +626,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
@ -619,6 +770,10 @@ desktop/views/components/settings.api.vue:
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
|
||||
@ -643,6 +798,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
@ -694,6 +850,8 @@ desktop/views/components/received-follow-requests-window.vue:
|
||||
accept: "承認"
|
||||
reject: "拒否"
|
||||
|
||||
|
||||
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
title: "リスト"
|
||||
create-list: "リストを作成"
|
||||
@ -734,6 +892,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
@ -754,6 +913,16 @@ desktop/views/pages/selectdrive.vue:
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -943,6 +1112,9 @@ mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -979,6 +1151,9 @@ mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
|
||||
@ -991,6 +1166,22 @@ mobile/views/pages/home.vue:
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
|
||||
@ -1011,6 +1202,9 @@ mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
170
locales/ko.yml
170
locales/ko.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
208
locales/pl.yml
208
locales/pl.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "⭐ Fediwersum"
|
||||
about-title: "⭐ Fediwersum"
|
||||
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
|
||||
adblock:
|
||||
detected: "Spróbuj wyłączyć blokadę 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: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Rozumiem!"
|
||||
notification:
|
||||
file-uploaded: "Wysłano plik!"
|
||||
message-from: "Wiadomość od {}:"
|
||||
reversi-invited: "Zaproszono do gry"
|
||||
reversi-invited-by: "Zaproszono przez {}:"
|
||||
notified-by: "Powiadomiono przez {}:"
|
||||
reply-from: "Odpowiedź od {}:"
|
||||
quoted-by: "Zacytowano przez {}:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "nieznany"
|
||||
future: "w przyszłości"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{} tyg. temu"
|
||||
months_ago: "{} mies. temu"
|
||||
years_ago: "{} lat temu"
|
||||
trash: "Kosz"
|
||||
date:
|
||||
full-year: "Rok"
|
||||
month: "Miesiąc"
|
||||
day: "Dzień"
|
||||
hours: "Godzina"
|
||||
minutes: "Minuty"
|
||||
weekday-short:
|
||||
sunday: "N"
|
||||
monday: "Pn"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "C"
|
||||
friday: "P"
|
||||
saturday: "S"
|
||||
weekday:
|
||||
sunday: "Niedziela"
|
||||
monday: "Poniedziałek"
|
||||
tuesday: "Wtorek"
|
||||
wednesday: "Środa"
|
||||
thursday: "Czwartek"
|
||||
friday: "Piątek"
|
||||
saturday: "Sobota"
|
||||
reactions:
|
||||
like: "Lubię"
|
||||
love: "Kocham"
|
||||
@ -51,13 +87,18 @@ common:
|
||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||
i-like-sushi: "Wolę sushi od puddingu"
|
||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||
verified-user: "認証済みのユーザー"
|
||||
verified-user: "Zweryfikowany użytkownik"
|
||||
reversi:
|
||||
drawn: "Remis"
|
||||
my-turn: "Twoja kolej"
|
||||
opponent-turn: "Kolej na przeciwnika"
|
||||
turn-of: "Kolej na {}"
|
||||
past-turn-of: "Kolej {}"
|
||||
won: "{}の勝ち"
|
||||
black: "Czarny"
|
||||
white: "Biały"
|
||||
total: "Łącznie"
|
||||
this-turn: "Ruch {}"
|
||||
widgets:
|
||||
analog-clock: "Zegar analogowy"
|
||||
profile: "Profil"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "Zmień nazwę"
|
||||
stack-left: "Przypnij do lewej"
|
||||
pop-right: "Odepnij w prawo"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "Nie udało się połączyć z serwerem"
|
||||
description: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce."
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "Brak transmisji"
|
||||
have-a-nice-day: "Miłego dnia!"
|
||||
next: "Dalej"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "Dotacje"
|
||||
text: "Aby utrzymywać Misskey, płacimy za domenę, serwery i nie tylko… Nie zarabiamy na tym, więc byłoby nam miło, gdybyśmy uzyskali od Ciebie dotację. Jeżeli jesteś zainteresowany, skontaktuj się z {}. Dziękujemy za wsparcie!"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "Notatka"
|
||||
memo: "Napisz tutaj!"
|
||||
save: "Zapisz"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "Zalogowany jako {}"
|
||||
following: "Śledzisz"
|
||||
@ -289,8 +423,8 @@ desktop/views/components/drive.file.vue:
|
||||
banner: "Baner"
|
||||
contextmenu:
|
||||
rename: "Zmień nazwę"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
|
||||
unmark-as-sensitive: "Cofnij oznaczenie jako zawartość wrażliwą"
|
||||
copy-url: "Skopiuj adres"
|
||||
download: "Pobierz"
|
||||
else-files: "Inne"
|
||||
@ -335,11 +469,11 @@ desktop/views/components/drive.vue:
|
||||
upload: "Wyślij plik"
|
||||
url-upload: "Wyślij z adresu URL"
|
||||
desktop/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
desktop/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
desktop/views/components/follow-button.vue:
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "Więcej"
|
||||
empty: "Brak powiadomień"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "Odpowiedz na ten wpis…"
|
||||
quote-placeholder: "Zacytuj ten wpis…"
|
||||
submit: "Wyślij"
|
||||
@ -414,8 +551,12 @@ desktop/views/components/post-form.vue:
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Utwórz ankietę"
|
||||
text-remain: "pozostałe znaki: {}"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
recent-tags: "Ostatnie"
|
||||
click-to-tagging: "Naciśnij aby oznaczyć"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "Nowy wpis"
|
||||
reply: "Odpowiedz"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "Wprowadź hasło"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "Brak zautoryzowanych aplikacji"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "Brak wyciszonych użytkowników"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "Inne"
|
||||
is-bot: "To konto jest prowadzone przez bota"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "ten wpis jest prywatny"
|
||||
deleted: "ten wpis został usunięty"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "Zaloguj się"
|
||||
signup-button: "Zarejestruj się"
|
||||
timeline: "Oś czasu"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Dysk Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "OK"
|
||||
cancel: "Anuluj"
|
||||
upload: "Wyślij pliki z Twojego komputera"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "Użytkownicy"
|
||||
add-user: "Dodaj użytkownika"
|
||||
@ -737,11 +890,11 @@ mobile/views/components/drive.file-detail.vue:
|
||||
hash: "Hash (md5)"
|
||||
exif: "EXIF"
|
||||
mobile/views/components/media-image.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
mobile/views/components/media-video.vue:
|
||||
sensitive: "閲覧注意"
|
||||
click-to-show: "クリックして表示"
|
||||
sensitive: "To jest zawartość NSFW"
|
||||
click-to-show: "Naciśnij aby wyświetlić"
|
||||
mobile/views/components/follow-button.vue:
|
||||
following: "Śledzisz"
|
||||
follow: "Śledź"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "Brak wpisów"
|
||||
load-more: "Więcej"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "Oś czasu"
|
||||
notifications: "Powiadomienia"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "Dysk"
|
||||
more: "Załaduj więcej"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "Śledzący {}"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "Lokalne"
|
||||
hybrid: "Społeczność"
|
||||
global: "Globalne"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "Wiadomości"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "Powiadomienia"
|
||||
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "Profil"
|
||||
name: "Nazwa"
|
||||
@ -951,14 +1121,14 @@ docs:
|
||||
properties: "Właściwości"
|
||||
endpoints:
|
||||
params: "Parametry"
|
||||
no-params: "パラメータはありません"
|
||||
no-params: "Brak parametrów."
|
||||
res: "Odpowiedź"
|
||||
require-credential: "このエンドポイントは認証情報が必須です。"
|
||||
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
|
||||
has-limit: "レートリミットがあります。"
|
||||
require-credential: "Punkt końcowy wymaga informacji o uwierzytelnieniu."
|
||||
require-permission: "Ten punkt końcowy wymaga uprawnienia {permission}."
|
||||
has-limit: "Istnieje limit częstotliwości."
|
||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||
show-src: "このエンドポイントのソースコードも閲覧できます。"
|
||||
min-interval-limit: "Nie możesz wykonać żądania przed upłynięciem {interval} od ostatniego żądania."
|
||||
show-src: "Możesz zobaczyć kod źródłowy tego punktu końcowego."
|
||||
show-src-link: "Zobacz kod na GitHubie"
|
||||
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
|
||||
props:
|
||||
|
170
locales/pt.yml
170
locales/pt.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
170
locales/ru.yml
170
locales/ru.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
170
locales/zh.yml
170
locales/zh.yml
@ -6,6 +6,27 @@ common:
|
||||
misskey: "A ⭐ of fediverse"
|
||||
about-title: "A ⭐ of fediverse."
|
||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||
adblock:
|
||||
detected: "広告ブロッカーを無効にしてください"
|
||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||
application-authorization: "アプリの連携"
|
||||
close: "閉じる"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
|
||||
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
|
||||
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
|
||||
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
|
||||
gotit: "Got it!"
|
||||
notification:
|
||||
file-uploaded: "ファイルがアップロードされました"
|
||||
message-from: "{}さんからメッセージ:"
|
||||
reversi-invited: "対局への招待があります"
|
||||
reversi-invited-by: "{}さんから"
|
||||
notified-by: "{}さんから"
|
||||
reply-from: "{}さんから返信:"
|
||||
quoted-by: "{}さんが引用:"
|
||||
name: "Misskey"
|
||||
time:
|
||||
unknown: "なぞのじかん"
|
||||
future: "未来"
|
||||
@ -17,6 +38,13 @@ common:
|
||||
weeks_ago: "{}週間前"
|
||||
months_ago: "{}ヶ月前"
|
||||
years_ago: "{}年前"
|
||||
trash: "ゴミ箱"
|
||||
date:
|
||||
full-year: "年"
|
||||
month: "月"
|
||||
day: "日"
|
||||
hours: "時"
|
||||
minutes: "分"
|
||||
weekday-short:
|
||||
sunday: "日"
|
||||
monday: "月"
|
||||
@ -25,6 +53,14 @@ common:
|
||||
thursday: "木"
|
||||
friday: "金"
|
||||
saturday: "土"
|
||||
weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
tuesday: "火曜日"
|
||||
wednesday: "水曜日"
|
||||
thursday: "木曜日"
|
||||
friday: "金曜日"
|
||||
saturday: "土曜日"
|
||||
reactions:
|
||||
like: "いいね"
|
||||
love: "しゅき"
|
||||
@ -58,6 +94,11 @@ common:
|
||||
opponent-turn: "相手のターンです"
|
||||
turn-of: "{}のターンです"
|
||||
past-turn-of: "{}のターン"
|
||||
won: "{}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
this-turn: "{}ターン目"
|
||||
widgets:
|
||||
analog-clock: "アナログ時計"
|
||||
profile: "プロフィール"
|
||||
@ -99,6 +140,67 @@ common:
|
||||
rename: "名前を変更"
|
||||
stack-left: "左に重ねる"
|
||||
pop-right: "右に出す"
|
||||
auth/views/form.vue:
|
||||
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
|
||||
permission-ask: "このアプリは次の権限を要求しています:"
|
||||
account-read: "アカウントの情報を見る。"
|
||||
account-write: "アカウントの情報を操作する。"
|
||||
note-write: "投稿する。"
|
||||
like-write: "いいねしたりいいね解除する。"
|
||||
following-write: "フォローしたりフォロー解除する。"
|
||||
drive-read: "ドライブを見る。"
|
||||
drive-write: "ドライブを操作する。"
|
||||
notification-read: "通知を見る。"
|
||||
notification-write: "通知を操作する。"
|
||||
cancel: "キャンセル"
|
||||
accept: "アクセスを許可"
|
||||
auth/views/index.vue:
|
||||
loading: "読み込み中"
|
||||
denied: "アプリケーションの連携をキャンセルしました。"
|
||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||
already-authorized: "このアプリは既に連携済みです"
|
||||
allowed: "アプリケーションの連携を許可しました"
|
||||
callback-url: "アプリケーションに戻っています"
|
||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
||||
error: "セッションが存在しません。"
|
||||
sign-in: "サインインしてください"
|
||||
common/views/components/games/reversi/reversi.vue:
|
||||
matching:
|
||||
waiting-for: "{}を待っています"
|
||||
cancel: "キャンセル"
|
||||
common/views/components/games/reversi/reversi.index.vue:
|
||||
title: "Misskey Reversi"
|
||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||
invite: "招待"
|
||||
rule: "遊び方"
|
||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||
mode-invite: "招待"
|
||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
||||
invitations: "対局の招待があります!"
|
||||
my-games: "自分の対局"
|
||||
all-games: "みんなの対局"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
game-state:
|
||||
ended: "終了"
|
||||
playing: "進行中"
|
||||
common/views/components/games/reversi/reversi.room.vue:
|
||||
settings-of-the-game: "ゲームの設定"
|
||||
choose-map: "マップを選択"
|
||||
random: "ランダム"
|
||||
black-or-white: "先手/後手"
|
||||
black-is: "{}が黒"
|
||||
rules: "ルール"
|
||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
looped-map: "ループマップ"
|
||||
can-put-everywhere: "どこでも置けるモード"
|
||||
settings-of-the-bot: "Botの設定"
|
||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||
waiting-for-both: "準備中"
|
||||
cancel: "キャンセル"
|
||||
ready: "準備完了"
|
||||
cancel-ready: "準備続行"
|
||||
common/views/components/connect-failed.vue:
|
||||
title: "サーバーに接続できません"
|
||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||
@ -228,6 +330,13 @@ common/views/widgets/broadcast.vue:
|
||||
no-broadcasts: "お知らせはありません"
|
||||
have-a-nice-day: "良い一日を!"
|
||||
next: "次"
|
||||
common/views/widgets/calendar.vue:
|
||||
year: "{}年"
|
||||
month: "{}月"
|
||||
day: "{}日"
|
||||
today: "今日:"
|
||||
this-month: "今月:"
|
||||
this-year: "今年:"
|
||||
common/views/widgets/donation.vue:
|
||||
title: "寄付のお願い"
|
||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
||||
@ -248,6 +357,31 @@ common/views/widgets/memo.vue:
|
||||
title: "付箋"
|
||||
memo: "ここに書いて!"
|
||||
save: "保存"
|
||||
common/views/widgets/slideshow.vue:
|
||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
||||
folder: "クリックしてフォルダを指定してください"
|
||||
no-image: "このフォルダには画像がありません"
|
||||
common/views/widgets/tips.vue:
|
||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
||||
tips-line8: "ホームは設定からカスタマイズできます"
|
||||
tips-line9: "MisskeyはAGPLv3です"
|
||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
||||
tips-line23: "まゆかわいいよまゆ"
|
||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
following: "フォロー中"
|
||||
@ -396,6 +530,9 @@ desktop/views/components/notifications.vue:
|
||||
more: "もっと見る"
|
||||
empty: "ありません!"
|
||||
desktop/views/components/post-form.vue:
|
||||
add-visible-user: "+ユーザーを追加"
|
||||
attach-location-information: "位置情報を添付する"
|
||||
hide-contents: "内容を隠す"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
quote-placeholder: "この投稿を引用..."
|
||||
submit: "投稿"
|
||||
@ -416,6 +553,10 @@ desktop/views/components/post-form.vue:
|
||||
text-remain: "残り{}文字"
|
||||
recent-tags: "最近"
|
||||
click-to-tagging: "クリックでタグ付け"
|
||||
visibility: "公開範囲"
|
||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||
error: "エラー"
|
||||
enter-username: "ユーザー名を入力してください"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
note: "新規投稿"
|
||||
reply: "返信"
|
||||
@ -536,6 +677,9 @@ desktop/views/components/settings.api.vue:
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.apps.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
desktop/views/components/settings.drive.vue:
|
||||
max: "中"
|
||||
in-use: "使用中"
|
||||
desktop/views/components/settings.mute.vue:
|
||||
no-users: "ミュートしているユーザーはいません"
|
||||
desktop/views/components/settings.password.vue:
|
||||
@ -558,6 +702,7 @@ desktop/views/components/settings.profile.vue:
|
||||
other: "その他"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
profile-updated: "プロフィールを更新しました"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
private: "この投稿は非公開です"
|
||||
deleted: "この投稿は削除されました"
|
||||
@ -631,6 +776,7 @@ desktop/views/pages/welcome.vue:
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Misskey Drive"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@ -645,6 +791,13 @@ desktop/views/pages/selectdrive.vue:
|
||||
ok: "決定"
|
||||
cancel: "キャンセル"
|
||||
upload: "PCからドライブにファイルをアップロード"
|
||||
desktop/views/pages/search.vue:
|
||||
not-available: "検索機能を利用することができません。"
|
||||
not-found: "「{}」に関する投稿は見つかりませんでした。"
|
||||
desktop/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
desktop/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
desktop/views/pages/user-list.users.vue:
|
||||
users: "ユーザー"
|
||||
add-user: "ユーザーを追加"
|
||||
@ -800,6 +953,8 @@ mobile/views/components/sub-note-content.vue:
|
||||
mobile/views/components/timeline.vue:
|
||||
empty: "投稿がありません"
|
||||
load-more: "もっと"
|
||||
mobile/views/components/ui.header.vue:
|
||||
welcome-back: "おかえりなさい、"
|
||||
mobile/views/components/ui.nav.vue:
|
||||
timeline: "タイムライン"
|
||||
notifications: "通知"
|
||||
@ -830,6 +985,8 @@ mobile/views/pages/user-lists.vue:
|
||||
mobile/views/pages/drive.vue:
|
||||
drive: "ドライブ"
|
||||
more: "もっと見る"
|
||||
mobile/views/pages/signup.vue:
|
||||
lets-start: "📦 始めましょう"
|
||||
mobile/views/pages/followers.vue:
|
||||
followers-of: "{}のフォロワー"
|
||||
mobile/views/pages/following.vue:
|
||||
@ -839,6 +996,17 @@ mobile/views/pages/home.vue:
|
||||
local: "ローカル"
|
||||
hybrid: "ソーシャル"
|
||||
global: "グローバル"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
mobile/views/pages/share.vue:
|
||||
share-with: "{}で共有"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "メッセージ"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@ -854,6 +1022,8 @@ mobile/views/pages/note.vue:
|
||||
mobile/views/pages/notifications.vue:
|
||||
notifications: "通知"
|
||||
read-all: "すべての通知を既読にしますか?"
|
||||
mobile/views/pages/games/reversi.vue:
|
||||
reversi: "リバーシ"
|
||||
mobile/views/pages/settings/settings.profile.vue:
|
||||
title: "プロフィール"
|
||||
name: "名前"
|
||||
|
38
package.json
38
package.json
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "5.0.0",
|
||||
"clientVersion": "1.0.7553",
|
||||
"version": "5.11.0",
|
||||
"clientVersion": "1.0.7938",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@ -51,17 +51,16 @@
|
||||
"@types/koa-logger": "3.1.0",
|
||||
"@types/koa-mount": "3.0.1",
|
||||
"@types/koa-multer": "1.0.0",
|
||||
"@types/koa-router": "7.0.30",
|
||||
"@types/koa-router": "7.0.31",
|
||||
"@types/koa-send": "4.1.1",
|
||||
"@types/koa-views": "2.0.3",
|
||||
"@types/koa__cors": "2.2.2",
|
||||
"@types/kue": "0.11.9",
|
||||
"@types/koa__cors": "2.2.3",
|
||||
"@types/minio": "6.0.2",
|
||||
"@types/mkdirp": "0.5.2",
|
||||
"@types/mocha": "5.2.3",
|
||||
"@types/mongodb": "3.1.2",
|
||||
"@types/mongodb": "3.1.3",
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.5.3",
|
||||
"@types/node": "10.5.5",
|
||||
"@types/parse5": "5.0.0",
|
||||
"@types/portscanner": "2.1.0",
|
||||
"@types/pug": "2.0.4",
|
||||
@ -76,9 +75,10 @@
|
||||
"@types/showdown": "1.7.5",
|
||||
"@types/single-line-log": "1.1.0",
|
||||
"@types/speakeasy": "2.0.2",
|
||||
"@types/systeminformation": "3.23.0",
|
||||
"@types/tmp": "0.0.33",
|
||||
"@types/uuid": "3.4.3",
|
||||
"@types/webpack": "4.4.8",
|
||||
"@types/webpack": "4.4.9",
|
||||
"@types/webpack-stream": "3.2.10",
|
||||
"@types/websocket": "0.0.39",
|
||||
"@types/ws": "5.1.2",
|
||||
@ -86,9 +86,11 @@
|
||||
"autosize": "4.0.2",
|
||||
"autwh": "0.1.0",
|
||||
"bcryptjs": "2.4.3",
|
||||
"bee-queue": "1.2.2",
|
||||
"bootstrap-vue": "2.0.0-rc.11",
|
||||
"cafy": "11.3.0",
|
||||
"chalk": "2.4.1",
|
||||
"commander": "2.16.0",
|
||||
"crc-32": "1.2.0",
|
||||
"css-loader": "1.0.0",
|
||||
"dateformat": "3.0.3",
|
||||
@ -98,7 +100,7 @@
|
||||
"diskusage": "0.2.4",
|
||||
"dompurify": "1.0.5",
|
||||
"elasticsearch": "15.1.1",
|
||||
"element-ui": "2.4.4",
|
||||
"element-ui": "2.4.5",
|
||||
"emojilib": "2.3.0",
|
||||
"escape-regexp": "0.0.1",
|
||||
"eslint": "5.0.1",
|
||||
@ -122,7 +124,7 @@
|
||||
"gulp-typescript": "4.0.2",
|
||||
"gulp-uglify": "3.0.1",
|
||||
"gulp-util": "3.0.8",
|
||||
"hard-source-webpack-plugin": "0.11.2",
|
||||
"hard-source-webpack-plugin": "0.12.0",
|
||||
"highlight.js": "9.12.0",
|
||||
"html-minifier": "3.5.19",
|
||||
"http-signature": "1.2.0",
|
||||
@ -131,7 +133,7 @@
|
||||
"is-url": "1.2.4",
|
||||
"jquery": "3.3.1",
|
||||
"js-yaml": "3.12.0",
|
||||
"jsdom": "11.11.0",
|
||||
"jsdom": "11.12.0",
|
||||
"koa": "2.5.1",
|
||||
"koa-bodyparser": "4.2.1",
|
||||
"koa-compress": "3.0.0",
|
||||
@ -144,7 +146,6 @@
|
||||
"koa-send": "5.0.0",
|
||||
"koa-slow": "2.1.0",
|
||||
"koa-views": "6.1.4",
|
||||
"kue": "0.11.6",
|
||||
"loader-utils": "1.1.0",
|
||||
"mecab-async": "0.1.2",
|
||||
"minio": "6.0.0",
|
||||
@ -167,7 +168,7 @@
|
||||
"promise-sequential": "1.1.1",
|
||||
"pug": "2.0.3",
|
||||
"punycode": "2.1.1",
|
||||
"qrcode": "1.2.0",
|
||||
"qrcode": "1.2.2",
|
||||
"ratelimiter": "3.2.0",
|
||||
"recaptcha-promise": "0.1.3",
|
||||
"reconnecting-websocket": "3.2.2",
|
||||
@ -177,7 +178,7 @@
|
||||
"rimraf": "2.6.2",
|
||||
"rndstr": "1.0.0",
|
||||
"s-age": "1.1.2",
|
||||
"sass-loader": "7.0.3",
|
||||
"sass-loader": "7.1.0",
|
||||
"seedrandom": "2.4.3",
|
||||
"sharp": "0.20.5",
|
||||
"showdown": "1.8.6",
|
||||
@ -188,6 +189,7 @@
|
||||
"stylus": "0.54.5",
|
||||
"stylus-loader": "3.0.2",
|
||||
"summaly": "2.0.6",
|
||||
"systeminformation": "3.42.8",
|
||||
"syuilo-password-strength": "0.0.1",
|
||||
"textarea-caret": "3.1.0",
|
||||
"tmp": "0.0.33",
|
||||
@ -195,25 +197,25 @@
|
||||
"ts-node": "7.0.0",
|
||||
"tslint": "5.10.0",
|
||||
"typescript": "2.9.2",
|
||||
"typescript-eslint-parser": "16.0.1",
|
||||
"typescript-eslint-parser": "17.0.1",
|
||||
"uglify-es": "3.3.9",
|
||||
"url-loader": "1.0.1",
|
||||
"uuid": "3.3.2",
|
||||
"v-animate-css": "0.0.2",
|
||||
"vue": "2.5.16",
|
||||
"vue": "2.5.17",
|
||||
"vue-cropperjs": "2.2.1",
|
||||
"vue-js-modal": "1.3.16",
|
||||
"vue-json-tree-view": "2.1.4",
|
||||
"vue-loader": "15.2.6",
|
||||
"vue-router": "3.0.1",
|
||||
"vue-style-loader": "4.1.1",
|
||||
"vue-template-compiler": "2.5.16",
|
||||
"vue-template-compiler": "2.5.17",
|
||||
"vuedraggable": "2.16.0",
|
||||
"vuex": "3.0.1",
|
||||
"vuex-persistedstate": "2.5.4",
|
||||
"web-push": "3.3.2",
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.16.2",
|
||||
"webpack": "4.16.4",
|
||||
"webpack-cli": "3.1.0",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "6.0.0",
|
||||
|
@ -15,7 +15,7 @@ import Index from './views/index.vue';
|
||||
* init
|
||||
*/
|
||||
init(launch => {
|
||||
document.title = 'Misskey | アプリの連携';
|
||||
document.title = '%i18n:common.name% | %i18n:common.application-authorization%';
|
||||
|
||||
// Init router
|
||||
const router = new VueRouter({
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="form">
|
||||
<header>
|
||||
<h1><i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?</h1>
|
||||
<h1>%i18n:@share-access%</h1>
|
||||
<img :src="app.iconUrl"/>
|
||||
</header>
|
||||
<div class="app">
|
||||
@ -11,25 +11,25 @@
|
||||
<p class="description">{{ app.description }}</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>このアプリは次の権限を要求しています:</h2>
|
||||
<h2>%i18n:@permission-ask%</h2>
|
||||
<ul>
|
||||
<template v-for="p in app.permission">
|
||||
<li v-if="p == 'account-read'">アカウントの情報を見る。</li>
|
||||
<li v-if="p == 'account-write'">アカウントの情報を操作する。</li>
|
||||
<li v-if="p == 'note-write'">投稿する。</li>
|
||||
<li v-if="p == 'like-write'">いいねしたりいいね解除する。</li>
|
||||
<li v-if="p == 'following-write'">フォローしたりフォロー解除する。</li>
|
||||
<li v-if="p == 'drive-read'">ドライブを見る。</li>
|
||||
<li v-if="p == 'drive-write'">ドライブを操作する。</li>
|
||||
<li v-if="p == 'notification-read'">通知を見る。</li>
|
||||
<li v-if="p == 'notification-write'">通知を操作する。</li>
|
||||
<li v-if="p == 'account-read'">%i18n:@account-read%</li>
|
||||
<li v-if="p == 'account-write'">%i18n:@account-write%</li>
|
||||
<li v-if="p == 'note-write'">%i18n:@note-write%</li>
|
||||
<li v-if="p == 'like-write'">%i18n:@like-write%</li>
|
||||
<li v-if="p == 'following-write'">%i18n:@following-write%</li>
|
||||
<li v-if="p == 'drive-read'">%i18n:@drive-read%</li>
|
||||
<li v-if="p == 'drive-write'">%i18n:@drive-write%</li>
|
||||
<li v-if="p == 'notification-read'">%i18n:@notification-read%</li>
|
||||
<li v-if="p == 'notification-write'">%i18n:@notification-write%</li>
|
||||
</template>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
<div class="action">
|
||||
<button @click="cancel">キャンセル</button>
|
||||
<button @click="accept">アクセスを許可</button>
|
||||
<button @click="cancel">%i18n:@cancel%</button>
|
||||
<button @click="accept">%i18n:@accept%</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="index">
|
||||
<main v-if="$store.getters.isSignedIn">
|
||||
<p class="fetching" v-if="fetching">読み込み中<mk-ellipsis/></p>
|
||||
<p class="fetching" v-if="fetching">%i18n:@loading%<mk-ellipsis/></p>
|
||||
<x-form
|
||||
class="form"
|
||||
ref="form"
|
||||
@ -11,20 +11,20 @@
|
||||
@accepted="accepted"
|
||||
/>
|
||||
<div class="denied" v-if="state == 'denied'">
|
||||
<h1>アプリケーションの連携をキャンセルしました。</h1>
|
||||
<p>このアプリがあなたのアカウントにアクセスすることはありません。</p>
|
||||
<h1>%i18n:@denied%</h1>
|
||||
<p>%i18n:@denied-paragraph%</p>
|
||||
</div>
|
||||
<div class="accepted" v-if="state == 'accepted'">
|
||||
<h1>{{ session.app.isAuthorized ? 'このアプリは既に連携済みです' : 'アプリケーションの連携を許可しました' }}</h1>
|
||||
<p v-if="session.app.callbackUrl">アプリケーションに戻っています<mk-ellipsis/></p>
|
||||
<p v-if="!session.app.callbackUrl">アプリケーションに戻って、やっていってください。</p>
|
||||
<h1>{{ session.app.isAuthorized ? '%i18n:@already-authorized%' : '%i18n:@allowed%' }}</h1>
|
||||
<p v-if="session.app.callbackUrl">%i18n:@callback-url%<mk-ellipsis/></p>
|
||||
<p v-if="!session.app.callbackUrl">%i18n:@please-go-back%</p>
|
||||
</div>
|
||||
<div class="error" v-if="state == 'fetch-session-error'">
|
||||
<p>セッションが存在しません。</p>
|
||||
<p>%i18n:@error%</p>
|
||||
</div>
|
||||
</main>
|
||||
<main class="signin" v-if="!$store.getters.isSignedIn">
|
||||
<h1>サインインしてください</h1>
|
||||
<h1>%i18n:@sign-in%</h1>
|
||||
<mk-signin/>
|
||||
</main>
|
||||
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
|
||||
|
@ -15,22 +15,22 @@ export default function(type, data): Notification {
|
||||
switch (type) {
|
||||
case 'drive_file_created':
|
||||
return {
|
||||
title: 'ファイルがアップロードされました',
|
||||
title: '%i18n:common.notification.file-uploaded%',
|
||||
body: data.name,
|
||||
icon: data.url
|
||||
};
|
||||
|
||||
case 'unread_messaging_message':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんからメッセージ:`,
|
||||
title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] ,
|
||||
body: data.text, // TODO: getMessagingMessageSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'reversi_invited':
|
||||
return {
|
||||
title: '対局への招待があります',
|
||||
body: `${getUserName(data.parent)}さんから`,
|
||||
title: '%i18n:common.notification.reversi-invited%',
|
||||
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],
|
||||
icon: data.parent.avatarUrl
|
||||
};
|
||||
|
||||
@ -38,21 +38,21 @@ export default function(type, data): Notification {
|
||||
switch (data.type) {
|
||||
case 'mention':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんから:`,
|
||||
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}さんから:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'reply':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんから返信:`,
|
||||
title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1],
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
||||
case 'quote':
|
||||
return {
|
||||
title: `${getUserName(data.user)}さんが引用:`,
|
||||
title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1],
|
||||
body: getNoteSummary(data),
|
||||
icon: data.user.avatarUrl
|
||||
};
|
||||
|
@ -1,12 +1,12 @@
|
||||
export default date => {
|
||||
if (typeof date == 'string') date = new Date(date);
|
||||
return (
|
||||
date.getFullYear() + '年' +
|
||||
(date.getMonth() + 1) + '月' +
|
||||
date.getDate() + '日' +
|
||||
date.getFullYear() + '%i18n:common.date.full-year%' +
|
||||
(date.getMonth() + 1) + '%i18n:common.date.month%' +
|
||||
date.getDate() + '%i18n:common.date.day%' +
|
||||
' ' +
|
||||
date.getHours() + '時' +
|
||||
date.getMinutes() + '分' +
|
||||
date.getHours() + '%i18n:common.date.hours%' +
|
||||
date.getMinutes() + '%i18n:common.date.minutes%' +
|
||||
' ' +
|
||||
`(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})`
|
||||
);
|
||||
|
@ -5,8 +5,8 @@ declare const fuckAdBlock: any;
|
||||
export default (os) => {
|
||||
function adBlockDetected() {
|
||||
os.apis.dialog({
|
||||
title: '%fa:exclamation-triangle%広告ブロッカーを無効にしてください',
|
||||
text: '<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。',
|
||||
title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
|
||||
text: '%i18n:common.adblock.warning%',
|
||||
actins: [{
|
||||
text: 'OK'
|
||||
}]
|
||||
|
@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<div class="root">
|
||||
<header><b>{{ blackUser.name }}</b>(黒) vs <b>{{ whiteUser.name }}</b>(白)</header>
|
||||
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
||||
<header><b>{{ blackUser | userName }}</b>(%i18n:common.reversi.black%) vs <b>{{ whiteUser | userName }}</b>(%i18n:common.reversi.white%)</header>
|
||||
|
||||
<div style="overflow: hidden">
|
||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', turnUser.name) }}<mk-ellipsis/></p>
|
||||
<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', turnUser.name) }}</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="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="result" v-if="game.isEnded && logPos == logs.length">
|
||||
<template v-if="game.winner"><b>{{ game.winner.name }}</b>の勝ち{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
|
||||
<template v-if="game.winner">{{ '%i18n:common.reversi.won%'.replace('{}', $options.filters.userName(game.winner)) }}{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
|
||||
<template v-else>%i18n:common.reversi.drawn%</template>
|
||||
</p>
|
||||
</div>
|
||||
@ -39,7 +39,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="status"><b>{{ logPos }}ターン目</b> 黒:{{ o.blackCount }} 白:{{ o.whiteCount }} 合計:{{ 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="player" v-if="game.isEnded">
|
||||
<el-button-group>
|
||||
@ -105,13 +105,14 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
isMyTurn(): boolean {
|
||||
if (this.turnUser == null) return null;
|
||||
if (!this.iAmPlayer) return false;
|
||||
if (this.turnUser == null) return false;
|
||||
return this.turnUser.id == this.$store.state.i.id;
|
||||
},
|
||||
cellsStyle(): any {
|
||||
return {
|
||||
'grid-template-rows': `repeat(${ this.game.settings.map.length }, 1fr)`,
|
||||
'grid-template-columns': `repeat(${ this.game.settings.map[0].length }, 1fr)`
|
||||
'grid-template-rows': `repeat(${this.game.settings.map.length}, 1fr)`,
|
||||
'grid-template-columns': `repeat(${this.game.settings.map[0].length}, 1fr)`
|
||||
};
|
||||
}
|
||||
},
|
||||
@ -257,12 +258,12 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.root
|
||||
root(isDark)
|
||||
text-align center
|
||||
|
||||
> header
|
||||
padding 8px
|
||||
border-bottom dashed 1px #c4cdd4
|
||||
border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4
|
||||
|
||||
> .board
|
||||
width calc(100% - 16px)
|
||||
@ -326,16 +327,16 @@ export default Vue.extend({
|
||||
user-select none
|
||||
|
||||
&.empty
|
||||
border solid 2px #eee
|
||||
border solid 2px isDark ? #51595f : #eee
|
||||
|
||||
&.empty.can
|
||||
background #eee
|
||||
background isDark ? #51595f : #eee
|
||||
|
||||
&.empty.myTurn
|
||||
border-color #ddd
|
||||
border-color isDark ? #6a767f : #ddd
|
||||
|
||||
&.can
|
||||
background #eee
|
||||
background isDark ? #51595f : #eee
|
||||
cursor pointer
|
||||
|
||||
&:hover
|
||||
@ -349,7 +350,7 @@ export default Vue.extend({
|
||||
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
|
||||
|
||||
&.isEnded
|
||||
border-color #ddd
|
||||
border-color isDark ? #6a767f : #ddd
|
||||
|
||||
&.none
|
||||
border-color transparent !important
|
||||
@ -387,4 +388,11 @@ export default Vue.extend({
|
||||
display inline-block
|
||||
margin 0 8px
|
||||
min-width 70px
|
||||
|
||||
.xqnhankfuuilcwvhgsopeqncafzsquya[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.xqnhankfuuilcwvhgsopeqncafzsquya:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@ -0,0 +1,258 @@
|
||||
<template>
|
||||
<div class="phgnkghfpyvkrvwiajkiuoxyrdaqpzcx">
|
||||
<h1>%i18n:@title%</h1>
|
||||
<p>%i18n:@sub-title%</p>
|
||||
<div class="play">
|
||||
<!--<el-button round>フリーマッチ(準備中)</el-button>-->
|
||||
<form-button primary round @click="match">%i18n:@invite%</form-button>
|
||||
<details>
|
||||
<summary>%i18n:@rule%</summary>
|
||||
<div>
|
||||
<p>%i18n:@rule-desc%</p>
|
||||
<dl>
|
||||
<dt><b>%i18n:@mode-invite%</b></dt>
|
||||
<dd>%i18n:@mode-invite-desc%</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<section v-if="invitations.length > 0">
|
||||
<h2>%i18n:@invitations%</h2>
|
||||
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
||||
<mk-avatar class="avatar" :user="i.parent"/>
|
||||
<span class="name"><b>{{ i.parent | userName }}</b></span>
|
||||
<span class="username">@{{ i.parent.username }}</span>
|
||||
<mk-time :time="i.createdAt"/>
|
||||
</div>
|
||||
</section>
|
||||
<section v-if="myGames.length > 0">
|
||||
<h2>%i18n:@my-games%</h2>
|
||||
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||
<mk-avatar class="avatar" :user="g.user1"/>
|
||||
<mk-avatar class="avatar" :user="g.user2"/>
|
||||
<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
|
||||
<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
|
||||
</a>
|
||||
</section>
|
||||
<section v-if="games.length > 0">
|
||||
<h2>%i18n:@all-games%</h2>
|
||||
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||
<mk-avatar class="avatar" :user="g.user1"/>
|
||||
<mk-avatar class="avatar" :user="g.user2"/>
|
||||
<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
|
||||
<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
|
||||
</a>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
games: [],
|
||||
gamesFetching: true,
|
||||
gamesMoreFetching: false,
|
||||
myGames: [],
|
||||
matching: null,
|
||||
invitations: [],
|
||||
connection: null,
|
||||
connectionId: null
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||
|
||||
this.connection.on('invited', this.onInvited);
|
||||
|
||||
(this as any).api('games/reversi/games', {
|
||||
my: true
|
||||
}).then(games => {
|
||||
this.myGames = games;
|
||||
});
|
||||
|
||||
(this as any).api('games/reversi/invitations').then(invitations => {
|
||||
this.invitations = this.invitations.concat(invitations);
|
||||
});
|
||||
}
|
||||
|
||||
(this as any).api('games/reversi/games').then(games => {
|
||||
this.games = games;
|
||||
this.gamesFetching = false;
|
||||
});
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
if (this.connection) {
|
||||
this.connection.off('invited', this.onInvited);
|
||||
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
go(game) {
|
||||
(this as any).api('games/reversi/games/show', {
|
||||
gameId: game.id
|
||||
}).then(game => {
|
||||
this.$emit('go', game);
|
||||
});
|
||||
},
|
||||
|
||||
match() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-username%'
|
||||
}).then(username => {
|
||||
(this as any).api('users/show', {
|
||||
username
|
||||
}).then(user => {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: user.id
|
||||
}).then(res => {
|
||||
if (res == null) {
|
||||
this.$emit('matching', user);
|
||||
} else {
|
||||
this.$emit('go', res);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
accept(invitation) {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: invitation.parent.id
|
||||
}).then(game => {
|
||||
if (game) {
|
||||
this.$emit('go', game);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onInvited(invite) {
|
||||
this.invitations.unshift(invite);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
> h1
|
||||
margin 0
|
||||
padding 24px
|
||||
font-size 24px
|
||||
text-align center
|
||||
font-weight normal
|
||||
color #fff
|
||||
background linear-gradient(to bottom, isDark ? #45730e : #8bca3e, isDark ? #464300 : #d6cf31)
|
||||
|
||||
& + p
|
||||
margin 0
|
||||
padding 12px
|
||||
margin-bottom 12px
|
||||
text-align center
|
||||
font-size 14px
|
||||
border-bottom solid 1px isDark ? #535f65 : #d3d9dc
|
||||
|
||||
> .play
|
||||
margin 0 auto
|
||||
padding 0 16px
|
||||
max-width 500px
|
||||
text-align center
|
||||
|
||||
> details
|
||||
margin 8px 0
|
||||
|
||||
> div
|
||||
padding 16px
|
||||
font-size 14px
|
||||
text-align left
|
||||
background isDark ? #282c37 : #f5f5f5
|
||||
border-radius 8px
|
||||
|
||||
> section
|
||||
margin 0 auto
|
||||
padding 0 16px 16px 16px
|
||||
max-width 500px
|
||||
border-top solid 1px isDark ? #535f65 : #d3d9dc
|
||||
|
||||
> h2
|
||||
margin 0
|
||||
padding 16px 0 8px 0
|
||||
font-size 16px
|
||||
font-weight bold
|
||||
|
||||
.invitation
|
||||
margin 8px 0
|
||||
padding 8px
|
||||
color isDark ? #fff : #677f84
|
||||
background isDark ? #282c37 : #fff
|
||||
box-shadow 0 2px 16px rgba(#000, isDark ? 0.7 : 0.15)
|
||||
border-radius 6px
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&:focus
|
||||
border-color $theme-color
|
||||
|
||||
&:hover
|
||||
background isDark ? #313543 : #f5f5f5
|
||||
|
||||
&:active
|
||||
background isDark ? #1e222b : #eee
|
||||
|
||||
> .avatar
|
||||
width 32px
|
||||
height 32px
|
||||
border-radius 100%
|
||||
|
||||
> span
|
||||
margin 0 8px
|
||||
line-height 32px
|
||||
|
||||
.game
|
||||
display block
|
||||
margin 8px 0
|
||||
padding 8px
|
||||
color isDark ? #fff : #677f84
|
||||
background isDark ? #282c37 : #fff
|
||||
box-shadow 0 2px 16px rgba(#000, isDark ? 0.7 : 0.15)
|
||||
border-radius 6px
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&:hover
|
||||
background isDark ? #313543 : #f5f5f5
|
||||
|
||||
&:active
|
||||
background isDark ? #1e222b : #eee
|
||||
|
||||
> .avatar
|
||||
width 32px
|
||||
height 32px
|
||||
border-radius 100%
|
||||
|
||||
> span
|
||||
margin 0 8px
|
||||
line-height 32px
|
||||
|
||||
.phgnkghfpyvkrvwiajkiuoxyrdaqpzcx[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.phgnkghfpyvkrvwiajkiuoxyrdaqpzcx:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
@ -1,92 +1,108 @@
|
||||
<template>
|
||||
<div class="root">
|
||||
<header><b>{{ game.user1.name }}</b> vs <b>{{ game.user2.name }}</b></header>
|
||||
<div class="urbixznjwwuukfsckrwzwsqzsxornqij">
|
||||
<header><b>{{ game.user1 | userName }}</b> vs <b>{{ game.user2 | userName }}</b></header>
|
||||
|
||||
<div>
|
||||
<p>ゲームの設定</p>
|
||||
<p>%i18n:@settings-of-the-game%</p>
|
||||
|
||||
<el-card class="map">
|
||||
<div slot="header">
|
||||
<el-select :class="$style.mapSelect" v-model="mapName" placeholder="マップを選択" @change="onMapChange">
|
||||
<el-option label="ランダム" :value="null"/>
|
||||
<el-option-group v-for="c in mapCategories" :key="c" :label="c">
|
||||
<el-option v-for="m in maps" v-if="m.category == c" :key="m.name" :label="m.name" :value="m.name">
|
||||
<span style="float: left">{{ m.name }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px" v-if="m.author">(by <i>{{ m.author }}</i>)</span>
|
||||
</el-option>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
</div>
|
||||
<div :class="$style.board" v-if="game.settings.map != null" :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }">
|
||||
<div v-for="(x, i) in game.settings.map.join('')"
|
||||
:data-none="x == ' '"
|
||||
@click="onPixelClick(i, x)"
|
||||
>
|
||||
<template v-if="x == 'b'">%fa:circle%</template>
|
||||
<template v-if="x == 'w'">%fa:circle R%</template>
|
||||
<div class="card map">
|
||||
<header>
|
||||
<select v-model="mapName" placeholder="%i18n:@choose-map%" @change="onMapChange">
|
||||
<option label="-Custom-" :value="mapName" v-if="mapName == '-Custom-'"/>
|
||||
<option label="%i18n:@random%" :value="null"/>
|
||||
<optgroup v-for="c in mapCategories" :key="c" :label="c">
|
||||
<option v-for="m in maps" v-if="m.category == c" :key="m.name" :label="m.name" :value="m.name">{{ m.name }}</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<div class="random" v-if="game.settings.map == null">%fa:dice%</div>
|
||||
<div class="board" v-else :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }">
|
||||
<div v-for="(x, i) in game.settings.map.join('')"
|
||||
:data-none="x == ' '"
|
||||
@click="onPixelClick(i, x)">
|
||||
<template v-if="x == 'b'"><template v-if="$store.state.device.darkmode">%fa:circle R%</template><template v-else>%fa:circle%</template></template>
|
||||
<template v-if="x == 'w'"><template v-if="$store.state.device.darkmode">%fa:circle%</template><template v-else>%fa:circle R%</template></template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<el-card class="bw">
|
||||
<div slot="header">
|
||||
<span>先手/後手</span>
|
||||
<div class="card">
|
||||
<header>
|
||||
<span>%i18n:@black-or-white%</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<form-radio v-model="game.settings.bw" value="random" @change="updateSettings">%i18n:@random%</form-radio>
|
||||
<form-radio v-model="game.settings.bw" :value="1" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}<b>{{ game.user1 | userName }}</b>{{ '%i18n:@black-is%'.split('{}')[1] }}</form-radio>
|
||||
<form-radio v-model="game.settings.bw" :value="2" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}<b>{{ game.user2 | userName }}</b>{{ '%i18n:@black-is%'.split('{}')[1] }}</form-radio>
|
||||
</div>
|
||||
<el-radio v-model="game.settings.bw" label="random" @change="updateSettings">ランダム</el-radio>
|
||||
<el-radio v-model="game.settings.bw" :label="1" @change="updateSettings">{{ game.user1.name }}が黒</el-radio>
|
||||
<el-radio v-model="game.settings.bw" :label="2" @change="updateSettings">{{ game.user2.name }}が黒</el-radio>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<el-card class="rules">
|
||||
<div slot="header">
|
||||
<span>ルール</span>
|
||||
<div class="card">
|
||||
<header>
|
||||
<span>%i18n:@rules%</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<mk-switch v-model="game.settings.isLlotheo" @change="updateSettings" text="%i18n:@is-llotheo%"/>
|
||||
<mk-switch v-model="game.settings.loopedBoard" @change="updateSettings" text="%i18n:@looped-map%"/>
|
||||
<mk-switch v-model="game.settings.canPutEverywhere" @change="updateSettings" text="%i18n:@can-put-everywhere%"/>
|
||||
</div>
|
||||
<mk-switch v-model="game.settings.isLlotheo" @change="updateSettings" text="石の少ない方が勝ち(ロセオ)"/>
|
||||
<mk-switch v-model="game.settings.loopedBoard" @change="updateSettings" text="ループマップ"/>
|
||||
<mk-switch v-model="game.settings.canPutEverywhere" @change="updateSettings" text="どこでも置けるモード"/>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<el-card class="bot-form" v-if="form">
|
||||
<div slot="header">
|
||||
<span>Botの設定</span>
|
||||
</div>
|
||||
<el-alert v-for="message in messages"
|
||||
:title="message.text"
|
||||
:type="message.type"
|
||||
:key="message.id"
|
||||
/>
|
||||
<template v-for="item in form">
|
||||
<mk-switch v-if="item.type == 'button'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm($event, item)">{{ item.desc || '' }}</mk-switch>
|
||||
<div class="card" v-if="form">
|
||||
<header>
|
||||
<span>%i18n:@settings-of-the-bot%</span>
|
||||
</header>
|
||||
|
||||
<el-card v-if="item.type == 'radio'" :key="item.id">
|
||||
<div slot="header">
|
||||
<span>{{ item.label }}</span>
|
||||
<div>
|
||||
<el-alert v-for="message in messages"
|
||||
:title="message.text"
|
||||
:type="message.type"
|
||||
:key="message.id"/>
|
||||
|
||||
<template v-for="item in form">
|
||||
<mk-switch v-if="item.type == 'button'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm($event, item)">{{ item.desc || '' }}</mk-switch>
|
||||
|
||||
<div class="card" v-if="item.type == 'radio'" :key="item.id">
|
||||
<header>
|
||||
<span>{{ item.label }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<el-radio v-for="(r, i) in item.items" :key="item.id + ':' + i" v-model="item.value" :label="r.value" @change="onChangeForm($event, item)">{{ r.label }}</el-radio>
|
||||
</div>
|
||||
</div>
|
||||
<el-radio v-for="(r, i) in item.items" :key="item.id + ':' + i" v-model="item.value" :label="r.value" @change="onChangeForm($event, item)">{{ r.label }}</el-radio>
|
||||
</el-card>
|
||||
|
||||
<el-card v-if="item.type == 'textbox'" :key="item.id">
|
||||
<div slot="header">
|
||||
<span>{{ item.label }}</span>
|
||||
<div class="card" v-if="item.type == 'textbox'" :key="item.id">
|
||||
<header>
|
||||
<span>{{ item.label }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<el-input v-model="item.value" @change="onChangeForm($event, item)"/>
|
||||
</div>
|
||||
</div>
|
||||
<el-input v-model="item.value" @change="onChangeForm($event, item)"/>
|
||||
</el-card>
|
||||
</template>
|
||||
</el-card>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p class="status">
|
||||
<template v-if="isAccepted && isOpAccepted">ゲームは数秒後に開始されます<mk-ellipsis/></template>
|
||||
<template v-if="isAccepted && !isOpAccepted">相手の準備が完了するのを待っています<mk-ellipsis/></template>
|
||||
<template v-if="!isAccepted && isOpAccepted">あなたの準備が完了するのを待っています</template>
|
||||
<template v-if="!isAccepted && !isOpAccepted">準備中<mk-ellipsis/></template>
|
||||
<template v-if="isAccepted && isOpAccepted">%i18n:@this-game-is-started-soon%<mk-ellipsis/></template>
|
||||
<template v-if="isAccepted && !isOpAccepted">%i18n:@waiting-for-other%<mk-ellipsis/></template>
|
||||
<template v-if="!isAccepted && isOpAccepted">%i18n:@waiting-for-me%</template>
|
||||
<template v-if="!isAccepted && !isOpAccepted">%i18n:@waiting-for-both%<mk-ellipsis/></template>
|
||||
</p>
|
||||
|
||||
<div class="actions">
|
||||
<el-button @click="exit">キャンセル</el-button>
|
||||
<el-button type="primary" @click="accept" v-if="!isAccepted">準備完了</el-button>
|
||||
<el-button type="primary" @click="cancel" v-if="isAccepted">準備続行</el-button>
|
||||
<form-button @click="exit">%i18n:@cancel%</form-button>
|
||||
<form-button primary @click="accept" v-if="!isAccepted">%i18n:@ready%</form-button>
|
||||
<form-button primary @click="cancel" v-if="isAccepted">%i18n:@cancel-ready%</form-button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
@ -202,11 +218,11 @@ export default Vue.extend({
|
||||
});
|
||||
},
|
||||
|
||||
onMapChange(v) {
|
||||
if (v == null) {
|
||||
onMapChange() {
|
||||
if (this.mapName == null) {
|
||||
this.game.settings.map = null;
|
||||
} else {
|
||||
this.game.settings.map = Object.values(maps).find(x => x.name == v).data;
|
||||
this.game.settings.map = Object.values(maps).find(x => x.name == this.mapName).data;
|
||||
}
|
||||
this.$forceUpdate();
|
||||
this.updateSettings();
|
||||
@ -233,9 +249,9 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.root
|
||||
root(isDark)
|
||||
text-align center
|
||||
background #f9f9f9
|
||||
background isDark ? #191b22 : #f9f9f9
|
||||
|
||||
> header
|
||||
padding 8px
|
||||
@ -244,54 +260,87 @@ export default Vue.extend({
|
||||
> div
|
||||
padding 0 16px
|
||||
|
||||
> .map
|
||||
> .bw
|
||||
> .rules
|
||||
> .bot-form
|
||||
max-width 400px
|
||||
> .card
|
||||
margin 0 auto 16px auto
|
||||
|
||||
&.map
|
||||
> header
|
||||
> select
|
||||
width 100%
|
||||
padding 12px 14px
|
||||
background isDark ? #282C37 : #fff
|
||||
border 1px solid isDark ? #6a707d : #dcdfe6
|
||||
border-radius 4px
|
||||
color isDark ? #fff : #606266
|
||||
cursor pointer
|
||||
transition border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)
|
||||
|
||||
&:hover
|
||||
border-color isDark ? #a7aebd : #c0c4cc
|
||||
|
||||
&:focus
|
||||
&:active
|
||||
border-color $theme-color
|
||||
|
||||
> div
|
||||
> .random
|
||||
padding 32px 0
|
||||
font-size 64px
|
||||
color isDark ? #4e5961 : #d8d8d8
|
||||
|
||||
> .board
|
||||
display grid
|
||||
grid-gap 4px
|
||||
width 300px
|
||||
height 300px
|
||||
margin 0 auto
|
||||
color isDark ? #fff : #444
|
||||
|
||||
> div
|
||||
background transparent
|
||||
border solid 2px isDark ? #6a767f : #ddd
|
||||
border-radius 6px
|
||||
overflow hidden
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
width 100%
|
||||
height 100%
|
||||
|
||||
&[data-none]
|
||||
border-color transparent
|
||||
|
||||
.card
|
||||
max-width 400px
|
||||
border-radius 4px
|
||||
background isDark ? #282C37 : #fff
|
||||
color isDark ? #fff : #303133
|
||||
box-shadow 0 2px 12px 0 rgba(#000, 0.1)
|
||||
|
||||
> header
|
||||
padding 18px 20px
|
||||
border-bottom 1px solid isDark ? #1c2023 : #ebeef5
|
||||
|
||||
> div
|
||||
padding 20px
|
||||
color isDark ? #fff : #606266
|
||||
|
||||
> footer
|
||||
position sticky
|
||||
bottom 0
|
||||
padding 16px
|
||||
background rgba(255, 255, 255, 0.9)
|
||||
border-top solid 1px #c4cdd4
|
||||
background rgba(isDark ? #191b22 : #fff, 0.9)
|
||||
border-top solid 1px isDark ? #606266 : #c4cdd4
|
||||
|
||||
> .status
|
||||
margin 0 0 16px 0
|
||||
</style>
|
||||
|
||||
<style lang="stylus" module>
|
||||
.mapSelect
|
||||
width 100%
|
||||
.urbixznjwwuukfsckrwzwsqzsxornqij[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.board
|
||||
display grid
|
||||
grid-gap 4px
|
||||
width 300px
|
||||
height 300px
|
||||
margin 0 auto
|
||||
|
||||
> div
|
||||
background transparent
|
||||
border solid 2px #ddd
|
||||
border-radius 6px
|
||||
overflow hidden
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
width 100%
|
||||
height 100%
|
||||
|
||||
&[data-none]
|
||||
border-color transparent
|
||||
.urbixznjwwuukfsckrwzwsqzsxornqij:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
||||
<style lang="stylus">
|
||||
.el-alert__content
|
||||
position initial !important
|
||||
</style>
|
||||
|
@ -1,60 +1,16 @@
|
||||
<template>
|
||||
<div class="mk-reversi">
|
||||
<div class="vchtoekanapleubgzioubdtmlkribzfd">
|
||||
<div v-if="game">
|
||||
<x-gameroom :game="game"/>
|
||||
</div>
|
||||
<div class="matching" v-else-if="matching">
|
||||
<h1><b>{{ matching.name }}</b>を待っています<mk-ellipsis/></h1>
|
||||
<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
|
||||
<div class="cancel">
|
||||
<el-button round @click="cancel">キャンセル</el-button>
|
||||
<form-button round @click="cancel">%i18n:@matching.cancel%</form-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="index" v-else>
|
||||
<h1>Misskey Reversi</h1>
|
||||
<p>他のMisskeyユーザーとリバーシで対戦しよう</p>
|
||||
<div class="play">
|
||||
<el-button round>フリーマッチ(準備中)</el-button>
|
||||
<el-button type="primary" round @click="match">指名</el-button>
|
||||
<details>
|
||||
<summary>遊び方</summary>
|
||||
<div>
|
||||
<p>リバーシは、相手と交互に石をボードに置いてゆき、相手の石を挟んでひっくり返しながら、最終的に残った石が多い方が勝ちというボードゲームです。</p>
|
||||
<dl>
|
||||
<dt><b>フリーマッチ</b></dt>
|
||||
<dd>ランダムなユーザーと対戦するモードです。</dd>
|
||||
<dt><b>指名</b></dt>
|
||||
<dd>指定したユーザーと対戦するモードです。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<section v-if="invitations.length > 0">
|
||||
<h2>対局の招待があります!:</h2>
|
||||
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
||||
<mk-avatar class="avatar" :user="i.parent"/>
|
||||
<span class="name"><b>{{ i.parent.name }}</b></span>
|
||||
<span class="username">@{{ i.parent.username }}</span>
|
||||
<mk-time :time="i.createdAt"/>
|
||||
</div>
|
||||
</section>
|
||||
<section v-if="myGames.length > 0">
|
||||
<h2>自分の対局</h2>
|
||||
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||
<mk-avatar class="avatar" :user="g.user1"/>
|
||||
<mk-avatar class="avatar" :user="g.user2"/>
|
||||
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
||||
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
||||
</a>
|
||||
</section>
|
||||
<section v-if="games.length > 0">
|
||||
<h2>みんなの対局</h2>
|
||||
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||
<mk-avatar class="avatar" :user="g.user1"/>
|
||||
<mk-avatar class="avatar" :user="g.user2"/>
|
||||
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
|
||||
<span class="state">{{ g.isEnded ? '終了' : '進行中' }}</span>
|
||||
</a>
|
||||
</section>
|
||||
<x-index @go="nav" @matching="onMatching"/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -62,106 +18,94 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import XGameroom from './reversi.gameroom.vue';
|
||||
import XIndex from './reversi.index.vue';
|
||||
import Progress from '../../../../scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
XGameroom
|
||||
XGameroom,
|
||||
XIndex
|
||||
},
|
||||
props: ['initGame'],
|
||||
|
||||
props: {
|
||||
gameId: {
|
||||
type: String,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
game: null,
|
||||
games: [],
|
||||
gamesFetching: true,
|
||||
gamesMoreFetching: false,
|
||||
myGames: [],
|
||||
matching: null,
|
||||
invitations: [],
|
||||
connection: null,
|
||||
connectionId: null,
|
||||
pingClock: null
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
game(g) {
|
||||
this.$emit('gamed', g);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.initGame) {
|
||||
this.game = this.initGame;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||
|
||||
this.connection.on('matched', this.onMatched);
|
||||
this.connection.on('invited', this.onInvited);
|
||||
|
||||
(this as any).api('games/reversi/games', {
|
||||
my: true
|
||||
}).then(games => {
|
||||
this.myGames = games;
|
||||
});
|
||||
|
||||
(this as any).api('games/reversi/games').then(games => {
|
||||
this.games = games;
|
||||
this.gamesFetching = false;
|
||||
});
|
||||
|
||||
(this as any).api('games/reversi/invitations').then(invitations => {
|
||||
this.invitations = this.invitations.concat(invitations);
|
||||
});
|
||||
|
||||
this.pingClock = setInterval(() => {
|
||||
if (this.matching) {
|
||||
this.connection.send({
|
||||
type: 'ping',
|
||||
id: this.matching.id
|
||||
gameId(id) {
|
||||
if (id == null) {
|
||||
this.game = null;
|
||||
} else {
|
||||
Progress.start();
|
||||
(this as any).api('games/reversi/games/show', {
|
||||
gameId: id
|
||||
}).then(game => {
|
||||
this.nav(game, true);
|
||||
Progress.done();
|
||||
});
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.connection.off('matched', this.onMatched);
|
||||
this.connection.off('invited', this.onInvited);
|
||||
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||
|
||||
clearInterval(this.pingClock);
|
||||
},
|
||||
methods: {
|
||||
go(game) {
|
||||
(this as any).api('games/reversi/games/show', {
|
||||
gameId: game.id
|
||||
}).then(game => {
|
||||
this.matching = null;
|
||||
this.game = game;
|
||||
});
|
||||
},
|
||||
match() {
|
||||
(this as any).apis.input({
|
||||
title: 'ユーザー名を入力してください'
|
||||
}).then(username => {
|
||||
(this as any).api('users/show', {
|
||||
username
|
||||
}).then(user => {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: user.id
|
||||
}).then(res => {
|
||||
if (res == null) {
|
||||
this.matching = user;
|
||||
} else {
|
||||
this.game = res;
|
||||
}
|
||||
mounted() {
|
||||
if (this.$store.getters.isSignedIn) {
|
||||
this.connection = (this as any).os.streams.reversiStream.getConnection();
|
||||
this.connectionId = (this as any).os.streams.reversiStream.use();
|
||||
|
||||
this.connection.on('matched', this.onMatched);
|
||||
|
||||
this.pingClock = setInterval(() => {
|
||||
if (this.matching) {
|
||||
this.connection.send({
|
||||
type: 'ping',
|
||||
id: this.matching.id
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
if (this.connection) {
|
||||
this.connection.off('matched', this.onMatched);
|
||||
(this as any).os.streams.reversiStream.dispose(this.connectionId);
|
||||
|
||||
clearInterval(this.pingClock);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
nav(game, silent) {
|
||||
this.matching = null;
|
||||
this.game = game;
|
||||
|
||||
if (!silent) {
|
||||
this.$emit('nav', this.game);
|
||||
}
|
||||
},
|
||||
|
||||
onMatching(user) {
|
||||
this.matching = user;
|
||||
},
|
||||
|
||||
cancel() {
|
||||
this.matching = null;
|
||||
(this as any).api('games/reversi/match/cancel');
|
||||
},
|
||||
|
||||
accept(invitation) {
|
||||
(this as any).api('games/reversi/match', {
|
||||
userId: invitation.parent.id
|
||||
@ -172,12 +116,10 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onMatched(game) {
|
||||
this.matching = null;
|
||||
this.game = game;
|
||||
},
|
||||
onInvited(invite) {
|
||||
this.invitations.unshift(invite);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -186,9 +128,9 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-reversi
|
||||
color #677f84
|
||||
background #fff
|
||||
root(isDark)
|
||||
color isDark ? #fff : #677f84
|
||||
background isDark ? #191b22 : #fff
|
||||
|
||||
> .matching
|
||||
> h1
|
||||
@ -205,109 +147,10 @@ export default Vue.extend({
|
||||
text-align center
|
||||
border-top dashed 1px #c4cdd4
|
||||
|
||||
> .index
|
||||
> h1
|
||||
margin 0
|
||||
padding 24px
|
||||
font-size 24px
|
||||
text-align center
|
||||
font-weight normal
|
||||
color #fff
|
||||
background linear-gradient(to bottom, #8bca3e, #d6cf31)
|
||||
.vchtoekanapleubgzioubdtmlkribzfd[data-darkmode]
|
||||
root(true)
|
||||
|
||||
& + p
|
||||
margin 0
|
||||
padding 12px
|
||||
margin-bottom 12px
|
||||
text-align center
|
||||
font-size 14px
|
||||
border-bottom solid 1px #d3d9dc
|
||||
.vchtoekanapleubgzioubdtmlkribzfd:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
> .play
|
||||
margin 0 auto
|
||||
padding 0 16px
|
||||
max-width 500px
|
||||
text-align center
|
||||
|
||||
> details
|
||||
margin 8px 0
|
||||
|
||||
> div
|
||||
padding 16px
|
||||
font-size 14px
|
||||
text-align left
|
||||
background #f5f5f5
|
||||
border-radius 8px
|
||||
|
||||
> section
|
||||
margin 0 auto
|
||||
padding 0 16px 16px 16px
|
||||
max-width 500px
|
||||
border-top solid 1px #d3d9dc
|
||||
|
||||
> h2
|
||||
margin 0
|
||||
padding 16px 0 8px 0
|
||||
font-size 16px
|
||||
font-weight bold
|
||||
|
||||
.invitation
|
||||
margin 8px 0
|
||||
padding 8px
|
||||
border solid 1px #e1e5e8
|
||||
border-radius 6px
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&:focus
|
||||
border-color $theme-color
|
||||
|
||||
&:hover
|
||||
background #f5f5f5
|
||||
|
||||
&:active
|
||||
background #eee
|
||||
|
||||
> .avatar
|
||||
width 32px
|
||||
height 32px
|
||||
border-radius 100%
|
||||
|
||||
> span
|
||||
margin 0 8px
|
||||
line-height 32px
|
||||
|
||||
.game
|
||||
display block
|
||||
margin 8px 0
|
||||
padding 8px
|
||||
color #677f84
|
||||
border solid 1px #e1e5e8
|
||||
border-radius 6px
|
||||
cursor pointer
|
||||
|
||||
*
|
||||
pointer-events none
|
||||
user-select none
|
||||
|
||||
&:focus
|
||||
border-color $theme-color
|
||||
|
||||
&:hover
|
||||
background #f5f5f5
|
||||
|
||||
&:active
|
||||
background #eee
|
||||
|
||||
> .avatar
|
||||
width 32px
|
||||
height 32px
|
||||
border-radius 100%
|
||||
|
||||
> span
|
||||
margin 0 8px
|
||||
line-height 32px
|
||||
</style>
|
||||
|
@ -37,6 +37,8 @@ import uiTextarea from './ui/textarea.vue';
|
||||
import uiSwitch from './ui/switch.vue';
|
||||
import uiRadio from './ui/radio.vue';
|
||||
import uiSelect from './ui/select.vue';
|
||||
import formButton from './ui/form/button.vue';
|
||||
import formRadio from './ui/form/radio.vue';
|
||||
|
||||
Vue.component('mk-analog-clock', analogClock);
|
||||
Vue.component('mk-menu', menu);
|
||||
@ -75,3 +77,5 @@ Vue.component('ui-textarea', uiTextarea);
|
||||
Vue.component('ui-switch', uiSwitch);
|
||||
Vue.component('ui-radio', uiRadio);
|
||||
Vue.component('ui-select', uiSelect);
|
||||
Vue.component('form-button', formButton);
|
||||
Vue.component('form-radio', formRadio);
|
||||
|
@ -79,7 +79,8 @@ root(isDark)
|
||||
> .content
|
||||
|
||||
> .balloon
|
||||
display block
|
||||
display flex
|
||||
align-items center
|
||||
padding 0
|
||||
max-width calc(100% - 16px)
|
||||
min-height 38px
|
||||
@ -254,7 +255,7 @@ root(isDark)
|
||||
font-size 11px
|
||||
|
||||
&[data-is-deleted]
|
||||
> .baloon
|
||||
> .balloon
|
||||
opacity 0.5
|
||||
|
||||
.message[data-darkmode]
|
||||
|
@ -56,7 +56,18 @@ export default Vue.component('misskey-flavored-markdown', {
|
||||
}
|
||||
|
||||
case 'bold':
|
||||
return createElement('strong', token.bold);
|
||||
return createElement('b', token.bold);
|
||||
|
||||
case 'big':
|
||||
return (createElement as any)('strong', {
|
||||
attrs: {
|
||||
style: 'display: inline-block; font-size: 200%;'
|
||||
},
|
||||
directives: [{
|
||||
name: 'animate-css',
|
||||
value: { classes: 'tada', iteration: 'infinite' }
|
||||
}]
|
||||
}, token.big);
|
||||
|
||||
case 'url':
|
||||
return createElement(MkUrl, {
|
||||
@ -92,7 +103,7 @@ export default Vue.component('misskey-flavored-markdown', {
|
||||
case 'hashtag':
|
||||
return createElement('a', {
|
||||
attrs: {
|
||||
href: `${url}/tags/${token.hashtag}`,
|
||||
href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
|
||||
target: '_blank'
|
||||
}
|
||||
}, token.content);
|
||||
|
86
src/client/app/common/views/components/ui/form/button.vue
Normal file
86
src/client/app/common/views/components/ui/form/button.vue
Normal file
@ -0,0 +1,86 @@
|
||||
<template>
|
||||
<div class="nvemkhtwcnnpkdrwfcbzuwhfulejhmzg" :class="{ round, primary }">
|
||||
<button @click="$emit('click')">
|
||||
<slot></slot>
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
round: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
primary: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
display inline-block
|
||||
|
||||
& + .nvemkhtwcnnpkdrwfcbzuwhfulejhmzg
|
||||
margin-left 12px
|
||||
|
||||
> button
|
||||
display inline-block
|
||||
margin 0
|
||||
padding 12px 20px
|
||||
font-size 14px
|
||||
border 1px solid isDark ? #6d727d : #dcdfe6
|
||||
border-radius 4px
|
||||
outline none
|
||||
box-shadow none
|
||||
color isDark ? #fff : #606266
|
||||
transition 0.1s
|
||||
|
||||
&:hover
|
||||
&:focus
|
||||
color $theme-color
|
||||
background rgba($theme-color, isDark ? 0.2 : 0.12)
|
||||
border-color rgba($theme-color, isDark ? 0.5 : 0.3)
|
||||
|
||||
&:active
|
||||
color darken($theme-color, 20%)
|
||||
background rgba($theme-color, 0.12)
|
||||
border-color $theme-color
|
||||
transition all 0s
|
||||
|
||||
&.primary
|
||||
> button
|
||||
border 1px solid $theme-color
|
||||
background $theme-color
|
||||
color $theme-color-foreground
|
||||
|
||||
&:hover
|
||||
&:focus
|
||||
background lighten($theme-color, 20%)
|
||||
border-color lighten($theme-color, 20%)
|
||||
|
||||
&:active
|
||||
background darken($theme-color, 20%)
|
||||
border-color darken($theme-color, 20%)
|
||||
transition all 0s
|
||||
|
||||
&.round
|
||||
> button
|
||||
border-radius 64px
|
||||
|
||||
.nvemkhtwcnnpkdrwfcbzuwhfulejhmzg[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.nvemkhtwcnnpkdrwfcbzuwhfulejhmzg:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
126
src/client/app/common/views/components/ui/form/radio.vue
Normal file
126
src/client/app/common/views/components/ui/form/radio.vue
Normal file
@ -0,0 +1,126 @@
|
||||
<template>
|
||||
<div
|
||||
class="uywduthvrdnlpsvsjkqigicixgyfctto"
|
||||
:class="{ disabled, checked }"
|
||||
:aria-checked="checked"
|
||||
:aria-disabled="disabled"
|
||||
@click="toggle"
|
||||
>
|
||||
<input type="radio"
|
||||
:disabled="disabled"
|
||||
>
|
||||
<span class="button">
|
||||
<span></span>
|
||||
</span>
|
||||
<span class="label"><slot></slot></span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
model: {
|
||||
prop: 'model',
|
||||
event: 'change'
|
||||
},
|
||||
props: {
|
||||
model: {
|
||||
required: false
|
||||
},
|
||||
value: {
|
||||
required: false
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
checked(): boolean {
|
||||
return this.model === this.value;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggle() {
|
||||
this.$emit('change', this.value);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
display inline-flex
|
||||
margin 0 16px 0 0
|
||||
cursor pointer
|
||||
transition all 0.3s
|
||||
|
||||
> *
|
||||
user-select none
|
||||
|
||||
&:hover
|
||||
> .button
|
||||
border solid 2px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
|
||||
|
||||
&.disabled
|
||||
opacity 0.6
|
||||
cursor not-allowed
|
||||
|
||||
&.checked
|
||||
> .button
|
||||
border-color $theme-color
|
||||
|
||||
&:after
|
||||
background-color $theme-color
|
||||
transform scale(1)
|
||||
opacity 1
|
||||
|
||||
> .label
|
||||
color $theme-color
|
||||
|
||||
> input
|
||||
position absolute
|
||||
width 0
|
||||
height 0
|
||||
opacity 0
|
||||
margin 0
|
||||
|
||||
> .button
|
||||
display inline-block
|
||||
flex-shrink 0
|
||||
width 20px
|
||||
height 20px
|
||||
background none
|
||||
border solid 2px isDark ? rgba(#fff, 0.6) : rgba(#000, 0.4)
|
||||
border-radius 100%
|
||||
transition inherit
|
||||
|
||||
&:after
|
||||
content ''
|
||||
display block
|
||||
position absolute
|
||||
top 3px
|
||||
right 3px
|
||||
bottom 3px
|
||||
left 3px
|
||||
border-radius 100%
|
||||
opacity 0
|
||||
transform scale(0)
|
||||
transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
|
||||
|
||||
> .label
|
||||
margin-left 8px
|
||||
display block
|
||||
font-size 14px
|
||||
line-height 20px
|
||||
cursor pointer
|
||||
|
||||
.uywduthvrdnlpsvsjkqigicixgyfctto[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.uywduthvrdnlpsvsjkqigicixgyfctto:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
@ -2,9 +2,11 @@
|
||||
<iframe v-if="youtubeId" type="text/html" height="250"
|
||||
:src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
|
||||
frameborder="0"/>
|
||||
<blockquote v-else-if="tweetUrl" class="twitter-tweet" ref="tweet">
|
||||
<a :href="url"></a>
|
||||
</blockquote>
|
||||
<div v-else-if="tweetUrl && detail" class="twitter">
|
||||
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
|
||||
<a :href="url"></a>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div v-else class="mk-url-preview">
|
||||
<a :href="url" target="_blank" :title="url" v-if="!fetching">
|
||||
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
||||
@ -27,7 +29,17 @@ import Vue from 'vue';
|
||||
import { url as misskeyUrl } from '../../../config';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['url'],
|
||||
props: {
|
||||
url: {
|
||||
type: String,
|
||||
require: true
|
||||
},
|
||||
detail: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@ -48,7 +60,7 @@ export default Vue.extend({
|
||||
this.youtubeId = url.searchParams.get('v');
|
||||
} else if (url.hostname == 'youtu.be') {
|
||||
this.youtubeId = url.pathname;
|
||||
} else if (url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
|
||||
} else if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
|
||||
this.tweetUrl = url;
|
||||
const twttr = (window as any).twttr || {};
|
||||
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
|
||||
|
@ -69,25 +69,25 @@ class Autocomplete {
|
||||
*/
|
||||
private onInput() {
|
||||
const caretPos = this.textarea.selectionStart;
|
||||
const text = this.text.substr(0, caretPos);
|
||||
const text = this.text.substr(0, caretPos).split('\n').pop();
|
||||
|
||||
const mentionIndex = text.lastIndexOf('@');
|
||||
const hashtagIndex = text.lastIndexOf('#');
|
||||
const emojiIndex = text.lastIndexOf(':');
|
||||
|
||||
const start = Math.min(
|
||||
mentionIndex == -1 ? Infinity : mentionIndex,
|
||||
hashtagIndex == -1 ? Infinity : hashtagIndex,
|
||||
emojiIndex == -1 ? Infinity : emojiIndex);
|
||||
const max = Math.max(
|
||||
mentionIndex,
|
||||
hashtagIndex,
|
||||
emojiIndex);
|
||||
|
||||
if (start == Infinity) {
|
||||
if (max == -1) {
|
||||
this.close();
|
||||
return;
|
||||
}
|
||||
|
||||
const isMention = mentionIndex == start;
|
||||
const isHashtag = hashtagIndex == start;
|
||||
const isEmoji = emojiIndex == start;
|
||||
const isMention = mentionIndex != -1;
|
||||
const isHashtag = hashtagIndex != -1;
|
||||
const isEmoji = emojiIndex != -1;
|
||||
|
||||
let opened = false;
|
||||
|
||||
@ -99,15 +99,15 @@ class Autocomplete {
|
||||
}
|
||||
}
|
||||
|
||||
if (isHashtag || opened == false) {
|
||||
if (isHashtag && opened == false) {
|
||||
const hashtag = text.substr(hashtagIndex + 1);
|
||||
if (!hashtag.includes(' ') && !hashtag.includes('\n')) {
|
||||
if (!hashtag.includes(' ')) {
|
||||
this.open('hashtag', hashtag);
|
||||
opened = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isEmoji || opened == false) {
|
||||
if (isEmoji && opened == false) {
|
||||
const emoji = text.substr(emojiIndex + 1);
|
||||
if (emoji != '' && emoji.match(/^[\+\-a-z0-9_]+$/)) {
|
||||
this.open('emoji', emoji);
|
||||
|
@ -71,7 +71,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
Progress.done();
|
||||
document.title = getUserName(this.user) + ' | Misskey';
|
||||
document.title = getUserName(this.user) + ' | %i18n:common.name%';
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -4,27 +4,27 @@
|
||||
<div class="mkw-calendar--body">
|
||||
<div class="calendar" :data-is-holiday="isHoliday">
|
||||
<p class="month-and-year">
|
||||
<span class="year">{{ year }}年</span>
|
||||
<span class="month">{{ month }}月</span>
|
||||
<span class="year">{{ '%i18n:@year%'.split('{}')[0] }}{{ year }}{{ '%i18n:@year%'.split('{}')[1] }}</span>
|
||||
<span class="month">{{ '%i18n:@month%'.split('{}')[0] }}{{ month }}{{ '%i18n:@month%'.split('{}')[1] }}</span>
|
||||
</p>
|
||||
<p class="day">{{ day }}日</p>
|
||||
<p class="week-day">{{ weekDay }}曜日</p>
|
||||
<p class="day">{{ '%i18n:@day%'.split('{}')[0] }}{{ day }}{{ '%i18n:@day%'.split('{}')[1] }}</p>
|
||||
<p class="week-day">{{ weekDay }}</p>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div>
|
||||
<p>今日:<b>{{ dayP.toFixed(1) }}%</b></p>
|
||||
<p>%i18n:@today%<b>{{ dayP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${dayP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>今月:<b>{{ monthP.toFixed(1) }}%</b></p>
|
||||
<p>%i18n:@this-month%<b>{{ monthP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${monthP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>今年:<b>{{ yearP.toFixed(1) }}%</b></p>
|
||||
<p>%i18n:@this-year%<b>{{ yearP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${yearP}%` }"></div>
|
||||
</div>
|
||||
@ -84,7 +84,15 @@ export default define({
|
||||
this.year = ny;
|
||||
this.month = nm + 1;
|
||||
this.day = nd;
|
||||
this.weekDay = ['日', '月', '火', '水', '木', '金', '土'][now.getDay()];
|
||||
this.weekDay = [
|
||||
'%i18n:common.weekday.sunday%',
|
||||
'%i18n:common.weekday.monday%',
|
||||
'%i18n:common.weekday.tuesday%',
|
||||
'%i18n:common.weekday.wednesday%',
|
||||
'%i18n:common.weekday.thursday%',
|
||||
'%i18n:common.weekday.friday%',
|
||||
'%i18n:common.weekday.saturday%'
|
||||
][now.getDay()];
|
||||
|
||||
const dayNumer = now.getTime() - new Date(ny, nm, nd).getTime();
|
||||
const dayDenom = 1000/*ms*/ * 60/*s*/ * 60/*m*/ * 24/*h*/;
|
||||
|
@ -11,7 +11,7 @@
|
||||
<div>
|
||||
<div v-for="stat in stats" :key="stat.tag">
|
||||
<div class="tag">
|
||||
<router-link :to="`/tags/${ stat.tag }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
||||
<router-link :to="`/tags/${ encodeURIComponent(stat.tag) }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
||||
<p>{{ '%i18n:@count%'.replace('{}', stat.usersCount) }}</p>
|
||||
</div>
|
||||
<x-chart class="chart" :src="stat.chart"/>
|
||||
|
@ -102,7 +102,6 @@ export default Vue.extend({
|
||||
},
|
||||
methods: {
|
||||
onStats(stats) {
|
||||
stats.mem.used = stats.mem.total - stats.mem.free;
|
||||
this.stats.push(stats);
|
||||
if (this.stats.length > 50) this.stats.shift();
|
||||
|
||||
@ -111,8 +110,8 @@ export default Vue.extend({
|
||||
this.cpuPolylinePoints = cpuPolylinePoints.map(xy => `${xy[0]},${xy[1]}`).join(' ');
|
||||
this.memPolylinePoints = memPolylinePoints.map(xy => `${xy[0]},${xy[1]}`).join(' ');
|
||||
|
||||
this.cpuPolygonPoints = `${this.viewBoxX - (this.stats.length - 1)},${ this.viewBoxY } ${ this.cpuPolylinePoints } ${ this.viewBoxX },${ this.viewBoxY }`;
|
||||
this.memPolygonPoints = `${this.viewBoxX - (this.stats.length - 1)},${ this.viewBoxY } ${ this.memPolylinePoints } ${ this.viewBoxX },${ this.viewBoxY }`;
|
||||
this.cpuPolygonPoints = `${this.viewBoxX - (this.stats.length - 1)},${this.viewBoxY} ${this.cpuPolylinePoints} ${this.viewBoxX},${this.viewBoxY}`;
|
||||
this.memPolygonPoints = `${this.viewBoxX - (this.stats.length - 1)},${this.viewBoxY} ${this.memPolylinePoints} ${this.viewBoxX},${this.viewBoxY}`;
|
||||
|
||||
this.cpuHeadX = cpuPolylinePoints[cpuPolylinePoints.length - 1][0];
|
||||
this.cpuHeadY = cpuPolylinePoints[cpuPolylinePoints.length - 1][1];
|
||||
|
@ -35,7 +35,7 @@ export default Vue.extend({
|
||||
},
|
||||
methods: {
|
||||
onStats(stats) {
|
||||
stats.mem.used = stats.mem.total - stats.mem.free;
|
||||
stats.mem.free = stats.mem.total - stats.mem.used;
|
||||
this.usage = stats.mem.used / stats.mem.total;
|
||||
this.total = stats.mem.total;
|
||||
this.used = stats.mem.used;
|
||||
|
@ -2,10 +2,10 @@
|
||||
<div class="mkw-slideshow" :data-mobile="platform == 'mobile'">
|
||||
<div @click="choose">
|
||||
<p v-if="props.folder === undefined">
|
||||
<template v-if="isCustomizeMode">フォルダを指定するには、カスタマイズモードを終了してください</template>
|
||||
<template v-else>クリックしてフォルダを指定してください</template>
|
||||
<template v-if="isCustomizeMode">%i18n:@folder-customize-mode%</template>
|
||||
<template v-else>%i18n:@folder%</template>
|
||||
</p>
|
||||
<p v-if="props.folder !== undefined && images.length == 0 && !fetching">このフォルダには画像がありません</p>
|
||||
<p v-if="props.folder !== undefined && images.length == 0 && !fetching">%i18n:@no-image%</p>
|
||||
<div ref="slideA" class="slide a"></div>
|
||||
<div ref="slideB" class="slide b"></div>
|
||||
</div>
|
||||
|
@ -9,31 +9,26 @@ import * as anime from 'animejs';
|
||||
import define from '../../../common/define-widget';
|
||||
|
||||
const tips = [
|
||||
'<kbd>t</kbd>でタイムラインにフォーカスできます',
|
||||
'<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます',
|
||||
'投稿フォームにはファイルをドラッグ&ドロップできます',
|
||||
'投稿フォームにクリップボードにある画像データをペーストできます',
|
||||
'ドライブにファイルをドラッグ&ドロップしてアップロードできます',
|
||||
'ドライブでファイルをドラッグしてフォルダ移動できます',
|
||||
'ドライブでフォルダをドラッグしてフォルダ移動できます',
|
||||
'ホームは設定からカスタマイズできます',
|
||||
'MisskeyはAGPLv3です',
|
||||
'タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます',
|
||||
'投稿の ... をクリックして、投稿をユーザーページにピン留めできます',
|
||||
'ドライブの容量は(デフォルトで)1GBです',
|
||||
'投稿に添付したファイルは全てドライブに保存されます',
|
||||
'ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます',
|
||||
'タイムライン上部にもウィジェットを設置できます',
|
||||
'投稿をダブルクリックすると詳細が見れます',
|
||||
'「**」でテキストを囲むと**強調表示**されます',
|
||||
'チャンネルウィジェットを利用すると、よく利用するチャンネルを素早く確認できます',
|
||||
'いくつかのウィンドウはブラウザの外に切り離すことができます',
|
||||
'カレンダーウィジェットのパーセンテージは、経過の割合を示しています',
|
||||
'APIを利用してbotの開発なども行えます',
|
||||
'MisskeyはLINEを通じてでも利用できます',
|
||||
'まゆかわいいよまゆ',
|
||||
'Misskeyは2014年にサービスを開始しました',
|
||||
'対応ブラウザではMisskeyを開いていなくても通知を受け取れます'
|
||||
'%i18n:@tips-line1%',
|
||||
'%i18n:@tips-line2%',
|
||||
'%i18n:@tips-line3%',
|
||||
'%i18n:@tips-line4%',
|
||||
'%i18n:@tips-line5%',
|
||||
'%i18n:@tips-line6%',
|
||||
'%i18n:@tips-line7%',
|
||||
'%i18n:@tips-line8%',
|
||||
'%i18n:@tips-line9%',
|
||||
'%i18n:@tips-line10%',
|
||||
'%i18n:@tips-line11%',
|
||||
'%i18n:@tips-line13%',
|
||||
'%i18n:@tips-line14%',
|
||||
'%i18n:@tips-line17%',
|
||||
'%i18n:@tips-line19%',
|
||||
'%i18n:@tips-line20%',
|
||||
'%i18n:@tips-line21%',
|
||||
'%i18n:@tips-line23%',
|
||||
'%i18n:@tips-line24%',
|
||||
'%i18n:@tips-line25%'
|
||||
]
|
||||
|
||||
export default define({
|
||||
|
@ -34,7 +34,7 @@ import MkMessagingRoom from './views/pages/messaging-room.vue';
|
||||
import MkNote from './views/pages/note.vue';
|
||||
import MkSearch from './views/pages/search.vue';
|
||||
import MkTag from './views/pages/tag.vue';
|
||||
import MkReversi from './views/pages/reversi.vue';
|
||||
import MkReversi from './views/pages/games/reversi.vue';
|
||||
import MkShare from './views/pages/share.vue';
|
||||
import MkFollow from '../common/views/pages/follow.vue';
|
||||
|
||||
@ -65,8 +65,7 @@ init(async (launch) => {
|
||||
{ path: '/search', component: MkSearch },
|
||||
{ path: '/tags/:tag', component: MkTag },
|
||||
{ path: '/share', component: MkShare },
|
||||
{ path: '/reversi', component: MkReversi },
|
||||
{ path: '/reversi/:game', component: MkReversi },
|
||||
{ path: '/reversi/:game?', component: MkReversi },
|
||||
{ path: '/@:user', component: MkUser },
|
||||
{ path: '/notes/:note', component: MkNote },
|
||||
{ path: '/authorize-follow', component: MkFollow }
|
||||
|
@ -35,7 +35,7 @@ import Vue from 'vue';
|
||||
const eachMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
||||
|
||||
function isLeapYear(year) {
|
||||
return !(year % (year % 25 ? 4 : 16));
|
||||
return !(year & (year % 25 ? 3 : 15));
|
||||
}
|
||||
|
||||
export default Vue.extend({
|
||||
|
@ -34,7 +34,7 @@
|
||||
</div>
|
||||
<div class="trash">
|
||||
<x-draggable v-model="trash" :options="{ group: 'x' }" @add="onTrash"></x-draggable>
|
||||
<p>ゴミ箱</p>
|
||||
<p>%i18n:common.trash%</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -53,7 +53,7 @@
|
||||
</div>
|
||||
</x-draggable>
|
||||
<div class="main">
|
||||
<a @click="hint">カスタマイズのヒント</a>
|
||||
<a @click="hint">%i18n:common.customization-tips.title%</a>
|
||||
<div>
|
||||
<mk-post-form v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
||||
<mk-timeline ref="tl" @loaded="onTlLoaded"/>
|
||||
@ -187,13 +187,13 @@ export default Vue.extend({
|
||||
methods: {
|
||||
hint() {
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:info-circle%カスタマイズのヒント',
|
||||
text: '<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p>' +
|
||||
'<p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p>' +
|
||||
'<p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p>' +
|
||||
'<p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>',
|
||||
title: '%fa:info-circle%%i18n:common.customization-tips.title%',
|
||||
text: '<p>%i18n:common.customization-tips.paragraph1%</p>' +
|
||||
'<p>%i18n:common.customization-tips.paragraph2%</p>' +
|
||||
'<p>%i18n:common.customization-tips.paragraph3%</p>' +
|
||||
'<p>%i18n:common.customization-tips.paragraph4%</p>',
|
||||
actions: [{
|
||||
text: 'Got it!'
|
||||
text: '%i18n:common.customization-tips.gotit%'
|
||||
}]
|
||||
});
|
||||
},
|
||||
|
@ -46,7 +46,7 @@
|
||||
<mk-media-list :media-list="p.media" :raw="true"/>
|
||||
</div>
|
||||
<mk-poll v-if="p.poll" :note="p"/>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="true"/>
|
||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||
<div class="map" v-if="p.geo" ref="map"></div>
|
||||
<div class="renote" v-if="p.renote">
|
||||
|
@ -187,7 +187,7 @@ export default Vue.extend({
|
||||
|
||||
clearNotification() {
|
||||
this.unreadCount = 0;
|
||||
document.title = 'Misskey';
|
||||
document.title = '%i18n:common.name%';
|
||||
},
|
||||
|
||||
onVisibilitychange() {
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div class="content">
|
||||
<div v-if="visibility == 'specified'" class="visibleUsers">
|
||||
<span v-for="u in visibleUsers">{{ u | userName }}<a @click="removeVisibleUser(u)">[x]</a></span>
|
||||
<a @click="addVisibleUser">+ユーザーを追加</a>
|
||||
<a @click="addVisibleUser">%i18n:@add-visible-user%</a>
|
||||
</div>
|
||||
<div class="hashtags" v-if="recentHashtags.length > 0">
|
||||
<b>%i18n:@recent-tags%:</b>
|
||||
@ -36,9 +36,15 @@
|
||||
<button class="drive" title="%i18n:@attach-media-from-drive%" @click="chooseFileFromDrive">%fa:cloud%</button>
|
||||
<button class="kao" title="%i18n:@insert-a-kao%" @click="kao">%fa:R smile%</button>
|
||||
<button class="poll" title="%i18n:@create-poll%" @click="poll = true">%fa:chart-pie%</button>
|
||||
<button class="poll" title="内容を隠す" @click="useCw = !useCw">%fa:eye-slash%</button>
|
||||
<button class="geo" title="位置情報を添付する" @click="geo ? removeGeo() : setGeo()">%fa:map-marker-alt%</button>
|
||||
<button class="visibility" title="公開範囲" @click="setVisibility" ref="visibilityButton">%fa:lock%</button>
|
||||
<button class="poll" title="%i18n:@hide-contents%" @click="useCw = !useCw">%fa:eye-slash%</button>
|
||||
<button class="geo" title="%i18n:@attach-location-information%" @click="geo ? removeGeo() : setGeo()">%fa:map-marker-alt%</button>
|
||||
<button class="visibility" title="%i18n:@visibility%" @click="setVisibility" ref="visibilityButton">
|
||||
<span v-if="visibility === 'public'">%fa:globe%</span>
|
||||
<span v-if="visibility === 'home'">%fa:home%</span>
|
||||
<span v-if="visibility === 'followers'">%fa:unlock%</span>
|
||||
<span v-if="visibility === 'specified'">%fa:envelope%</span>
|
||||
<span v-if="visibility === 'private'">%fa:lock%</span>
|
||||
</button>
|
||||
<p class="text-count" :class="{ over: text.length > 1000 }">{{ 1000 - text.length }}</p>
|
||||
<button :class="{ posting }" class="submit" :disabled="!canPost" @click="post">
|
||||
{{ posting ? '%i18n:@posting%' : submitText }}<mk-ellipsis v-if="posting"/>
|
||||
@ -299,7 +305,7 @@ export default Vue.extend({
|
||||
|
||||
setGeo() {
|
||||
if (navigator.geolocation == null) {
|
||||
alert('お使いの端末は位置情報に対応していません');
|
||||
alert('%i18n:@geolocation-alert%');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -307,7 +313,7 @@ export default Vue.extend({
|
||||
this.geo = pos.coords;
|
||||
this.$emit('geo-attached', this.geo);
|
||||
}, err => {
|
||||
alert('エラー: ' + err.message);
|
||||
alert('%i18n:@error%: ' + err.message);
|
||||
}, {
|
||||
enableHighAccuracy: true
|
||||
});
|
||||
@ -330,7 +336,7 @@ export default Vue.extend({
|
||||
|
||||
addVisibleUser() {
|
||||
(this as any).apis.input({
|
||||
title: 'ユーザー名を入力してください'
|
||||
title: '%i18n:@enter-username%'
|
||||
}).then(username => {
|
||||
(this as any).api('users/show', {
|
||||
username
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="root">
|
||||
<template v-if="!fetching">
|
||||
<el-progress :text-inside="true" :stroke-width="18" :percentage="Math.floor((usage / capacity) * 100)"/>
|
||||
<p><b>{{ capacity | bytes }}</b>中<b>{{ usage | bytes }}</b>使用中</p>
|
||||
<p><b>{{ capacity | bytes }}</b>%i18n:max%<b>{{ usage | bytes }}</b>%i18n:in-use%</p>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -63,7 +63,7 @@ export default Vue.extend({
|
||||
description: this.description || null,
|
||||
birthday: this.birthday || null
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('プロフィールを更新しました');
|
||||
(this as any).apis.notify('%i18n:@profile-updated%');
|
||||
});
|
||||
},
|
||||
onChangeIsLocked() {
|
||||
|
@ -84,12 +84,11 @@ export default Vue.extend({
|
||||
(this as any).os.new(MkGameWindow);
|
||||
},
|
||||
|
||||
goToTop(e: HTMLElement) {
|
||||
if (e.classList.contains('active'))
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
goToTop() {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -45,14 +45,7 @@ export default Vue.extend({
|
||||
XPost,
|
||||
XClock,
|
||||
},
|
||||
methods: {
|
||||
goToTop() {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.$store.commit('setUiHeaderHeight', 48);
|
||||
|
||||
@ -104,7 +97,16 @@ export default Vue.extend({
|
||||
}, 2500);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
goToTop() {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<mk-follow-button v-if="$store.getters.isSignedIn && user.id != $store.state.i.id" :user="u"/>
|
||||
<mk-follow-button v-if="$store.getters.isSignedIn && u.id != $store.state.i.id" :user="u"/>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -48,7 +48,7 @@ export default Vue.extend({
|
||||
this.moreFetching = true;
|
||||
(this as any).api('i/favorites', {
|
||||
limit: 11,
|
||||
maxId: this.favorites[this.favorites.length - 1].id
|
||||
untilId: this.favorites[this.favorites.length - 1].id
|
||||
}).then(favorites => {
|
||||
if (favorites.length == 11) {
|
||||
this.existMore = true;
|
||||
|
22
src/client/app/desktop/views/pages/games/reversi.vue
Normal file
22
src/client/app/desktop/views/pages/games/reversi.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<component :is="ui ? 'mk-ui' : 'div'">
|
||||
<mk-reversi :game-id="$route.params.game" @nav="nav"/>
|
||||
</component>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
ui: {
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
nav(game) {
|
||||
history.pushState(null, null, '/reversi/' + game.id);
|
||||
},
|
||||
}
|
||||
});
|
||||
</script>
|
@ -6,7 +6,7 @@
|
||||
import Vue from 'vue';
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = 'Misskey - %i18n:@title%';
|
||||
document.title = '%i18n:common.name% - %i18n:@title%';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
@ -16,7 +16,7 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey';
|
||||
document.title = '%i18n:common.name%';
|
||||
|
||||
Progress.start();
|
||||
},
|
||||
|
@ -1,50 +0,0 @@
|
||||
<template>
|
||||
<component :is="ui ? 'mk-ui' : 'div'">
|
||||
<mk-reversi v-if="!fetching" :init-game="game" @gamed="onGamed"/>
|
||||
</component>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
ui: {
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fetching: false,
|
||||
game: null
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
$route: 'fetch'
|
||||
},
|
||||
created() {
|
||||
this.fetch();
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
if (this.$route.params.game == null) return;
|
||||
|
||||
Progress.start();
|
||||
this.fetching = true;
|
||||
|
||||
(this as any).api('games/reversi/games/show', {
|
||||
gameId: this.$route.params.game
|
||||
}).then(game => {
|
||||
this.game = game;
|
||||
this.fetching = false;
|
||||
|
||||
Progress.done();
|
||||
});
|
||||
},
|
||||
onGamed(game) {
|
||||
history.pushState(null, null, '/reversi/' + game.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
@ -6,8 +6,8 @@
|
||||
<div :class="$style.loading" v-if="fetching">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p :class="$style.notAvailable" v-if="!fetching && notAvailable">検索機能を利用することができません。</p>
|
||||
<p :class="$style.empty" v-if="!fetching && empty">%fa:search%「{{ q }}」に関する投稿は見つかりませんでした。</p>
|
||||
<p :class="$style.notAvailable" v-if="!fetching && notAvailable">%i18n:@not-available%</p>
|
||||
<p :class="$style.empty" v-if="!fetching && empty">%fa:search% {{ '%i18n:not-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:not-found%'.split('{}')[1] }}</p>
|
||||
<mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div class="pptjhabgjtt7kwskbfv4y3uml6fpuhmr">
|
||||
<h1>Misskeyで共有</h1>
|
||||
<h1>{{'%i18n:@share-with%'.split("{}")[0] + '%i18n:common.name%' + '%i18n:@share-with%'.split("{}")[1]}}</h1>
|
||||
<div>
|
||||
<mk-signin v-if="!$store.getters.isSignedIn"/>
|
||||
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
|
||||
<p v-if="posted" class="posted">%fa:check%</p>
|
||||
</div>
|
||||
<button v-if="posted" class="ui button" @click="close">閉じる</button>
|
||||
<button v-if="posted" class="ui button" @click="close">%i18n:common.close%</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div :class="$style.loading" v-if="fetching">
|
||||
<mk-ellipsis-icon/>
|
||||
</div>
|
||||
<p :class="$style.empty" v-if="!fetching && empty">%fa:search%「{{ q }}」に関する投稿は見つかりませんでした。</p>
|
||||
<p :class="$style.empty" v-if="!fetching && empty">%fa:search% {{ '%i18n:no-posts-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:no-posts-found%'.split('{}')[1] }}</p>
|
||||
<mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="profile">
|
||||
<div class="friend-form" v-if="$store.getters.isSignedIn && $store.state.i.id != user.id">
|
||||
<div class="profile" v-if="$store.getters.isSignedIn">
|
||||
<div class="friend-form" v-if="$store.state.i.id != user.id">
|
||||
<mk-follow-button :user="user" size="big"/>
|
||||
<p class="followed" v-if="user.isFollowed">%i18n:@follows-you%</p>
|
||||
<p class="stalk" v-if="user.isFollowing">
|
||||
@ -9,7 +9,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="action-form">
|
||||
<button class="mute ui" @click="user.isMuted ? unmute() : mute()">
|
||||
<button class="mute ui" @click="user.isMuted ? unmute() : mute()" v-if="$store.state.i.id != user.id">
|
||||
<span v-if="user.isMuted">%fa:eye% %i18n:@unmute%</span>
|
||||
<span v-if="!user.isMuted">%fa:eye-slash% %i18n:@mute%</span>
|
||||
</button>
|
||||
|
@ -68,7 +68,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
Progress.done();
|
||||
document.title = getUserName(this.user) + ' | Misskey';
|
||||
document.title = getUserName(this.user) + ' | %i18n:common.name%';
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div class="body" :style="{ backgroundImage: `url('${ welcomeBgUrl }')` }">
|
||||
<div class="container">
|
||||
<div class="info">
|
||||
<span>%i18n:common.misskey% <b>{{ host }}</b></span>
|
||||
<span>%i18n:common.name% <b>{{ host }}</b></span>
|
||||
<span class="stats" v-if="stats">
|
||||
<span>%fa:user% {{ stats.originalUsersCount | number }}</span>
|
||||
<span>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</span>
|
||||
@ -17,8 +17,8 @@
|
||||
<main>
|
||||
<div class="about">
|
||||
<h1 v-if="name">{{ name }}</h1>
|
||||
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey"></h1>
|
||||
<p class="powerd-by" v-if="name">powerd by <b>Misskey</b></p>
|
||||
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%"></h1>
|
||||
<p class="powerd-by" v-if="name">%i18n:@powered-by-misskey%</p>
|
||||
<p class="desc" v-html="description || '%i18n:common.about%'"></p>
|
||||
<a ref="signup" @click="signup">📦 %i18n:@signup%</a>
|
||||
</div>
|
||||
@ -32,7 +32,7 @@
|
||||
<mk-nav class="nav"/>
|
||||
</div>
|
||||
<mk-forkit class="forkit"/>
|
||||
<img src="assets/title.dark.svg" alt="Misskey">
|
||||
<img src="assets/title.dark.svg" alt="%i18n:common.name%">
|
||||
</div>
|
||||
<div class="tl">
|
||||
<mk-welcome-timeline :max="20"/>
|
||||
|
@ -6,8 +6,8 @@
|
||||
|
||||
<div class="mkw-polls--body" :data-darkmode="$store.state.device.darkmode">
|
||||
<div class="poll" v-if="!fetching && poll != null">
|
||||
<p v-if="poll.text"><router-link to="poll | notePage">{{ poll.text }}</router-link></p>
|
||||
<p v-if="!poll.text"><router-link to="poll | notePage">%fa:link%</router-link></p>
|
||||
<p v-if="poll.text"><router-link :to="poll | notePage">{{ poll.text }}</router-link></p>
|
||||
<p v-if="!poll.text"><router-link :to="poll | notePage">%fa:link%</router-link></p>
|
||||
<mk-poll :note="poll"/>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && poll == null">%i18n:@nothing%</p>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-navbar toggleable="md" type="dark" variant="info">
|
||||
<b-navbar-brand>Misskey Developers</b-navbar-brand>
|
||||
<b-navbar-brand>%i18n:common.name% Developers</b-navbar-brand>
|
||||
<b-navbar-nav>
|
||||
<b-nav-item to="/">Home</b-nav-item>
|
||||
<b-nav-item to="/apps">Apps</b-nav-item>
|
||||
|
@ -35,7 +35,7 @@ import MkFavorites from './views/pages/favorites.vue';
|
||||
import MkUserLists from './views/pages/user-lists.vue';
|
||||
import MkUserList from './views/pages/user-list.vue';
|
||||
import MkSettings from './views/pages/settings.vue';
|
||||
import MkReversi from './views/pages/reversi.vue';
|
||||
import MkReversi from './views/pages/games/reversi.vue';
|
||||
import MkTag from './views/pages/tag.vue';
|
||||
import MkShare from './views/pages/share.vue';
|
||||
import MkFollow from '../common/views/pages/follow.vue';
|
||||
@ -76,8 +76,7 @@ init((launch) => {
|
||||
{ path: '/search', component: MkSearch },
|
||||
{ path: '/tags/:tag', component: MkTag },
|
||||
{ path: '/share', component: MkShare },
|
||||
{ path: '/reversi', name: 'reversi', component: MkReversi },
|
||||
{ path: '/reversi/:game', component: MkReversi },
|
||||
{ path: '/reversi/:game?', name: 'reversi', component: MkReversi },
|
||||
{ path: '/@:user', component: MkUser },
|
||||
{ path: '/@:user/followers', component: MkFollowers },
|
||||
{ path: '/@:user/following', component: MkFollowing },
|
||||
|
@ -44,7 +44,7 @@
|
||||
<mk-media-list :media-list="p.media" :raw="true"/>
|
||||
</div>
|
||||
<mk-poll v-if="p.poll" :note="p"/>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="true"/>
|
||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||
<div class="map" v-if="p.geo" ref="map"></div>
|
||||
<div class="renote" v-if="p.renote">
|
||||
|
@ -183,7 +183,7 @@ export default Vue.extend({
|
||||
|
||||
clearNotification() {
|
||||
this.unreadCount = 0;
|
||||
document.title = 'Misskey';
|
||||
document.title = '%i18n:common.name%';
|
||||
},
|
||||
|
||||
onVisibilitychange() {
|
||||
|
@ -34,7 +34,13 @@
|
||||
<button class="poll" @click="poll = true">%fa:chart-pie%</button>
|
||||
<button class="poll" @click="useCw = !useCw">%fa:eye-slash%</button>
|
||||
<button class="geo" @click="geo ? removeGeo() : setGeo()">%fa:map-marker-alt%</button>
|
||||
<button class="visibility" @click="setVisibility" ref="visibilityButton">%fa:lock%</button>
|
||||
<button class="visibility" @click="setVisibility" ref="visibilityButton">
|
||||
<span v-if="visibility === 'public'">%fa:globe%</span>
|
||||
<span v-if="visibility === 'home'">%fa:home%</span>
|
||||
<span v-if="visibility === 'followers'">%fa:unlock%</span>
|
||||
<span v-if="visibility === 'specified'">%fa:envelope%</span>
|
||||
<span v-if="visibility === 'private'">%fa:lock%</span>
|
||||
</button>
|
||||
</footer>
|
||||
<input ref="file" class="file" type="file" accept="image/*" multiple="multiple" @change="onChangeFile"/>
|
||||
</div>
|
||||
@ -382,7 +388,7 @@ root(isDark)
|
||||
padding 16px
|
||||
|
||||
> .visibleUsers
|
||||
margin-bottom 8px
|
||||
margin 5px
|
||||
font-size 14px
|
||||
|
||||
> span
|
||||
|
@ -3,12 +3,12 @@
|
||||
<mk-special-message/>
|
||||
<div class="main" ref="main">
|
||||
<div class="backdrop"></div>
|
||||
<p ref="welcomeback" v-if="$store.getters.isSignedIn">おかえりなさい、<b>{{ $store.state.i | userName }}</b>さん</p>
|
||||
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
|
||||
<div class="content" ref="mainContainer">
|
||||
<button class="nav" @click="$parent.isDrawerOpening = true">%fa:bars%</button>
|
||||
<template v-if="hasUnreadNotification || hasUnreadMessagingMessage || hasGameInvitation">%fa:circle%</template>
|
||||
<h1>
|
||||
<slot>Misskey</slot>
|
||||
<slot>%i18n:common.name%</slot>
|
||||
</h1>
|
||||
<slot name="func"></slot>
|
||||
</div>
|
||||
|
@ -43,7 +43,7 @@ export default Vue.extend({
|
||||
window.addEventListener('popstate', this.onPopState);
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey Drive';
|
||||
document.title = '%i18n:common.name% Drive';
|
||||
document.documentElement.style.background = '#fff';
|
||||
},
|
||||
beforeDestroy() {
|
||||
@ -63,7 +63,7 @@ export default Vue.extend({
|
||||
(this.$refs as any).browser.openContextMenu();
|
||||
},
|
||||
onMoveRoot(silent) {
|
||||
const title = 'Misskey Drive';
|
||||
const title = '%i18n:common.name% Drive';
|
||||
|
||||
if (!silent) {
|
||||
// Rewrite URL
|
||||
@ -76,7 +76,7 @@ export default Vue.extend({
|
||||
this.folder = null;
|
||||
},
|
||||
onOpenFolder(folder, silent) {
|
||||
const title = folder.name + ' | Misskey Drive';
|
||||
const title = folder.name + ' | %i18n:common.name% Drive';
|
||||
|
||||
if (!silent) {
|
||||
// Rewrite URL
|
||||
@ -89,7 +89,7 @@ export default Vue.extend({
|
||||
this.folder = folder;
|
||||
},
|
||||
onOpenFile(file, silent) {
|
||||
const title = file.name + ' | Misskey Drive';
|
||||
const title = file.name + ' | %i18n:common.name% Drive';
|
||||
|
||||
if (!silent) {
|
||||
// Rewrite URL
|
||||
|
@ -28,7 +28,7 @@ export default Vue.extend({
|
||||
this.fetch();
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey | %i18n:@notifications%';
|
||||
document.title = '%i18n:common.name% | %i18n:@notifications%';
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
@ -53,7 +53,7 @@ export default Vue.extend({
|
||||
this.moreFetching = true;
|
||||
(this as any).api('i/favorites', {
|
||||
limit: 11,
|
||||
maxId: this.favorites[this.favorites.length - 1].id
|
||||
untilId: this.favorites[this.favorites.length - 1].id
|
||||
}).then(favorites => {
|
||||
if (favorites.length == 11) {
|
||||
this.existMore = true;
|
||||
|
@ -49,7 +49,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
|
||||
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | Misskey';
|
||||
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | %i18n:common.name%';
|
||||
});
|
||||
},
|
||||
onLoaded() {
|
||||
|
@ -48,7 +48,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
|
||||
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | Misskey';
|
||||
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | %i18n:common.name%';
|
||||
});
|
||||
},
|
||||
onLoaded() {
|
||||
|
22
src/client/app/mobile/views/pages/games/reversi.vue
Normal file
22
src/client/app/mobile/views/pages/games/reversi.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header">%fa:gamepad%%i18n:@reversi%</span>
|
||||
<mk-reversi :game-id="$route.params.game" @nav="nav"/>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = '%i18n:common.name% %i18n:@reversi%';
|
||||
document.documentElement.style.background = '#fff';
|
||||
},
|
||||
methods: {
|
||||
nav(game) {
|
||||
history.pushState(null, null, '/reversi/' + game.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
@ -96,7 +96,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.title = 'Misskey';
|
||||
document.title = '%i18n:common.name%';
|
||||
|
||||
Progress.start();
|
||||
|
||||
|
@ -47,7 +47,7 @@ export default Vue.extend({
|
||||
this.user = user;
|
||||
this.fetching = false;
|
||||
|
||||
document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | Misskey`;
|
||||
document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | %i18n:common.name%`;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import getAcct from '../../../../../misc/acct/render';
|
||||
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = 'Misskey %i18n:@messaging%';
|
||||
document.title = '%i18n:common.name% %i18n:@messaging%';
|
||||
},
|
||||
methods: {
|
||||
navigate(user) {
|
||||
|
@ -31,7 +31,7 @@ export default Vue.extend({
|
||||
this.fetch();
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey';
|
||||
document.title = '%i18n:common.name%';
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
|
@ -15,7 +15,7 @@ import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = 'Misskey | %i18n:@notifications%';
|
||||
document.title = '%i18n:common.name% | %i18n:@notifications%';
|
||||
|
||||
Progress.start();
|
||||
},
|
||||
|
@ -25,7 +25,7 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey | %i18n:@title%';
|
||||
document.title = '%i18n:common.name% | %i18n:@title%';
|
||||
|
||||
Progress.start();
|
||||
|
||||
|
@ -1,50 +0,0 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header">%fa:gamepad%リバーシ</span>
|
||||
<mk-reversi v-if="!fetching" :init-game="game" @gamed="onGamed"/>
|
||||
</mk-ui>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
|
||||
export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
fetching: false,
|
||||
game: null
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
$route: 'fetch'
|
||||
},
|
||||
created() {
|
||||
this.fetch();
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey リバーシ';
|
||||
document.documentElement.style.background = '#fff';
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
if (this.$route.params.game == null) return;
|
||||
|
||||
Progress.start();
|
||||
this.fetching = true;
|
||||
|
||||
(this as any).api('games/reversi/games/show', {
|
||||
gameId: this.$route.params.game
|
||||
}).then(game => {
|
||||
this.game = game;
|
||||
this.fetching = false;
|
||||
|
||||
Progress.done();
|
||||
});
|
||||
},
|
||||
onGamed(game) {
|
||||
history.pushState(null, null, '/reversi/' + game.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
@ -34,7 +34,7 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = `%i18n:@search%: ${this.q} | Misskey`;
|
||||
document.title = `%i18n:@search%: ${this.q} | %i18n:common.name%`;
|
||||
|
||||
this.fetch();
|
||||
},
|
||||
|
@ -78,6 +78,8 @@
|
||||
</ui-card>
|
||||
</div>
|
||||
|
||||
<div class="signout" @click="signout">%i18n:@signout%</div>
|
||||
|
||||
<footer>
|
||||
<small>ver {{ version }} ({{ codename }})</small>
|
||||
</footer>
|
||||
@ -140,7 +142,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.title = 'Misskey | %i18n:@settings%';
|
||||
document.title = '%i18n:common.name% | %i18n:@settings%';
|
||||
},
|
||||
|
||||
methods: {
|
||||
@ -247,6 +249,14 @@ root(isDark)
|
||||
background isDark ? #273c34 : #fcfff5
|
||||
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
||||
|
||||
> .signout
|
||||
margin 16px
|
||||
padding 16px
|
||||
text-align center
|
||||
color isDark ? #ff5f56 : #cc2727
|
||||
background isDark ? #652222 : #fff6f5
|
||||
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
||||
|
||||
> footer
|
||||
margin 16px
|
||||
text-align center
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="azibmfpleajagva420swmu4c3r7ni7iw">
|
||||
<h1>Misskeyで共有</h1>
|
||||
<h1>{{'%i18n:@share-with%'.split("{}")[0] + '%i18n:common.name%' + '%i18n:@share-with%'.split("{}")[1]}}</h1>
|
||||
<div>
|
||||
<mk-signin v-if="!$store.getters.isSignedIn"/>
|
||||
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="signup">
|
||||
<h1>📦 始めましょう</h1>
|
||||
<h1>%i18n:@lets-start%</h1>
|
||||
<mk-signup/>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<span slot="header">%fa:hashtag%{{ $route.params.tag }}</span>
|
||||
|
||||
<main>
|
||||
<p v-if="!fetching && empty">%fa:search%「{{ q }}」に関する投稿は見つかりませんでした。</p>
|
||||
<p v-if="!fetching && empty">%fa:search% {{ '%i18n:no-posts-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:no-posts-found%'.split('{}')[1] }}</p>
|
||||
<mk-notes ref="timeline" :more="existMore ? more : null"/>
|
||||
</main>
|
||||
</mk-ui>
|
||||
|
@ -23,7 +23,7 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey | %i18n:@title%';
|
||||
document.title = '%i18n:common.name% | %i18n:@title%';
|
||||
|
||||
Progress.start();
|
||||
|
||||
|
@ -106,7 +106,7 @@ export default Vue.extend({
|
||||
this.fetching = false;
|
||||
|
||||
Progress.done();
|
||||
document.title = Vue.filter('userName')(this.user) + ' | Misskey';
|
||||
document.title = Vue.filter('userName')(this.user) + ' | %i18n:common.name%';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div class="welcome">
|
||||
<div>
|
||||
<img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey">
|
||||
<img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%">
|
||||
<p class="host">{{ host }}</p>
|
||||
<div class="about">
|
||||
<h2>{{ name || 'unidentified' }}</h2>
|
||||
<p v-html="description || '%i18n:common.about%'"></p>
|
||||
<router-link class="signup" to="/signup">新規登録</router-link>
|
||||
<router-link class="signup" to="/signup">%i18n:@signup%</router-link>
|
||||
</div>
|
||||
<div class="login">
|
||||
<mk-signin :with-avatar="false"/>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<span slot="header">%fa:home%ダッシュボード</span>
|
||||
<span slot="header">%fa:home%%i18n:@dashboard%</span>
|
||||
<template slot="func">
|
||||
<button @click="customizing = !customizing">%fa:cog%</button>
|
||||
</template>
|
||||
@ -102,12 +102,12 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.title = 'Misskey';
|
||||
document.title = '%i18n:common.name%';
|
||||
},
|
||||
|
||||
methods: {
|
||||
hint() {
|
||||
alert('ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。');
|
||||
alert('%i18n:@widgets-hints%');
|
||||
},
|
||||
|
||||
widgetFunc(id) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="mkw-activity">
|
||||
<mk-widget-container :show-header="!props.compact">
|
||||
<template slot="header">%fa:chart-bar%アクティビティ</template>
|
||||
<template slot="header">%fa:chart-bar%%i18n:@activity%</template>
|
||||
<div :class="$style.body">
|
||||
<mk-activity :user="$store.state.i"/>
|
||||
</div>
|
||||
|
@ -53,6 +53,7 @@ export type Source = {
|
||||
storage: string;
|
||||
bucket?: string;
|
||||
prefix?: string;
|
||||
baseUrl?: string;
|
||||
config?: any;
|
||||
};
|
||||
|
||||
@ -91,6 +92,8 @@ export type Source = {
|
||||
};
|
||||
|
||||
google_maps_api_key: string;
|
||||
|
||||
clusterLimit?: number;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,8 @@
|
||||
import * as os from 'os';
|
||||
const osUtils = require('os-utils');
|
||||
import * as sysUtils from 'systeminformation';
|
||||
import * as diskusage from 'diskusage';
|
||||
import Xev from 'xev';
|
||||
const osUtils = require('os-utils');
|
||||
|
||||
const ev = new Xev();
|
||||
|
||||
@ -18,25 +19,58 @@ export default function() {
|
||||
});
|
||||
|
||||
async function tick() {
|
||||
osUtils.cpuUsage((cpuUsage: number) => {
|
||||
const disk = diskusage.checkSync(os.platform() == 'win32' ? 'c:' : '/');
|
||||
const stats = {
|
||||
cpu_usage: cpuUsage,
|
||||
mem: {
|
||||
total: os.totalmem(),
|
||||
free: os.freemem()
|
||||
},
|
||||
disk,
|
||||
os_uptime: os.uptime(),
|
||||
process_uptime: process.uptime()
|
||||
};
|
||||
ev.emit('serverStats', stats);
|
||||
log.push(stats);
|
||||
if (log.length > 50) log.shift();
|
||||
});
|
||||
const cpu = await cpuUsage();
|
||||
const usedmem = await usedMem();
|
||||
const totalmem = await totalMem();
|
||||
const disk = diskusage.checkSync(os.platform() == 'win32' ? 'c:' : '/');
|
||||
|
||||
const stats = {
|
||||
cpu_usage: cpu,
|
||||
mem: {
|
||||
total: totalmem,
|
||||
used: usedmem
|
||||
},
|
||||
disk,
|
||||
os_uptime: os.uptime(),
|
||||
process_uptime: process.uptime()
|
||||
};
|
||||
ev.emit('serverStats', stats);
|
||||
log.push(stats);
|
||||
if (log.length > 50) log.shift();
|
||||
}
|
||||
|
||||
tick();
|
||||
|
||||
setInterval(tick, interval);
|
||||
}
|
||||
|
||||
// CPU STAT
|
||||
function cpuUsage() {
|
||||
return new Promise((res, rej) => {
|
||||
osUtils.cpuUsage((cpuUsage: number) => {
|
||||
res(cpuUsage);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// MEMORY(excl buffer + cache) STAT
|
||||
async function usedMem() {
|
||||
try {
|
||||
const data = await sysUtils.mem();
|
||||
return data.active;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// TOTAL MEMORY STAT
|
||||
async function totalMem() {
|
||||
try {
|
||||
const data = await sysUtils.mem();
|
||||
return data.total;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ const nativeDbConn = async (): Promise<mongodb.Db> => {
|
||||
if (mdb) return mdb;
|
||||
|
||||
const db = await ((): Promise<mongodb.Db> => new Promise((resolve, reject) => {
|
||||
mongodb.MongoClient.connect(uri, (e: Error, client: any) => {
|
||||
mongodb.MongoClient.connect(uri, { useNewUrlParser: true }, (e: Error, client: any) => {
|
||||
if (e) return reject(e);
|
||||
resolve(client.db(config.mongodb.db));
|
||||
});
|
||||
|
@ -53,7 +53,7 @@ APIの詳しい使用法は「Misskey APIの利用」セクションをご覧く
|
||||
あなたのアプリがコールバックURLを設定していない場合、ユーザーがあなたのアプリの連携を許可したことを(何らかの方法で(たとえばボタンを押させるなど))確認出来るようにしてください。
|
||||
|
||||
### 3.ユーザーのアクセストークンを取得する
|
||||
ユーザーが連携を許可したら、%URL%/auth/session/userkey へ次のパラメータを含むリクエストを送信します:
|
||||
ユーザーが連携を許可したら、%API_URL%/auth/session/userkey へ次のパラメータを含むリクエストを送信します:
|
||||
|
||||
| 名前 | 型 | 説明 |
|
||||
|---|---|---|
|
||||
@ -71,6 +71,9 @@ APIの詳しい使用法は「Misskey APIの利用」セクションをご覧く
|
||||
|
||||
## Misskey APIの利用
|
||||
APIはすべてリクエストのパラメータ・レスポンスともにJSON形式です。また、すべてのエンドポイントはPOSTメソッドのみ受け付けます。
|
||||
|
||||
ストリーミングAPIも提供しています。
|
||||
|
||||
APIリファレンスもご確認ください。
|
||||
|
||||
### レートリミット
|
||||
|
@ -10,9 +10,9 @@ block main
|
||||
p#url
|
||||
span.method POST
|
||||
span.host
|
||||
= url.host
|
||||
= endpointUrl.host
|
||||
| /
|
||||
span.path= url.path
|
||||
span.path= endpointUrl.path
|
||||
|
||||
if endpoint.desc
|
||||
p#desc= endpoint.desc[lang] || endpoint.desc['ja']
|
||||
|
@ -34,6 +34,28 @@ html(lang= lang)
|
||||
if content
|
||||
| !{content}
|
||||
|
||||
aside.
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
|
||||
/**
|
||||
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
|
||||
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
|
||||
/*
|
||||
var disqus_config = function () {
|
||||
this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = "#{ id }"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
*/
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
s.src = 'https://misskey.disqus.com/embed.js';
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
|
||||
footer
|
||||
block footer
|
||||
small= copyright
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user