/** * 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.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.danger_delete_hint': "グループはすべてのメンバーから消えます。元に戻せません。", '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': '新しいフォルダーの名前:', '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.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': 'このアプリについて', '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 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.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': 'プロフィール', };