docs/contributing/translations.mdx
Reactive Resume is used all over the world. If you speak a language other than English, you can help by contributing translations.
Reactive Resume uses Crowdin as its localization management platform. Crowdin gives translators an interface for contributing translations without writing code or editing files directly.
<Info> The Reactive Resume Crowdin project is available at [https://crowdin.com/project/reactive-resume](https://crowdin.com/project/reactive-resume). </Info>Once translations are submitted and approved on Crowdin, they are automatically synced to the codebase and will be available in the next release of the app.
The PDF renderer uses a generated subset of the same translations for default section headings. Run pnpm pdf:translations after editing or syncing the PO catalogs. The root pnpm lingui:extract, pnpm check, and pnpm build commands also regenerate this file automatically.
Commit packages/pdf/src/section-title-catalog.json with the catalog updates. Edit the source PO files rather than the generated JSON; a tooling test checks that they stay synchronized.
<Step title="Join the Reactive Resume Project">
Navigate to the [Reactive Resume project on Crowdin](https://crowdin.com/project/reactive-resume) and click **Join**
to become a contributor.
</Step>
<Step title="Select Your Language">
From the project dashboard, click on the language you want to translate. You'll see a list of files that need
translation along with the progress for each.
</Step>
<Step title="Start Translating">
Click on a file to open the Crowdin Editor. You'll see the source text (English) on the left and a text field for
your translation on the right. - Translate the text accurately while preserving any placeholders or formatting - Use
the suggestions from Translation Memory and Machine Translation as a starting point - Vote on existing translations
if you agree with them
</Step>
<Step title="Save Your Translations">
Your translations are saved automatically as you work. Once reviewed, they'll be included in the next app release.
</Step>
To maintain consistency across all translations, please follow these guidelines:
Some strings contain placeholders like {name} or {count}. These must remain unchanged in your translation:
English: "Hello, {name}!"
Spanish: "¡Hola, {name}!"
Preserve any HTML tags or markdown formatting in the source text:
English: "Click <1>here</1> to continue"
German: "Klicken Sie <1>hier</1>, um fortzufahren"
Choose either formal or informal language based on what's standard for software in your language, and stick with it throughout.
Some technical terms (like "PDF", "URL", "JSON") are often kept in English across languages. Use your judgment based on what's common in your language's software community.
If your language is not listed in the Crowdin project, you can request it to be added.
<Warning> Before requesting a new language, please check if it's already available in the [Crowdin project](https://crowdin.com/project/reactive-resume). </Warning>To request a new language:
Once approved, the language will be added to Crowdin and you can begin translating.
Translations submitted on Crowdin are synced to the codebase periodically. Once merged, they will be included in the next release of Reactive Resume.
<Info> There may be a delay between submitting translations and seeing them live in the app. This is normal and depends on the release cycle. </Info>Thank you for helping translate Reactive Resume.