Skip to content

feat: complete french localization#69

Open
rundredoffi wants to merge 1 commit intoopenclaw:masterfrom
rundredoffi:master
Open

feat: complete french localization#69
rundredoffi wants to merge 1 commit intoopenclaw:masterfrom
rundredoffi:master

Conversation

@rundredoffi
Copy link

@rundredoffi rundredoffi commented Mar 18, 2026

@rundredoffi rundredoffi changed the title feat: complet french localization feat: complete french localization Mar 18, 2026
@github-actions
Copy link
Contributor


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, @rundredoffi, and thank you for this French localization! 🇫🇷 This is exactly the kind of community contribution issue #61 was hoping for.

Quick validation results:

  • ✅ 163 keys — matches en-us and zh-cn exactly
  • ✅ All {0}/{1} format placeholders preserved
  • ✅ Correct directory structure (fr-fr/Resources.resw)

A few things a maintainer will want to verify before merging:

  1. Branch: The PR was opened from your master branch — if you plan to make any changes based on review feedback, a dedicated feature branch makes that easier.
  2. Spot-check a few translations: The file looks structurally complete. A native French speaker's eyes on some of the technical strings (toast messages, error text) would be welcome.
  3. No code changes needed — localization is purely additive here.

Thanks again for taking the time to do this! 🎉

Generated by Repo Assist ·

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/repo-assist.md@cbb46ab386962aa371045839fc9998ee4e97ca64

github-actions bot added a commit that referenced this pull request Mar 19, 2026
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>
@openclaw openclaw deleted a comment from wisdomdaoleo Mar 21, 2026
@shanselman shanselman requested a review from Copilot March 21, 2026 03:37
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.resw with 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_NodePaired uses "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>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
<value>Créer un nouveau flux d'activités</value>
<value>Ouvrir le flux d'activités</value>

Copilot uses AI. Check for mistakes.
<value>NOTIFICATIONS</value>
</data>
<data name="SettingsAdvancedHeader.Text" xml:space="preserve">
<value>AVANCÉ (EXPERIMENTAL)</value>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
<value>AVANCÉ (EXPERIMENTAL)</value>
<value>AVANCÉ (EXPÉRIMENTAL)</value>

Copilot uses AI. Check for mistakes.
<value>Paramètres — OpenClaw Tray</value>
</data>
<data name="WindowTitle_Status" xml:space="preserve">
<value>Status — OpenClaw Tray</value>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

WindowTitle_Status still displays "Status" in English. To match the rest of the French localization, translate this window title (keeping the product name unchanged).

Suggested change
<value>Status — OpenClaw Tray</value>
<value>Statut — OpenClaw Tray</value>

Copilot uses AI. Check for mistakes.
<value>Status — OpenClaw Tray</value>
</data>
<data name="WindowTitle_ActivityStream" xml:space="preserve">
<value>Flux d'activités — OpenClaw Tray</value>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
<value>Flux d'activités — OpenClaw Tray</value>
<value>Flux d'activité — OpenClaw Tray</value>

Copilot uses AI. Check for mistakes.
<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>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
<value>Ceci est une notifications de test provenant de OpenClaw Tray.</value>
<value>Ceci est une notification de test provenant d’OpenClaw Tray.</value>

Copilot uses AI. Check for mistakes.
Comment on lines +560 to +562
<data name="Toast_NodeModeActive" xml:space="preserve">
<value>🔌 Mode de noeud actif</value>
</data>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
<value>Token</value>
</data>
<data name="SettingsTokenTextBox.PlaceholderText" xml:space="preserve">
<value>Votre API Token</value>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

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

Suggested change
<value>Votre API Token</value>
<value>Votre jeton d’API</value>

Copilot uses AI. Check for mistakes.

<!-- Tray menu dynamic text -->
<data name="Menu_StatusFormat" xml:space="preserve">
<value>Status: {0}</value>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

Menu_StatusFormat is still in English ("Status: {0}"). For a complete French localization, translate the label text while preserving the {0} placeholder.

Suggested change
<value>Status: {0}</value>
<value>Statut : {0}</value>

Copilot uses AI. Check for mistakes.
<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>
Copy link

Copilot AI Mar 21, 2026

Choose a reason for hiding this comment

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

Toast_NodeSummaryCopiedDetail uses "presse papier"; the standard French term is "presse-papiers". Fixing this avoids a visible typo in a toast message.

Suggested change
<value>{0} nœud(s) copiés dans le presse papier</value>
<value>{0} nœud(s) copiés dans le presse-papiers</value>

Copilot uses AI. Check for mistakes.
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.

2 participants