Skip to content

Complete French (fr) theme translation (110/110)#491

Merged
cathysarisky merged 2 commits intoTryGhost:mainfrom
bst1n:i18n-fr-complete-translation
Mar 17, 2026
Merged

Complete French (fr) theme translation (110/110)#491
cathysarisky merged 2 commits intoTryGhost:mainfrom
bst1n:i18n-fr-complete-translation

Conversation

@bst1n
Copy link
Copy Markdown
Contributor

@bst1n bst1n commented Mar 10, 2026

Summary

  • Completes the French (fr.json) translation from 22/110 to 110/110 strings
  • All 88 previously empty strings now have French translations

Translation choices

English term French translation Rationale
issue (newsletter) édition Standard French term for newsletter editions
post (blog) publication Generic term covering blog posts
member abonné More natural than "membre" in a subscription context

Test plan

  • Verify JSON is valid and all 110 keys have non-empty values
  • Review translations for natural French phrasing
  • Check that {placeholder} variables are preserved unchanged

🤖 Generated with Claude Code


Note

Low Risk
Low risk localization-only change; main risk is string accuracy or placeholder/escaping issues affecting UI text rendering.

Overview
Completes the French locale file packages/theme-translations/locales/fr.json by replacing previously empty values with French translations for all remaining theme strings (navigation, membership/subscription, archive/issue, and system messages), bringing coverage to 110/110 keys.

Written by Cursor Bugbot for commit 5d9b294. This will update automatically on new commits. Configure here.

Translates all 88 previously empty strings in fr.json, bringing
French coverage from 22/110 to 110/110.

Translation choices:
- "issue" → "édition" (newsletter context)
- "post" → "publication" (blog context)
- "member" → "abonné" (subscription context)
- Placeholder email localized to jean.martin@exemple.com (existing)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 10, 2026

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6852eaf3-dafa-4ca8-87bc-f7b8d0262298

📥 Commits

Reviewing files that changed from the base of the PR and between 4d5f49b and 5d9b294.

📒 Files selected for processing (1)
  • packages/theme-translations/locales/fr.json

Walkthrough

This pull request populates the French locale file packages/theme-translations/locales/fr.json, replacing 111 previously empty strings with French translations for UI and navigation keys. Translated items cover page/navigation labels, content collections, account actions, site prompts, and post-related labels. Template placeholders such as {numberOfIssues}, {tiers}, {sitetitle}, {primaryTag}, and {authors} are retained. No code, logic, or structural changes are included.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: completing the French translation from 22/110 to 110/110 strings, which is the core purpose of this localization PR.
Description check ✅ Passed The description is directly related to the changeset, providing a clear summary of the translation completion, specific translation choices with rationale, and a test plan aligned with the localization work.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

You can make CodeRabbit's review stricter and more nitpicky using the `assertive` profile, if that's what you prefer.

Change the reviews.profile setting to assertive to make CodeRabbit's nitpick more issues in your PRs.

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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/theme-translations/locales/fr.json`:
- Line 8: The French locale uses singular for zero counts; update the zero-count
translations to plural forms — e.g. change the value for the "0 issues" key from
"0 édition" to "0 éditions" and likewise update the other zero-count entries on
the same file (lines 14 and 15) to use plural words (e.g. "0 publications" / "0
éditions" as appropriate) so that all strings representing 0 use the plural
form.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b9e373fc-653f-4f61-8a94-7d84a5163619

📥 Commits

Reviewing files that changed from the base of the PR and between 9916cc1 and 4d5f49b.

📒 Files selected for processing (1)
  • packages/theme-translations/locales/fr.json

Comment thread packages/theme-translations/locales/fr.json
Comment thread packages/theme-translations/locales/fr.json Outdated
"Topics": "Sujets",
"Upgrade": "Mise à niveau",
"Upgrade now": "Mettre à niveau maintenant",
"Upgrade to a paid account to get full access.": "Passez à un compte payant pour un accès complet.",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Passez à un abonnement payant pour un accès complet?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ah oui je suis d'accord avec ça @adenau

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Here @cathysarisky, I think @adenau is right, but in fact he's right beyond the translation. I think that even for English, the default variable should be "Upgrade to a paid subscription..." rather than "Upgrade to a paid account...". That makes more sense for a blog. The word "account" is a bit heavy in my opinion.

"Upgrade": "Mise à niveau",
"Upgrade now": "Mettre à niveau maintenant",
"Upgrade to a paid account to get full access.": "Passez à un compte payant pour un accès complet.",
"Upgrade your account": "Mettez votre compte à niveau",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Surclasser votre compte?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@adenau Yes, that's better! I was looking for the word but couldn't find it. But in that case, you would also have to use the same verb and translate "Upgrade" as "Surclassement," which sounds a little strange. I don't like to use too many different words for similar actions.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We aren't going to fix the English on a French PR. (And changing the English would mess up everyone's translations, so... yeah, we really aren't going to fix the English today.) But there's no problem with using slightly different words that convey an understandable and correct meaning.

Since the conversation seems to have stopped here, I'm going to take my best guess on what was wanted here (because I want to release updates today), and then if you need to fine tune something, you can always open an additional PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

"All episodes →": "Tous les épisodes →",
"Already have an account?": "Vous avez déjà un compte ?",
"Archive": "Archives",
"Browse all issues": "Parcourir toutes les éditions",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

in Québec French, I think we would translate issues to "articles"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

il y a quelques themes dans le repo ou on dit "issues", y pas "posts". [That's all the French I have, as it's been 30 years. Here, the wording means like a magazine or newspaper issue, not a single article or essay that might be in an issue.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@adenau @cathysarisky I have differentiated between "issue," which seems to be dedicated to newsletters / magazine themes, and "post," which seems to be dedicated to publications that do not involve a "newsletter" or magazine format. In any case, I find the word "article" far too reductive in French; it sounds too scientific or political. The word "publication" is more general and better suited to the overall use of a blog on the internet.

@cathysarisky cathysarisky self-assigned this Mar 11, 2026
Comment thread packages/theme-translations/locales/fr.json Outdated
Comment thread packages/theme-translations/locales/fr.json Outdated
Comment thread packages/theme-translations/locales/fr.json Outdated
Co-authored-by: Cathy Sarisky <42299862+cathysarisky@users.noreply.github.com>
@cathysarisky cathysarisky merged commit 78bfa65 into TryGhost:main Mar 17, 2026
51 of 52 checks passed
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

"comment": "commentaire",
"comments": "commentaires",
"Comments": "Commentaires",
"Don\u2019t miss out on the latest issues. Sign up now to get access to the library of members-only issues.": "Ne manquez aucune édition. Inscrivez-vous pour accéder à l'ensemble des éditions réservées aux abonnés.",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Unicode escape mismatch for apostrophe in translation key

Low Severity

The key for the "Don\u2019t miss out..." entry uses the JSON escape sequence \u2019 for the right single quotation mark, while every other locale file in the project (en.json, de.json, de-CH.json, etc.) and the source Handlebars templates use the literal U+2019 character. This is the only occurrence of a \u2019 escape in the entire repository. While functionally equivalent after JSON.parse, this inconsistency could confuse contributors or byte-level diffing tools.

Fix in Cursor Fix in Web

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.

3 participants