feat: add complete French localization (#1482)
* feat: add French locale runtime Add French to OpenChamber's shared i18n runtime, dictionaries, and parity tests so the existing language picker can load a complete fr locale across shared UI surfaces. * fix: localize shared UI formatting Remove remaining shared UI locale hardcodings so dates, numbers, and first-party helper copy follow the active app locale instead of leaking English on French surfaces. * feat: localize VS Code French surfaces Localize VS Code bootstrap, native runtime messages, panel titles, and manifest contribution strings so French users get consistent first-party copy across the extension experience. * fix: TASK-2026-05-30-008 correct French review findings Fix broken French relative-time and weekday strings reported on PR #1482 and restore proper import order in quota utils without broadening scope. * fix: TASK-2026-05-30-008 address final PR review comments Capture the localized More Info label once in the VS Code CLI-missing flow and replace the remaining inline French-only utility strings with dictionary-driven copy plus required locale keys. * fix: TASK-2026-05-30-008 normalize French glossary Correct glossary-level French terminology on the live PR branch, keeping canonical technical terms like PR, worktree, stash, HEAD, Mermaid, Markdown, remote, and session while replacing misleading literal translations. * fix: TASK-2026-05-30-008 refine French terminology pass Clean up remaining glossary mistakes on the French PR branch, especially around Mermaid, Markdown, PR, worktree, stash, branch, remote, and commit terminology, while keeping behavior unchanged. * fix: TASK-2026-05-30-008 clean remaining French false friends Correct the SOCKS5 mistranslation and a final small set of obvious false-friend technical nouns on the French branch without changing behavior. * fix: TASK-2026-05-30-008 correct French glossary terms Replace remaining false-friend translations in the French UI dictionaries and normalize technical labels for the French PR branch. * fix: TASK-2026-05-30-008 remove remaining French Mermaid false friend Replace the last confirmed Sirène translation with Mermaid and re-run the requested blacklist and build verification on the PR branch. * fix: TASK-2026-05-30-008 enforce French glossary policy Keep skill/PR/worktree/remote terminology developer-credible in French and remove remaining machine-translated Git and settings copy. * fix: TASK-2026-05-30-008 keep prompt terminology in French Replace remaining technical invite translations with prompt wording across scheduled tasks, multi-run, prompt templates, and Magic Prompts. * fix: TASK-2026-05-30-008 finalize French terminology cleanup Polish remaining worktree/remote wording, remove visible metadata leakage, and correct final Git and settings labels on the French PR branch. * fix: TASK-2026-05-30-008 polish final French strings Correct the last aria-like artifacts and awkward worktree/remote/GitHub URL phrasing in the French dictionaries. * fix: TASK-2026-05-30-008 normalize final French glossary framing Tighten the last worktree/remote/checkout wording and fix remaining French grammar around canonical technical terms. * fix: TASK-2026-05-30-008 align final developer glossary wording Normalize the last French framing around canonical developer terms like worktree, remote, prompt, and checkout. * fix: TASK-2026-05-30-008 harmonize final French sentence framing Replace the last raw franglais around checkout, remote, worktree, and prompt-facing labels with more natural French framing while keeping the chosen technical terms. * fix: TASK-2026-05-30-008 add compact relative date keys Replace French-specific prefix stripping in compact session date labels with dedicated i18n keys across locale dictionaries, preserving existing compact label output while making French wording robust. * docs: add French documentation * docs: mention French locale folder --------- Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Bohdan Triapitsyn
parent
85bf7c7563
commit
49a1424e5f
@@ -8,7 +8,8 @@
|
||||
"es": "Empieza aquí",
|
||||
"pt-BR": "Comece aqui",
|
||||
"ko": "여기서 시작",
|
||||
"pl": "Zacznij tutaj"
|
||||
"pl": "Zacznij tutaj",
|
||||
"fr": "Commencer ici"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -20,7 +21,8 @@
|
||||
"es": "Visión general",
|
||||
"pt-BR": "Visão geral",
|
||||
"ko": "개요",
|
||||
"pl": "Przegląd"
|
||||
"pl": "Przegląd",
|
||||
"fr": "Vue d’ensemble"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -32,7 +34,8 @@
|
||||
"es": "Instalación",
|
||||
"pt-BR": "Instalação",
|
||||
"ko": "설치",
|
||||
"pl": "Instalacja"
|
||||
"pl": "Instalacja",
|
||||
"fr": "Installation"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -44,7 +47,8 @@
|
||||
"es": "Inicio rápido",
|
||||
"pt-BR": "Início rápido",
|
||||
"ko": "빠른 시작",
|
||||
"pl": "Szybki start"
|
||||
"pl": "Szybki start",
|
||||
"fr": "Démarrage rapide"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -56,7 +60,8 @@
|
||||
"es": "Servidor OpenCode",
|
||||
"pt-BR": "Servidor OpenCode",
|
||||
"ko": "OpenCode 서버",
|
||||
"pl": "Serwer OpenCode"
|
||||
"pl": "Serwer OpenCode",
|
||||
"fr": "Serveur OpenCode"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -68,7 +73,8 @@
|
||||
"es": "Variables de entorno",
|
||||
"pt-BR": "Variáveis de ambiente",
|
||||
"ko": "환경 변수",
|
||||
"pl": "Zmienne środowiskowe"
|
||||
"pl": "Zmienne środowiskowe",
|
||||
"fr": "Variables d’environnement"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -81,7 +87,8 @@
|
||||
"es": "Flujos de trabajo",
|
||||
"pt-BR": "Fluxos de trabalho",
|
||||
"ko": "워크플로",
|
||||
"pl": "Przepływy pracy"
|
||||
"pl": "Przepływy pracy",
|
||||
"fr": "Workflows"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -93,7 +100,8 @@
|
||||
"es": "Proyectos",
|
||||
"pt-BR": "Projetos",
|
||||
"ko": "프로젝트",
|
||||
"pl": "Projekty"
|
||||
"pl": "Projekty",
|
||||
"fr": "Projets"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -105,7 +113,8 @@
|
||||
"es": "Contexto",
|
||||
"pt-BR": "Contexto",
|
||||
"ko": "컨텍스트",
|
||||
"pl": "Kontekst"
|
||||
"pl": "Kontekst",
|
||||
"fr": "Contexte"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -117,7 +126,8 @@
|
||||
"es": "Notas, tareas y planes",
|
||||
"pt-BR": "Notas, tarefas e planos",
|
||||
"ko": "메모, 할 일, 계획",
|
||||
"pl": "Notatki, zadania i plany"
|
||||
"pl": "Notatki, zadania i plany",
|
||||
"fr": "Notes, todos et plans"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -129,7 +139,8 @@
|
||||
"es": "Tareas programadas",
|
||||
"pt-BR": "Tarefas agendadas",
|
||||
"ko": "예약 작업",
|
||||
"pl": "Zaplanowane zadania"
|
||||
"pl": "Zaplanowane zadania",
|
||||
"fr": "Tâches planifiées"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -141,7 +152,8 @@
|
||||
"es": "Acciones del proyecto",
|
||||
"pt-BR": "Ações do projeto",
|
||||
"ko": "프로젝트 작업",
|
||||
"pl": "Akcje projektu"
|
||||
"pl": "Akcje projektu",
|
||||
"fr": "Actions de projet"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -153,7 +165,8 @@
|
||||
"es": "Vista previa y servidores de desarrollo",
|
||||
"pt-BR": "Pré-visualização e servidores de desenvolvimento",
|
||||
"ko": "미리보기 및 개발 서버",
|
||||
"pl": "Podgląd i serwery deweloperskie"
|
||||
"pl": "Podgląd i serwery deweloperskie",
|
||||
"fr": "Aperçu et serveurs de dev"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -165,16 +178,23 @@
|
||||
"es": "Sesiones de worktree",
|
||||
"pt-BR": "Sessões de worktree",
|
||||
"ko": "Worktree 세션",
|
||||
"pl": "Sesje worktree"
|
||||
"pl": "Sesje worktree",
|
||||
"fr": "Sessions worktree"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Multi-run",
|
||||
"link": "/multi-run/"
|
||||
"link": "/multi-run/",
|
||||
"translations": {
|
||||
"fr": "Multi-run"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Git & GitHub",
|
||||
"link": "/git/"
|
||||
"link": "/git/",
|
||||
"translations": {
|
||||
"fr": "Git et GitHub"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "GitHub Issues & PRs",
|
||||
@@ -185,7 +205,8 @@
|
||||
"es": "Issues y PRs de GitHub",
|
||||
"pt-BR": "Issues e PRs do GitHub",
|
||||
"ko": "GitHub 이슈 및 PR",
|
||||
"pl": "Zgłoszenia i PR-y GitHub"
|
||||
"pl": "Zgłoszenia i PR-y GitHub",
|
||||
"fr": "Issues et PR GitHub"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -197,7 +218,8 @@
|
||||
"es": "Prompts mágicos",
|
||||
"pt-BR": "Prompts mágicos",
|
||||
"ko": "매직 프롬프트",
|
||||
"pl": "Magiczne prompty"
|
||||
"pl": "Magiczne prompty",
|
||||
"fr": "Magic Prompts"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -209,7 +231,8 @@
|
||||
"es": "Identidades de Git",
|
||||
"pt-BR": "Identidades do Git",
|
||||
"ko": "Git 아이덴티티",
|
||||
"pl": "Tożsamości Git"
|
||||
"pl": "Tożsamości Git",
|
||||
"fr": "Identités Git"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -222,7 +245,8 @@
|
||||
"es": "Configuración de OpenCode",
|
||||
"pt-BR": "Configuração do OpenCode",
|
||||
"ko": "OpenCode 설정",
|
||||
"pl": "Konfiguracja OpenCode"
|
||||
"pl": "Konfiguracja OpenCode",
|
||||
"fr": "Configuration OpenCode"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -234,7 +258,8 @@
|
||||
"es": "Proveedores, modelos y agentes",
|
||||
"pt-BR": "Provedores, modelos e agentes",
|
||||
"ko": "공급자, 모델, 에이전트",
|
||||
"pl": "Dostawcy, modele i agenci"
|
||||
"pl": "Dostawcy, modele i agenci",
|
||||
"fr": "Fournisseurs, modèles et agents"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -246,7 +271,8 @@
|
||||
"es": "Servidores MCP",
|
||||
"pt-BR": "Servidores MCP",
|
||||
"ko": "MCP 서버",
|
||||
"pl": "Serwery MCP"
|
||||
"pl": "Serwery MCP",
|
||||
"fr": "Serveurs MCP"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -258,7 +284,8 @@
|
||||
"es": "Habilidades",
|
||||
"pt-BR": "Habilidades",
|
||||
"ko": "스킬",
|
||||
"pl": "Umiejętności"
|
||||
"pl": "Umiejętności",
|
||||
"fr": "Skills"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -270,7 +297,8 @@
|
||||
"es": "Catálogo de habilidades",
|
||||
"pt-BR": "Catálogo de habilidades",
|
||||
"ko": "스킬 카탈로그",
|
||||
"pl": "Katalog umiejętności"
|
||||
"pl": "Katalog umiejętności",
|
||||
"fr": "Catalogue de skills"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -282,7 +310,8 @@
|
||||
"es": "Comandos y fragmentos",
|
||||
"pt-BR": "Comandos e trechos",
|
||||
"ko": "명령 및 스니펫",
|
||||
"pl": "Polecenia i fragmenty"
|
||||
"pl": "Polecenia i fragmenty",
|
||||
"fr": "Commandes et snippets"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -294,7 +323,8 @@
|
||||
"es": "Uso y cuotas",
|
||||
"pt-BR": "Uso e cotas",
|
||||
"ko": "사용량 및 할당량",
|
||||
"pl": "Zużycie i limity"
|
||||
"pl": "Zużycie i limity",
|
||||
"fr": "Utilisation et quotas"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -307,7 +337,8 @@
|
||||
"es": "Acceso remoto",
|
||||
"pt-BR": "Acesso remoto",
|
||||
"ko": "원격 접속",
|
||||
"pl": "Dostęp zdalny"
|
||||
"pl": "Dostęp zdalny",
|
||||
"fr": "Accès distant"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -319,7 +350,8 @@
|
||||
"es": "Túneles",
|
||||
"pt-BR": "Túneis",
|
||||
"ko": "터널",
|
||||
"pl": "Tunele"
|
||||
"pl": "Tunele",
|
||||
"fr": "Tunnels"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -331,7 +363,8 @@
|
||||
"es": "Proxy inverso",
|
||||
"pt-BR": "Proxy reverso",
|
||||
"ko": "리버스 프록시",
|
||||
"pl": "Reverse proxy"
|
||||
"pl": "Reverse proxy",
|
||||
"fr": "Reverse proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -343,7 +376,8 @@
|
||||
"es": "PWA y móvil",
|
||||
"pt-BR": "PWA e celular",
|
||||
"ko": "PWA 및 모바일",
|
||||
"pl": "PWA i urządzenia mobilne"
|
||||
"pl": "PWA i urządzenia mobilne",
|
||||
"fr": "PWA et mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -355,7 +389,8 @@
|
||||
"es": "Seguridad",
|
||||
"pt-BR": "Segurança",
|
||||
"ko": "보안",
|
||||
"pl": "Bezpieczeństwo"
|
||||
"pl": "Bezpieczeństwo",
|
||||
"fr": "Sécurité"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -368,7 +403,8 @@
|
||||
"es": "Personalizar",
|
||||
"pt-BR": "Personalizar",
|
||||
"ko": "맞춤 설정",
|
||||
"pl": "Dostosuj"
|
||||
"pl": "Dostosuj",
|
||||
"fr": "Personnaliser"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -380,7 +416,8 @@
|
||||
"es": "Temas",
|
||||
"pt-BR": "Temas",
|
||||
"ko": "테마",
|
||||
"pl": "Motywy"
|
||||
"pl": "Motywy",
|
||||
"fr": "Thèmes"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -392,7 +429,8 @@
|
||||
"es": "Notificaciones",
|
||||
"pt-BR": "Notificações",
|
||||
"ko": "알림",
|
||||
"pl": "Powiadomienia"
|
||||
"pl": "Powiadomienia",
|
||||
"fr": "Notifications"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -404,7 +442,8 @@
|
||||
"es": "Modo de voz",
|
||||
"pt-BR": "Modo de voz",
|
||||
"ko": "음성 모드",
|
||||
"pl": "Tryb głosowy"
|
||||
"pl": "Tryb głosowy",
|
||||
"fr": "Mode vocal"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -416,7 +455,8 @@
|
||||
"es": "Iconos de proyecto",
|
||||
"pt-BR": "Ícones de projeto",
|
||||
"ko": "프로젝트 아이콘",
|
||||
"pl": "Ikony projektów"
|
||||
"pl": "Ikony projektów",
|
||||
"fr": "Icônes de projet"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -429,7 +469,8 @@
|
||||
"es": "Escritorio",
|
||||
"pt-BR": "Desktop",
|
||||
"ko": "데스크톱",
|
||||
"pl": "Pulpit"
|
||||
"pl": "Pulpit",
|
||||
"fr": "Desktop"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -441,7 +482,8 @@
|
||||
"es": "Instancias remotas",
|
||||
"pt-BR": "Instâncias remotas",
|
||||
"ko": "원격 인스턴스",
|
||||
"pl": "Zdalne instancje"
|
||||
"pl": "Zdalne instancje",
|
||||
"fr": "Instances distantes"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -453,7 +495,8 @@
|
||||
"es": "Navegador de escritorio",
|
||||
"pt-BR": "Navegador desktop",
|
||||
"ko": "데스크톱 브라우저",
|
||||
"pl": "Przeglądarka na pulpicie"
|
||||
"pl": "Przeglądarka na pulpicie",
|
||||
"fr": "Navigateur desktop"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -465,7 +508,8 @@
|
||||
"es": "Túneles de escritorio",
|
||||
"pt-BR": "Túneis no desktop",
|
||||
"ko": "데스크톱 터널",
|
||||
"pl": "Tunele w aplikacji desktopowej"
|
||||
"pl": "Tunele w aplikacji desktopowej",
|
||||
"fr": "Tunnels desktop"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -477,7 +521,8 @@
|
||||
"es": "Hosts SSH y proxy",
|
||||
"pt-BR": "Hosts SSH e proxy",
|
||||
"ko": "SSH 호스트 및 프록시",
|
||||
"pl": "Hosty SSH i proxy"
|
||||
"pl": "Hosty SSH i proxy",
|
||||
"fr": "Hosts SSH et proxy"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -489,7 +534,8 @@
|
||||
"es": "Actualizaciones",
|
||||
"pt-BR": "Atualizações",
|
||||
"ko": "업데이트",
|
||||
"pl": "Aktualizacje"
|
||||
"pl": "Aktualizacje",
|
||||
"fr": "Mises à jour"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -502,7 +548,8 @@
|
||||
"es": "Ayuda",
|
||||
"pt-BR": "Ajuda",
|
||||
"ko": "도움말",
|
||||
"pl": "Pomoc"
|
||||
"pl": "Pomoc",
|
||||
"fr": "Aide"
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
@@ -514,7 +561,8 @@
|
||||
"es": "Resolución de problemas",
|
||||
"pt-BR": "Solução de problemas",
|
||||
"ko": "문제 해결",
|
||||
"pl": "Rozwiązywanie problemów"
|
||||
"pl": "Rozwiązywanie problemów",
|
||||
"fr": "Dépannage"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -526,7 +574,8 @@
|
||||
"es": "Conexión con OpenCode",
|
||||
"pt-BR": "Conexão com o OpenCode",
|
||||
"ko": "OpenCode 연결",
|
||||
"pl": "Połączenie z OpenCode"
|
||||
"pl": "Połączenie z OpenCode",
|
||||
"fr": "Connexion à OpenCode"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -538,7 +587,8 @@
|
||||
"es": "Worktrees y Git",
|
||||
"pt-BR": "Worktrees e Git",
|
||||
"ko": "Worktree 및 Git",
|
||||
"pl": "Worktree i Git"
|
||||
"pl": "Worktree i Git",
|
||||
"fr": "Worktrees et Git"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -550,7 +600,8 @@
|
||||
"es": "Acceso remoto",
|
||||
"pt-BR": "Acesso remoto",
|
||||
"ko": "원격 접속",
|
||||
"pl": "Dostęp zdalny"
|
||||
"pl": "Dostęp zdalny",
|
||||
"fr": "Accès distant"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user