A crowdsourced journey to translate ProtonDB (News post)
ProtonDB loads its text using react-i18next resource bundles in JSON.
Each language, as represented by their 'xx-XX' BCP-47 language tag, lives within locales
. Within each locale's directory are the following files:
protondb-content.json
(translations for content around the site)proton-report.json
(translations for the reporting flow specific to Proton)questionnaire.json
(translations for generic items in the reporting flow)general.json
(everything else)
None! You can browse this repository and edit the files manually. But editing language files can be fiddly and typos are common. It's preferable to grab some tools:
- Node.js
- yarn (if you want to skip this,
npm
is included with node and will probably work fine as a substitute). - A text editor, ideally one with colored formatting for JSON.
All native speakers are welcome to contribute! Please do not make pull requests with automated translations.
- Fork this repo
- Download your fork
- In your downloaded directory, install dependencies by running
yarn
- If starting a new locale, create the directory named after your language tag within
locales
and copy over files from thelocales/en-US
directory - Make your changes/additions
- Review them visually (see Verify Your Changes below)
- Run
yarn lint:json
to validate everything is alphabetized and formatted properly - Commit, push, and open a pull request!
Any questions? Ask us on Discord You might want to let us know on there anyway that you're starting work so that we can add you to Known Active Translations below.
Keep an eye out for page rendering issues if your text is smaller or larger than the English equivalent, and open an issue with a screenshot if you cannot fit readable words for your language.
- Learn how to modify your browser's local storage (here are instructions for Chrome and Firefox)
- Visit ProtonDB
- If you're not already, switch to English
- (NEW): For both files, copy the values for
i18nStamp
andi18nVersion
that occur in the ones that are stored in your local storage. - For each file in the locales directory, copy its contents into a local storage entry of
i18next:en-US-filename
, i.e.i18next:en-US-proton-report
- Reload and review
- (NEW): When finished, remove the values you added for
i18nStamp
andi18nVersion
before submitting your PR
As ProtonDB continues development, new text will be added that may need translation. For a quick way to verify if a language is missing translations (or has identical ones to English), you can run: yarn compare --locale <locale-code>
- Portuguese (pt-BR): @pedrofleck (ongoing at PR #10)
- German (de-DE): @NoXPhasma and @VoxelCubes
- Polish (pl-PL): @kacperski1
- Ukrainian (uk-UA): @iodream
- Bulgarian (bg-BG): @mialy
- Greek (el-GR): @xnick
- Swedish (sv-SE): @newbytee
- French (fr-FR): @julroy67
- Italian (it-IT): @apontini and @protoroto
- Spanish (es-ES): @xathech
- Simplified Chinese (zh-Hans): @zactry
- Dutch (nl-NL): @hypothermic
- Russian (ru-RU): @Homaykin
- Turkish (tr-TR): @csengor
- Taiwanese Chinese (zh-TW): @laichiaheng
- An expanded ProtonDB help section will need translations too!