Localisation
Vue d'ensemble
rs-grid est livré avec 15 locales intégrées et supporte les traductions
personnalisées. Toutes les chaînes visibles dans l'interface de la grille
(menu contextuel, barre de recherche) sont pilotées par un struct Locale
interchangeable à tout moment.
La grille peut aussi détecter automatiquement la langue du navigateur et sélectionner la locale correspondante.
Locales intégrées
Détection de la langue du navigateur
Locale::from_browser() lit navigator.language et retourne la locale
correspondante. Le matching se fait sur le sous-tag principal uniquement —
"fr-FR", "fr-CA" et "fr" donnent tous Locale::fr(). Les langues
non reconnues retombent sur l'anglais.
Vous pouvez aussi matcher un tag BCP 47 manuellement :
Utilisation par framework
Le composant <GridCanvas> accepte une prop réactive optionnelle locale.
Quand le signal change, la grille met à jour ses textes sans se remonter.
Pour changer de langue à la volée :
Chaînes traduites
Le struct Locale contient toutes les chaînes de l'interface :
Les en-têtes de colonnes ne font pas partie du système de locale. Ils
proviennent de ColumnDef.label et doivent être traduits par votre code
applicatif.
Locale personnalisée
Vous pouvez construire une locale entièrement personnalisée :
Format des fichiers de locale
Les locales intégrées sont stockées dans des fichiers TOML plats dans le crate
rs-grid-web sous src/locale/. Chaque fichier contient des paires
clé = "valeur" :
Les fichiers sont embarqués à la compilation via include_str! — pas d'I/O
au runtime.
Ajouter une nouvelle locale
- Copier un fichier
.tomlexistant (ex :en.toml→xx.toml) - Traduire toutes les valeurs
- Dans
locale/mod.rs, ajouter :- Un constructeur
pub fn xx()appelantparse_toml(include_str!("xx.toml")) - Une branche
"xx"dansfrom_language_tag
- Un constructeur
Surcharges par item
Les labels du menu contextuel peuvent aussi être surchargés
individuellement, indépendamment de la locale, via
ContextMenuItem::with_label() :
Ces surcharges par item ont priorité sur la locale.