Traductions
L'interface est traduite avec i18next (react-i18next). L'anglais est la source : les autres langues doivent avoir exactement les mêmes clés.
| Code | Langue |
|---|---|
en | Anglais (source) |
fr | Français |
de | Allemand |
es | Espagnol |
it | Italien |
nl | Néerlandais |
pt-PT / pt-BR | Portugais (Portugal / Brésil) |
ja | Japonais |
zh-CN | Chinois simplifié |
Fichiers
Les traductions sont dans host-panel-interface/src/i18n/locales/<langue>/<namespace>.json, un namespace par partie de l'application : common, layout, home, containers, domains, cron, users, sftp, hosting, databases, networks, functions, apikeys, audit, errors.
Ajouter ou modifier un texte
- Ajoutez ou modifiez la clé dans le fichier anglais. Les clés sont typées à partir des fichiers anglais : une clé inconnue fait échouer la vérification des types.
- Ajoutez la même clé dans le même fichier des 9 autres langues.
- Utilisez-la dans le code avec
t("namespace:key"). Hors d'un composant, appelezi18n.t("ns:key")au moment où le texte est nécessaire, pas au chargement du module. - Lancez
yarn i18n:check.
Règles vérifiées par yarn i18n:check
La vérification tourne aussi en CI.
| Règle | Exemple |
|---|---|
| Mêmes clés que l'anglais dans chaque langue | — |
Mêmes {{variables}} | "{{count}} containers" |
Mêmes balises <Trans> | <code>…</code>, <br/> |
Les pluriels utilisent les suffixes i18next et définissent au moins _other | _one / _other ; _many en fr, es, it, pt-* ; _other seul en ja et zh-CN |
Chaque langue de SUPPORTED_LANGUAGES a un dossier, et chaque dossier est déclaré | — |
{{count}} peut être omis dans une forme du pluriel (« un élément »).
Ajouter un namespace
- Créez
locales/en/<namespace>.jsonet le même fichier dans chaque autre langue. - Importez le fichier anglais dans
src/i18n/index.tset ajoutez-le à l'objeten. Les autres langues sont chargées automatiquement.
Ajouter une langue
Exemple pour le coréen (ko) :
- Copiez
src/i18n/locales/en/verssrc/i18n/locales/ko/et traduisez les valeurs. Gardez les clés, les{{variables}}et les balises inchangées. - Ajoutez
"ko"àSUPPORTED_LANGUAGESdanssrc/i18n/index.ts. Ajoutez une entréefallbackLngsi un code de navigateur sans région doit pointer vers un code régional (commeptverspt-PT). - Ajoutez les locales date-fns, antd et cronstrue dans
src/i18n/useLocales.ts. - Ajoutez le nom de la langue, écrit dans cette langue, sous
languagedans chaquecommon.json. - Lancez
yarn i18n:checketyarn build.
Bon à savoir
- N'utilisez un code régional que si les variantes diffèrent (
pt-PT/pt-BR) ou si l'écriture compte (zh-CN). - Les codes du navigateur sont rapprochés de la langue la plus proche (
fr-CA→fr) ; les langues non prises en charge basculent sur l'anglais. - La langue choisie est enregistrée dans
localStorage(lang). - Les traductions assistées par machine sont acceptées ; l'anglais est obligatoire.