Je suis complètement nouveau sur i18n. Maintenant, je commence à structurer mon application React Native pour la traduction.Comment modulariser les fichiers i18n
La plupart des métadonnées de l'application proviennent du serveur à la demande en tant que fichiers json décrivant la structure d'un certain module. Un client type peut avoir environ 5 à 50 "modules" de ce type chargés dans son magasin Redux.
Un type de module ressemble à ceci (simplifié):
{
id: 5,
modifiedAt: new Date('2017-02-22T09:50:50.212+0100'),
name: 'Module name',
version: '1.0.0',
definition: {
preconditions: {},
actions: {},
effects: {},
fieldDefinitions: {
room: {
title: 'Field title for "room"',
warning: 'Room is missing',
helpText: 'Enter room id/name',
type: 'string',
isRequired: true,
},
ui: {
title: 'Module title, i.e. title on input form',
menuItem: {
iconName: 'md-settings',
iconLibrary: 'Ionicons',
iconColor: null,
sortOrder: 99,
},
sections: [
{
id: 'ed472749-ec3d-4b72-9ce9-f88ee703b2cf',
title: 'Installation',
isRequired: true,
formFields: ['room', ...],
},
{
id: 'c070bfdf-88f1-423a-8854-b47b154c2359',
title: 'Photo before started repair',
isRequired: true,
sectionType: 'media',
}
],
},
},
jsonSchema: {
//schema to validate form output before saving
//also used by API before saving to database
},
i18n: {
en: {
},
de: {
}
}
};
J'ai ajouté 18n à la fin du JSON, comme cela est mon coup de couteau à ce sujet pour le moment. Les modules peuvent être fabriqués sur mesure pour certains clients. Je pense que ce serait bien d'encapsuler i18n dans chaque module.
Je pense utiliser reac-i18next pour cela car il semble bien documenté et fonctionnera aussi quand j'ai besoin de traduire mon site Express.
Je pense également à donner à chaque module un guid unique que je pourrais utiliser comme identifiant d'espace de noms lorsque l'application charge chaque fichier i18n. Est-ce un moyen raisonnable de modulariser les fichiers i18n?
J'ai cherché des tutoriels i18n, mais je finis seulement dans des tutoriels spécifiques à la langue. Quelqu'un peut-il recommander un apprenant i18n avec de bonnes discussions sur la structure à choisir, comment utiliser les espaces de noms, comment moduler, etc.
Merci! Devrais-je toujours utiliser i18next comme singleton, ou est-ce que cela aurait du sens de créer un nouveau i18next pour chaque module? Sinon, je pense que je dois injecter automatiquement "unique-namespace-guid:" avant chaque chaîne dans ma définition de module. Je ne veux pas déranger les auteurs de mon module en préfixant chaque chaîne avec un guid. – Michael
nous utilisons https://github.com/i18next/react-i18next et une seule instance de i18next -> le translate hoc corrige fondamentalement la fonction t pour utiliser le premier espace de nom dans la liste – jamuhl