Skip to content

[Feat] Add French (fr) translation#555

Open
dpanbug wants to merge 1 commit into
clawwork-ai:mainfrom
dpanbug:add-french-translation
Open

[Feat] Add French (fr) translation#555
dpanbug wants to merge 1 commit into
clawwork-ai:mainfrom
dpanbug:add-french-translation

Conversation

@dpanbug

@dpanbug dpanbug commented Jun 28, 2026

Copy link
Copy Markdown

Summary

Add a complete French (fr) localisation for the ClawWork desktop app and the PWA.

Type of change

  • [Feat] new feature

Why 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?

  • New locale files: packages/desktop/src/renderer/i18n/locales/fr.json (750 strings) and packages/pwa/src/i18n/locales/fr.json (79 strings).
  • Registered fr in packages/shared/src/constants.ts (SUPPORTED_LANGUAGE_CODES), the desktop i18n resources + SUPPORTED_LANGUAGES + quick-launch.html, and the PWA i18n resources + language detection.
  • All i18next placeholders ({{...}}), plural keys and $t() refs preserved; keys sorted with scripts/sort-i18n.mjs.

Architecture impact

  • Owning layer: shared + renderer (and PWA).
  • Cross-layer impact: none — additive locale + registration only, no logic changes.
  • Invariants touched (docs/architecture-invariants.md): none.

Linked issues

None. (Happy to open a tracking issue if preferred.)

Validation

  • pnpm lint
  • pnpm test
  • pnpm build
  • pnpm check:ui-contract
  • Manual smoke test
  • Not run (see notes)

Commands, screenshots, or notes:

Ran `node scripts/check-i18n.mjs` -> PASS: key parity across all locales (incl. fr),
no unused keys, no defaultValue usage, quick-launch.html locale drift OK.
Ran `node scripts/sort-i18n.mjs` on the two new fr.json files.
Did not run the pnpm lint/test/build suite locally (no dev env set up here); this is an
additive i18n change (locale JSON + registration). Glad to run them or address CI feedback.

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

  • User-facing change. Release note is included below.
Added French (fr) language support.

Checklist

  • All commits are signed off (git commit -s)
  • The PR title uses at least one approved prefix: [Feat]
  • The summary explains both what changed and why
  • Validation reflects the commands actually run for this PR
  • Architecture impact is described and references any touched invariants
  • Cross-layer changes are explicitly justified
  • The release note block is accurate

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.

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>
@github-actions

Copy link
Copy Markdown
Contributor

Hi @dpanbug,
Thanks for your pull request!
If the PR is ready, use the /auto-cc command to assign Reviewer to Review.
We will review it shortly.

Details

Instructions for interacting with me using comments are available here.
If you have questions or suggestions related to my behavior, please file an issue against the gh-ci-bot repository.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, 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

  • Ajout de la localisation française: Ajout complet de la traduction française (fr) pour l'application de bureau ClawWork et la PWA, incluant plus de 800 chaînes de caractères.
  • Enregistrement des langues: Mise à jour des constantes de langue supportées et des configurations i18next pour intégrer le nouveau code de langue 'fr'.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
"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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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".

Suggested change
"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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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".

Suggested change
"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",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

In French, "environnement" is a masculine noun. Therefore, the abbreviation "Env." should be followed by the masculine adjective "principal" instead of the feminine "principale".

Suggested change
"skillPrimaryEnv": "Env. principale",
"skillPrimaryEnv": "Env. principal",

"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.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
"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.",

@dpanbug

dpanbug commented Jun 28, 2026

Copy link
Copy Markdown
Author

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 fr translation for the desktop app and the PWA.

I followed the existing localisation conventions and validated with scripts/check-i18n.mjs (all green). A few terms are judgment calls (e.g. GatewayPasserelle, SkillCompétence, vous-form, infinitives for buttons) — very happy to align them to whatever you prefer.

Thanks for building ClawWork, glad to help it reach more French speakers. 🇫🇷

@dpanbug

dpanbug commented Jun 28, 2026

Copy link
Copy Markdown
Author

/auto-cc

@github-actions github-actions Bot requested a review from yankay June 28, 2026 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant