Internationalisation (i18n)¶
Adaptive Learner supporte huit langues d'interface.
Langues supportées¶
| Code | Langue |
|---|---|
de |
Allemand |
en |
Anglais |
es |
Espagnol |
fr |
Français |
el |
Grec |
pt |
Portugais |
tr |
Turc |
ja |
Japonais |
Où vivent les chaînes¶
Source canonique : backend/config/i18n/{lang}.yaml
Ces fichiers YAML sont la source de vérité unique pour toutes les chaînes d'interface. Après modification, exécutez :
Cela génère frontend/src/data/i18n/*.json — importé par le frontend
au moment du build.
Fallback frontend : certaines chaînes critiques de chemin de démarrage
sont dupliquées dans frontend/src/lib/i18n-fallback.ts. Celles-ci ne
doivent être mises à jour que si la clé change.
Documentation d'aide : les fichiers Markdown sous docs/help/{lang}/
sont la source pour la documentation en langue correspondante.
Ajouter une nouvelle langue¶
-
Créez le catalogue YAML : copiez
backend/config/i18n/en.yamlvers{lang}.yamlet traduisez toutes les valeurs. -
Enregistrez la langue : ajoutez le code de langue dans la liste
SUPPORTED_LANGUAGESdansbackend/app/services/i18n_service.py. -
Ajoutez aux paramètres frontend : ajoutez le code et le libellé natif à
LANGUAGESdansfrontend/src/lib/languages.ts. -
Synchronisez :
make sync-i18n -
Créez la documentation d'aide : copiez
docs/help/en/versdocs/help/{lang}/et traduisez tous les fichiers Markdown. -
Ajoutez au catalogue de glossaire d'aide : créez les quatre fichiers
backend/config/help/concepts.{lang}.yaml,methods.{lang}.yaml,steps.{lang}.yaml,features.{lang}.yaml. -
Tests de parité : les tests de parité i18n (
backend/tests/test_i18n.py) vérifient que chaque chemin de clé dansen.yamlexiste dans tous les autres catalogues. Exécutezmake test-backendpour vérifier.
Format des clés¶
Les clés utilisent une notation par points en YAML imbriqué :
# en.yaml
session:
start: "Start session"
end: "End session"
rating:
understanding: "How well did you understand?"
Accès côté frontend : t('session.rating.understanding')
Pluriels¶
Les pluriels utilisent une convention à suffixe :
RTL (droite à gauche)¶
Aucune langue RTL n'est actuellement supportée. L'infrastructure CSS
utilise des propriétés logiques (margin-inline-start au lieu de
margin-left) par endroits, mais la parité RTL complète nécessiterait
un audit. Si vous ajoutez une langue RTL, ajoutez dir="rtl" sur
l'élément <html> via useI18n.
Tests de parité¶
Le test de parité automatisé se trouve dans backend/tests/test_i18n.py.
Il échoue si un chemin de clé dans en.yaml est absent dans n'importe
quel autre catalogue. Cela garantit qu'aucune traduction ne peut dériver
silencieusement.
Un test supplémentaire dans frontend/src/lib/i18n.test.ts vérifie que
chaque chemin de clé utilisé dans les composants résout correctement dans
les huit catalogues.