1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
|
/**
* Japanese — translated from locales/en.js.
*
* Register: formal — です・ます throughout, with 丁寧語 for instructions.
* `hub`, `node` and `GEK` are left in English: they name the CLI
* (`meshbay-node`), node.toml and the docs, which are English throughout.
* Japanese has a single plural category, so counted strings need only `other`.
*/
export default {
// Nav
'nav.toggle_menu': 'メニューを表示',
'nav.light_mode': 'ライトテーマ',
'nav.dark_mode': 'ダークテーマ',
'nav.logout': 'ログアウト',
'nav.login': 'ログイン',
// Sidebar
'sidebar.my_groups': 'マイグループ',
'sidebar.no_groups': 'グループはまだありません',
'sidebar.discover': '見つける',
'sidebar.public_groups': '公開グループ',
// Login
'login.title': 'ログイン',
'login.username': 'ユーザー名',
'login.password': 'パスワード',
'login.submit': 'ログイン',
'login.loading': 'ログインしています…',
'login.no_account': 'アカウントをお持ちでないですか?',
'login.register_link': 'アカウントを作成',
// Register
'register.title': 'アカウントを作成',
'register.username': 'ユーザー名',
'register.email': 'メールアドレス',
'register.password': 'パスフレーズ(12 文字以上)',
'register.confirm': 'パスワードの確認',
'register.submit': 'アカウントを作成',
'register.loading': 'アカウントを作成しています…',
'register.has_account': 'すでにアカウントをお持ちですか?',
'register.login_link': 'ログイン',
'register.success_title': 'アカウントを作成しました',
'register.success_msg': 'ご自身の資格情報でログインできるようになりました。',
'register.go_login': 'ログインへ進む',
'register.err_mismatch': 'パスワードが一致しません',
'register.err_min_len': {
other: '{n} 文字以上でご入力ください',
},
'register.err_too_weak': '推測されやすすぎます。パスフレーズは、鍵が保管されている場所で'
+ 'その鍵を守るものです。互いに関係のない単語をいくつか並べると効果的です。',
'register.strength': '強度:約 {bits} ビット。参加している各 node に保管される鍵の'
+ 'コピーを守るものですので、しっかり決めておく価値があります。',
// Home
'home.welcome': 'MeshBay へようこそ',
'home.no_groups': 'まだどのグループにも参加していません。',
'home.browse_prefix': '',
'home.browse_link': '公開グループ',
'home.browse_suffix': 'を見てみるか、グループ管理者に招待を依頼してください。',
'home.my_groups': 'マイグループ',
// Explore
'explore.title': '公開グループ',
'explore.search': 'グループを検索…',
'explore.loading': '読み込んでいます…',
'explore.empty': '利用できる公開グループはありません。',
'explore.create_group': 'グループを作成',
'explore.join': '参加',
'explore.member': '参加済み',
'explore.disabled': "This hub does not have public groups.",
// Group page
'group.default_name': 'グループ',
'group.tab_files': 'ファイル',
'group.tab_chat': 'チャット',
'group.tab_video': '動画',
'group.tab_music': '音楽',
'group.tab_photos': '写真',
'group.tab_members': 'メンバー',
'group.tab_settings': "設定",
'members.danger_leave_hint': "このグループのファイルとチャットにアクセスできなくなります。",
'members.uploads_title': "アップロード",
'members.uploads_on': "メンバーはファイルを追加できます",
'members.uploads_off': "あなただけがファイルを追加できます",
'members.uploads_disable': "無効にする",
'members.uploads_enable': "有効にする",
'members.uploads_hint': "あなた以外の全員に適用されます。ノード自身がアップロードを拒否するため、ボタンを隠すだけの話ではありません。",
'members.apps_title': "アプリケーション",
'members.apps_hint': "メンバーに表示されるこのグループの機能です。少なくとも1つは有効のままにしてください。",
'members.apps_need_one': "少なくとも1つのアプリケーションを有効にしておく必要があります。",
'members.danger_delete_hint': "グループはすべてのメンバーから消えます。元に戻せません。",
'group.filter': 'ファイルを絞り込み…',
'group.refresh_index': '一覧を更新',
'group.col_name': '名前',
'group.col_size': 'サイズ',
'group.col_type': '種類',
'group.col_date': '日付',
'group.empty_filter': '条件に一致するファイルはありません',
'group.empty_dir': 'このフォルダーは空です',
'group.download': 'ダウンロード',
'group.play': '再生',
'group.offline_title': 'このグループのために稼働している node は現在ありません。',
'group.offline_hint': 'このグループをホストしている node が接続すると、'
+ 'ファイルが表示されます。',
'group.upload': 'アップロード',
'group.mkdir': '新しいフォルダー',
'group.mkdir_prompt': '新しいフォルダーの名前:',
'device.add_title': 'This browser is not linked to this node yet',
'device.add_hint': 'Your account is known here, but this browser holds a different key. Approve it from a device already linked — no operator needed.',
'device.add_btn': 'Get a linking code',
'device.add_show': 'Type this code into a device already linked to this node, within the hour:',
'device.mine_title': 'Your devices on this node',
'device.mine_hint': 'Each browser or client you use here holds its own key. They are separate from your devices on other nodes.',
'device.mine_empty': 'No device is linked here yet.',
'device.this_one': 'this one',
'device.revoke': 'Remove',
'device.revoke_confirm': 'Remove this device? It will lose access to this node until it is linked again.',
'device.approve_hint': 'Linking a new device? Enter the code it is showing.',
'device.approve_btn': 'Approve',
'device.approved': 'Device linked.',
'group.root_unavailable': '(利用不可 — ドライブが切断されています)',
'group.view': '表示',
'group.delete': '削除',
'group.delete_confirm': '{name} を削除しますか?',
'group.delete_group': 'グループを削除',
'group.delete_group_confirm': '「{name}」を完全に削除し、すべてのメンバーを'
+ '解除しますか?node 上のファイルは保持されます。',
'group.err_transport': 'トランスポートモジュールが読み込まれていません',
// Status
'status.idle': '待機中',
'status.discovering': 'node を探しています…',
'status.connecting': 'WebRTC で接続しています…',
'status.connecting_short': '接続中…',
'status.fetching': 'インデックスを取得しています…',
'status.files': {
other: '{n} 個のファイル',
},
'status.offline': 'オンラインの node はありません',
'status.error': '接続に失敗しました',
// Chat
'chat.empty': 'まだメッセージはありません。会話を始めましょう。',
'chat.placeholder': 'メッセージを入力…',
'chat.send': '送信',
'chat.attach': 'ファイルを添付',
// Video player
'video.loading': '{name} を読み込んでいます…',
'video.buffering': 'バッファリング中…',
'video.resumed_at': "{time} から再開しました",
'video.from_start': "最初から再生する",
'video.close': '閉じる(Esc)',
'preview.pdf_fallback': 'このブラウザーはページ内に PDF を表示しません。'
+ 'ダウンロードしてご覧ください。いずれにせよ復号はここで行われています。',
'group.upload_indexing': 'インデックスを作成中…',
'video.err_transport': 'トランスポートが接続されていません',
'video.err_mse': 'ストリーミング再生に対応していないコーデックです:{codec}',
'video.mode_poster': 'ポスター表示',
'video.mode_flat': 'フラット表示',
'video.filter_all': 'All',
'video.filter_movies': 'Movies',
'video.filter_series': 'Series',
'video.empty': '動画が見つかりません。',
'video.no_root_configured': 'このグループにはまだ動画のルートフォルダが設定されていません — 操作者が設定画面で選択できます。',
'music.no_root_configured': 'このグループにはまだ音楽のルートフォルダが設定されていません — 操作者が設定画面で選択できます。',
'video.director': '監督',
'video.specials': '特別編',
'video.season_n': 'シーズン{n}',
'video.episode_n': '第{n}話',
'video.n_episodes': {
one: '{n}話',
other: '{n}話',
},
'video.fix_match': '一致を修正…',
'video.search_title': 'TMDBの一致を修正',
'video.search_placeholder': 'TMDBを検索…',
'video.search_button': '検索',
'video.search_no_results': '一致する結果が見つかりません。',
'video.search_apply_hint': '現在このタイトルでグループ化されているすべてのファイルに適用されます。',
'video.search_apply_hint_movie': 'このファイルにのみ適用されます。',
'video.source_file': 'ファイル: {name}',
'video.no_match': '確実なTMDB一致なし — ファイル名を表示しています。',
'video.versions': '{n} 個のバージョン',
'video.rematch_one': '再マッチ',
// 音楽
'music.mode_grid': 'アルバム',
'music.mode_flat': 'フラットリスト',
'music.empty': '音楽が見つかりません。',
'music.unknown_album': '不明なアルバム',
'music.various': 'その他',
'music.play_all': 'すべて再生',
'music.n_tracks': {
one: '{n}曲',
other: '{n}曲',
},
'music.err_transport': 'トランスポートが接続されていません',
'music.err_playback': '再生エラー',
'music.err_transcode': 'フォーマット変換に失敗しました',
'music.player_play': '再生',
'music.player_pause': '一時停止',
'music.player_prev': '前へ',
'music.player_next': '次へ',
'music.player_shuffle': 'シャッフル',
'music.player_repeat_off': 'リピートオフ',
'music.player_repeat_all': 'すべてリピート',
'music.player_repeat_one': '1曲リピート',
'music.player_volume': '音量',
'music.player_close': 'プレーヤーを閉じる',
'music.player_queue': '再生中のキュー',
'music.queue_title': '再生中',
// Photos
'photo.empty': '写真が見つかりません。',
'photo.no_roots_configured': 'このグループにはまだ写真のルートフォルダが設定されていません — 操作者が設定画面でいくつか選択できます。',
'photo.root_album': '(トップレベル)',
'photo.n_photos': {
one: '{n}枚',
other: '{n}枚',
},
'photo.back': '戻る',
'photo.prev': '前へ(←)',
'photo.next': '次へ(→)',
'photo.zip_album': 'アルバムをzipでダウンロード',
'photo.zoom_in': '拡大',
'photo.zoom_out': '縮小',
'photo.zoom_fit_title': 'ウィンドウに合わせる',
'photo.zoom_fit_label': '合わせる',
'photo.zoom_100': '実寸(100%)',
// LAN cast
'cast.start': 'デバイスにキャスト',
'cast.stop': 'キャストを停止',
'cast.copy_url': 'ストリームURLをコピー',
'cast.copied': 'URLをコピーしました',
'cast.scanning': 'デバイスを検索中…',
'cast.no_devices': 'デバイスが見つかりません',
// Settings
'settings.title': '設定',
'settings.coming_soon': '近日公開。',
'settings.downloads': 'ダウンロード',
'settings.dl_auto': '自動的に保存する',
'settings.dl_auto_hint': 'ファイルはダイアログなしで、下で選んだフォルダーに'
+ 'そのまま保存されます。20 個ダウンロードすれば、そこに 20 個並びます。',
'settings.dl_ask': '毎回確認する',
'settings.dl_ask_hint': 'ファイルごとに「名前を付けて保存」ダイアログが開きます。'
+ 'まとめてダウンロードする場合も 1 ファイルにつき 1 回です。',
'settings.dl_folder': 'フォルダー:{name}',
'settings.dl_no_folder': 'フォルダーが選ばれていません。ダウンロードは'
+ 'ブラウザーが決めた場所に保存されます',
'settings.dl_choose': 'フォルダーを選択',
'settings.dl_change': '変更',
'settings.dl_forget': '解除',
'settings.profile': 'プロフィール',
'settings.username': 'ユーザー名',
'settings.email': 'Email',
'settings.email_save': 'Save',
'settings.email_saved': 'Email updated',
'settings.notif_global_disable': 'Disable all notifications',
'settings.notif_global_hint': 'When enabled, no notifications are created for any group.',
'settings.defaults': 'デフォルト',
'settings.default_tab': 'Default tab',
'settings.default_tab_hint': 'Which tab opens first when you enter a group.',
'settings.music_keep_screen_on': 'Keep screen on during music playback',
'settings.music_keep_screen_on_hint': 'Prevents the phone from locking on its own while a track is playing. Off by default — most people want their phone to lock normally while listening, like Spotify or Deezer.',
'settings.node_pins': 'node の識別情報',
'settings.node_pins_hint': '各 node の識別鍵は、最初に接続したときに記憶されます。'
+ 'それが変わった場合、接続は拒否されます。これが起こるのは、運営者が node を'
+ '再インストールしたときだけのはずです。消去する前に運営者にご確認ください。',
'settings.node_pins_count': {
other: '{n} 件を固定中',
},
'settings.node_pins_clear': '固定した識別情報を消去',
'settings.danger': 'アカウントを削除',
'settings.delete_hint': 'hub から、お客様のアカウント、グループへの参加、通知を'
+ '削除し、ユーザー名を解放します。node 上にあるものには及びません。'
+ 'アップロードしたファイルは、その運営者が保管する場所に残り、'
+ '各 node はお客様のために固定した識別情報を、運営者が解除するまで保持します。'
+ '接続ログは法令に従い 1 年間保管されます。',
'settings.delete_account': 'アカウントを削除する',
'settings.delete_confirm': '確認のためパスフレーズをご入力ください。'
+ 'この操作は取り消せません。',
'settings.delete_confirm_btn': '完全に削除する',
'settings.cancel': 'キャンセル',
'settings.appearance': '外観',
'settings.theme': 'テーマ',
'settings.theme_light': 'ライト',
'settings.theme_dark': 'ダーク',
'settings.theme_system': 'システムに合わせる',
'settings.language': '言語',
'settings.about': 'このアプリについて',
'firstrun.title': 'Which hub?',
'firstrun.hint': 'A hub holds your account and introduces you to nodes. It never sees your files, your messages or your keys.',
'firstrun.btn': 'Continue',
'firstrun.checking': 'Checking…',
'firstrun.note': 'There is no default on purpose: this application only trusts a hub for its API, never for the interface, which ships with the application itself.',
'device.this_device': 'This device',
'settings.keys_heading': 'Keys on this device',
'settings.hub_heading': 'Hub',
'settings.hub_current': 'Currently',
'settings.hub_hint': 'Changing this signs you out and restarts the window. A hub on your own machine is usually http, not https.',
'settings.hub_change': 'Change',
'settings.keys_where': 'Protected by',
'settings.keys_unprotected': 'No system keyring is running, so your keys are encrypted with a key that is not a secret. Anyone who can read this machine’s files can read them. Start a keyring, or treat this device as untrusted.',
'settings.keys_unavailable': 'This system offers no key storage at all, so this device cannot be remembered — you will be asked for your passphrase each time. That is the safe outcome: nothing was stored unprotected.',
'settings.version': 'バージョン',
'settings.protocol': 'プロトコル',
'settings.role': '権限',
'settings.groups': 'グループの通知',
'settings.notifications': '通知',
'settings.node_key': 'node を連携',
'settings.node_key_desc': 'MeshBay の node を運営している場合は、その Ed25519 '
+ '公開鍵をここに貼り付けて、アカウントに連携してください。'
+ 'この鍵は node の管理ダッシュボードで確認できます。',
'settings.node_key_placeholder': 'node の Ed25519 公開鍵を貼り付け(base64)',
'settings.node_key_submit': 'node を連携',
'settings.node_key_success': 'node を連携しました',
'settings.node_key_current': '連携済みの node 鍵',
// Sidebar
'sidebar.create_group': 'グループを作成',
'sidebar.settings': '設定',
'sidebar.admin': '管理',
// User menu
'usermenu.language': '言語',
'usermenu.settings': '設定',
'usermenu.theme_light': 'ライトテーマ',
'usermenu.theme_dark': 'ダークテーマ',
'usermenu.logout': 'ログアウト',
// Admin panel
'admin.title': '管理',
'admin.tab_stats': '統計',
'admin.tab_users': 'ユーザー',
'admin.tab_groups': 'グループ',
'admin.tab_nodes': 'node',
'admin.tab_logs': 'ログ',
'admin.col_observed_ip': '接続元',
'admin.col_hint': '申告されたアドレス',
'admin.col_last_seen': '最終通知',
'admin.node_online': 'オンライン',
'admin.node_offline': 'オフライン',
'admin.no_nodes': '登録された node はありません',
'admin.nodes_hint': '「接続元」は、node の鍵で署名されたリクエストとして'
+ '通知が実際に届いたアドレスです。照会に答える際はこちらを用いてください。'
+ '申告されたアドレスは、node が STUN サーバーから知り得た「自分のアドレス」として'
+ '送ってきたものです。node に到達するには役立ちますが、何かの証拠にはなりません。',
'admin.tab_blocklist': 'ブロックリスト',
'admin.tab_general': "General",
'admin.general_groups_heading': "Groups",
'admin.allow_public_groups_label': "Allow members to create public groups",
'admin.allow_public_groups_hint': "When off, new groups can only be private and invite-only. Existing public groups are left as they are — suspend them one by one from the Groups tab.",
'admin.settings_readonly': "Only an admin can change these settings.",
// Admin stats
'admin.stat_users': 'ユーザー',
'admin.stat_groups': 'グループ',
'admin.stat_nodes': 'node',
'admin.stat_online': 'オンラインの node',
// Admin users
'admin.users_search': 'ユーザーを検索…',
'admin.col_username': 'ユーザー名',
'admin.col_role': '権限',
'admin.col_status': '状態',
'admin.col_created': '作成日',
'admin.col_actions': '操作',
'admin.col_email': 'メールアドレス',
'admin.col_groups': 'グループ',
'admin.no_users': 'ユーザーが見つかりません',
'admin.btn_suspend': '停止',
'admin.btn_unsuspend': '再開',
'admin.btn_revoke': "Revoke",
'admin.revoke_group_confirm': "Revoke the group \"{group}\"? This pushes a signed revocation to every node hosting it and cannot be undone from here. Suspend it instead if you only need to pause it.",
'admin.btn_details': '詳細',
'admin.btn_delete': '削除',
'admin.delete_confirm': 'アカウント「{user}」を削除しますか?この操作は取り消せません。'
+ 'このユーザーがアップロードしたファイルは、それをホストする node に残り、'
+ '各 node は固定した識別情報を、その運営者が解除するまで保持します。'
+ '停止であれば元に戻せます。',
'admin.user_detail': 'ユーザーの詳細',
'admin.btn_close': '閉じる',
'admin.self_note': '(ご自身)',
// Admin groups
'admin.col_name': '名前',
'admin.col_visibility': '公開範囲',
'admin.col_members': 'メンバー',
'admin.no_groups': 'グループが見つかりません',
// Admin logs
'admin.col_time': '時刻',
'admin.col_event': 'イベント',
'admin.col_user': 'ユーザー',
'admin.col_ip': 'IP',
'admin.col_detail': '詳細',
'admin.filter_all': 'すべてのイベント',
'admin.no_logs': 'ログが見つかりません',
'admin.btn_load_more': 'さらに読み込む',
// Admin blocklist
'admin.col_hash': 'ハッシュ',
'admin.col_reason': '理由',
'admin.col_date': '日付',
'admin.col_added_by': '追加者',
'admin.no_blocked': 'ブロック中のハッシュはありません',
'admin.add_hash': 'ハッシュをブロックリストに追加',
'admin.hash_placeholder': 'blake3 ハッシュ(16 進数 64 文字)',
'admin.reason_placeholder': '理由',
'admin.btn_block': 'ブロック',
'admin.btn_unblock': 'ブロック解除',
// Notifications
// Create group
'create_group.title': 'グループを作成',
'create_group.name': 'グループ名',
'create_group.name_placeholder': '例:家族の写真、プロジェクトの資料…',
'create_group.join_policy': '参加方法',
'create_group.invite': '招待制',
'create_group.invite_desc': "管理者による招待が必要です。グループは公開一覧に載りません。",
'create_group.open': 'オープン(誰でも参加できます)',
'create_group.open_desc': "公開グループに掲載され、誰でも見つけて承認なしに参加できます。",
'create_group.description': '説明',
'create_group.description_hint': 'どんなグループですか?(任意)',
'create_group.submit': '作成',
'create_group.hint': 'グループにはファイルをホストする node が必要です。'
+ '先にグループを作成し、あとから node を接続することもできます。',
'create_group.creating': '作成しています…',
// Members
'members.col_role': '権限',
'members.group_role': 'グループ内の権限',
'members.admin': '管理者',
'members.group_admin': 'グループ管理者',
'members.owner': '所有者',
'members.member': 'メンバー',
'members.invite_title': 'メンバーを招待',
'members.username_placeholder': 'ユーザー名',
'members.invite_btn': '招待',
'members.invite_needs_pairing': '招待は、この node がお使いのブラウザー用に'
+ '固定した鍵で署名されます。どなたかを招待する前に、下でペアリングしてください。',
'members.invite_ask_operator': '招待できるのは、このグループをホストしている '
+ 'node の運営者だけで、その node とペアリング済みのブラウザーからに限られます。',
'members.remove': '解除',
'members.remove_confirm': '{user} をこのグループから外しますか?'
+ 'そのアカウント、ほかのグループ、アップロード済みのファイルには影響しません。',
'members.remove_hint': 'メンバーを外すと参加資格がなくなり、node はその人に'
+ 'グループ鍵を渡さなくなります。アカウントが削除されるわけではなく、'
+ 'すでに渡っている鍵を取り戻すこともできません。それが重要であれば、'
+ 'node 上で鍵をローテーションしてください(meshbay-node gek-init)。',
'members.pair_title': 'このブラウザーを node とペアリング',
'members.pair_hint': 'node が運営者としての操作(招待、ファイルの削除)を受け付けるのは、'
+ 'ペアリング済みのブラウザーからだけです。node で '
+ '`meshbay-node operator pair` を実行し、表示されたコードをここに入力してください。'
+ 'このコードが hub を経由することはありません。',
'members.pair_btn': 'ペアリング',
'members.pair_success': 'このブラウザーは node とペアリングされました。',
'members.invite_code_ready': '{user} 宛ての招待コードです。'
+ 'いつもの連絡手段でお送りください。使えるのは 1 回だけで、hub を経由することはありません。',
'members.invite_code_hint': '相手がこのグループを初めて開いたときに入力します。'
+ 'そのときお客様がオンラインである必要はありません。',
'transfers.title': '転送',
'transfers.clear': '完了分を消去',
'transfers.cancel': 'キャンセル',
'transfers.open': '開く',
'transfers.done': '完了',
'transfers.cancelled': 'キャンセル済み',
'transfers.failed': '失敗',
'group.select': '選択',
'group.select_done': '完了',
'group.actions': '操作({n})',
'group.download_n': 'ダウンロード({n})',
'group.download_zip_n': 'フォルダーを zip でダウンロード({n})',
'group.delete_n': '削除({n})',
'group.delete_n_confirm': {
other: '{n} 件を削除しますか?{names}',
},
'group.download_zip': {
other: 'zip でダウンロード({n} 個のファイル)',
},
'group.zip_empty': 'そのフォルダーにダウンロードできるものはありません。',
'group.zip_no_stream': 'このブラウザーはダウンロードをディスクへ直接書き込めないため、'
+ '{name}({size})をいったんメモリー上で組み立てる必要があります。'
+ '大きなアーカイブでは失敗することがあります。続けますか?',
'group.rmdir': 'フォルダーを削除',
'group.rmdir_confirm': 'フォルダー「{name}」を削除しますか?空である必要があります。',
'group.rmdir_not_empty': 'そのフォルダーは空ではありません。先に中身を削除してください。'
+ 'ここでの操作が、目に見えないファイルを消すことはありません。',
'group.desc_edit': '説明を編集',
'group.desc_add': '説明を追加',
'group.desc_save': '保存',
'group.desc_cancel': 'キャンセル',
'group.desc_placeholder': 'このグループの目的。メンバーのホーム画面に表示されます。',
'group.join_code_title': 'この node がお客様を認識する必要があります',
'group.join_code_hint': '招待してくれた方にワンタイムコードを聞いて、ここに入力してください。'
+ 'それ以降このブラウザーは認識され、再び尋ねられることはありません。',
'group.join_code_btn': '参加',
'notif.purge': 'すべて消去',
'notif.title': '通知',
'notif.empty': '通知はありません',
'notif.mark_all_read': 'すべて既読にする',
// Sidebar
'sidebar.search': 'ファイルを検索',
// Status
// Search
'search.placeholder': 'すべてのグループから検索…',
'search.no_results': '検索条件に一致するファイルはありません。',
'search.col_group': 'グループ',
'search.result_count': {
other: '{n} 個のファイルが見つかりました',
},
'search.hint': '入力してすべてのグループを検索します。',
'search.indexing': '{done} / {total} グループをインデックス中…',
'search.unreachable': { other: '{n} グループに接続できません' },
'search.view_files': 'ファイル',
'search.view_videos': '動画',
'search.view_music': '音楽',
'search.view_photos': '写真',
'search.connecting': 'グループに接続中…',
// Presence, chat paging, leaving a group, the profile page
'presence.online': 'このグループをホストする node が稼働中です',
'presence.offline': 'このグループに到達できる node がありません',
'presence.unknown': '未確認',
'presence.indexing': 'インデックス中 — {pct}%',
'chat.load_older': '以前のメッセージを {n} 件読み込む',
'chat.start_of_history': '会話のはじまり',
'chat.today': '今日',
'chat.yesterday': '昨日',
'chat.unread': '新しいメッセージ',
'chat.jump_latest': '最新へ移動',
'chat.jump_new': '新しいメッセージ',
'group.leave': 'グループを退出',
'group.leave_confirm': '「{name}」を退出しますか?ファイルとチャットへのアクセスがなくなります。アップロードしたファイルは node に残り、node は固定した識別情報を運営者が削除するまで保持します。',
'group.mute': 'Mute notifications',
'group.unmute': 'Unmute notifications',
'profile.title': 'プロフィール',
'usermenu.profile': 'プロフィール',
// First-run setup wizard
'setup.welcome_title': 'MeshBay へようこそ',
'setup.welcome_message': 'お使いの node がファイルを暗号化してお使いのマシン上に保管します。node を起動して最初のグループを作成しましょう。',
'setup.node_detected': 'ローカル node が検出され、実行中です。',
'setup.node_not_running': 'node はインストールされていますが、実行されていません。',
'setup.node_start': 'node を起動',
'setup.node_starting': 'node を起動中…',
'setup.node_started': 'Node が起動しました。',
'setup.node_not_installed': 'この端末に meshbay-node がインストールされていません。',
'setup.node_install_hint': 'パッケージマネージャーでインストールし、こちらにお戻りください。',
'setup.skip': 'スキップ — ローカル node なしでグループを作成',
'setup.create_group': '最初のグループを作成',
'setup.dismiss': 'セットアップをスキップ',
// Group
'group.retry': '再試行',
// Sidebar
'sidebar.node': 'Node',
// Node admin
'node.title': 'Node',
'node.service_checking': 'ノードサービスを確認中…',
'node.service_not_installed': 'サービスとしてインストールされていません',
'node.service_state_active': '実行中',
'node.service_state_inactive': '停止',
'node.service_state_failed': '失敗',
'node.service_state_activating': '起動中…',
'node.service_state_deactivating': '停止中…',
'node.service_state_unknown': '不明',
'node.service_start': '開始',
'node.service_starting': '起動中…',
'node.service_stop': '停止',
'node.service_stopping': '停止中…',
'node.service_restart': '再起動',
'node.service_restarting': '再起動中…',
'node.not_operator': 'node に接続できませんでした。node が実行中であることをご確認ください。',
'node.offline': 'Node はオフラインです',
'node.retry': '再試行',
'node.pair_needed': 'オペレーターがペアリングされていません。管理操作(招待、ファイル削除)を有効にするにはペアリングコードを入力してください。',
'node.pair_code_placeholder': 'ペアリングコード',
'node.pair_button': 'このブラウザをペアリング',
'node.pair_success': 'ペアリングに成功しました。',
'node.reload': '設定を再読み込み',
'node.reloaded': '設定を再読み込みしました。既存グループのルート変更が反映されました。',
'node.restart_needed': '追加後、グループ鍵を初期化してください(meshbay-node gek-init --group <name>)。',
'node.no_groups': 'この node にはグループが設定されていません。',
'node.stale': 'hub に未登録',
'node.settings': 'Node settings',
'node.settings_edit_hint': 'Changes are applied immediately and saved to node.toml.',
'node.settings_save': 'Save',
'node.settings_saving': 'Saving…',
'node.settings_saved': 'Settings saved.',
'node.setting_invite_ttl': 'Invitation TTL',
'node.setting_pair_ttl': 'Pairing code TTL',
'node.setting_device_ttl': 'Device request TTL',
'node.setting_max_streams': 'Max concurrent streams',
'node.setting_transcode': 'Transcode incompatible video',
'node.setting_unit_hours': 'hours',
'node.setting_unit_minutes': 'min',
'node.setting_on': 'On',
'node.setting_off': 'Off',
'node.unavailable': '利用不可',
'node.files': {
other: '{n} 件のファイル',
},
'node.peers': {
other: '{n} 件のピア',
},
'node.roots': 'ディレクトリ',
'node.add_root': 'ディレクトリを追加',
'node.remove_root': '削除',
'node.root_added': 'ディレクトリを追加しました。',
'node.root_remove_confirm': '「{name}」をこのグループから削除しますか?',
'node.root_removed': 'ディレクトリを削除しました。インデックスを更新するために再起動を推奨します。',
'node.upload_root': 'アップロード',
'node.attach_group': 'グループを追加',
'node.attach_pick': 'ホストするグループ',
'node.attach_dir': '共有ディレクトリ',
'node.attach_upload_dir': 'アップロードディレクトリ',
'node.attach_upload_label': 'アップロードディレクトリ(ファイルのアップロードとチャット添付用)',
'node.attached': 'グループを追加し読み込みました。まだの場合は meshbay-node gek-init --group {name} を実行してください。',
'node.detach_group': 'グループを削除',
'node.detach_confirm': '「{name}」をこの node から削除しますか?',
'node.detached': 'グループを削除しました。',
'node.gek': 'グループ鍵',
'node.no_gek': 'グループ鍵がありません',
'node.gek_init_hint': 'グループ鍵が未設定です。CLI から GEK init を実行して設定してください。',
'node.gek_public_hint': '公開グループでは鍵のローテーションは利用できません。',
'node.gek_rotate': 'グループ鍵をローテーション',
'node.gek_rotate_confirm': 'グループ鍵をローテーションしますか?接続中のメンバーは新しい鍵を自動的に受け取ります。ダウンロード済みのコンテンツには影響しません。',
'node.gek_rotated': 'グループ鍵をローテーションしました。',
'node.roster': '名簿',
'node.roster_load': '名簿を読み込む',
'node.roster_empty': 'まだ固定されたメンバーはいません。',
'node.roster_user': 'ユーザー',
'node.roster_role': '役割',
'node.roster_status': 'ステータス',
'node.roster_via': '固定元',
'node.roster_invites': {
other: '{n} 件の保留中の招待',
},
'node.unpin': '固定を解除',
'node.unpin_confirm': '「{name}」の固定を解除しますか?再度ペアリングが必要になります。',
'node.unpin_done': '識別情報の固定を解除しました。',
'node.denylist': '拒否リスト',
'node.denylist_load': '拒否リストを読み込む',
'node.denylist_empty': '拒否リストは空です。',
'node.denylist_count': {
other: '{n} 件のエントリ',
},
'node.denylist_remove': '削除',
'node.denylist_clear_all': 'すべて削除',
'node.denylist_clear_confirm': '「{subject}」を拒否リストから削除しますか?',
'node.denylist_cleared': '拒否リストのエントリを削除しました。',
// Settings — node
'settings_node.detach_failed_continue': 'node からグループを切り離せませんでした。それでも hub 上で削除しますか?',
'settings_node.roots': '共有ディレクトリ',
'settings_node.scan_title': 'スキャン',
'settings_node.scan_hint': 'node が見逃した変更がないかディレクトリを再確認する頻度と、ファイルの変更後にインデックスするまで待つ時間。',
'settings_node.scan_reconcile_label': '再確認の間隔(分)',
'settings_node.scan_debounce_label': '変更後の待機時間(秒)',
'settings_node.scan_save': '保存',
'settings_node.scan_saving': '保存中…',
'settings_node.scan_saved': '保存しました。',
'settings_node.tmdb_title': 'TMDBメタデータ',
'settings_node.tmdb_hint': '動画アプリでTMDBのポスター、あらすじ、キャストを表示できるようにします。無効にするとサムネイルのみの表示になり、第三者への通信は発生しません。',
'settings_node.tmdb_enabled': '有効',
'settings_node.tmdb_disabled': '無効',
'settings_node.tmdb_token_label': 'カスタムAPIトークン(任意)',
'settings_node.tmdb_token_placeholder': '空欄にすると同梱のデフォルトトークンを使用します',
'settings_node.tmdb_token_customized': 'カスタムトークンが設定されています。',
'settings_node.tmdb_token_default': '同梱のデフォルトトークンを使用しています。',
'settings_node.tmdb_save': '保存',
'settings_node.tmdb_language_label': '言語',
'settings_node.tmdb_language_hint': '全員に適用されます — 共有キャッシュであり、視聴者ごとのリクエストではありません。',
'settings_node.video_root_title': '動画のルートフォルダ',
'settings_node.video_root_hint': 'このグループで動画アプリの起点とするフォルダ(またはサブフォルダ)です。選択されるまで、動画には何も表示されず、TMDB への問い合わせも行われません。',
'settings_node.video_root_none': '— 未選択 —',
'settings_node.musicbrainz_title': 'MusicBrainzのメタデータ',
'settings_node.musicbrainz_hint': 'トラックに使用可能な埋め込みカバーがない場合、MusicBrainzのカバーアートと正式名称をMusicアプリで表示できるようにします。オフにするとタグ・ファイル名のみでの閲覧になり、第三者へのリクエストは発生しません。',
'settings_node.musicbrainz_enabled': '有効',
'settings_node.musicbrainz_disabled': '無効',
'settings_node.video_root_save': '保存',
'settings_node.video_root_change_confirm': '動画のルートフォルダを変更すると、全メンバーの動画タブの表示内容が変わります。続行しますか?',
'settings_node.audio_root_title': '音楽のルートフォルダ',
'settings_node.audio_root_hint': 'このグループで音楽アプリの起点とするフォルダ(またはサブフォルダ)です。選択されるまで、音楽には何も表示されず、タグ・カバー情報の読み込みも行われません。',
'settings_node.audio_root_none': '— 未選択 —',
'settings_node.audio_root_save': '保存',
'settings_node.audio_root_change_confirm': '音楽のルートフォルダを変更すると、全メンバーの音楽タブの表示内容が変わります。続行しますか?',
'settings_node.photo_roots_title': '写真のルートフォルダ',
'settings_node.photo_roots_hint': 'このグループで写真アプリの起点とするフォルダです。写真ライブラリは複数のフォルダに分かれていることが多いため、複数選択できます。少なくとも1つ追加されるまで、写真には何も表示されません。',
'settings_node.photo_roots_none': '— 未選択 —',
'settings_node.photo_roots_add_placeholder': 'フォルダを追加…',
'settings_node.photo_roots_add': '追加',
'settings_node.photo_roots_remove': '削除',
'settings_node.photo_roots_save': '保存',
'settings_node.directories_title': 'ディレクトリ',
'settings_node.directories_hint': '共有フォルダと、動画・音楽・写真の各アプリがそれぞれの起点として使用するフォルダです。',
// Wizard
'wizard.title': 'グループを作成',
'wizard.detecting': 'ローカル node を検出中…',
'wizard.node_not_found': 'ローカル node が検出できませんでした。meshbay-node が実行中であることをご確認ください。',
'wizard.node_offline_warning': 'Node が実行されていません。グループは hub 上のみに作成されます。後から Node ページで node を接続できます。',
'wizard.retry': '再試行',
'wizard.wrong_account': 'node は実行中ですが、設定されたユーザー名がお使いのアカウントと一致しません。node.toml の hub.username をご確認ください。',
'wizard.skip_node': 'node なしで続行',
'wizard.directories': '共有ディレクトリ',
'wizard.directories_hint': 'このグループで共有するディレクトリを選択してください。少なくとも 1 つ必要です。',
'wizard.add_directory': 'ディレクトリを追加',
'wizard.remove': '削除',
'wizard.set_upload': 'アップロード先に設定',
'wizard.upload_target': 'アップロード先',
'wizard.create_and_setup': '作成してセットアップ',
'wizard.create_hub_only': 'hub のみに作成',
'wizard.setting_up': 'グループをセットアップ中…',
'wizard.step_create_hub': 'hub 上にグループを作成中',
'wizard.step_attach': 'node に接続中',
'wizard.step_apps': 'アプリを選択中',
'wizard.step_add_roots': 'ディレクトリを追加中',
'wizard.step_gek': '暗号化鍵を初期化中',
'wizard.step_pair': 'ペアリングをセットアップ中',
'wizard.step_index': 'ファイルをインデックス中',
'wizard.indexing_progress': 'インデックス中… {pct}%',
'wizard.indexing_current_dir': 'スキャン中: {dir}',
'wizard.done_title': 'グループを作成しました',
'wizard.done_message': 'グループの準備ができました。node がホストし、暗号化が設定されています。',
'wizard.go_to_group': 'グループを開く',
'wizard.finish_later': 'セットアップを後で完了',
};
|