summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js
blob: 8e18a1932b58dabbe7734d5090be6be2cadf6964 (plain) (blame)
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
/**
 * 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': '参加済み',

  // Group page
  'group.default_name': 'グループ',
  'group.tab_files': 'ファイル',
  'group.tab_chat': 'チャット',
  'group.tab_members': 'メンバー',
  'group.filter': 'ファイルを絞り込み…',
  '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': '新しいフォルダーの名前:',
  '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.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}',

  // 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.dl_path_note': 'ウェブページにパスを指定することはできないため、'
    + 'ここに入力するものはありません。お選びになったフォルダーへのアクセスは'
    + 'ブラウザーが許可し、MeshBay はその中にしか書き込みません。'
    + 'セッションごとに 1 回、確認を求められることがあります。',
  'settings.dl_unsupported': 'このブラウザーはお好きなフォルダーへの書き込みに'
    + '対応していないため(File System Access API がありません)、'
    + 'ダウンロードはブラウザー自身のダウンロードフォルダーに保存されます。'
    + 'Chrome と Edge では選択できます。',
  'settings.profile': 'プロフィール',
  'settings.username': 'ユーザー名',
  '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': 'このアプリについて',
  '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 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_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.visibility': '公開範囲',
  'create_group.private': '非公開',
  'create_group.private_desc': '招待されたメンバーだけがファイルを見て利用できます',
  'create_group.public': '公開',
  'create_group.public_desc': '誰でもこのグループを見つけて閲覧できます',
  '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.title': 'ファイルを検索',
  'search.placeholder': 'すべてのグループから検索…',
  'search.no_results': '検索条件に一致するファイルはありません。',
  'search.synced': '{ago}に同期',
  'search.cache_note': '検索は、各グループを最後に開いたときの状態を参照します。'
    + 'グループを開くと、そのファイルがここで最新になります。',
  'search.col_group': 'グループ',
  'search.result_count': {
    other: '{n} 個のファイルが見つかりました',
  },
  'search.hint': 'キャッシュされたすべてのグループインデックスからファイル名を検索します。',

  // Presence, chat paging, leaving a group, the profile page
  'presence.online': 'このグループをホストする node が稼働中です',
  'presence.offline': 'このグループに到達できる node がありません',
  'presence.unknown': '未確認',
  '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 は固定した識別情報を運営者が削除するまで保持します。',
  'profile.title': 'プロフィール',
  'usermenu.profile': 'プロフィール',
  'create_group.public_is_open': '公開グループは誰でも見つけて参加できます。参加者を選びたい場合は、非公開で作成してください。',
};