feat(ui): add locales and split catalogs

Adds Spanish, French, Russian, Japanese, and Simplified Chinese catalogs and wires supported locales into the i18n layer.
This commit is contained in:
Shantur Rathore
2026-01-26 12:56:26 +00:00
parent 5b1e21345f
commit feccbd13bd
89 changed files with 4531 additions and 30 deletions

View File

@@ -0,0 +1,6 @@
export const advancedSettingsMessages = {
"advancedSettings.title": "詳細設定",
"advancedSettings.environmentVariables.title": "環境変数",
"advancedSettings.environmentVariables.subtitle": "新しい OpenCode インスタンス起動時に適用",
"advancedSettings.actions.close": "閉じる",
} as const

View File

@@ -0,0 +1,29 @@
export const appMessages = {
"app.launchError.title": "OpenCode を起動できません",
"app.launchError.description": "選択された OpenCode バイナリを起動できませんでした。下のエラー出力を確認するか、詳細設定から別のバイナリを選択してください。",
"app.launchError.binaryPathLabel": "バイナリのパス",
"app.launchError.errorOutputLabel": "エラー出力",
"app.launchError.openAdvancedSettings": "詳細設定を開く",
"app.launchError.close": "閉じる",
"app.launchError.closeTitle": "閉じる (Esc)",
"app.launchError.fallbackMessage": "ワークスペースの起動に失敗しました",
"app.stopInstance.confirmMessage": "OpenCode インスタンスを停止しますか?サーバーが停止します。",
"app.stopInstance.title": "インスタンスを停止",
"app.stopInstance.confirmLabel": "停止",
"app.stopInstance.cancelLabel": "実行を続ける",
"emptyState.logoAlt": "CodeNomad ロゴ",
"emptyState.brandTitle": "CodeNomad",
"emptyState.tagline": "フォルダを選択して AI でコーディングを開始",
"emptyState.actions.selectFolder": "フォルダを選択",
"emptyState.actions.selecting": "選択中...",
"emptyState.keyboardShortcut": "キーボードショートカット: {shortcut}",
"emptyState.examples": "例: {example}",
"emptyState.multipleInstances": "同じフォルダのインスタンスを複数作成できます",
"releases.upgradeRequired.title": "アップグレードが必要です",
"releases.upgradeRequired.message.withVersion": "最新の UI を使うには CodeNomad {version} に更新してください。",
"releases.upgradeRequired.message.noVersion": "最新の UI を使うには CodeNomad を更新してください。",
"releases.upgradeRequired.action.getUpdate": "更新を取得",
} as const

View File

@@ -0,0 +1,160 @@
export const commandMessages = {
"commandPalette.title": "コマンドパレット",
"commandPalette.description": "コマンドを検索して実行",
"commandPalette.searchPlaceholder": "コマンドを入力するか検索...",
"commandPalette.empty": "「{query}」に一致するコマンドが見つかりません",
"commandPalette.category.customCommands": "カスタムコマンド",
"commandPalette.category.instance": "インスタンス",
"commandPalette.category.session": "セッション",
"commandPalette.category.agentModel": "エージェントとモデル",
"commandPalette.category.inputFocus": "入力とフォーカス",
"commandPalette.category.system": "システム",
"commandPalette.category.other": "その他",
"commands.newInstance.label": "新しいインスタンス",
"commands.newInstance.description": "フォルダ選択を開いて新しいインスタンスを作成",
"commands.newInstance.keywords": "フォルダ, プロジェクト, ワークスペース, folder, project, workspace",
"commands.closeInstance.label": "インスタンスを閉じる",
"commands.closeInstance.description": "現在のインスタンスのサーバーを停止",
"commands.closeInstance.keywords": "停止, 終了, 閉じる, stop, quit, close",
"commands.nextInstance.label": "次のインスタンス",
"commands.nextInstance.description": "次のインスタンスタブへ切り替え",
"commands.nextInstance.keywords": "切り替え, 移動, switch, navigate",
"commands.previousInstance.label": "前のインスタンス",
"commands.previousInstance.description": "前のインスタンスタブへ切り替え",
"commands.previousInstance.keywords": "切り替え, 移動, switch, navigate",
"commands.newSession.label": "新しいセッション",
"commands.newSession.description": "新しい親セッションを作成",
"commands.newSession.keywords": "作成, 開始, create, start",
"commands.closeSession.label": "セッションを閉じる",
"commands.closeSession.description": "現在の親セッションを閉じる",
"commands.closeSession.keywords": "閉じる, 停止, close, stop",
"commands.scrubSessions.label": "セッションを整理",
"commands.scrubSessions.description": "空のセッション、主要タスクを完了したサブエージェントのセッション、不要なフォークされたセッションを削除します。",
"commands.scrubSessions.keywords": "整理, クリーンアップ, 空, セッション, 削除, cleanup, blank, empty, sessions, remove, delete, scrub",
"commands.instanceInfo.label": "インスタンス情報",
"commands.instanceInfo.description": "ログと状態のインスタンス概要を開く",
"commands.instanceInfo.keywords": "情報, ログ, コンソール, 出力, info, logs, console, output",
"commands.nextSession.label": "次のセッション",
"commands.nextSession.description": "次のセッションタブへ切り替え",
"commands.nextSession.keywords": "切り替え, 移動, switch, navigate",
"commands.previousSession.label": "前のセッション",
"commands.previousSession.description": "前のセッションタブへ切り替え",
"commands.previousSession.keywords": "切り替え, 移動, switch, navigate",
"commands.compactSession.label": "セッションをコンパクト化",
"commands.compactSession.description": "現在のセッションを要約して圧縮",
"commands.compactSession.keywords": "要約, 圧縮, summarize, compress",
"commands.compactSession.errorFallback": "セッションのコンパクト化に失敗しました",
"commands.compactSession.alert.title": "コンパクト化に失敗",
"commands.compactSession.alert.message": "コンパクト化に失敗しました: {message}",
"commands.undoLastMessage.label": "直前のメッセージを取り消す",
"commands.undoLastMessage.description": "直前のメッセージへ戻す",
"commands.undoLastMessage.keywords": "取り消し, 戻す, revert, undo",
"commands.undoLastMessage.none.title": "取り消せる操作がありません",
"commands.undoLastMessage.none.message": "取り消すものがありません",
"commands.undoLastMessage.failed.title": "取り消しに失敗",
"commands.undoLastMessage.failed.message": "メッセージを戻せませんでした",
"commands.openModelSelector.label": "モデルセレクターを開く",
"commands.openModelSelector.description": "別のモデルを選択",
"commands.openModelSelector.keywords": "モデル, LLM, AI, model, llm, ai",
"commands.selectModelVariant.label": "モデルバリアントを選択",
"commands.selectModelVariant.description": "現在のモデルの思考量を選択",
"commands.selectModelVariant.keywords": "バリアント, 思考, 推論, 努力, variant, thinking, reasoning, effort",
"commands.openAgentSelector.label": "エージェントセレクターを開く",
"commands.openAgentSelector.description": "別のエージェントを選択",
"commands.openAgentSelector.keywords": "エージェント, モード, agent, mode",
"commands.clearInput.label": "入力をクリア",
"commands.clearInput.description": "プロンプト入力欄をクリア",
"commands.clearInput.keywords": "クリア, リセット, clear, reset",
"commands.thinkingBlocks.label.show": "思考ブロックを表示",
"commands.thinkingBlocks.label.hide": "思考ブロックを非表示",
"commands.thinkingBlocks.description": "AI の思考過程を表示/非表示",
"commands.thinkingBlocks.keywords": "思考, 推論, 切り替え, 表示, 非表示, thinking, reasoning, toggle, show, hide",
"commands.timelineToolCalls.label.show": "タイムラインのツールコールを表示",
"commands.timelineToolCalls.label.hide": "タイムラインのツールコールを非表示",
"commands.timelineToolCalls.description": "メッセージタイムラインのツールコール表示を切り替え",
"commands.timelineToolCalls.keywords": "タイムライン, ツール, 切り替え, timeline, tool, toggle",
"commands.common.expanded": "展開",
"commands.common.collapsed": "折りたたみ",
"commands.common.visible": "表示",
"commands.common.hidden": "非表示",
"commands.common.enabled": "有効",
"commands.common.disabled": "無効",
"commands.thinkingBlocksDefault.label": "思考ブロックの既定 · {state}",
"commands.thinkingBlocksDefault.description": "思考ブロックを既定で展開するか切り替え",
"commands.thinkingBlocksDefault.keywords": "思考, 推論, 展開, 折りたたみ, 既定, thinking, reasoning, expand, collapse, default",
"commands.diffViewSplit.label": "分割 diff 表示を使用",
"commands.diffViewSplit.description": "ツールコールの diff を左右に並べて表示",
"commands.diffViewSplit.keywords": "diff, 分割, 表示, split, view",
"commands.diffViewUnified.label": "ユニファイド diff 表示を使用",
"commands.diffViewUnified.description": "ツールコールの diff をインラインで表示",
"commands.diffViewUnified.keywords": "diff, ユニファイド, 表示, unified, view",
"commands.toolOutputsDefault.label": "ツール出力の既定 · {state}",
"commands.toolOutputsDefault.description": "ツール出力を既定で展開するか切り替え",
"commands.toolOutputsDefault.keywords": "ツール, 出力, 展開, 折りたたみ, tool, output, expand, collapse",
"commands.diagnosticsDefault.label": "診断の既定 · {state}",
"commands.diagnosticsDefault.description": "診断出力を既定で展開するか切り替え",
"commands.diagnosticsDefault.keywords": "診断, 展開, 折りたたみ, diagnostics, expand, collapse",
"commands.tokenUsageDisplay.label": "トークン使用量表示 · {state}",
"commands.tokenUsageDisplay.description": "アシスタントメッセージのトークン/コスト統計を表示/非表示",
"commands.tokenUsageDisplay.keywords": "トークン, 使用量, コスト, 統計, token, usage, cost, stats",
"commands.autoCleanupBlankSessions.label": "空セッションの自動クリーンアップ · {state}",
"commands.autoCleanupBlankSessions.description": "新しいセッション作成時に空のセッションを自動的に整理",
"commands.autoCleanupBlankSessions.keywords": "自動, クリーンアップ, 空, セッション, 切り替え, auto, cleanup, blank, sessions, toggle",
"commands.showHelp.label": "ヘルプを表示",
"commands.showHelp.description": "キーボードショートカットとヘルプを表示",
"commands.showHelp.keywords": "ショートカット, ヘルプ, shortcuts, help",
"commands.custom.argumentsPrompt.message": "/{name} の引数",
"commands.custom.argumentsPrompt.title": "カスタムコマンド",
"commands.custom.argumentsPrompt.inputLabel": "引数",
"commands.custom.argumentsPrompt.inputPlaceholder": "例: foo bar",
"commands.custom.argumentsPrompt.confirmLabel": "実行",
"commands.custom.argumentsPrompt.cancelLabel": "キャンセル",
"commands.custom.argumentsPrompt.openFailed.message": "引数入力を開けませんでした。",
"commands.custom.argumentsPrompt.openFailed.title": "コマンド引数",
"commands.custom.entries.descriptionFallback": "カスタムコマンド",
"commands.custom.sessionRequired.message": "カスタムコマンドを実行する前にセッションを選択してください。",
"commands.custom.sessionRequired.title": "セッションが必要です",
"commands.custom.runFailed.message": "カスタムコマンドの実行に失敗しました。詳細はコンソールを確認してください。",
"commands.custom.runFailed.title": "コマンドの実行に失敗",
"unifiedPicker.loading.searching": "検索中...",
"unifiedPicker.loading.loadingWorkspace": "ワークスペースを読み込み中...",
"unifiedPicker.title.command": "コマンドを選択",
"unifiedPicker.title.mention": "エージェントまたはファイルを選択",
"unifiedPicker.empty": "結果が見つかりません",
"unifiedPicker.sections.commands": "コマンド",
"unifiedPicker.sections.agents": "エージェント",
"unifiedPicker.sections.files": "ファイル",
"unifiedPicker.badge.subagent": "サブエージェント",
"unifiedPicker.footer.navigate": "移動",
"unifiedPicker.footer.select": "選択",
"unifiedPicker.footer.close": "閉じる",
} as const

View File

@@ -0,0 +1,16 @@
export const dialogMessages = {
"alertDialog.fallbackTitle.info": "お知らせ",
"alertDialog.fallbackTitle.warning": "ご確認ください",
"alertDialog.fallbackTitle.error": "問題が発生しました",
"alertDialog.actions.confirm": "確認",
"alertDialog.actions.run": "実行",
"alertDialog.actions.ok": "OK",
"alertDialog.actions.cancel": "キャンセル",
"alertDialog.prompt.inputLabel": "入力",
"backgroundProcessOutputDialog.title": "バックグラウンド出力",
"backgroundProcessOutputDialog.actions.close": "閉じる",
"backgroundProcessOutputDialog.loading": "出力を読み込み中...",
"backgroundProcessOutputDialog.truncatedNotice": "表示のため出力を省略しました。",
"backgroundProcessOutputDialog.loadErrorFallback": "出力の読み込みに失敗しました。",
} as const

View File

@@ -0,0 +1,43 @@
export const filesystemMessages = {
"directoryBrowser.defaultDescription": "設定された workspace ルート配下のフォルダを参照します。",
"directoryBrowser.close": "閉じる",
"directoryBrowser.currentFolder": "現在のフォルダ",
"directoryBrowser.selectCurrent": "現在のフォルダを選択",
"directoryBrowser.newFolder": "新しいフォルダ",
"directoryBrowser.creating": "作成中…",
"directoryBrowser.loadingFolders": "フォルダを読み込み中…",
"directoryBrowser.noFolders": "利用可能なフォルダがありません。",
"directoryBrowser.upOneLevel": "1 つ上へ",
"directoryBrowser.select": "選択",
"directoryBrowser.load.errorFallback": "ファイルシステムを読み込めません",
"directoryBrowser.createFolder.promptMessage": "現在のディレクトリに新しいフォルダを作成します。",
"directoryBrowser.createFolder.title": "新しいフォルダ",
"directoryBrowser.createFolder.inputLabel": "フォルダ名",
"directoryBrowser.createFolder.inputPlaceholder": "例: my-new-project",
"directoryBrowser.createFolder.confirmLabel": "作成",
"directoryBrowser.createFolder.cancelLabel": "キャンセル",
"directoryBrowser.createFolder.invalidNameMessage": "フォルダ名を 1 つだけ入力してください。",
"directoryBrowser.createFolder.invalidNameDetail": "フォルダ名にスラッシュ、'..'、'~' を含めることはできません。",
"directoryBrowser.createFolder.errorFallback": "フォルダを作成できません",
"filesystemBrowser.descriptionFallback": "設定された workspace ルート配下のパスを検索します。",
"filesystemBrowser.rootLabel": "ルート: {root}",
"filesystemBrowser.actions.close": "閉じる",
"filesystemBrowser.actions.retry": "再試行",
"filesystemBrowser.actions.select": "選択",
"filesystemBrowser.filterLabel": "フィルター",
"filesystemBrowser.search.placeholder.directories": "フォルダを検索",
"filesystemBrowser.search.placeholder.files": "ファイルを検索",
"filesystemBrowser.currentFolder.label": "現在のフォルダ",
"filesystemBrowser.currentFolder.selectCurrent": "現在のフォルダを選択",
"filesystemBrowser.loading.filesystem": "ファイルシステム",
"filesystemBrowser.loading.workspaceRoot": "workspace ルート",
"filesystemBrowser.loading.loadingWithPath": "{path} を読み込み中…",
"filesystemBrowser.empty.noEntries": "項目が見つかりません。",
"filesystemBrowser.navigation.upOneLevel": "1 つ上へ",
"filesystemBrowser.hints.navigate": "移動",
"filesystemBrowser.hints.select": "選択",
"filesystemBrowser.hints.close": "閉じる",
"filesystemBrowser.errors.loadFilesystemFallback": "ファイルシステムを読み込めません",
"filesystemBrowser.errors.openDirectoryFallback": "ディレクトリを開けません",
} as const

View File

@@ -0,0 +1,34 @@
export const folderSelectionMessages = {
"folderSelection.logoAlt": "CodeNomad ロゴ",
"folderSelection.tagline": "フォルダを選択して AI でコーディングを開始",
"folderSelection.links.github": "CodeNomad の GitHub",
"folderSelection.links.githubStars": "CodeNomad の GitHub スター",
"folderSelection.links.discord": "CodeNomad の Discord",
"folderSelection.empty.title": "最近使ったフォルダはありません",
"folderSelection.empty.description": "フォルダを選択して開始",
"folderSelection.recent.title": "最近使ったフォルダ",
"folderSelection.recent.subtitle.one": "{count} 件のフォルダ",
"folderSelection.recent.subtitle.other": "{count} 件のフォルダ",
"folderSelection.recent.remove": "履歴から削除",
"folderSelection.browse.title": "フォルダを参照",
"folderSelection.browse.subtitle": "コンピュータ上の任意のフォルダを選択",
"folderSelection.browse.button": "フォルダを参照",
"folderSelection.browse.buttonOpening": "開いています...",
"folderSelection.advancedSettings": "詳細設定",
"folderSelection.hints.navigate": "移動",
"folderSelection.hints.select": "選択",
"folderSelection.hints.remove": "削除",
"folderSelection.hints.browse": "参照",
"folderSelection.loading.title": "インスタンスを起動中...",
"folderSelection.loading.subtitle": "ワークスペースを準備しています。しばらくお待ちください。",
"folderSelection.dialog.title": "ワークスペースを選択",
"folderSelection.dialog.description": "コーディングを開始するワークスペースを選択してください。",
} as const

View File

@@ -0,0 +1,36 @@
import { advancedSettingsMessages } from "./advancedSettings"
import { appMessages } from "./app"
import { commandMessages } from "./commands"
import { dialogMessages } from "./dialogs"
import { filesystemMessages } from "./filesystem"
import { folderSelectionMessages } from "./folderSelection"
import { instanceMessages } from "./instance"
import { loadingScreenMessages } from "./loadingScreen"
import { logMessages } from "./logs"
import { markdownMessages } from "./markdown"
import { messagingMessages } from "./messaging"
import { remoteAccessMessages } from "./remoteAccess"
import { sessionMessages } from "./session"
import { settingsMessages } from "./settings"
import { timeMessages } from "./time"
import { toolCallMessages } from "./toolCall"
import { mergeMessageParts } from "../merge"
export const jaMessages = mergeMessageParts(
folderSelectionMessages,
advancedSettingsMessages,
loadingScreenMessages,
timeMessages,
appMessages,
dialogMessages,
filesystemMessages,
instanceMessages,
logMessages,
sessionMessages,
messagingMessages,
toolCallMessages,
markdownMessages,
settingsMessages,
remoteAccessMessages,
commandMessages,
)

View File

@@ -0,0 +1,125 @@
export const instanceMessages = {
"instanceTabs.new.title": "新しいインスタンス (Cmd/Ctrl+N)",
"instanceTabs.new.ariaLabel": "新しいインスタンス",
"instanceTabs.remote.title": "リモート接続",
"instanceTabs.remote.ariaLabel": "リモート接続",
"instanceInfo.title": "インスタンス情報",
"instanceInfo.labels.folder": "フォルダ",
"instanceInfo.labels.project": "プロジェクト",
"instanceInfo.labels.versionControl": "バージョン管理",
"instanceInfo.labels.opencodeVersion": "OpenCode バージョン",
"instanceInfo.labels.binaryPath": "バイナリのパス",
"instanceInfo.labels.environmentVariables": "環境変数 ({count})",
"instanceInfo.loading": "読み込み中...",
"instanceInfo.server.title": "サーバー",
"instanceInfo.server.port": "ポート:",
"instanceInfo.server.pid": "PID:",
"instanceInfo.server.status": "状態:",
"instanceTab.status.permission": "許可待ち",
"instanceTab.status.compacting": "圧縮中",
"instanceTab.status.working": "作業中",
"instanceTab.status.idle": "待機中",
"instanceTab.status.ariaLabel": "インスタンス状態: {status}",
"instanceTab.actions.close.ariaLabel": "インスタンスを閉じる",
"instanceShell.leftPanel.sessionsTitle": "セッション",
"instanceShell.leftPanel.instanceInfo": "インスタンス情報",
"instanceShell.leftDrawer.pin": "左ドロワーを固定",
"instanceShell.leftDrawer.unpin": "左ドロワーの固定を解除",
"instanceShell.leftDrawer.toggle.pinned": "左ドロワーを固定しました",
"instanceShell.leftDrawer.toggle.open": "左ドロワーを開く",
"instanceShell.leftDrawer.toggle.close": "左ドロワーを閉じる",
"instanceShell.rightDrawer.pin": "右ドロワーを固定",
"instanceShell.rightDrawer.unpin": "右ドロワーの固定を解除",
"instanceShell.rightDrawer.toggle.pinned": "右ドロワーを固定しました",
"instanceShell.rightDrawer.toggle.open": "右ドロワーを開く",
"instanceShell.rightDrawer.toggle.close": "右ドロワーを閉じる",
"instanceShell.metrics.usedLabel": "使用",
"instanceShell.metrics.availableLabel": "残り",
"instanceShell.commandPalette.openAriaLabel": "コマンドパレットを開く",
"instanceShell.commandPalette.button": "コマンドパレット",
"instanceShell.connection.ariaLabel": "接続 {status}",
"instanceShell.connection.connected": "接続済み",
"instanceShell.connection.connecting": "接続中...",
"instanceShell.connection.disconnected": "切断",
"instanceShell.connection.unknown": "不明",
"instanceWelcome.shortcuts.newSession": "新しいセッション",
"instanceWelcome.empty.title": "以前のセッションはありません",
"instanceWelcome.empty.description": "下で新しいセッションを作成して開始",
"instanceWelcome.loading.title": "セッションを読み込み中",
"instanceWelcome.loading.description": "以前のセッションを取得中...",
"instanceWelcome.resume.title": "セッションを再開",
"instanceWelcome.resume.subtitle.one": "{count} 件のセッション",
"instanceWelcome.resume.subtitle.other": "{count} 件のセッション",
"instanceWelcome.session.untitled": "無題のセッション",
"instanceWelcome.new.title": "新しいセッションを開始",
"instanceWelcome.new.subtitle": "前回のエージェント/モデルを自動で再利用します",
"instanceWelcome.new.createButton": "セッションを作成",
"instanceWelcome.overlay.close": "閉じる",
"instanceWelcome.actions.viewInstanceInfo": "インスタンス情報を表示",
"instanceWelcome.actions.renameTitle": "セッション名を変更",
"instanceWelcome.actions.deleteTitle": "セッションを削除",
"instanceWelcome.hints.navigate": "移動",
"instanceWelcome.hints.jump": "ジャンプ",
"instanceWelcome.hints.firstLast": "先頭/末尾",
"instanceWelcome.hints.resume": "再開",
"instanceWelcome.hints.delete": "削除",
"instanceWelcome.toasts.renameError": "セッション名を変更できません",
"instanceDisconnected.title": "インスタンスが切断されました",
"instanceDisconnected.folderFallback": "このワークスペース",
"instanceDisconnected.reasonFallback": "サーバーが応答しなくなりました",
"instanceDisconnected.description": "{folder} に接続できません。作業を続けるにはタブを閉じてください。",
"instanceDisconnected.details.title": "詳細",
"instanceDisconnected.details.folderLabel": "フォルダ:",
"instanceDisconnected.actions.closeInstance": "インスタンスを閉じる",
"instanceShell.empty.title": "セッションが選択されていません",
"instanceShell.empty.description": "メッセージを表示するにはセッションを選択してください",
"instanceShell.rightPanel.title": "ステータスパネル",
"instanceShell.rightPanel.sections.plan": "計画",
"instanceShell.rightPanel.sections.backgroundProcesses": "バックグラウンドシェル",
"instanceShell.rightPanel.sections.mcp": "MCP サーバー",
"instanceShell.rightPanel.sections.lsp": "LSP サーバー",
"instanceShell.rightPanel.sections.plugins": "プラグイン",
"instanceShell.plan.noSessionSelected": "計画を表示するにはセッションを選択してください。",
"instanceShell.plan.empty": "まだ計画はありません。",
"instanceShell.backgroundProcesses.empty": "バックグラウンドプロセスはありません。",
"instanceShell.backgroundProcesses.status": "状態: {status}",
"instanceShell.backgroundProcesses.output": "出力: {sizeKb}KB",
"instanceShell.backgroundProcesses.actions.output": "出力",
"instanceShell.backgroundProcesses.actions.stop": "停止",
"instanceShell.backgroundProcesses.actions.terminate": "終了",
"versionPill.appWithVersion": "アプリ {version}",
"versionPill.ui": "UI",
"versionPill.uiWithVersion": "UI {version}",
"versionPill.source": " ({source})",
"opencodeBinarySelector.title": "OpenCode バイナリ",
"opencodeBinarySelector.subtitle": "OpenCode を実行する実行ファイルを選択",
"opencodeBinarySelector.customPath.placeholder": "opencode バイナリのパスを入力…",
"opencodeBinarySelector.actions.add": "追加",
"opencodeBinarySelector.actions.browse": "バイナリを参照…",
"opencodeBinarySelector.actions.removeTitle": "バイナリを削除",
"opencodeBinarySelector.badge.systemPath": "system PATH のバイナリを使用",
"opencodeBinarySelector.status.checkingVersions": "バージョンを確認中…",
"opencodeBinarySelector.status.checking": "確認中…",
"opencodeBinarySelector.dialog.title": "OpenCode バイナリを選択",
"opencodeBinarySelector.dialog.description": "CLI サーバーから公開されているファイルを参照します。",
"opencodeBinarySelector.validation.invalidBinary": "OpenCode バイナリが無効です",
"opencodeBinarySelector.validation.alreadyValidating": "すでに検証中です",
"opencodeBinarySelector.display.systemPath": "{name} (system PATH)",
"opencodeBinarySelector.versionLabel": "v{version}",
} as const

View File

@@ -0,0 +1,17 @@
export const loadingScreenMessages = {
"loadingScreen.logoAlt": "CodeNomad ロゴ",
"loadingScreen.status.issue": "問題が発生しました",
"loadingScreen.actions.showAnother": "別のメッセージを表示",
"loadingScreen.errors.missingRoot": "読み込み用のルート要素が見つかりません",
"loadingScreen.phrases.neurons": "AI のニューロンをウォームアップ中…",
"loadingScreen.phrases.daydreaming": "AI に空想をやめるよう説得中…",
"loadingScreen.phrases.goggles": "AI のコード用ゴーグルを磨き中…",
"loadingScreen.phrases.reorganizingFiles": "AI にファイル整理をやめるようお願い中…",
"loadingScreen.phrases.coffee": "AI に追いコーヒーを投入中…",
"loadingScreen.phrases.nodeModules": "AI に node_modules を(また)消さないよう教え中…",
"loadingScreen.phrases.actNatural": "到着前に自然に振る舞うよう AI に指示中…",
"loadingScreen.phrases.rewritingHistory": "履歴を書き換えないよう AI にお願い中…",
"loadingScreen.phrases.stretch": "コーディングスプリント前に AI をストレッチさせています…",
"loadingScreen.phrases.keyboardControl": "AI にキーボードの主導権を渡すよう説得中…",
} as const

View File

@@ -0,0 +1,18 @@
export const logMessages = {
"logsView.title": "サーバーログ",
"logsView.actions.show": "サーバーログを表示",
"logsView.actions.hide": "サーバーログを非表示",
"logsView.envVars.title": "環境変数 ({count})",
"logsView.paused.title": "サーバーログは一時停止中です",
"logsView.paused.description": "ストリーミングを有効にして OpenCode サーバーの動作を監視します。",
"logsView.empty.waiting": "サーバー出力を待機中...",
"logsView.scrollToBottom": "最下部へスクロール",
"infoView.logs.title": "サーバーログ",
"infoView.logs.actions.show": "サーバーログを表示",
"infoView.logs.actions.hide": "サーバーログを非表示",
"infoView.logs.paused.title": "サーバーログは一時停止中です",
"infoView.logs.paused.description": "ストリーミングを有効にして OpenCode サーバーの動作を監視します。",
"infoView.logs.empty.waiting": "サーバー出力を待機中...",
"infoView.logs.scrollToBottom": "最下部へスクロール",
} as const

View File

@@ -0,0 +1,7 @@
export const markdownMessages = {
"markdown.codeBlock.copy.label": "コピー",
"markdown.codeBlock.copy.copied": "コピーしました!",
"markdown.codeBlock.copy.failed": "失敗",
"markdown.copy": "コピー",
} as const

View File

@@ -0,0 +1,109 @@
export const messagingMessages = {
"messageListHeader.sidebar.openSessionListAriaLabel": "セッション一覧を開く",
"messageListHeader.metrics.usedLabel": "使用",
"messageListHeader.metrics.availableLabel": "残り",
"messageListHeader.commandPalette.ariaLabel": "コマンドパレットを開く",
"messageListHeader.commandPalette.button": "コマンドパレット",
"messageListHeader.connection.connected": "接続済み",
"messageListHeader.connection.connecting": "接続中...",
"messageListHeader.connection.disconnected": "切断",
"messageSection.empty.logoAlt": "CodeNomad ロゴ",
"messageSection.empty.brandTitle": "CodeNomad",
"messageSection.empty.title": "会話を始める",
"messageSection.empty.description": "下にメッセージを入力するか、コマンドパレットを開いてください:",
"messageSection.empty.tips.commandPalette": "コマンドパレット",
"messageSection.empty.tips.askAboutCodebase": "コードベースについて質問",
"messageSection.empty.tips.attachFilesPrefix": "次でファイルを添付:",
"messageSection.loading.messages": "メッセージを読み込み中...",
"messageSection.scroll.toFirstAriaLabel": "最初のメッセージへスクロール",
"messageSection.scroll.toLatestAriaLabel": "最新のメッセージへスクロール",
"messageSection.quote.addAsQuote": "引用として追加",
"messageSection.quote.addAsCode": "コードとして追加",
"messageTimeline.ariaLabel": "メッセージタイムライン",
"messageTimeline.segment.user.label": "あなた",
"messageTimeline.segment.assistant.label": "AI",
"messageTimeline.segment.compaction.label": "圧縮",
"messageTimeline.tool.fallbackLabel": "ツールコール",
"messageTimeline.tooltip.userFallback": "ユーザーのメッセージ",
"messageTimeline.tooltip.assistantFallback": "アシスタントの応答",
"messageTimeline.tooltip.compaction.auto": "自動コンパクト化",
"messageTimeline.tooltip.compaction.manual": "手動コンパクト化",
"messageTimeline.text.filePrefix": "[ファイル] {filename}",
"messageTimeline.text.attachment": "添付",
"messageBlock.tool.header": "ツールコール",
"messageBlock.tool.unknown": "不明",
"messageBlock.tool.goToSession.label": "セッションへ移動",
"messageBlock.tool.goToSession.title": "セッションへ移動",
"messageBlock.tool.goToSession.unavailableTitle": "セッションはまだ利用できません",
"messageBlock.compaction.ariaLabel": "セッションのコンパクト化",
"messageBlock.compaction.autoLabel": "セッションを自動でコンパクト化しました",
"messageBlock.compaction.manualLabel": "セッションをあなたがコンパクト化しました",
"messageBlock.usage.input": "入力",
"messageBlock.usage.output": "出力",
"messageBlock.usage.reasoning": "推論",
"messageBlock.usage.cacheRead": "キャッシュ読み込み",
"messageBlock.usage.cacheWrite": "キャッシュ書き込み",
"messageBlock.usage.cost": "コスト",
"messageBlock.step.agentLabel": "エージェント: {agent}",
"messageBlock.step.modelLabel": "モデル: {model}",
"messageBlock.reasoning.thinkingLabel": "思考",
"messageBlock.reasoning.expandAriaLabel": "思考を展開",
"messageBlock.reasoning.collapseAriaLabel": "思考を折りたたむ",
"messageBlock.reasoning.indicator.hide": "非表示",
"messageBlock.reasoning.indicator.view": "表示",
"messageBlock.reasoning.detailsAriaLabel": "推論の詳細",
"codeBlockInline.actions.copy": "コピー",
"codeBlockInline.actions.copied": "コピーしました!",
"messageItem.speaker.you": "あなた",
"messageItem.speaker.assistant": "アシスタント",
"messageItem.actions.revert": "戻す",
"messageItem.actions.revertTitle": "このメッセージまで戻す",
"messageItem.actions.fork": "フォーク",
"messageItem.actions.forkTitle": "このメッセージからフォーク",
"messageItem.actions.copy": "コピー",
"messageItem.actions.copyTitle": "メッセージをコピー",
"messageItem.actions.copied": "コピーしました!",
"messageItem.status.queued": "待機中",
"messageItem.status.generating": "生成中...",
"messageItem.status.sending": "送信中...",
"messageItem.status.failedToSend": "メッセージの送信に失敗しました",
"messageItem.attachment.defaultName": "添付ファイル",
"messageItem.attachment.downloadAriaLabel": "{name} をダウンロード",
"messageItem.agentMeta.agentLabel": "エージェント: {agent}",
"messageItem.agentMeta.modelLabel": "モデル: {model}",
"messageItem.errors.authenticationFallback": "認証エラー",
"messageItem.errors.outputLengthExceeded": "メッセージ出力が長すぎます",
"messageItem.errors.requestAborted": "リクエストが中断されました",
"messageItem.errors.unknownFallback": "不明なエラーが発生しました",
"attachmentChip.removeAriaLabel": "添付を削除",
"expandButton.toggleAriaLabel": "チャット入力欄の高さを切り替え",
"promptInput.placeholder.shell": "シェルコマンドを実行 (Esc で終了)...",
"promptInput.placeholder.default": "メッセージ、@file、@agent を入力、または画像/テキストを貼り付け...",
"promptInput.hints.shell.exit": "でシェルモードを終了",
"promptInput.hints.shell.enable": "シェルモード",
"promptInput.hints.commands": "コマンド",
"promptInput.history.previousAriaLabel": "前のプロンプト",
"promptInput.history.nextAriaLabel": "次のプロンプト",
"promptInput.overlay.newLine": "改行",
"promptInput.overlay.send": "送信",
"promptInput.overlay.filesAgents": "ファイル/エージェント",
"promptInput.overlay.history": "履歴",
"promptInput.overlay.attachments": "• {count} 件のファイルを添付",
"promptInput.overlay.shellModeActive": "シェルモードが有効",
"promptInput.overlay.press": "押す",
"promptInput.overlay.againToAbort": "もう一度押すとセッションを中断",
"promptInput.stopSession.ariaLabel": "セッションを停止",
"promptInput.stopSession.title": "セッションを停止",
"promptInput.send.ariaLabel": "メッセージを送信",
"promptInput.send.errorFallback": "メッセージの送信に失敗しました",
"promptInput.send.errorTitle": "送信に失敗",
} as const

View File

@@ -0,0 +1,51 @@
export const remoteAccessMessages = {
"remoteAccess.eyebrow": "リモート引き継ぎ",
"remoteAccess.title": "CodeNomad にリモート接続",
"remoteAccess.subtitle": "別のデバイスから CodeNomad を開くには、以下のアドレスを使用してください。",
"remoteAccess.close": "リモートアクセスを閉じる",
"remoteAccess.refresh": "更新",
"remoteAccess.sections.listeningMode.label": "リッスンモード",
"remoteAccess.sections.listeningMode.help": "全インターフェースにバインドするか localhost のみにするかで、リモート引き継ぎを許可/制限します。",
"remoteAccess.toggle.on": "オン",
"remoteAccess.toggle.off": "オフ",
"remoteAccess.toggle.title": "他の IP からの接続を許可",
"remoteAccess.toggle.caption.all": "0.0.0.0 にバインド",
"remoteAccess.toggle.caption.local": "127.0.0.1 にバインド",
"remoteAccess.toggle.note": "変更には再起動が必要で、すべての稼働中インスタンスが一時的に停止します。サーバー再起動後に以下のアドレスを共有してください。",
"remoteAccess.listeningMode.restartConfirm.message": "リッスンモードを適用するため再起動しますか?実行中のインスタンスはすべて停止します。",
"remoteAccess.listeningMode.restartConfirm.title.all": "他のデバイスに公開",
"remoteAccess.listeningMode.restartConfirm.title.local": "このデバイスに限定",
"remoteAccess.listeningMode.restartConfirm.confirmLabel": "今すぐ再起動",
"remoteAccess.listeningMode.restartConfirm.cancelLabel": "キャンセル",
"remoteAccess.restart.errorManual": "自動で再起動できませんでした。変更を適用するにはアプリを再起動してください。",
"remoteAccess.sections.serverPassword.label": "サーバーパスワード",
"remoteAccess.sections.serverPassword.help": "リモート引き継ぎにはパスワードが必要です。覚えやすいものを設定して他のデバイスからのログインを有効にします。",
"remoteAccess.authStatus.unavailable": "認証状態を取得できません。",
"remoteAccess.username": "ユーザー名: {username}",
"remoteAccess.password.status.set": "リモートアクセス用のパスワードが設定されています。",
"remoteAccess.password.status.unset": "まだ覚えやすいパスワードが設定されていません。設定してリモート引き継ぎログインを有効にしてください。",
"remoteAccess.password.actions.cancel": "キャンセル",
"remoteAccess.password.actions.change": "パスワードを変更",
"remoteAccess.password.actions.set": "パスワードを設定",
"remoteAccess.password.form.newPassword": "新しいパスワード",
"remoteAccess.password.form.confirmPassword": "パスワードの確認",
"remoteAccess.password.form.placeholder": "8 文字以上",
"remoteAccess.password.error.tooShort": "パスワードは 8 文字以上である必要があります。",
"remoteAccess.password.error.mismatch": "パスワードが一致しません。",
"remoteAccess.password.save.saving": "保存中…",
"remoteAccess.password.save.label": "パスワードを保存",
"remoteAccess.sections.addresses.label": "到達可能なアドレス",
"remoteAccess.sections.addresses.help": "別の端末から起動またはスキャンして操作を引き継ぎます。",
"remoteAccess.addresses.loading": "アドレスを読み込み中…",
"remoteAccess.addresses.none": "まだ利用可能なアドレスがありません。",
"remoteAccess.address.scope.network": "ネットワーク",
"remoteAccess.address.scope.loopback": "ループバック",
"remoteAccess.address.scope.internal": "内部",
"remoteAccess.address.open": "開く",
"remoteAccess.address.showQr": "QR を表示",
"remoteAccess.address.hideQr": "QR を非表示",
"remoteAccess.address.qrAlt": "{url} の QR",
} as const

View File

@@ -0,0 +1,67 @@
export const sessionMessages = {
"sessionPicker.title": "OpenCode • {folder}",
"sessionPicker.empty.noPrevious": "以前のセッションはありません",
"sessionPicker.resume.title": "セッションを再開 ({count}):",
"sessionPicker.session.untitled": "無題",
"sessionPicker.divider.or": "または",
"sessionPicker.new.title": "新しいセッションを開始:",
"sessionPicker.agents.loading": "エージェントを読み込み中...",
"sessionPicker.actions.creating": "作成中...",
"sessionPicker.actions.createSession": "セッションを作成",
"sessionPicker.actions.cancel": "キャンセル",
"sessionList.header.title": "セッション",
"sessionList.session.untitled": "無題",
"sessionList.status.working": "作業中",
"sessionList.status.compacting": "圧縮中",
"sessionList.status.idle": "待機中",
"sessionList.status.needsPermission": "許可待ち",
"sessionList.status.needsInput": "入力待ち",
"sessionList.expand.collapseAriaLabel": "セッションを折りたたむ",
"sessionList.expand.expandAriaLabel": "セッションを展開",
"sessionList.expand.collapseTitle": "折りたたむ",
"sessionList.expand.expandTitle": "展開",
"sessionList.actions.copyId.ariaLabel": "セッション ID をコピー",
"sessionList.actions.copyId.title": "セッション ID をコピー",
"sessionList.actions.rename.ariaLabel": "セッション名を変更",
"sessionList.actions.rename.title": "セッション名を変更",
"sessionList.actions.delete.ariaLabel": "セッションを削除",
"sessionList.actions.delete.title": "セッションを削除",
"sessionList.copyId.success": "セッション ID をコピーしました",
"sessionList.copyId.error": "セッション ID をコピーできません",
"sessionList.delete.error": "セッションを削除できません",
"sessionList.rename.error": "セッション名を変更できません",
"sessionRenameDialog.title": "セッション名を変更",
"sessionRenameDialog.description.withLabel": "\"{label}\" のタイトルを更新します。",
"sessionRenameDialog.description.default": "このセッションの新しいタイトルを設定します。",
"sessionRenameDialog.input.label": "セッション名",
"sessionRenameDialog.input.placeholder": "セッション名を入力",
"sessionRenameDialog.actions.cancel": "キャンセル",
"sessionRenameDialog.actions.rename": "変更",
"sessionRenameDialog.actions.renaming": "変更中…",
"sessionView.fallback.sessionNotFound": "セッションが見つかりません",
"sessionView.alerts.abortFailed.message": "セッションを停止できませんでした",
"sessionView.alerts.abortFailed.title": "停止に失敗",
"sessionView.alerts.revertFailed.message": "メッセージへ戻せませんでした",
"sessionView.alerts.revertFailed.title": "復元に失敗",
"sessionView.alerts.forkFailed.message": "セッションのフォークに失敗しました",
"sessionView.alerts.forkFailed.title": "フォークに失敗",
"sessionView.attachments.expandPastedTextAriaLabel": "貼り付けたテキストを展開",
"sessionView.attachments.insertPastedTextTitle": "貼り付けたテキストを挿入",
"sessionView.attachments.removeAriaLabel": "添付を削除",
"sessionEvents.sessionCompactedToast": "セッション {label} をコンパクト化しました",
"sessionEvents.sessionError.unknown": "不明なエラー",
"sessionEvents.sessionError.title": "セッションエラー",
"sessionEvents.sessionError.message": "エラー: {message}",
"sessionState.cleanup.deepConfirm.message": "このクリーンアップは時間がかかる場合があり、意図しないセッションを削除する可能性があります。続行しますか?",
"sessionState.cleanup.deepConfirm.title": "セッションを徹底クリーン",
"sessionState.cleanup.deepConfirm.detail": "徹底クリーンは、メッセージがないセッションをすべて削除し、完了したサブエージェントのセッションを取り除き、未使用のセッションフォークを整理します。",
"sessionState.cleanup.deepConfirm.confirmLabel": "続行",
"sessionState.cleanup.deepConfirm.cancelLabel": "キャンセル",
"sessionState.cleanup.toast.one": "{count} 件の空セッションを整理しました",
"sessionState.cleanup.toast.other": "{count} 件の空セッションを整理しました",
} as const

View File

@@ -0,0 +1,54 @@
export const settingsMessages = {
"instanceServiceStatus.sections.lsp": "LSP サーバー",
"instanceServiceStatus.sections.mcp": "MCP サーバー",
"instanceServiceStatus.sections.plugins": "プラグイン",
"instanceServiceStatus.lsp.loading": "LSP サーバーを読み込み中...",
"instanceServiceStatus.lsp.empty": "LSP サーバーが検出されませんでした。",
"instanceServiceStatus.lsp.status.connected": "接続済み",
"instanceServiceStatus.lsp.status.error": "エラー",
"instanceServiceStatus.mcp.loading": "MCP サーバーを読み込み中...",
"instanceServiceStatus.mcp.empty": "MCP サーバーが検出されませんでした。",
"instanceServiceStatus.mcp.toggleAriaLabel": "{name} MCP サーバーを切り替え",
"instanceServiceStatus.plugins.loading": "プラグインを読み込み中...",
"instanceServiceStatus.plugins.empty": "プラグインが設定されていません。",
"permissionBanner.pendingRequests.one": "{count} 件の保留中リクエスト",
"permissionBanner.pendingRequests.other": "{count} 件の保留中リクエスト",
"permissionBanner.detail.permission.one": "{count} 件の許可",
"permissionBanner.detail.permission.other": "{count} 件の許可",
"permissionBanner.detail.question.one": "{count} 件の質問",
"permissionBanner.detail.question.other": "{count} 件の質問",
"permissionBanner.detail.wrapper": " ({detail})",
"agentSelector.placeholder": "エージェントを選択...",
"agentSelector.badge.subagent": "サブエージェント",
"agentSelector.none": "なし",
"agentSelector.trigger.primary": "エージェント: {agent}",
"modelSelector.placeholder.search": "モデルを検索...",
"modelSelector.none": "なし",
"modelSelector.trigger.primary": "モデル: {model}",
"thinkingSelector.variant.default": "デフォルト",
"thinkingSelector.label": "思考: {variant}",
"envEditor.title": "環境変数",
"envEditor.count.one": "{count} 個)",
"envEditor.count.other": "{count} 個)",
"envEditor.fields.name.placeholder": "変数名",
"envEditor.fields.name.readOnlyTitle": "変数名 (読み取り専用)",
"envEditor.fields.value.placeholder": "変数値",
"envEditor.actions.remove.title": "変数を削除",
"envEditor.actions.add.title": "変数を追加",
"envEditor.empty": "環境変数が設定されていません。上で変数を追加して OpenCode 環境をカスタマイズしてください。",
"envEditor.help": "これらの変数はインスタンス起動時に OpenCode 環境で利用できます。",
"contextUsagePanel.headings.tokens": "トークン",
"contextUsagePanel.headings.context": "コンテキスト",
"contextUsagePanel.labels.input": "入力",
"contextUsagePanel.labels.output": "出力",
"contextUsagePanel.labels.cost": "コスト",
"contextUsagePanel.labels.used": "使用",
"contextUsagePanel.labels.available": "残り",
"contextUsagePanel.unavailable": "--",
} as const

View File

@@ -0,0 +1,6 @@
export const timeMessages = {
"time.relative.justNow": "たった今",
"time.relative.daysAgoShort": "{count} 日前",
"time.relative.hoursAgoShort": "{count} 時間前",
"time.relative.minutesAgoShort": "{count} 分前",
} as const

View File

@@ -0,0 +1,121 @@
export const toolCallMessages = {
"toolCall.pending.waitingToRun": "実行待ち...",
"toolCall.error.label": "エラー:",
"toolCall.diff.label": "Diff",
"toolCall.diff.label.withPath": "Diff · {path}",
"toolCall.diff.viewMode.ariaLabel": "diff 表示モード",
"toolCall.diff.viewMode.split": "分割",
"toolCall.diff.viewMode.unified": "ユニファイド",
"toolCall.diagnostics.title": "診断",
"toolCall.diagnostics.ariaLabel": "診断",
"toolCall.diagnostics.ariaLabel.withLabel": "診断 {label}",
"toolCall.diagnostics.severity.error.short": "エラー",
"toolCall.diagnostics.severity.warning.short": "警告",
"toolCall.diagnostics.severity.info.short": "情報",
"toolCall.renderer.toolName.shell": "シェル",
"toolCall.renderer.toolName.fetch": "フェッチ",
"toolCall.renderer.toolName.invalid": "無効",
"toolCall.renderer.toolName.plan": "計画",
"toolCall.renderer.toolName.applyPatch": "パッチを適用",
"toolCall.renderer.action.working": "処理中...",
"toolCall.renderer.action.writingCommand": "コマンド作成中...",
"toolCall.renderer.action.preparingEdit": "編集を準備中...",
"toolCall.renderer.action.readingFile": "ファイルを読み込み中...",
"toolCall.renderer.action.preparingWrite": "書き込みを準備中...",
"toolCall.renderer.action.preparingPatch": "パッチを準備中...",
"toolCall.renderer.action.planning": "計画中...",
"toolCall.renderer.action.fetchingFromWeb": "Web から取得中...",
"toolCall.renderer.action.findingFiles": "ファイルを検索中...",
"toolCall.renderer.action.searchingContent": "内容を検索中...",
"toolCall.renderer.action.listingDirectory": "ディレクトリ一覧を取得中...",
"toolCall.renderer.bash.title.timeout": "タイムアウト: {timeout}",
"toolCall.renderer.read.detail.offset": "オフセット: {offset}",
"toolCall.renderer.read.detail.limit": "上限: {limit}",
"toolCall.renderer.todo.empty": "まだ項目がありません。",
"toolCall.renderer.todo.status.pending": "保留",
"toolCall.renderer.todo.status.inProgress": "進行中",
"toolCall.renderer.todo.status.completed": "完了",
"toolCall.renderer.todo.status.cancelled": "キャンセル",
"toolCall.renderer.todo.title.plan": "計画",
"toolCall.renderer.todo.title.creating": "計画を作成中",
"toolCall.renderer.todo.title.completing": "計画を完了中",
"toolCall.renderer.todo.title.updating": "計画を更新中",
"toolCall.permission.status.required": "許可が必要です",
"toolCall.permission.status.queued": "許可待ち",
"toolCall.permission.requestedDiff.label": "要求された diff",
"toolCall.permission.requestedDiff.withPath": "要求された diff · {path}",
"toolCall.permission.queuedText": "先行する許可への回答を待機中です。",
"toolCall.permission.actions.allowOnce": "一度だけ許可",
"toolCall.permission.actions.alwaysAllow": "常に許可",
"toolCall.permission.actions.deny": "拒否",
"toolCall.permission.shortcuts.allowOnce": "一度だけ許可",
"toolCall.permission.shortcuts.alwaysAllow": "常に許可",
"toolCall.permission.shortcuts.deny": "拒否",
"toolCall.permission.errors.unableToUpdate": "許可を更新できません",
"permissionApproval.title": "リクエスト",
"permissionApproval.empty": "保留中のリクエストはありません。",
"permissionApproval.kind.permission": "許可",
"permissionApproval.kind.question": "質問",
"permissionApproval.questionCount.one": "{count} 件の質問",
"permissionApproval.questionCount.other": "{count} 件の質問",
"permissionApproval.status.active": "有効",
"permissionApproval.actions.closeAriaLabel": "閉じる",
"permissionApproval.actions.goToSession": "セッションへ移動",
"permissionApproval.actions.loadingSession": "読み込み中…",
"permissionApproval.actions.loadSession": "セッションを読み込む",
"permissionApproval.actions.allowOnce": "一度だけ許可",
"permissionApproval.actions.alwaysAllow": "常に許可",
"permissionApproval.actions.deny": "拒否",
"permissionApproval.fallbackHint": "詳しい情報を見るにはセッションを読み込んでください。",
"permissionApproval.errors.unableToUpdatePermission": "許可を更新できません",
"toolCall.question.status.required": "質問が必要です",
"toolCall.question.status.queued": "質問待ち",
"toolCall.question.status.questions": "質問",
"toolCall.question.action.awaitingAnswers": "回答待ち...",
"toolCall.question.title.questions": "質問",
"toolCall.question.title.askingQuestions": "質問中",
"toolCall.question.type.one": "質問",
"toolCall.question.type.other": "質問",
"toolCall.question.number": "Q{number}:",
"toolCall.question.multiple": "複数",
"toolCall.question.custom.title": "カスタム回答を入力",
"toolCall.question.custom.label": "カスタム回答",
"toolCall.question.custom.placeholder": "回答を入力",
"toolCall.question.actions.submit": "送信",
"toolCall.question.actions.dismiss": "閉じる",
"toolCall.question.shortcuts.submit": "送信",
"toolCall.question.shortcuts.dismiss": "閉じる",
"toolCall.question.queuedText": "先行する回答を待機中です。",
"toolCall.question.validation.answerAll": "送信する前にすべての質問に回答してください。",
"toolCall.question.errors.unableToReply": "回答できません",
"toolCall.question.errors.unableToDismiss": "閉じられません",
"toolCall.task.action.delegating": "委任中...",
"toolCall.task.sections.prompt": "プロンプト",
"toolCall.task.sections.steps": "手順",
"toolCall.task.sections.output": "出力",
"toolCall.task.steps.count": "{count} 手順",
"toolCall.task.meta.agentModel": "エージェント: {agent} • モデル: {model}",
"toolCall.task.meta.agent": "エージェント: {agent}",
"toolCall.task.meta.model": "モデル: {model}",
"toolCall.status.pending": "保留",
"toolCall.status.running": "実行中",
"toolCall.status.completed": "完了",
"toolCall.status.error": "エラー",
"toolCall.status.unknown": "不明",
"toolCall.applyPatch.action.preparing": "apply_patch を準備中...",
"toolCall.applyPatch.title.withFileCount.one": "{tool} ({count} 件のファイル)",
"toolCall.applyPatch.title.withFileCount.other": "{tool} ({count} 件のファイル)",
"toolCall.applyPatch.fileFallback": "ファイル {number}",
} as const