[Feat] Add French (fr) translation#555
Conversation
Adds a complete French locale for the desktop app (750 strings) and the PWA (79 strings), and registers `fr` in: - packages/shared SUPPORTED_LANGUAGE_CODES - desktop i18n resources + SUPPORTED_LANGUAGES + quick-launch.html - pwa i18n resources + language detection Validated with scripts/check-i18n.mjs (key parity OK across all locales, no unused keys, no defaultValue usage, quick-launch locale drift OK). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: kainam <tek@dpan-bug.com>
|
Hi @dpanbug, DetailsInstructions for interacting with me using comments are available here. |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! Ce pull request introduit une localisation complète en français pour l'application de bureau ClawWork et la PWA. L'objectif est d'offrir une expérience utilisateur native aux francophones en traduisant l'interface, les commandes et les messages système. Les changements sont purement additifs, incluant de nouveaux fichiers de ressources JSON et l'enregistrement nécessaire dans les configurations existantes, sans modifier la logique métier. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces French language support across the desktop, PWA, and shared packages, including the addition of comprehensive French translation files. The review feedback focuses on refining the French translations, specifically addressing spacing inconsistencies for unit abbreviations, correcting grammatical phrasing for session targets, fixing gender agreement for environment variables, and suggesting more natural phrasing for QR code scanning instructions.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| "command": "Commande", | ||
| "cwd": "Répertoire de travail", | ||
| "deny": "Refuser", | ||
| "expiresIn": "Expire dans {{seconds}}s", |
There was a problem hiding this comment.
There is a spacing inconsistency for unit abbreviations in French. Line 11 uses {{seconds}}s (no space), whereas line 529 uses {{seconds}} s (with a space). To maintain consistency with French typographic standards and other keys in this file (like pairExpiresIn and minAgo), a space should be added before s.
| "expiresIn": "Expire dans {{seconds}}s", | |
| "expiresIn": "Expire dans {{seconds}} s", |
| "errorDeliveryTargetRequired": "Veuillez saisir une URL de webhook", | ||
| "errorFailureAlertAfterInvalid": "Le seuil d'alerte d'échec doit être supérieur à zéro", | ||
| "errorFailureAlertTargetRequired": "Veuillez saisir une URL de webhook pour les alertes d'échec", | ||
| "errorMainSessionPayload": "La cible session principale ne prend en charge que les événements système", |
There was a problem hiding this comment.
The translation "La cible session principale" is grammatically awkward in French. To be consistent with the translation of fieldSessionTarget ("Cible de session" on line 195), it should be updated to "La cible de session principale".
| "errorMainSessionPayload": "La cible session principale ne prend en charge que les événements système", | |
| "errorMainSessionPayload": "La cible de session principale ne prend en charge que les événements système", |
| "invalidExpression": "Expression Cron invalide", | ||
| "jobCount": "{{count}} tâches", | ||
| "loadingCatalogs": "Chargement des catalogues...", | ||
| "mainSessionNote": "La cible session principale ne prend en charge que les événements système", |
There was a problem hiding this comment.
The translation "La cible session principale" is grammatically awkward in French. To be consistent with the translation of fieldSessionTarget ("Cible de session" on line 195), it should be updated to "La cible de session principale".
| "mainSessionNote": "La cible session principale ne prend en charge que les événements système", | |
| "mainSessionNote": "La cible de session principale ne prend en charge que les événements système", |
| "skillMissingEnv": "{{count}} variables d'environnement manquantes", | ||
| "skillMissingOs": "Système d'exploitation non pris en charge", | ||
| "skillNoResults": "Aucune compétence ne correspond au filtre actuel", | ||
| "skillPrimaryEnv": "Env. principale", |
There was a problem hiding this comment.
| "pairing": { | ||
| "cameraError": "Accès à la caméra refusé", | ||
| "cancelButton": "Annuler", | ||
| "instruction": "Après la lecture, approuvez cet appareil sur votre poste de bureau avant que l'app mobile puisse se connecter.", |
There was a problem hiding this comment.
The phrase "Après la lecture" is a bit literal for scanning a QR code. In French, "Après le scan" or "Après avoir scanné" is much more natural and user-friendly in this context.
| "instruction": "Après la lecture, approuvez cet appareil sur votre poste de bureau avant que l'app mobile puisse se connecter.", | |
| "instruction": "Après le scan, approuvez cet appareil sur votre poste de bureau avant que l'app mobile puisse se connecter.", |
|
Hi team 👋 I started using ClawWork recently and really like the three-panel task workbench — it's exactly how I want to drive my agents. I noticed French wasn't in the locale list yet, so I put together a complete I followed the existing localisation conventions and validated with Thanks for building ClawWork, glad to help it reach more French speakers. 🇫🇷 |
|
/auto-cc |
Summary
Add a complete French (
fr) localisation for the ClawWork desktop app and the PWA.Type of change
[Feat]new featureWhy is this needed?
ClawWork ships 8 languages but not French. This adds French so French-speaking users get a fully localised UI (desktop + PWA + quick launcher).
What changed?
packages/desktop/src/renderer/i18n/locales/fr.json(750 strings) andpackages/pwa/src/i18n/locales/fr.json(79 strings).frinpackages/shared/src/constants.ts(SUPPORTED_LANGUAGE_CODES), the desktop i18n resources +SUPPORTED_LANGUAGES+quick-launch.html, and the PWA i18n resources + language detection.{{...}}), plural keys and$t()refs preserved; keys sorted withscripts/sort-i18n.mjs.Architecture impact
docs/architecture-invariants.md): none.Linked issues
None. (Happy to open a tracking issue if preferred.)
Validation
pnpm lintpnpm testpnpm buildpnpm check:ui-contractCommands, screenshots, or notes:
Screenshots or recordings
i18n-only change — text values only, no layout/style/component changes. Happy to add screenshots of the French UI if useful.
Release note
Checklist
git commit -s)[Feat]A note on terminology: French choices follow the existing localisation conventions (e.g.
Gateway->Passerelle,Skill->Compétence, vous-form, infinitives for buttons). Happy to adjust any of these to match maintainer preferences.