From 985133852a22863c3995424c657fd8cf4ac2938f Mon Sep 17 00:00:00 2001 From: etherman-os Date: Tue, 5 May 2026 19:20:12 +0300 Subject: [PATCH] feat(i18n): add Turkish (tr) locale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add locales/tr.yaml with Turkish translations for all approval.* and gateway.* keys - Register 'tr' in SUPPORTED_LANGUAGES - Add Turkish aliases: turkish, türkçe, tr-tr --- agent/i18n.py | 5 +++-- locales/tr.yaml | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 locales/tr.yaml diff --git a/agent/i18n.py b/agent/i18n.py index fff0577cc1..0196439bb4 100644 --- a/agent/i18n.py +++ b/agent/i18n.py @@ -25,7 +25,7 @@ Language resolution order: 3. ``display.language`` from config.yaml 4. ``"en"`` (baseline) -Supported languages: en, zh, ja, de, es, fr, uk. Unknown values fall back to en. +Supported languages: en, zh, ja, de, es, fr, tr, uk. Unknown values fall back to en. """ from __future__ import annotations @@ -39,7 +39,7 @@ from typing import Any logger = logging.getLogger(__name__) -SUPPORTED_LANGUAGES: tuple[str, ...] = ("en", "zh", "ja", "de", "es", "fr", "uk") +SUPPORTED_LANGUAGES: tuple[str, ...] = ("en", "zh", "ja", "de", "es", "fr", "tr", "uk") DEFAULT_LANGUAGE = "en" # Accept a few natural aliases so users who type "chinese" / "zh-CN" / "jp" @@ -52,6 +52,7 @@ _LANGUAGE_ALIASES: dict[str, str] = { "spanish": "es", "español": "es", "espanol": "es", "es-es": "es", "es-mx": "es", "french": "fr", "français": "fr", "france": "fr", "fr-fr": "fr", "fr-be": "fr", "fr-ca": "fr", "fr-ch": "fr", "ukrainian": "uk", "ukrainisch": "uk", "українська": "uk", "uk-ua": "uk", "ua": "uk", + "turkish": "tr", "türkçe": "tr", "tr-tr": "tr", } _catalog_cache: dict[str, dict[str, str]] = {} diff --git a/locales/tr.yaml b/locales/tr.yaml new file mode 100644 index 0000000000..cdaf0ad70e --- /dev/null +++ b/locales/tr.yaml @@ -0,0 +1,24 @@ +# Hermes statik mesaj katalogu -- Turkce +# See locales/en.yaml for the source of truth; keep keys in sync. + +approval: + dangerous_header: "⚠️ TEHLİKELİ KOMUT: {description}" + choose_long: " [b]ir kez | [o]turum | [h]er zaman | [r]eddet" + choose_short: " [b]ir kez | [o]turum | [r]eddet" + prompt_long: " Seçim [b/o/h/R]: " + prompt_short: " Seçim [b/o/R]: " + timeout: " ⏱ Zaman aşımı — komut reddedildi" + allowed_once: " ✓ Bir kez izin verildi" + allowed_session: " ✓ Bu oturum için izin verildi" + allowed_always: " ✓ Kalıcı izin listesine eklendi" + denied: " ✗ Reddedildi" + cancelled: " ✗ İptal edildi" + blocklist_message: "Bu komut koşulsuz engelleme listesinde ve onaylanamaz." + +gateway: + approval_expired: "⚠️ Onay süresi doldu (ajan artık beklemiyor). Ajanın tekrar denemesini isteyin." + draining: "⏳ Yeniden başlatmadan önce {count} aktif ajan bekleniyor..." + goal_cleared: "✓ Hedef temizlendi." + no_active_goal: "Aktif hedef yok." + config_read_failed: "⚠️ config.yaml okunamadı: {error}" + config_save_failed: "⚠️ Yapılandırma kaydedilemedi: {error}"