Localisation de soutien dans les anciens navigateurs est pauvre. À l'origine, c'était en raison de phrases dans le langage ECMAScript spec qui ressemblent à ceci:
Numéro.le prototype.toLocaleString()
Produit une valeur de chaîne qui représente la valeur du Nombre mis en forme selon les
les conventions de l'armée de l'environnement des paramètres régionaux en cours. Cette fonction est dépendant de l'implémentation, et
il est permis, mais pas encouragé, pour qu'il renvoie la même chose que toString.
Chaque localisation de la méthode définie dans la spécification est définie comme "la mise en œuvre-dépendante", qui se traduit dans un grand nombre d'incohérences. Dans ce cas, Chrome, Opera et Safari serait de retour la même chose que .toString()
. Firefox et IE sera de retour régionaux formaté cordes, et c'est à dire même comprend un séparateur de milliers (parfait pour les chaînes de devise). Google Chrome a été mis à jour récemment, pour le retour des milliers de chaîne séparée, bien que sans décimale fixe.
Pour les environnements modernes, l' ECMAScript l'Internationalisation de l'API spec, une nouvelle norme qui complète le Langage ECMAScript spec, fournit un soutien beaucoup mieux pour la comparaison de chaînes, mise en forme des nombres, et la date et l'heure de mise en forme; il fixe également les fonctions correspondantes dans la Langue Spec. Une introduction peut être trouvée ici. Les implémentations sont disponibles en:
- Chrome 24
- Internet Explorer 11
- Opera 15
Il y a aussi une compatibilité mise en œuvre, Intl.jsqui sera l'API dans les environnements où il n'existe pas déjà.
La détermination de la préféré de l'utilisateur de la langue reste un problème, car il n'y a pas de spécification pour l'obtention de la langue actuelle. Chaque navigateur implémente une méthode pour obtenir une chaîne de langue, mais cela pourrait être basée sur l'utilisateur de la langue du système d'exploitation ou tout simplement la langue du navigateur:
// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;
Une bonne solution consiste à vider l'en-tête Accept-Language du serveur vers le client. Si formaté en JavaScript, il peut être passé à l'Internationalisation de l'API constructeurs, qui va automatiquement choisir la meilleure (ou la première prise en charge) des paramètres régionaux.
En bref, vous devez les mettre dans une grande partie du travail vous-même, ou l'utilisation d'un framework/bibliothèque, parce que vous ne pouvez pas compter sur le navigateur pour le faire pour vous.
Les différentes bibliothèques et plug-ins pour la localisation:
N'hésitez pas à ajouter/modifier.