Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions packages/opencode/src/cli/cmd/tui/i18n/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,17 @@ export const dict = {
"tui.command.provider.logout.title": "Cerrar sesión",
"tui.command.console.org.switch.title": "Cambiar de organización",
"tui.command.opencode.status.title": "Ver estado",
"tui.command.worktree.list.title": "Worktrees",
"tui.command.image.switch.title": "Cambiar imagen de fondo",
"tui.command.theme.switch.title": "Cambiar tema",
"tui.dialog.image.import.invalid": "Solo se admiten archivos .png, .jpg y .jpeg",
"tui.dialog.image.import.not_found": "Archivo no encontrado",
"tui.dialog.image.import.option": "Elegir nueva imagen…",
"tui.dialog.image.import.placeholder": "/ruta/a/imagen.png o .jpg",
"tui.dialog.image.import.success": "Imagen de fondo importada",
"tui.dialog.image.import.title": "Importar imagen de fondo",
"tui.dialog.image.none": "Ninguna (usar fondo estrellado)",
"tui.dialog.image.title": "Imágenes de fondo",
"tui.command.logo.switch.title": "Cambiar diseño de logo",
"tui.dialog.logo.title": "Diseño de logo",
"tui.dialog.logo.option.classic": "Clásico (negrita)",
Expand Down Expand Up @@ -419,6 +429,25 @@ export const dict = {
"tui.command.tips.toggle.hide": "Ocultar sugerencias",
"tui.command.plugins.list.title": "Plugins",
"tui.command.plugins.install.title": "Instalar plugin",
"tui.dialog.login.flow.busy": "Iniciando sesión...",
"tui.dialog.login.flow.invalid_code": "Código inválido, inténtalo de nuevo",
"tui.dialog.login.flow.manual_hint": "¿No se abrió el navegador? Visita manualmente:",
"tui.dialog.login.flow.placeholder": "Pegar código (o esperar callback del navegador)",
"tui.dialog.login.flow.title": "Inicio de sesión MiMo",
"tui.dialog.login.flow.waiting": "Esperando autorización del navegador...",
"tui.dialog.login.import_claude": "Importar desde Claude Code",
"tui.dialog.login.import_claude.no_key": "Clave API de Claude Code no encontrada",
"tui.dialog.login.import_claude.read_failed": "Error al leer ~/.claude/settings.json",
"tui.dialog.login.import_claude.success": "Importado desde Claude Code",
"tui.dialog.login.mimo_free": "MiMo Auto (free)",
"tui.dialog.login.mimo_free.desc": "Canal anónimo gratuito — no requiere inicio de sesión",
"tui.dialog.login.mimo_free.success": "MiMo Auto (free) listo — modelo predeterminado: mimo/mimo-auto",
"tui.dialog.login.mimo_free.unavailable": "Proveedor MiMo Auto (free) no cargado",
"tui.dialog.login.other": "Otro proveedor",
"tui.dialog.login.start_failed": "Error al iniciar sesión",
"tui.dialog.login.title": "Seleccionar proveedor",
"tui.dialog.login.xiaomi": "Xiaomi",
"tui.dialog.login.xiaomi.desc": "(Recomendado)",

// Question i18n — plan_exit
"tui.question.plan_exit.question": "El plan en {{plan}} está completo. ¿Desea cambiar al agente build para comenzar la implementación?",
Expand All @@ -430,4 +459,16 @@ export const dict = {

// Session badges
"tui.session.badge.auto": "Auto",
// CLI: providers command (auth login)
"cli.providers.mimo.recommended_hint": "recomendado",
"cli.providers.mimo_free.default_set": "Modelo predeterminado establecido en mimo/mimo-auto (contexto 1M, gratuito)",
"cli.providers.mimo_free.failed": "Verificación de MiMo Auto (free) fallida",
"cli.providers.mimo_free.hint": "Canal anónimo gratuito / mimo-auto",
"cli.providers.mimo_free.ready": "Canal MiMo Auto (free) listo",
"cli.providers.mimo_free.usage_hint": "No requiere inicio de sesión — solo ejecuta mimo. Para modelos de pago/premium, elige el inicio de sesión del navegador MiMo.",
"cli.providers.mimo_free.verifying": "Verificando canal MiMo Auto (free)...",
"cli.providers.mimo_login.decrypt_exhausted": "Descifrado fallido, se alcanzó el máximo de reintentos",
"cli.providers.mimo_login.decrypt_retry": "Descifrado fallido, inténtalo de nuevo ({remaining} intentos restantes)",
"cli.providers.other": "Otro proveedor",
"cli.providers.select": "Seleccionar proveedor",
} satisfies Partial<Record<Keys, string>>
27 changes: 27 additions & 0 deletions packages/opencode/src/cli/cmd/tui/i18n/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,17 @@ export const dict = {
"tui.command.provider.logout.title": "Déconnexion",
"tui.command.console.org.switch.title": "Changer d'organisation",
"tui.command.opencode.status.title": "Voir l'état",
"tui.command.worktree.list.title": "Arbres de travail",
"tui.command.image.switch.title": "Changer l'image de fond",
"tui.command.theme.switch.title": "Changer de thème",
"tui.dialog.image.import.invalid": "Seuls les fichiers .png, .jpg et .jpeg sont pris en charge",
"tui.dialog.image.import.not_found": "Fichier introuvable",
"tui.dialog.image.import.option": "Choisir une nouvelle image…",
"tui.dialog.image.import.placeholder": "/chemin/vers/image.png ou .jpg",
"tui.dialog.image.import.success": "Image d'arrière-plan importée",
"tui.dialog.image.import.title": "Importer une image d'arrière-plan",
"tui.dialog.image.none": "Aucune (utiliser le fond étoilé)",
"tui.dialog.image.title": "Images d'arrière-plan",
"tui.command.logo.switch.title": "Changer le design du logo",
"tui.dialog.logo.title": "Design du logo",
"tui.dialog.logo.option.classic": "Classique (gras)",
Expand Down Expand Up @@ -397,6 +407,8 @@ export const dict = {
"tui.voice.error.no_recorder": "Aucun outil d'enregistrement trouvé, installez sox",
"tui.voice.error.too_short": "Enregistrement trop court",
"tui.voice.error.network": "La transcription a échoué, vérifiez votre réseau",
"tui.voice.error.empty_send": "Rien à envoyer",
"tui.voice.error.unknown_agent": "Agent \"{{name}}\" introuvable",
"tui.command.prompt.stash.title": "Mettre l'invite de côté",
"tui.command.prompt.stash.pop.title": "Récupérer l'invite",
"tui.command.prompt.stash.list.title": "Liste des invites mises de côté",
Expand All @@ -406,6 +418,21 @@ export const dict = {
"tui.command.tips.toggle.hide": "Masquer les astuces",
"tui.command.plugins.list.title": "Plugins",
"tui.command.plugins.install.title": "Installer un plugin",
"tui.dialog.login.flow.busy": "Connexion en cours...",
"tui.dialog.login.flow.invalid_code": "Code invalide, veuillez réessayer",
"tui.dialog.login.flow.manual_hint": "Le navigateur ne s'est pas ouvert ? Visitez manuellement :",
"tui.dialog.login.flow.placeholder": "Coller le code (ou attendre le callback navigateur)",
"tui.dialog.login.flow.title": "Connexion MiMo",
"tui.dialog.login.flow.waiting": "En attente de l'autorisation du navigateur...",
"tui.dialog.login.import_claude": "Importer depuis Claude Code",
"tui.dialog.login.import_claude.no_key": "Clé API Claude Code introuvable",
"tui.dialog.login.import_claude.read_failed": "Échec de lecture de ~/.claude/settings.json",
"tui.dialog.login.import_claude.success": "Importé depuis Claude Code",
"tui.dialog.login.other": "Autre fournisseur",
"tui.dialog.login.start_failed": "Échec du démarrage de la connexion",
"tui.dialog.login.title": "Sélectionner un fournisseur",
"tui.dialog.login.xiaomi": "Xiaomi",
"tui.dialog.login.xiaomi.desc": "(Recommandé)",

// MiMo Auto (free) — TUI login dialog
"tui.dialog.login.mimo_free": "MiMo Auto (free)",
Expand Down
27 changes: 27 additions & 0 deletions packages/opencode/src/cli/cmd/tui/i18n/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,17 @@ export const dict = {
"tui.command.provider.logout.title": "ログアウト",
"tui.command.console.org.switch.title": "組織を切り替え",
"tui.command.opencode.status.title": "ステータスを表示",
"tui.command.worktree.list.title": "ワークツリー",
"tui.command.image.switch.title": "背景画像を切り替え",
"tui.command.theme.switch.title": "テーマを切り替え",
"tui.dialog.image.import.invalid": ".png、.jpg、.jpeg ファイルのみサポートされています",
"tui.dialog.image.import.not_found": "ファイルが見つかりません",
"tui.dialog.image.import.option": "新しい画像を選択…",
"tui.dialog.image.import.placeholder": "/path/to/image.png または .jpg",
"tui.dialog.image.import.success": "背景画像をインポートしました",
"tui.dialog.image.import.title": "背景画像をインポート",
"tui.dialog.image.none": "なし(星空背景を使用)",
"tui.dialog.image.title": "背景画像",
"tui.command.logo.switch.title": "ロゴデザインを切り替え",
"tui.dialog.logo.title": "ロゴデザイン",
"tui.dialog.logo.option.classic": "クラシック(太字)",
Expand Down Expand Up @@ -349,6 +359,8 @@ export const dict = {
"tui.voice.error.no_recorder": "録音ツールが見つかりません。sox をインストールしてください",
"tui.voice.error.too_short": "録音時間が短すぎます",
"tui.voice.error.network": "文字起こしに失敗しました。ネットワークを確認してください",
"tui.voice.error.empty_send": "送信する内容がありません",
"tui.voice.error.unknown_agent": "エージェント「{{name}}」が見つかりません",
"tui.command.prompt.stash.title": "プロンプトを退避",
"tui.command.prompt.stash.pop.title": "退避から復元",
"tui.command.prompt.stash.list.title": "退避一覧",
Expand All @@ -358,6 +370,21 @@ export const dict = {
"tui.command.tips.toggle.hide": "ヒントを非表示",
"tui.command.plugins.list.title": "プラグイン",
"tui.command.plugins.install.title": "プラグインをインストール",
"tui.dialog.login.flow.busy": "ログイン中...",
"tui.dialog.login.flow.invalid_code": "無効なコードです。再試行してください",
"tui.dialog.login.flow.manual_hint": "ブラウザが開かない場合は手動でアクセス:",
"tui.dialog.login.flow.placeholder": "コードを貼り付け(またはブラウザコールバックを待つ)",
"tui.dialog.login.flow.title": "MiMo ログイン",
"tui.dialog.login.flow.waiting": "ブラウザ認証を待っています...",
"tui.dialog.login.import_claude": "Claude Code からインポート",
"tui.dialog.login.import_claude.no_key": "Claude Code の API キーが見つかりません",
"tui.dialog.login.import_claude.read_failed": "~/.claude/settings.json の読み込みに失敗しました",
"tui.dialog.login.import_claude.success": "Claude Code からインポートしました",
"tui.dialog.login.other": "その他のプロバイダー",
"tui.dialog.login.start_failed": "ログインの開始に失敗しました",
"tui.dialog.login.title": "プロバイダーを選択",
"tui.dialog.login.xiaomi": "Xiaomi",
"tui.dialog.login.xiaomi.desc": "(推奨)",

// MiMo Auto (free) — TUI login dialog
"tui.dialog.login.mimo_free": "MiMo Auto (free)",
Expand Down
30 changes: 30 additions & 0 deletions packages/opencode/src/cli/cmd/tui/i18n/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,17 @@ export const dict = {
"tui.command.provider.logout.title": "Выйти",
"tui.command.console.org.switch.title": "Сменить организацию",
"tui.command.opencode.status.title": "Посмотреть статус",
"tui.command.worktree.list.title": "Рабочие деревья",
"tui.command.image.switch.title": "Сменить фоновое изображение",
"tui.command.theme.switch.title": "Сменить тему",
"tui.dialog.image.import.invalid": "Поддерживаются только файлы .png, .jpg и .jpeg",
"tui.dialog.image.import.not_found": "Файл не найден",
"tui.dialog.image.import.option": "Выбрать новое изображение…",
"tui.dialog.image.import.placeholder": "/путь/к/изображению.png или .jpg",
"tui.dialog.image.import.success": "Фоновое изображение импортировано",
"tui.dialog.image.import.title": "Импорт фонового изображения",
"tui.dialog.image.none": "Нет (использовать звёздный фон)",
"tui.dialog.image.title": "Фоновые изображения",
"tui.command.logo.switch.title": "Сменить дизайн логотипа",
"tui.dialog.logo.title": "Дизайн логотипа",
"tui.dialog.logo.option.classic": "Классический (жирный)",
Expand Down Expand Up @@ -400,6 +410,9 @@ export const dict = {
"tui.voice.disabled": "Голосовой ввод отключён",
"tui.voice.send.enabled": "Голосовая отправка включена — скажите「发送」или \"send it\"",
"tui.voice.send.disabled": "Голосовая отправка отключена",
"tui.command.voice.send.title": "Переключить голосовую отправку",
"tui.command.voice.send.title_off": "Голосовая отправка: отключена — нажмите для включения",
"tui.command.voice.send.title_on": "Голосовая отправка: включена — нажмите для отключения",
"tui.voice.control.enabled": "Голосовое управление включено — интеллектуальное редактирование с мультимодальной моделью (медленнее)",
"tui.voice.control.disabled": "Голосовое управление отключено — используется быстрая ASR транскрипция",
"tui.command.voice.control.title": "Переключить голосовое управление (мультимодальное)",
Expand All @@ -409,6 +422,8 @@ export const dict = {
"tui.voice.error.no_recorder": "Инструмент записи не найден, установите sox",
"tui.voice.error.too_short": "Запись слишком короткая",
"tui.voice.error.network": "Ошибка транскрипции, проверьте сеть",
"tui.voice.error.empty_send": "Нечего отправлять",
"tui.voice.error.unknown_agent": "Агент \"{{name}}\" не найден",
"tui.command.prompt.stash.title": "Сохранить ввод во временное хранилище",
"tui.command.prompt.stash.pop.title": "Восстановить из хранилища",
"tui.command.prompt.stash.list.title": "Список временных запросов",
Expand All @@ -418,6 +433,21 @@ export const dict = {
"tui.command.tips.toggle.hide": "Скрыть подсказки",
"tui.command.plugins.list.title": "Плагины",
"tui.command.plugins.install.title": "Установить плагин",
"tui.dialog.login.flow.busy": "Выполняется вход...",
"tui.dialog.login.flow.invalid_code": "Неверный код, попробуйте снова",
"tui.dialog.login.flow.manual_hint": "Браузер не открылся? Перейдите вручную:",
"tui.dialog.login.flow.placeholder": "Вставьте код (или дождитесь callback из браузера)",
"tui.dialog.login.flow.title": "Вход в MiMo",
"tui.dialog.login.flow.waiting": "Ожидание авторизации в браузере...",
"tui.dialog.login.import_claude": "Импорт из Claude Code",
"tui.dialog.login.import_claude.no_key": "API-ключ Claude Code не найден",
"tui.dialog.login.import_claude.read_failed": "Не удалось прочитать ~/.claude/settings.json",
"tui.dialog.login.import_claude.success": "Импортировано из Claude Code",
"tui.dialog.login.other": "Другой провайдер",
"tui.dialog.login.start_failed": "Не удалось начать вход",
"tui.dialog.login.title": "Выберите провайдера",
"tui.dialog.login.xiaomi": "Xiaomi",
"tui.dialog.login.xiaomi.desc": "(Рекомендуется)",

// MiMo Auto (free) — TUI login dialog
"tui.dialog.login.mimo_free": "MiMo Auto (free)",
Expand Down
32 changes: 32 additions & 0 deletions packages/opencode/src/cli/cmd/tui/i18n/zht.ts
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ export const dict = {
"tui.command.console.org.switch.title": "切換組織",
"tui.command.opencode.status.title": "檢視狀態",
"tui.command.worktree.list.title": "工作樹",
"tui.command.worktree.list.title": "工作樹",
"tui.command.theme.switch.title": "切換主題",
"tui.command.image.switch.title": "切換背景圖片",
"tui.dialog.image.title": "背景圖片",
Expand All @@ -214,6 +215,25 @@ export const dict = {
"tui.dialog.image.import.not_found": "檔案不存在",
"tui.dialog.image.import.success": "背景圖片已匯入",
"tui.dialog.image.none": "無(使用星空背景)",
"tui.dialog.login.flow.busy": "登入中…",
"tui.dialog.login.flow.invalid_code": "代碼無效,請重試",
"tui.dialog.login.flow.manual_hint": "瀏覽器沒有開啟?手動前往:",
"tui.dialog.login.flow.placeholder": "貼上代碼(或等待瀏覽器回呼)",
"tui.dialog.login.flow.title": "MiMo 登入",
"tui.dialog.login.flow.waiting": "等待瀏覽器授權…",
"tui.dialog.login.import_claude": "從 Claude Code 匯入",
"tui.dialog.login.import_claude.no_key": "找不到 Claude Code API 金鑰",
"tui.dialog.login.import_claude.read_failed": "無法讀取 ~/.claude/settings.json",
"tui.dialog.login.import_claude.success": "已從 Claude Code 匯入",
"tui.dialog.login.mimo_free": "MiMo Auto(免費)",
"tui.dialog.login.mimo_free.desc": "匿名免費通道 — 無需登入",
"tui.dialog.login.mimo_free.success": "MiMo Auto(免費)已就緒 — 預設模型設為 mimo/mimo-auto",
"tui.dialog.login.mimo_free.unavailable": "MiMo Auto(免費)供應商未載入",
"tui.dialog.login.other": "其他供應商",
"tui.dialog.login.start_failed": "登入啟動失敗",
"tui.dialog.login.title": "選擇供應商",
"tui.dialog.login.xiaomi": "Xiaomi",
"tui.dialog.login.xiaomi.desc": "(推薦)",
"tui.command.logo.switch.title": "切換 Logo 樣式",
"tui.dialog.logo.title": "Logo 樣式",
"tui.dialog.logo.option.classic": "經典(粗體)",
Expand Down Expand Up @@ -357,4 +377,16 @@ export const dict = {

// Session badges
"tui.session.badge.auto": "自動",
// CLI: providers command (auth login)
"cli.providers.mimo.recommended_hint": "推薦",
"cli.providers.mimo_free.default_set": "預設模型已設為 mimo/mimo-auto(1M 上下文,免費)",
"cli.providers.mimo_free.failed": "MiMo Auto(免費)驗證失敗",
"cli.providers.mimo_free.hint": "匿名免費通道 / mimo-auto",
"cli.providers.mimo_free.ready": "MiMo Auto(免費)通道已就緒",
"cli.providers.mimo_free.usage_hint": "無需登入 — 直接執行 mimo 即可。如需付費/進階模型,請選擇 MiMo 瀏覽器登入。",
"cli.providers.mimo_free.verifying": "正在驗證 MiMo Auto(免費)通道…",
"cli.providers.mimo_login.decrypt_exhausted": "解密失敗,已達最大重試次數",
"cli.providers.mimo_login.decrypt_retry": "解密失敗,請重試(剩餘 {remaining} 次)",
"cli.providers.other": "其他供應商",
"cli.providers.select": "選擇供應商",
} satisfies Partial<Record<Keys, string>>