web/docs/translations.md
We use Crowdin for translations, and the i18next library to load these at
runtime.
Within our project we have the source strings - these are the key value pairs
in the packages/base/locales/en-US/translation.json file.
Volunteers can add a new translation in their language corresponding to each such source key-value to our Crowdin project.
Everyday, we run a GitHub workflow that
Uploads sources to Crowdin - So any new key value pair we add in the source
translation.json becomes available to translators to translate.
Downloads translations from Crowdin - So any new translations that translators
have made on the Crowdin dashboard (for existing sources) will be added to the
corresponding lang/translation.json.
The workflow also uploads existing translations and also downloads new sources from Crowdin, but these two should be no-ops.
packages/base/locales/en-US/translation.json (the
source translation.json).t function (import { t } from "i18next").translation.json.translation.json.lang/translation.json files in the repository).