Skip to content

Add French (fr) locale with polite vous form#61

Merged
AdaInTheLab merged 1 commit intomainfrom
feature/i18n-french
May 9, 2026
Merged

Add French (fr) locale with polite vous form#61
AdaInTheLab merged 1 commit intomainfrom
feature/i18n-french

Conversation

@AdaInTheLab
Copy link
Copy Markdown
Collaborator

Summary

Second of three planned language additions (German shipped in #59, Spanish queued next). French, polite vous form throughout.

What's in the locale

  • Full mirror of `en.ts` (~250 keys across 30 namespaces) translated to French
  • Polite form (`vous`) — appropriate register for an admin tool
  • Technical proper nouns kept in English: Steam, EAC, telnet, Cloudflare, Discord, IANA, BBGGRR, etc.
  • Game-specific terms use the conventional 7D2D-FR renderings: « Lune de sang », « Z-Kills », etc.
  • Action buttons in standard French UI infinitive form (Enregistrer, Modifier, Supprimer, ...)
  • Browser auto-detect extended — visitors with `fr-*` locale (fr-FR, fr-CA, fr-BE, etc.) land on French automatically
  • broadcastsHint translated to French (the language-switcher tooltip flagging that in-game broadcasts don't auto-translate)

Quality note

This is a competent first pass, not a professional localization. Common UX surfaces should read naturally; the deeper config-editor field labels are direct translations and would benefit from a domain-fluent native-speaker polish. PRs welcome.

Files

File What
`frontend/src/i18n/locales/fr.ts` New
`frontend/src/i18n/index.ts` Register `fr`, add to `SUPPORTED_LOCALES`, extend browser-language detect

Test plan

  • Pull, build, deploy
  • Hard-refresh panel → language dropdown shows "Français" between "Deutsch" and "简体中文"
  • Switch to Français — sidebar nav, dashboard, settings, etc. render in French
  • Hover the language switcher → tooltip shows the broadcasts-not-translated note in French
  • Set browser language to `fr-FR`, clear localStorage, reload → defaults to Français
  • vue-tsc passes (structural typecheck across all 7 locales)

Next up

  • Spanish (es.ts) — separate PR, same pattern with polite `usted` form

🤖 Generated with Claude Code

Second of three planned language additions (de done in #59, es next).
Same shape as the German PR — full mirror of en.ts translated, polite
vous register, technical proper nouns kept in English, browser-language
detection extended for fr-* visitors.

Game-specific terms use conventional 7D2D-FR renderings (« Lune de
sang », etc.). Action buttons in standard French UI infinitive form
(Enregistrer, Modifier, Supprimer, ...).

Quality-wise this is a competent first pass — common UX surfaces should
read naturally; the deeper config-editor field labels are direct
translations and would benefit from a domain-fluent native-speaker
polish. PRs welcome.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AdaInTheLab AdaInTheLab merged commit 5622b9b into main May 9, 2026
2 checks passed
@AdaInTheLab AdaInTheLab deleted the feature/i18n-french branch May 9, 2026 12:14
AdaInTheLab added a commit that referenced this pull request May 9, 2026
Third and final language addition in this round (German #59, French
#61 already shipped). Same shape: full mirror of en.ts, polite usted
register, technical proper nouns kept in English, browser-language
detection extended for es-* visitors (es-ES, es-MX, es-AR, etc.).

Game-specific terms use the conventional 7D2D-ES renderings («Luna
de sangre», etc.). Action buttons in standard Spanish UI infinitive
form (Guardar, Editar, Eliminar, ...).

Quality-wise this is a competent first pass — common UX surfaces
should read naturally; the deeper config-editor field labels are
direct translations and would benefit from a domain-fluent native-
speaker polish. PRs welcome.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AdaInTheLab AdaInTheLab mentioned this pull request May 9, 2026
5 tasks
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