Add native French localization support - #1241
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 6, 2026, 6:26 PM ET / 22:26 UTC. Summary Reproducibility: not applicable. this is a localization feature PR, not a bug report. The observable behavior is covered by the contributor screenshots and static resource checks. Review metrics: 2 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Ship the French localization through the existing Do we have a high-confidence way to reproduce the issue? Not applicable; this is a localization feature PR, not a bug report. The observable behavior is covered by the contributor screenshots and static resource checks. Is this the best way to solve the issue? Yes; the PR uses the repository's existing maintainable localization pattern by adding an AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 867ac583a740. Label changesLabel justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ed33dd5c7d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "overview_choose_providers" = "Choisissez jusqu'à %@ fournisseurs"; | ||
| "remove_account_message" = "Supprimer %@ de CodexBar ? Sa maison Codex gérée sera supprimée."; | ||
| "version_format" = "Version %@"; | ||
| "vertex_ai_login_instructions" = "Pour suivre l'utilisation de Vertex AI, authentifiez-vous auprès de Google Cloud.\n\n1. Ouvrez le terminal\n2. Exécutez : gcloud auth application-login par défaut\n3. Suivez les invites du navigateur pour vous connecter\n4. Définissez votre projet : gcloud config set project PROJECT_ID\n\nOuvrir le terminal maintenant ?"; |
There was a problem hiding this comment.
Keep the Vertex AI gcloud command unlocalized
In the French locale, the Vertex AI setup dialog tells users to run gcloud auth application-login par défaut, but the app's own launcher still executes gcloud auth application-default login --scopes=... in VertexAILoginFlow.swift, and Google documents the command as gcloud auth application-default login. A French user following the manual steps would copy an invalid gcloud command and fail to authenticate Vertex AI.
Useful? React with 👍 / 👎.
| "Service" = "Service"; | ||
| "Show or hide Kiro credits, percent, or both next to the menu bar icon." = "Affichez ou masquez les crédits Kiro, le pourcentage ou les deux à côté de l'icône de la barre de menu."; | ||
| "Show usage for organizations you belong to. Personal account is always shown." = "Afficher l'utilisation des organisations auxquelles vous appartenez. Le compte personnel est toujours affiché."; | ||
| "Sign in to cursor.com in your browser, then refresh Cursor in CodexBar." = "Connectez-vous à curseur.com dans votre navigateur, puis actualisez le curseur dans CodexBar."; |
There was a problem hiding this comment.
Preserve cursor.com in French login hints
This localized Cursor login hint changes the service URL from cursor.com to curseur.com. When Cursor login times out, CursorLoginRunner displays this exact string via L("Sign in to cursor.com in your browser, then refresh Cursor in CodexBar."), so French users are directed to the wrong domain and may not be able to complete the account setup.
Useful? React with 👍 / 👎.
|
@clawsweeper re-review Added validation screenshots for the French localization pass. UI Validation Screenshots1) Providers View
2) Menu Card / Compact View
3) General Settings View
Local Verification
Please re-run the review and provide an updated rating on the latest commit. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Updated #1241 at head Fixed the remaining high-risk French provider/auth literals called out by ClawSweeper:
Validation:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
c436afa to
3c4f7ab
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3c4f7ab429
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "Cost" = "Coût"; | ||
| "Could not add Codex account" = "Impossible d'ajouter un compte Codex"; | ||
| "Could not open Terminal for Gemini" = "Impossible d'ouvrir le terminal pour Gemini"; | ||
| "Could not start claude /login" = "Impossible de démarrer Claude /connexion"; |
There was a problem hiding this comment.
Keep the Claude /login command literal
When the Claude login runner fails to launch, StatusItemController+Actions.swift shows this localized string as the alert title for the actual claude /login command. Translating the slash command to Claude /connexion points French users at a command that does not exist, making the recovery/debugging alert misleading; the claude /login token should stay unchanged as in the other locales.
Useful? React with 👍 / 👎.
| "No output captured." = "Aucune sortie capturée."; | ||
| "No system account" = "Aucun compte système"; | ||
| "Oasis-Token" = "Oasis-Token"; | ||
| "Open Augment (Log Out & Back In)" = "Ouvrir l'augmentation (déconnexion et reconnexion)"; |
There was a problem hiding this comment.
Preserve the Augment provider name
In AugmentProviderImplementation.appendActionMenuEntries, this label is the recovery action shown specifically when an Augment session expires and it opens https://app.augmentcode.com. Translating the product name to “l'augmentation” removes the provider name from the menu, so French users seeing an expired Augment session are not told which service this logout/login action applies to.
Useful? React with 👍 / 👎.
| "Utilization End" = "Fin d'utilisation"; | ||
| "Utilization Start" = "Début de l'utilisation"; | ||
| "Verbosity" = "Niveau de verbosité"; | ||
| "Windsurf session JSON bundle" = "Pack JSON de session de planche à voile"; |
There was a problem hiding this comment.
Preserve Windsurf in the JSON placeholder
WindsurfProviderImplementation.settingsFields uses this string as the secure input placeholder when manual Windsurf session data is required. Translating the provider name to “planche à voile” hides that the field expects a Windsurf localStorage JSON bundle, which can block French users from recognizing what credential to paste.
Useful? React with 👍 / 👎.
|
Landed as d3151b7. Tested locally on the rebased integration stack before merge:
Remote exact-head verification before merge:
Verification images:
|



Summary
fr.lprojlocalization resources for CodexBarfr)language_frenchlabels across existing locale files so language names render consistentlyValidation
%@,%d,\(...), escaped newlines)