feat: complete french localization#69
Conversation
|
Note The pull request was not created — a fallback review issue was created instead due to protected file changes: #70 🤖 This is an automated response from Repo Assist. Welcome, Quick validation results:
A few things a maintainer will want to verify before merging:
Thanks again for taking the time to do this! 🎉
|
Add LocalizationValidationTests to catch regressions in translation PRs: - AllLocales_HaveExactlySameKeysAsEnUs: asserts every locale under Strings/ has exactly the same resource key set as en-us — no missing or extra entries. Runs against all present locales (zh-cn, and any future ones like fr-fr from PR #69). - AllLocales_PreserveFormatPlaceholders: asserts that {0}/{1}/... format placeholders in translated values match the en-us source, preventing runtime FormatException from mistranslated strings. 95 Tray tests pass (93 existing + 2 new). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a French (fr-FR) localization resource file for the WinUI tray app, aligning with the existing .resw-based localization infrastructure.
Changes:
- Introduces
fr-fr/Resources.reswwith French translations for UI strings (settings, menus, dialogs, toasts, runtime messages).
Comments suppressed due to low confidence (1)
src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw:574
Toast_NodePaireduses "Noeud" (missing "œ") and lacks the same spelling used elsewhere ("nœud"). Standardizing this will keep node-related messaging consistent across the app.
<data name="Toast_NodePaired" xml:space="preserve">
<value>✅ Noeud appairé!</value>
</data>
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <value>Ouvrez le menu de la zone de notification pour voir les sessions en direct, l'utilisation et l'activité des nœuds dans un seul menu volant.</value> | ||
| </data> | ||
| <data name="Toast_ActivityStreamTipButton" xml:space="preserve"> | ||
| <value>Créer un nouveau flux d'activités</value> |
There was a problem hiding this comment.
Toast_ActivityStreamTipButton currently reads "Créer un nouveau flux d'activités", but the English source string is an “open” action (see en-us Toast_ActivityStreamTipButton). This label should describe opening the Activity Stream rather than creating one, to avoid misleading users.
| <value>Créer un nouveau flux d'activités</value> | |
| <value>Ouvrir le flux d'activités</value> |
| <value>NOTIFICATIONS</value> | ||
| </data> | ||
| <data name="SettingsAdvancedHeader.Text" xml:space="preserve"> | ||
| <value>AVANCÉ (EXPERIMENTAL)</value> |
There was a problem hiding this comment.
SettingsAdvancedHeader.Text uses "EXPERIMENTAL" (English spelling) in an otherwise French header. Consider translating it and/or using correct French spelling/diacritics so this section header isn’t partially untranslated.
| <value>AVANCÉ (EXPERIMENTAL)</value> | |
| <value>AVANCÉ (EXPÉRIMENTAL)</value> |
| <value>Paramètres — OpenClaw Tray</value> | ||
| </data> | ||
| <data name="WindowTitle_Status" xml:space="preserve"> | ||
| <value>Status — OpenClaw Tray</value> |
There was a problem hiding this comment.
WindowTitle_Status still displays "Status" in English. To match the rest of the French localization, translate this window title (keeping the product name unchanged).
| <value>Status — OpenClaw Tray</value> | |
| <value>Statut — OpenClaw Tray</value> |
| <value>Status — OpenClaw Tray</value> | ||
| </data> | ||
| <data name="WindowTitle_ActivityStream" xml:space="preserve"> | ||
| <value>Flux d'activités — OpenClaw Tray</value> |
There was a problem hiding this comment.
WindowTitle_ActivityStream uses "Flux d'activités" while other strings use the singular (e.g., ActivityStreamTitle.Text and Menu_ActivityStream). Align the wording to a single consistent translation to avoid mixed terminology in the UI.
| <value>Flux d'activités — OpenClaw Tray</value> | |
| <value>Flux d'activité — OpenClaw Tray</value> |
| <value>Test de notifications</value> | ||
| </data> | ||
| <data name="TestNotification_Body" xml:space="preserve"> | ||
| <value>Ceci est une notifications de test provenant de OpenClaw Tray.</value> |
There was a problem hiding this comment.
TestNotification_Body has French grammar issues ("une notifications" should be singular, and "de OpenClaw" should contract). This string is user-facing and would benefit from correcting the wording.
| <value>Ceci est une notifications de test provenant de OpenClaw Tray.</value> | |
| <value>Ceci est une notification de test provenant d’OpenClaw Tray.</value> |
| <data name="Toast_NodeModeActive" xml:space="preserve"> | ||
| <value>🔌 Mode de noeud actif</value> | ||
| </data> |
There was a problem hiding this comment.
Toast_NodeModeActive uses "noeud" without the French ligature ("nœud"), while other strings in this file use "Nœuds". Standardize the spelling so the UI doesn’t show inconsistent terminology.
This issue also appears on line 572 of the same file.
| <value>Token</value> | ||
| </data> | ||
| <data name="SettingsTokenTextBox.PlaceholderText" xml:space="preserve"> | ||
| <value>Votre API Token</value> |
There was a problem hiding this comment.
SettingsTokenTextBox.PlaceholderText is still partially English ("API Token"). Since this PR aims for complete French localization, translate this placeholder fully (while keeping the meaning and any technical terms consistent with the rest of the UI).
| <value>Votre API Token</value> | |
| <value>Votre jeton d’API</value> |
|
|
||
| <!-- Tray menu dynamic text --> | ||
| <data name="Menu_StatusFormat" xml:space="preserve"> | ||
| <value>Status: {0}</value> |
There was a problem hiding this comment.
Menu_StatusFormat is still in English ("Status: {0}"). For a complete French localization, translate the label text while preserving the {0} placeholder.
| <value>Status: {0}</value> | |
| <value>Statut : {0}</value> |
| <value>📋 Résumé du nœud copié</value> | ||
| </data> | ||
| <data name="Toast_NodeSummaryCopiedDetail" xml:space="preserve"> | ||
| <value>{0} nœud(s) copiés dans le presse papier</value> |
There was a problem hiding this comment.
Toast_NodeSummaryCopiedDetail uses "presse papier"; the standard French term is "presse-papiers". Fixing this avoids a visible typo in a toast message.
| <value>{0} nœud(s) copiés dans le presse papier</value> | |
| <value>{0} nœud(s) copiés dans le presse-papiers</value> |
Uh oh!
There was an error while loading. Please reload this page.