Skip to content

Added French translation#221

Draft
CodeShadower wants to merge 3 commits intosemperai:masterfrom
CodeShadower:master
Draft

Added French translation#221
CodeShadower wants to merge 3 commits intosemperai:masterfrom
CodeShadower:master

Conversation

@CodeShadower
Copy link
Copy Markdown

@CodeShadower CodeShadower commented Dec 21, 2025

Summary by CodeRabbit

  • New Features
    • Added French (Français) language support. Users can now select French as their UI language; interface elements, messages, labels, prompts, notifications, and feature descriptions are translated and integrated for a complete localized experience.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link
Copy Markdown

vercel bot commented Dec 21, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
amica Error Error Dec 21, 2025 8:03pm

@vercel
Copy link
Copy Markdown

vercel bot commented Dec 21, 2025

@CodeShadower is attempting to deploy a commit to the heyamica Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Dec 21, 2025

Walkthrough

Adds French language support by updating the i18next parser locales, registering French in the language registry, and adding a new French translation JSON resource.

Changes

Cohort / File(s) Change Summary
French Localization Configuration
i18next-parser.config.mjs
Added 'fr' to the locales array so French is included in i18next parsing/output.
Language Registry
src/i18n/langs.ts
Imported French translations from src/i18n/locales/fr/common.json and added a fr entry with nativeName: "Français" to the exported langs object.
French Translation Strings
src/i18n/locales/fr/common.json
New file: comprehensive French translations for UI labels, messages, prompts, and feature texts.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify translation keys match other locale files (no missing/mismatched keys).
  • Check i18next-parser.config.mjs change ensures parser includes fr.
  • Spot-check JSON encoding/format and translation context for critical UI strings.

Poem

🐰 Je bondis, plume et oreille en alerte,
Un "fr" s'ajoute, la langue est offerte.
Clés et chaînes sautillent sous la lune,
Bonjour, Français — la traduction s'allume. 🥕🇫🇷

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Added French translation' directly and clearly summarizes the main change: adding French localization support across configuration and locale files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 60a5a06 and 7b277d2.

📒 Files selected for processing (1)
  • src/i18n/locales/fr/common.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/i18n/locales/fr/common.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ca2415c and 612952e.

📒 Files selected for processing (3)
  • i18next-parser.config.mjs (1 hunks)
  • src/i18n/langs.ts (2 hunks)
  • src/i18n/locales/fr/common.json (1 hunks)
🔇 Additional comments (3)
src/i18n/langs.ts (2)

5-5: LGTM!

The French locale import follows the established pattern and is correctly placed.


28-31: LGTM!

The French locale registration is correctly structured with the proper native name "Français" and follows the same pattern as other locales.

i18next-parser.config.mjs (1)

5-5: LGTM!

The addition of 'fr' to the locales array correctly configures i18next-parser to recognize and process French translations.

Comment on lines +149 to +150
"VRM upload message": "Message de téléchargement VRM",
"VRM local share message": "Message de partage local de VRM",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Translate the placeholder values.

These entries contain English placeholder text instead of French translations. They should be translated to maintain consistency with the rest of the locale file.

🔎 Suggested translations
-  "VRM upload message": "Message de téléchargement VRM",
-  "VRM local share message": "Message de partage local de VRM",
+  "VRM upload message": "Téléchargez un fichier VRM pour personnaliser votre avatar. Les fichiers VRM sont des modèles 3D qui définissent l'apparence de votre personnage.",
+  "VRM local share message": "Le modèle VRM sera stocké localement sur votre appareil et ne sera pas téléchargé sur un serveur.",

Note: Please verify these translations match the actual English message content from the en/common.json file, as the keys suggest they should contain longer explanatory messages rather than simple labels.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In src/i18n/locales/fr/common.json around lines 149 to 150 the values for "VRM
upload message" and "VRM local share message" are still English placeholders;
replace them with proper French translations that correspond to the full English
messages in en/common.json (open en/common.json to copy the exact source text,
translate that text into French preserving meaning and placeholders), update the
two JSON string values accordingly, and ensure punctuation/escaping and JSON
syntax remain valid.

Initial version was messed up somehow.
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (2)
src/i18n/locales/fr/common.json (2)

1-227: Key inconsistencies between French and English locales remain unresolved.

As previously flagged, the French locale file contains a different set of keys than the English locale (154 vs 149 keys). Please ensure all locale files maintain identical key sets for consistency by adding missing keys from English and removing or reconciling French-only keys.


203-204: Complete the placeholder translations for VRM messages.

As previously noted, these entries appear to contain label translations rather than the full explanatory message content that should correspond to the English locale. Please verify the actual English message content from en/common.json and provide complete French translations.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 612952e and 60a5a06.

📒 Files selected for processing (1)
  • src/i18n/locales/fr/common.json (1 hunks)
🧰 Additional context used
🪛 Biome (2.1.2)
src/i18n/locales/fr/common.json

[error] 128-129: expected , but instead found "Loading..."

Remove "Loading..."

(parse)


[error] 215-215: expected , but instead found "Idle text prompt"

Remove "Idle text prompt"

(parse)

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