Il y a quelques éléments que vous devez garder à l'esprit lorsque vous concevez un support multilingue :
1 - Séparer le code des données (c'est-à-dire ne pas coder en dur les chaînes de caractères dans vos fonctions).
2 - créer une fonction de crochet de formatage pour gérer les différences de localisation. Permettre aux chaînes de caractères formatables ( "{0}" ) est meilleur que la concaténation ( "Bienvenue à" + valeur ), pour de nombreuses raisons :
- dans certaines langues, un nombre est formaté comme 1.234.678,00 au lieu de 1.234.567,00
- La pluralisation n'est souvent pas aussi simple que l'ajout d'un "s" à la fin du singulier.
- Les règles de grammaire sont différentes et peuvent affecter l'ordre des choses. Vous devez donc permettre aux données dynamiques d'être ajoutées après le crochet de traduction : par exemple, "Bienvenue à {0}" se transforme en "he youkoso" en japonais (cela arrive dans presque toutes les langues, remarquez).
3 - Assurez-vous que vous pouvez réellement formater les chaînes de caractères. après le crochet de traduction s'exécute, vous pouvez donc réutiliser les clés.
4 - N'accrochez en aucun cas les sorties de la base de données à l'utilitaire de traduction. . Si vous avez des données multilingues, créez des tables/rangs séparés dans votre base de données. J'ai vu des gens se tromper assez souvent sur cette évidence (généralement pour les pays et les états/provinces dans les formulaires).
5 - Créer des règles de pratiques de codage explicites pour la création de clés. La fonction utilitaire du formateur (qui ressemblera à quelque chose comme translate("hello world") prendra une clé comme paramètre, et les clés avec de légères variations rendent la maintenance très ennuyeuse. Par exemple, vous pourriez vous retrouver avec trois clés dans l'exemple suivant : "Choisissez un seul format (par exemple, pas de deux-points, coupé) et vous pourrez détecter les divergences dans les revues de code. Ne faites pas ce filtrage de manière programmatique, car cela peut déclencher des faux positifs.
6 - N'oubliez pas que le balisage HTML peut être nécessaire dans la table de traduction (par exemple, si vous devez mettre un mot en gras dans une phrase, ou si vous avez des références médicales en note de bas de page). Faites des tests approfondis à ce sujet.
7 - Il existe plusieurs façons d'importer des chaînes de langues. Idéalement, vous devriez avoir plusieurs versions d'un fichier language.lang.js, passer de l'une à l'autre avec du code côté serveur, et référencer le fichier au bas du fichier HTML. L'extraction du fichier via AJAX est également une alternative, mais peut entraîner des retards. Il n'est pas conseillé de fusionner le fichier language.js avec votre fichier de code principal, car vous perdez les avantages de la mise en cache du fichier.
8 - Testez avec vos langues cibles. Cela semble idiot, mais j'ai vu une fois un bogue sérieux parce que le programmeur n'avait pas pris la peine de vérifier l'existence de "é" dans la clé.