Process Overview
Open a discussion on Crowdin
Go to the Node.js Web Crowdin project and open a new discussion requesting the addition of your language. Choose New Topic and select the target language from the dropdown.
Wait for the Crowdin manager
A Crowdin project manager will review the request and add the language to the Crowdin project. This step must happen first — translation infrastructure needs to exist before the language is enabled in the codebase.
Configuring the Language
Openpackages/i18n/src/config.json and append a new object to the array:
Field Reference
| Field | Description | Example |
|---|---|---|
code | Language code. Must match the folder name in apps/site/pages/ | fr |
localName | Language name in its own language. Used in the language selector UI | Français |
name | Language name in English | French |
langDir | Text direction: ltr (left-to-right) or rtl (right-to-left) | ltr |
dateFormat | Date format string (moment.js format) | DD.MM.YYYY |
hrefLang | ISO 639-1 language code used in <link hreflang> tags | fr |
enabled | Whether this locale is active. Set to false to disable without removing | true |
default | Whether this is the default locale. Only en should be true | false |
Real Examples from config.json
- English (default)
- Spanish
- Arabic (RTL, disabled)
After Adding the Language
Once the configuration is merged:- The language will appear in the site’s language selector UI
- The build system will look for translated content in
apps/site/pages/{code}/ - Pages without translations will automatically fall back to English content with the new locale’s UI strings
- The Crowdin sync GitHub Actions workflow will start uploading source strings for the new locale
Setting
enabled: false disables a language without removing its configuration. This is useful for languages that are in progress or temporarily unavailable.