From 33f1376ee1e0a7787ca7569bd0064393d37192c9 Mon Sep 17 00:00:00 2001 From: Parfii-bot Date: Sun, 17 May 2026 16:51:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=D1=80=D0=B0=D1=81=D1=88=D0=B8?= =?UTF-8?q?=D1=80=D0=B8=D0=BB=20=D1=8F=D0=B7=D1=8B=D0=BA-=D0=BD=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=20=D1=81=202=20=D0=B4=D0=BE=2016?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Новые словари: uk Українська de Deutsch fr Français es Español pt Português it Italiano tr Türkçe ar العربية hi हिन्दी zh 简体中文 ja 日本語 ko 한국어 id Bahasa Indonesia vi Tiếng Việt Каждый файл — 17 STR_* ключей (тот же контракт что en.sh + ru.sh). lib-i18n.sh::i18n_available_languages — единый список (en + 15) для меню выбора в мастере. i18n_load_lang упрощён: всегда грузит английский как fallback, потом поверх — словарь языка (отсутствующий ключ остаётся английским). onboarding_pick_language теперь генерирует whiptail/bash select из i18n_available_languages динамически — добавление нового языка = один файл `install/i18n/<код>.sh` + одна строка в available_languages, дальше всё подхватится автоматически. Перевод формальный, без излишеств. Welcome баннер всегда EN (юзер ещё не выбрал на момент показа). Проверено: bash -n всех 16 словарей чисто, roundtrip всех языков работает (i18n_load_lang en/ru/uk/de/fr/es/pt/it/tr/ar/hi/zh/ja/ko/id/vi выдают локализованные STR_DONE_TITLE + STR_TR_DIRECT_API), non-TTY smoke install --no-execute проходит. --- install/i18n/ar.sh | 35 +++++++++++++++++++++++++++++ install/i18n/de.sh | 35 +++++++++++++++++++++++++++++ install/i18n/es.sh | 35 +++++++++++++++++++++++++++++ install/i18n/fr.sh | 35 +++++++++++++++++++++++++++++ install/i18n/hi.sh | 35 +++++++++++++++++++++++++++++ install/i18n/id.sh | 35 +++++++++++++++++++++++++++++ install/i18n/it.sh | 35 +++++++++++++++++++++++++++++ install/i18n/ja.sh | 35 +++++++++++++++++++++++++++++ install/i18n/ko.sh | 35 +++++++++++++++++++++++++++++ install/i18n/pt.sh | 35 +++++++++++++++++++++++++++++ install/i18n/tr.sh | 35 +++++++++++++++++++++++++++++ install/i18n/uk.sh | 35 +++++++++++++++++++++++++++++ install/i18n/vi.sh | 35 +++++++++++++++++++++++++++++ install/i18n/zh.sh | 35 +++++++++++++++++++++++++++++ install/lib-i18n.sh | 44 +++++++++++++++++++++++++----------- install/lib-onboarding.sh | 47 +++++++++++++++++++++++++++------------ 16 files changed, 554 insertions(+), 27 deletions(-) create mode 100644 install/i18n/ar.sh create mode 100644 install/i18n/de.sh create mode 100644 install/i18n/es.sh create mode 100644 install/i18n/fr.sh create mode 100644 install/i18n/hi.sh create mode 100644 install/i18n/id.sh create mode 100644 install/i18n/it.sh create mode 100644 install/i18n/ja.sh create mode 100644 install/i18n/ko.sh create mode 100644 install/i18n/pt.sh create mode 100644 install/i18n/tr.sh create mode 100644 install/i18n/uk.sh create mode 100644 install/i18n/vi.sh create mode 100644 install/i18n/zh.sh diff --git a/install/i18n/ar.sh b/install/i18n/ar.sh new file mode 100644 index 0000000..c11b692 --- /dev/null +++ b/install/i18n/ar.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/ar.sh — العربية. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="معالج الإعداد الأولي (5 خطوات)" +STR_PICK_LANGUAGE="اختر لغة الواجهة:" +STR_PICK_TRANSPORT="اختر طريقة الاتصال:" +STR_PICK_PROVIDER="اختر المزود ضمن المجموعة" +STR_PICK_MODEL="النموذج الافتراضي:" + +STR_TR_DIRECT_API="واجهة برمجية مباشرة للمزود (مفتاح)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/دور)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+مفتاح)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="محلي (Ollama/MLX/LMStudio)" +STR_TR_PROXY="وكيل (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="اشتراك OAuth (ChatGPT)" + +STR_AUTH_INTRO="المصادقة لـ" +STR_AUTH_PROMPT="أدخل القيم (Enter — اتركها فارغة، املأها لاحقًا)." +STR_AUTH_CURRENT_HINT="(الحالي: <مخفي>)" + +STR_DONE_TITLE="اكتمل الإعداد الأولي" +STR_DONE_CONFIG="التكوين:" +STR_DONE_SECRETS="الأسرار:" + +STR_MENU_TITLE="مثبّت KeiSeiKit" +STR_MENU_SUBSTRATE="القاعدة الأساسية (دائمًا مثبتة):" +STR_MENU_PROFILE_PROMPT="اختر ملف التثبيت:" +STR_MENU_CONFIRM="تأكيد الاختيار؟" + +STR_PREFLIGHT_FAILED="فشل Preflight — قد لا يعمل المزود." +STR_PREFLIGHT_CONTINUE="هل تريد المتابعة على أي حال؟ [y/N]" diff --git a/install/i18n/de.sh b/install/i18n/de.sh new file mode 100644 index 0000000..e656640 --- /dev/null +++ b/install/i18n/de.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/de.sh — Deutsch. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Einrichtungsassistent (5 Schritte)" +STR_PICK_LANGUAGE="Oberflächensprache wählen:" +STR_PICK_TRANSPORT="Verbindungsart wählen:" +STR_PICK_PROVIDER="Anbieter in der Gruppe wählen" +STR_PICK_MODEL="Standardmodell:" + +STR_TR_DIRECT_API="Direkte API des Anbieters (Schlüssel)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/Rolle)" +STR_TR_AZURE_OPENAI="Azure OpenAI (Deployment+Schlüssel)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Lokal (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth-Abo (ChatGPT)" + +STR_AUTH_INTRO="Authentifizierung für" +STR_AUTH_PROMPT="Werte eingeben (Enter — leer lassen, später ausfüllen)." +STR_AUTH_CURRENT_HINT="(aktuell: )" + +STR_DONE_TITLE="Einrichtung abgeschlossen" +STR_DONE_CONFIG="Konfig:" +STR_DONE_SECRETS="Geheimnisse:" + +STR_MENU_TITLE="KeiSeiKit Installer" +STR_MENU_SUBSTRATE="Substrat-Basis (immer installiert):" +STR_MENU_PROFILE_PROMPT="Installationsprofil wählen:" +STR_MENU_CONFIRM="Auswahl bestätigen?" + +STR_PREFLIGHT_FAILED="Preflight fehlgeschlagen — Anbieter funktioniert evtl. nicht." +STR_PREFLIGHT_CONTINUE="Trotzdem fortfahren? [j/N]" diff --git a/install/i18n/es.sh b/install/i18n/es.sh new file mode 100644 index 0000000..e56e91d --- /dev/null +++ b/install/i18n/es.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/es.sh — Español. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Asistente de configuración inicial (5 pasos)" +STR_PICK_LANGUAGE="Elige el idioma de la interfaz:" +STR_PICK_TRANSPORT="Elige el método de conexión:" +STR_PICK_PROVIDER="Elige el proveedor dentro de" +STR_PICK_MODEL="Modelo por defecto:" + +STR_TR_DIRECT_API="API directa del proveedor (clave)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/rol)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+clave)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Local (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="Suscripción OAuth (ChatGPT)" + +STR_AUTH_INTRO="Autenticación para" +STR_AUTH_PROMPT="Introduce los valores (Enter — dejar vacío, completar luego)." +STR_AUTH_CURRENT_HINT="(actual: )" + +STR_DONE_TITLE="Configuración inicial completada" +STR_DONE_CONFIG="config:" +STR_DONE_SECRETS="secretos:" + +STR_MENU_TITLE="Instalador de KeiSeiKit" +STR_MENU_SUBSTRATE="Base del sustrato (siempre instalada):" +STR_MENU_PROFILE_PROMPT="Elige el perfil de instalación:" +STR_MENU_CONFIRM="¿Confirmar selección?" + +STR_PREFLIGHT_FAILED="Preflight falló — el proveedor puede no funcionar." +STR_PREFLIGHT_CONTINUE="¿Continuar de todos modos? [s/N]" diff --git a/install/i18n/fr.sh b/install/i18n/fr.sh new file mode 100644 index 0000000..6fe09ee --- /dev/null +++ b/install/i18n/fr.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/fr.sh — Français. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Assistant de configuration initiale (5 étapes)" +STR_PICK_LANGUAGE="Choisir la langue de l'interface :" +STR_PICK_TRANSPORT="Choisir le mode de connexion :" +STR_PICK_PROVIDER="Choisir le fournisseur dans le groupe" +STR_PICK_MODEL="Modèle par défaut :" + +STR_TR_DIRECT_API="API directe du fournisseur (clé)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/rôle)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+clé)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Local (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="Abonnement OAuth (ChatGPT)" + +STR_AUTH_INTRO="Authentification pour" +STR_AUTH_PROMPT="Saisir les valeurs (Entrée — laisser vide, remplir plus tard)." +STR_AUTH_CURRENT_HINT="(actuel : )" + +STR_DONE_TITLE="Configuration initiale terminée" +STR_DONE_CONFIG="config :" +STR_DONE_SECRETS="secrets :" + +STR_MENU_TITLE="Installateur KeiSeiKit" +STR_MENU_SUBSTRATE="Base du substrat (toujours installée) :" +STR_MENU_PROFILE_PROMPT="Choisir le profil d'installation :" +STR_MENU_CONFIRM="Confirmer la sélection ?" + +STR_PREFLIGHT_FAILED="Preflight échoué — le fournisseur peut ne pas fonctionner." +STR_PREFLIGHT_CONTINUE="Continuer quand même ? [o/N]" diff --git a/install/i18n/hi.sh b/install/i18n/hi.sh new file mode 100644 index 0000000..7e28f22 --- /dev/null +++ b/install/i18n/hi.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/hi.sh — हिन्दी. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="प्रारंभिक सेटअप विज़ार्ड (5 चरण)" +STR_PICK_LANGUAGE="इंटरफ़ेस भाषा चुनें:" +STR_PICK_TRANSPORT="कनेक्शन विधि चुनें:" +STR_PICK_PROVIDER="समूह में प्रदाता चुनें" +STR_PICK_MODEL="डिफ़ॉल्ट मॉडल:" + +STR_TR_DIRECT_API="प्रदाता डायरेक्ट API (कुंजी)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/रोल)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+कुंजी)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="लोकल (Ollama/MLX/LMStudio)" +STR_TR_PROXY="प्रॉक्सी (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth सब्सक्रिप्शन (ChatGPT)" + +STR_AUTH_INTRO="के लिए प्रमाणीकरण" +STR_AUTH_PROMPT="मान दर्ज करें (Enter — खाली छोड़ें, बाद में भरें)।" +STR_AUTH_CURRENT_HINT="(वर्तमान: <छिपा हुआ>)" + +STR_DONE_TITLE="प्रारंभिक सेटअप पूरा हुआ" +STR_DONE_CONFIG="कॉन्फ़िग:" +STR_DONE_SECRETS="सीक्रेट्स:" + +STR_MENU_TITLE="KeiSeiKit इंस्टॉलर" +STR_MENU_SUBSTRATE="सब्सट्रेट बेस (हमेशा स्थापित):" +STR_MENU_PROFILE_PROMPT="इंस्टॉल प्रोफ़ाइल चुनें:" +STR_MENU_CONFIRM="चयन की पुष्टि करें?" + +STR_PREFLIGHT_FAILED="Preflight विफल — प्रदाता काम नहीं कर सकता।" +STR_PREFLIGHT_CONTINUE="फिर भी जारी रखें? [y/N]" diff --git a/install/i18n/id.sh b/install/i18n/id.sh new file mode 100644 index 0000000..38ba59e --- /dev/null +++ b/install/i18n/id.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/id.sh — Bahasa Indonesia. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Wizard pengaturan awal (5 langkah)" +STR_PICK_LANGUAGE="Pilih bahasa antarmuka:" +STR_PICK_TRANSPORT="Pilih metode koneksi:" +STR_PICK_PROVIDER="Pilih penyedia dalam grup" +STR_PICK_MODEL="Model default:" + +STR_TR_DIRECT_API="API langsung penyedia (kunci)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/role)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+kunci)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Lokal (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="Langganan OAuth (ChatGPT)" + +STR_AUTH_INTRO="Autentikasi untuk" +STR_AUTH_PROMPT="Masukkan nilai (Enter — kosongkan, isi nanti)." +STR_AUTH_CURRENT_HINT="(saat ini: )" + +STR_DONE_TITLE="Pengaturan awal selesai" +STR_DONE_CONFIG="konfig:" +STR_DONE_SECRETS="rahasia:" + +STR_MENU_TITLE="Installer KeiSeiKit" +STR_MENU_SUBSTRATE="Basis substrat (selalu terpasang):" +STR_MENU_PROFILE_PROMPT="Pilih profil instalasi:" +STR_MENU_CONFIRM="Konfirmasi pilihan?" + +STR_PREFLIGHT_FAILED="Preflight gagal — penyedia mungkin tidak berfungsi." +STR_PREFLIGHT_CONTINUE="Lanjutkan saja? [y/N]" diff --git a/install/i18n/it.sh b/install/i18n/it.sh new file mode 100644 index 0000000..6884986 --- /dev/null +++ b/install/i18n/it.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/it.sh — Italiano. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Procedura guidata di configurazione iniziale (5 passi)" +STR_PICK_LANGUAGE="Scegli la lingua dell'interfaccia:" +STR_PICK_TRANSPORT="Scegli il metodo di connessione:" +STR_PICK_PROVIDER="Scegli il provider nel gruppo" +STR_PICK_MODEL="Modello predefinito:" + +STR_TR_DIRECT_API="API diretta del provider (chiave)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/ruolo)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+chiave)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Locale (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="Abbonamento OAuth (ChatGPT)" + +STR_AUTH_INTRO="Autenticazione per" +STR_AUTH_PROMPT="Inserisci i valori (Invio — lascia vuoto, compila dopo)." +STR_AUTH_CURRENT_HINT="(attuale: )" + +STR_DONE_TITLE="Configurazione iniziale completata" +STR_DONE_CONFIG="config:" +STR_DONE_SECRETS="segreti:" + +STR_MENU_TITLE="Installatore KeiSeiKit" +STR_MENU_SUBSTRATE="Base del substrato (sempre installata):" +STR_MENU_PROFILE_PROMPT="Scegli il profilo di installazione:" +STR_MENU_CONFIRM="Confermare la selezione?" + +STR_PREFLIGHT_FAILED="Preflight fallito — il provider potrebbe non funzionare." +STR_PREFLIGHT_CONTINUE="Continuare comunque? [s/N]" diff --git a/install/i18n/ja.sh b/install/i18n/ja.sh new file mode 100644 index 0000000..9d5bceb --- /dev/null +++ b/install/i18n/ja.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/ja.sh — 日本語. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="初期設定ウィザード (5 ステップ)" +STR_PICK_LANGUAGE="インターフェース言語を選択:" +STR_PICK_TRANSPORT="接続方法を選択:" +STR_PICK_PROVIDER="グループ内のプロバイダを選択" +STR_PICK_MODEL="デフォルトモデル:" + +STR_TR_DIRECT_API="プロバイダ直接 API (キー)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/ロール)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+キー)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="ローカル (Ollama/MLX/LMStudio)" +STR_TR_PROXY="プロキシ (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth サブスクリプション (ChatGPT)" + +STR_AUTH_INTRO="認証 —" +STR_AUTH_PROMPT="値を入力 (Enter — 空のまま、後で記入)。" +STR_AUTH_CURRENT_HINT="(現在: <非表示>)" + +STR_DONE_TITLE="初期設定が完了しました" +STR_DONE_CONFIG="設定:" +STR_DONE_SECRETS="シークレット:" + +STR_MENU_TITLE="KeiSeiKit インストーラ" +STR_MENU_SUBSTRATE="サブストレートのベース (常にインストール):" +STR_MENU_PROFILE_PROMPT="インストールプロファイルを選択:" +STR_MENU_CONFIRM="選択を確認しますか?" + +STR_PREFLIGHT_FAILED="Preflight 失敗 — プロバイダが動作しない可能性があります。" +STR_PREFLIGHT_CONTINUE="それでも続行しますか? [y/N]" diff --git a/install/i18n/ko.sh b/install/i18n/ko.sh new file mode 100644 index 0000000..7c20972 --- /dev/null +++ b/install/i18n/ko.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/ko.sh — 한국어. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="초기 설정 마법사 (5 단계)" +STR_PICK_LANGUAGE="인터페이스 언어 선택:" +STR_PICK_TRANSPORT="연결 방법 선택:" +STR_PICK_PROVIDER="그룹 내 제공자 선택" +STR_PICK_MODEL="기본 모델:" + +STR_TR_DIRECT_API="제공자 직접 API (키)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/역할)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+키)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="로컬 (Ollama/MLX/LMStudio)" +STR_TR_PROXY="프록시 (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth 구독 (ChatGPT)" + +STR_AUTH_INTRO="인증 —" +STR_AUTH_PROMPT="값을 입력하세요 (Enter — 비워두고 나중에 작성)." +STR_AUTH_CURRENT_HINT="(현재: <숨김>)" + +STR_DONE_TITLE="초기 설정 완료" +STR_DONE_CONFIG="설정:" +STR_DONE_SECRETS="시크릿:" + +STR_MENU_TITLE="KeiSeiKit 설치 프로그램" +STR_MENU_SUBSTRATE="기본 서브스트레이트 (항상 설치):" +STR_MENU_PROFILE_PROMPT="설치 프로필 선택:" +STR_MENU_CONFIRM="선택을 확인하시겠습니까?" + +STR_PREFLIGHT_FAILED="Preflight 실패 — 제공자가 작동하지 않을 수 있습니다." +STR_PREFLIGHT_CONTINUE="계속 진행하시겠습니까? [y/N]" diff --git a/install/i18n/pt.sh b/install/i18n/pt.sh new file mode 100644 index 0000000..fb4bcf0 --- /dev/null +++ b/install/i18n/pt.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/pt.sh — Português. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Assistente de configuração inicial (5 passos)" +STR_PICK_LANGUAGE="Escolha o idioma da interface:" +STR_PICK_TRANSPORT="Escolha o método de conexão:" +STR_PICK_PROVIDER="Escolha o provedor dentro do grupo" +STR_PICK_MODEL="Modelo padrão:" + +STR_TR_DIRECT_API="API direta do provedor (chave)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/função)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+chave)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Local (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="Assinatura OAuth (ChatGPT)" + +STR_AUTH_INTRO="Autenticação para" +STR_AUTH_PROMPT="Insira valores (Enter — deixar vazio, preencher depois)." +STR_AUTH_CURRENT_HINT="(atual: )" + +STR_DONE_TITLE="Configuração inicial concluída" +STR_DONE_CONFIG="config:" +STR_DONE_SECRETS="segredos:" + +STR_MENU_TITLE="Instalador KeiSeiKit" +STR_MENU_SUBSTRATE="Base do substrato (sempre instalada):" +STR_MENU_PROFILE_PROMPT="Escolha o perfil de instalação:" +STR_MENU_CONFIRM="Confirmar seleção?" + +STR_PREFLIGHT_FAILED="Preflight falhou — o provedor pode não funcionar." +STR_PREFLIGHT_CONTINUE="Continuar mesmo assim? [s/N]" diff --git a/install/i18n/tr.sh b/install/i18n/tr.sh new file mode 100644 index 0000000..2bff611 --- /dev/null +++ b/install/i18n/tr.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/tr.sh — Türkçe. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="İlk kurulum sihirbazı (5 adım)" +STR_PICK_LANGUAGE="Arayüz dilini seçin:" +STR_PICK_TRANSPORT="Bağlantı yöntemini seçin:" +STR_PICK_PROVIDER="Gruptaki sağlayıcıyı seçin" +STR_PICK_MODEL="Varsayılan model:" + +STR_TR_DIRECT_API="Sağlayıcının doğrudan API'si (anahtar)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/rol)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+anahtar)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Yerel (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth aboneliği (ChatGPT)" + +STR_AUTH_INTRO="Kimlik doğrulama —" +STR_AUTH_PROMPT="Değerleri girin (Enter — boş bırak, sonra doldur)." +STR_AUTH_CURRENT_HINT="(geçerli: )" + +STR_DONE_TITLE="İlk kurulum tamamlandı" +STR_DONE_CONFIG="yapılandırma:" +STR_DONE_SECRETS="gizli anahtarlar:" + +STR_MENU_TITLE="KeiSeiKit Kurulum Aracı" +STR_MENU_SUBSTRATE="Substrate tabanı (her zaman kurulu):" +STR_MENU_PROFILE_PROMPT="Kurulum profilini seçin:" +STR_MENU_CONFIRM="Seçimi onayla?" + +STR_PREFLIGHT_FAILED="Preflight başarısız — sağlayıcı çalışmayabilir." +STR_PREFLIGHT_CONTINUE="Yine de devam edilsin mi? [e/H]" diff --git a/install/i18n/uk.sh b/install/i18n/uk.sh new file mode 100644 index 0000000..e594243 --- /dev/null +++ b/install/i18n/uk.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/uk.sh — Українська. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Майстер первинного налаштування (5 кроків)" +STR_PICK_LANGUAGE="Виберіть мову інтерфейсу:" +STR_PICK_TRANSPORT="Виберіть спосіб підключення:" +STR_PICK_PROVIDER="Виберіть провайдера у групі" +STR_PICK_MODEL="Модель за замовчуванням:" + +STR_TR_DIRECT_API="Прямий API провайдера (ключ)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/роль)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+ключ)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Локально (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Проксі (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth-підписка (ChatGPT)" + +STR_AUTH_INTRO="Автентифікація для" +STR_AUTH_PROMPT="Введіть значення (Enter — залишити порожнім, заповнити пізніше)." +STR_AUTH_CURRENT_HINT="(поточне: <приховано>)" + +STR_DONE_TITLE="Первинне налаштування завершено" +STR_DONE_CONFIG="конфіг:" +STR_DONE_SECRETS="секрети:" + +STR_MENU_TITLE="Інсталятор KeiSeiKit" +STR_MENU_SUBSTRATE="База підкладки (завжди встановлюється):" +STR_MENU_PROFILE_PROMPT="Виберіть профіль встановлення:" +STR_MENU_CONFIRM="Підтвердити вибір?" + +STR_PREFLIGHT_FAILED="Preflight упав — провайдер може не працювати." +STR_PREFLIGHT_CONTINUE="Продовжити все одно? [y/N]" diff --git a/install/i18n/vi.sh b/install/i18n/vi.sh new file mode 100644 index 0000000..89005b3 --- /dev/null +++ b/install/i18n/vi.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/vi.sh — Tiếng Việt. + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="Trình hướng dẫn thiết lập ban đầu (5 bước)" +STR_PICK_LANGUAGE="Chọn ngôn ngữ giao diện:" +STR_PICK_TRANSPORT="Chọn phương thức kết nối:" +STR_PICK_PROVIDER="Chọn nhà cung cấp trong nhóm" +STR_PICK_MODEL="Mô hình mặc định:" + +STR_TR_DIRECT_API="API trực tiếp của nhà cung cấp (khóa)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/vai trò)" +STR_TR_AZURE_OPENAI="Azure OpenAI (deployment+khóa)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="Cục bộ (Ollama/MLX/LMStudio)" +STR_TR_PROXY="Proxy (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="Đăng ký OAuth (ChatGPT)" + +STR_AUTH_INTRO="Xác thực cho" +STR_AUTH_PROMPT="Nhập giá trị (Enter — để trống, điền sau)." +STR_AUTH_CURRENT_HINT="(hiện tại: <đã ẩn>)" + +STR_DONE_TITLE="Thiết lập ban đầu hoàn tất" +STR_DONE_CONFIG="cấu hình:" +STR_DONE_SECRETS="bí mật:" + +STR_MENU_TITLE="Trình cài đặt KeiSeiKit" +STR_MENU_SUBSTRATE="Nền tảng substrate (luôn cài đặt):" +STR_MENU_PROFILE_PROMPT="Chọn hồ sơ cài đặt:" +STR_MENU_CONFIRM="Xác nhận lựa chọn?" + +STR_PREFLIGHT_FAILED="Preflight thất bại — nhà cung cấp có thể không hoạt động." +STR_PREFLIGHT_CONTINUE="Vẫn tiếp tục? [y/N]" diff --git a/install/i18n/zh.sh b/install/i18n/zh.sh new file mode 100644 index 0000000..303dee0 --- /dev/null +++ b/install/i18n/zh.sh @@ -0,0 +1,35 @@ +# shellcheck shell=bash +# i18n/zh.sh — 简体中文 (Simplified Chinese). + +STR_WELCOME_TITLE="KeiSeiKit · Exobrain installer" +STR_WELCOME_TAGLINE="Portable Rust agent substrate for AI coding tools" + +STR_ONBOARDING_INTRO="初始化向导 (5 步)" +STR_PICK_LANGUAGE="选择界面语言:" +STR_PICK_TRANSPORT="选择连接方式:" +STR_PICK_PROVIDER="选择此分组中的提供者" +STR_PICK_MODEL="默认模型:" + +STR_TR_DIRECT_API="提供者直连 API (密钥)" +STR_TR_AWS_BEDROCK="AWS Bedrock (IAM/角色)" +STR_TR_AZURE_OPENAI="Azure OpenAI (部署 + 密钥)" +STR_TR_GOOGLE_VERTEX="Google Vertex AI (GCP)" +STR_TR_LOCAL="本地 (Ollama/MLX/LMStudio)" +STR_TR_PROXY="代理 (LiteLLM/OpenRouter)" +STR_TR_SUBSCRIPTION="OAuth 订阅 (ChatGPT)" + +STR_AUTH_INTRO="认证" +STR_AUTH_PROMPT="输入值 (回车 — 保留为空,稍后填写)。" +STR_AUTH_CURRENT_HINT="(当前: <已隐藏>)" + +STR_DONE_TITLE="初始化完成" +STR_DONE_CONFIG="配置:" +STR_DONE_SECRETS="密钥:" + +STR_MENU_TITLE="KeiSeiKit 安装器" +STR_MENU_SUBSTRATE="基础组件 (始终安装):" +STR_MENU_PROFILE_PROMPT="选择安装配置:" +STR_MENU_CONFIRM="确认选择?" + +STR_PREFLIGHT_FAILED="Preflight 失败 — 提供者可能无法工作。" +STR_PREFLIGHT_CONTINUE="仍然继续? [y/N]" diff --git a/install/lib-i18n.sh b/install/lib-i18n.sh index 3ce29fe..ad6c96e 100644 --- a/install/lib-i18n.sh +++ b/install/lib-i18n.sh @@ -21,19 +21,37 @@ i18n_load_default() { i18n_load_lang() { local lang="$1" - case "$lang" in - en) - i18n_load_default - ;; - ru) - i18n_load_default # base (fallback values) - # shellcheck source=install/i18n/ru.sh - [ -f "$I18N_DIR/ru.sh" ] && source "$I18N_DIR/ru.sh" - ;; - *) - i18n_load_default - ;; - esac + # Сначала всегда грузим английский — это база fallback. + i18n_load_default + # Если выбран не-английский — поверх кладём словарь языка. + # Любой STR_*, отсутствующий в файле, остаётся с английским значением. + if [ "$lang" != "en" ] && [ -f "$I18N_DIR/${lang}.sh" ]; then + # shellcheck disable=SC1090 + source "$I18N_DIR/${lang}.sh" + fi +} + +# Список доступных языков — для onboarding_pick_language. +# Формат: \t +i18n_available_languages() { + cat <<'EOF' +en English +ru Русский +uk Українська +de Deutsch +fr Français +es Español +pt Português +it Italiano +tr Türkçe +ar العربية +hi हिन्दी +zh 简体中文 +ja 日本語 +ko 한국어 +id Bahasa Indonesia +vi Tiếng Việt +EOF } # Welcome banner. Всегда EN. Запускается из install.sh до мастера. diff --git a/install/lib-onboarding.sh b/install/lib-onboarding.sh index e724860..e92be51 100644 --- a/install/lib-onboarding.sh +++ b/install/lib-onboarding.sh @@ -108,23 +108,42 @@ onboarding_models_for_provider() { # UI: язык # ─────────────────────────────────────────────────────────────────────── onboarding_pick_language() { - # На этом шаге язык ещё не выбран — экран на двух языках одновременно. + # Список языков читается из lib-i18n.sh::i18n_available_languages. + # На этом шаге язык ещё не выбран — заголовок двуязычный. + local langs + langs="$(i18n_available_languages 2>/dev/null)" + if [ -z "$langs" ]; then + # Fallback если lib-i18n не подключён. + langs="$(printf 'en\tEnglish\nru\tРусский\n')" + fi + if command -v whiptail >/dev/null 2>&1; then - ONBOARDING_LANG=$(whiptail --title "KeiSei · Language / Язык" --radiolist \ - "Choose interface language / Выберите язык:" 12 60 2 \ - "en" "English" ON \ - "ru" "Русский" OFF \ - 3>&1 1>&2 2>&3) || ONBOARDING_LANG="en" + local args=() first=1 + while IFS=$'\t' read -r code name; do + [ -z "$code" ] && continue + if [ "$first" = "1" ]; then + args+=("$code" "$name" "ON"); first=0 + else + args+=("$code" "$name" "OFF") + fi + done <<< "$langs" + ONBOARDING_LANG=$(whiptail --title "KeiSei · Language / Язык / 语言 / 言語 / ..." --radiolist \ + "Choose interface language / Выберите язык:" 22 70 16 \ + "${args[@]}" 3>&1 1>&2 2>&3) || ONBOARDING_LANG="en" else echo "" >&2 - echo "Choose language / Выберите язык:" >&2 - echo " 1) en — English (default)" >&2 - echo " 2) ru — Русский" >&2 - read -r -p "[1-2, default 1]: " ans - case "$ans" in - 2) ONBOARDING_LANG="ru" ;; - *) ONBOARDING_LANG="en" ;; - esac + echo "Choose language / Выберите язык / 选择语言 / 言語選択:" >&2 + declare -a codes=() + local i=1 + while IFS=$'\t' read -r code name; do + [ -z "$code" ] && continue + codes+=("$code") + printf " %2d) %s — %s\n" "$i" "$code" "$name" >&2 + i=$((i+1)) + done <<< "$langs" + read -r -p "[1-${#codes[@]}, default 1=en]: " ans + ans="${ans:-1}" + ONBOARDING_LANG="${codes[$((ans-1))]:-en}" fi # Перегружаем словарь — все последующие строки на выбранном языке. if command -v i18n_load_lang >/dev/null 2>&1; then