feat(i18n): add multi-language support (ja/ko/vi/ru/zh-TW) with system auto-detection
- Extend AppLanguage to 7 locales: zh-CN, zh-TW, en, ja, ko, vi, ru - Auto-detect system language via navigator.languages; fallback to English - Add BCP47 locale mapping for date formatting and sorting - Create 50 translation JSON files (5 languages × 10 namespaces, 1137 keys each) - Update language selector with native language names - Extend locale key parity test to cover all 7 languages (70 assertions) - Add VNC/RDP desktop, serial terminal, AI agent, port forwarding, and SFTP features - Add credential encryption, host metrics, session backup crypto, and zmodem bridge - Update Rust backend: desktop services, host metrics, SSH/SFTP enhancements
This commit is contained in:
1 parent
fea6d8db04
commit
b0d0e3a5f3
301 files changed
+28002
-2705
No files matched your search
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"panel": {
|
||||
"title": "Агент CLI",
|
||||
"modelConfigured": "{{provider}} · {{model}}",
|
||||
"modelNotConfigured": "Модель не настроена",
|
||||
"sshReady": "SSH · {{target}}",
|
||||
"sshNotConnected": "Удалённое SSH-подключение отсутствует",
|
||||
"defaultTarget": "Текущий SSH-сеанс",
|
||||
"emptyHint": "Опишите задачу эксплуатации и отправьте. Продолжайте в той же ветке или нажмите + для новой темы.",
|
||||
"newTopic": "Новая тема",
|
||||
"close": "Закрыть",
|
||||
"thinking": "Размышление…",
|
||||
"conclusion": "Итог",
|
||||
"copy": "Копировать",
|
||||
"copied": "Скопировано",
|
||||
"stop": "Остановить",
|
||||
"send": "Отправить",
|
||||
"placeholder": "Задача или уточнение… (Enter — отправить, Shift+Enter — новая строка)",
|
||||
"hintFollowUp": "Уточнения включают контекст этой ветки",
|
||||
"hintSelection": "Будет включено {{lines}} выбранных строк",
|
||||
"hintSteps": "До {{max}} шагов · ничего не сохраняется",
|
||||
"footerNote": "Высокий риск требует подтверждения · критический блокируется · сеанс не сохраняется"
|
||||
},
|
||||
"safety": {
|
||||
"aria": "Режим безопасности агента",
|
||||
"strict": {
|
||||
"label": "Строгий",
|
||||
"short": "Подтверждение от среднего риска",
|
||||
"description": "Изменения файлов, правки прав доступа и команды повышенного риска требуют подтверждения. Лучше всего для продакшена или незнакомых хостов."
|
||||
},
|
||||
"relaxed": {
|
||||
"label": "Свободный",
|
||||
"short": "Подтверждать только высокий риск",
|
||||
"description": "Команды только для чтения и обычные правки выполняются автоматически; удаления, перезапуски, установки и т. п. требуют подтверждения."
|
||||
}
|
||||
},
|
||||
"risk": {
|
||||
"safe": "Безопасно",
|
||||
"low": "Низкий риск",
|
||||
"medium": "Средний риск",
|
||||
"high": "Высокий риск",
|
||||
"critical": "Заблокировано"
|
||||
},
|
||||
"step": {
|
||||
"round": "Шаг {{round}}",
|
||||
"awaiting": "Ожидает подтверждения",
|
||||
"running": "Выполняется",
|
||||
"done": "Готово",
|
||||
"confirmTitle": "Шаг {{round}} · {{risk}}",
|
||||
"confirmMessage": "SSH · {{target}}\n{{mode}}\n\n$ {{command}}",
|
||||
"rejected": "Команда шага {{round}} отклонена.",
|
||||
"terminated": "Прервано",
|
||||
"stoppedMessage": "Остановлено. Запрошено прерывание выполняемой удалённой команды."
|
||||
},
|
||||
"confirm": {
|
||||
"reject": "Отклонить",
|
||||
"once": "Один раз",
|
||||
"always": "Всегда",
|
||||
"hint": "Enter · Один раз Esc · Отклонить Всегда · пропускать похожие подтверждения в этом сеансе"
|
||||
},
|
||||
"error": {
|
||||
"noProvider": "Сначала настройте AI-провайдера в Настройки → AI",
|
||||
"noApiKey": "Для «{{provider}}» не сохранён API-ключ",
|
||||
"emptyTask": "Введите задачу или уточнение",
|
||||
"sshRequired": "Требуется подключённый удалённый SSH-сеанс",
|
||||
"modelEmpty": "Модель не вернула содержимого",
|
||||
"protocolFailed": "Модель дважды нарушила протокол инструментов; остановлено",
|
||||
"noConclusion": "Модель не вернула пригодного итога",
|
||||
"multipleCommands": "Модель вернула несколько команд; выполнение отклонено",
|
||||
"invalidCommand": "Модель не вернула единственную однострочную команду; выполнение отклонено",
|
||||
"repeatLoop": "Обнаружен повторяющийся цикл команд; остановлено: {{command}}",
|
||||
"criticalBlocked": "Команда попала под деструктивную жёсткую блокировку; обход невозможен: {{command}}",
|
||||
"execFailed": "Сбой ssh-exec: {{error}}",
|
||||
"execUnknown": "Неизвестная ошибка",
|
||||
"execNoOutput": "Команда завершилась без вывода",
|
||||
"maxSteps": "Достигнут лимит в {{max}} шагов; сузьте задачу и повторите"
|
||||
},
|
||||
"output": {
|
||||
"empty": "(пустой вывод)",
|
||||
"truncatedMiddle": "... [пропущено {{count}} строк] ...",
|
||||
"totalLines": "Всего строк: {{count}}{{truncatedSuffix}}",
|
||||
"truncatedSuffix": " (начало/конец сохранены)",
|
||||
"errorLines": "Возможные строки ошибки/предупреждения ({{count}}):\n{{lines}}",
|
||||
"noErrorKeywords": "Очевидных ключевых слов ошибок не найдено",
|
||||
"snippetLabel": "Фрагмент вывода:\n{{snippet}}"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user