Je me demande comment gérer l'internationalisation en JavaScript. J'ai cherché sur Google mais je n'obtiens pas de réponses convaincantes pour:
- JavaScript prend-il en charge nativement l'internationalisation?
- Qu'est-ce que i18n en JavaScript?
- Comment gérer les calendriers, les devises, les dates, etc.?
J'ai déjà lu l' internationalisation dans JavaScript .
javascript
internationalization
rajakvk
la source
la source
Réponses:
La prise en charge de la localisation dans les anciens navigateurs est médiocre. À l'origine, cela était dû à des phrases dans la
ECMAScript
spécification de langue qui ressemblent à ceci:Chaque méthode de localisation définie dans la spécification est définie comme "dépendante de l'implémentation", ce qui entraîne de nombreuses incohérences. Dans ce cas, Chrome Opera et Safari renverraient la même chose que
.toString()
. Firefox et IE renverront des chaînes au format local, et IE inclut même un séparateur de mille (parfait pour les chaînes de devises). Chrome a récemment été mis à jour pour renvoyer une chaîne séparée par des milliers, mais sans décimale fixe.Pour les environnements modernes , la spécification de l'API ECMAScript Internationalization , une nouvelle norme qui complète la spécification du langage ECMAScript, fournit une bien meilleure prise en charge pour la comparaison de chaînes, le formatage des nombres et le formatage de la date et de l'heure; il corrige également les fonctions correspondantes dans la spécification de langue. Une introduction peut être trouvée ici . Les implémentations sont disponibles en:
Il existe également une implémentation de compatibilité, Intl.js , qui fournira l'API dans les environnements où elle n'existe pas déjà.
La détermination de la langue préférée de l'utilisateur reste un problème car il n'y a pas de spécification pour obtenir la langue actuelle. Chaque navigateur implémente une méthode pour obtenir une chaîne de langue, mais cela peut être basé sur la langue du système d'exploitation de l'utilisateur ou simplement sur la langue du navigateur:
Une bonne solution pour cela consiste à vider l'en-tête Accept-Language du serveur vers le client. S'il est formaté en JavaScript, il peut être transmis aux constructeurs de l'API d'internationalisation, qui choisiront automatiquement le meilleur paramètre régional (ou le premier pris en charge).
En bref, vous devez effectuer une grande partie du travail vous-même, ou utiliser un framework / une bibliothèque , car vous ne pouvez pas compter sur le navigateur pour le faire à votre place.
Diverses bibliothèques et plugins pour la localisation:
N'hésitez pas à ajouter / modifier.
la source
Mozilla a récemment publié l'impressionnant L20n ou localisation 2.0. Selon leurs propres mots, L20n est
Leur implémentation js se trouve sur le référentiel github L20n.
la source
Une partie est native, le reste est disponible via les bibliothèques.
Par exemple, Datejs est une bonne bibliothèque de dates internationale.
Pour le reste, il ne s'agit que de traduction de langue, et JavaScript est nativement compatible Unicode (ainsi que tous les principaux navigateurs).
la source
Vous pouvez également essayer une autre bibliothèque - https://github.com/wikimedia/jquery.i18n .
En plus du remplacement de paramètres et de plusieurs formes plurielles, il prend en charge le genre, une caractéristique plutôt unique des règles de grammaire personnalisées dont certaines langues ont besoin.
la source