Comment fonctionne L'internationalisation en JavaScript?

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:

  • est-ce que JavaScript a le support natif pour l'internationalisation?
  • Qu'est-ce que i18n en JavaScript?
  • la Façon de traiter avec des calendriers, des monnaies, des dates, etc.?

j'ai déjà lu internationalisation dans JavaScript .

137
demandé sur rajakvk 2010-06-21 16:39:04

4 réponses

La prise en charge de la Localisation

dans les navigateurs traditionnels est médiocre. À l'origine, cela était dû à des phrases dans le langage ECMAScript spec qui ressemblent à ceci:

nombre.prototype.concentration locale()

Produit une valeur de chaîne qui représente la valeur du nombre formaté selon le conventions de l'environnement d'accueil Cette fonction dépend de la mise en œuvre, et il est permis, mais pas encouragé, pour lui rendre la même chose que toString .

chaque méthode de localisation définie dans la spécification est définie comme" dépendante de la mise en œuvre", ce qui entraîne de nombreuses incohérences. Dans ce cas, Chrome Opera et Safari retourneraient la même chose que .toString() . Firefox et IE retourneront des chaînes locales formatées, et IE inclut même un séparateur de milliers (parfait pour les chaînes de devises). Chrome a été récemment mis à jour pour retourner une chaîne de caractères séparée par milliers, mais sans décimale fixe.

For modern environments , le ECMAScript Internationalization API spec , un nouveau standard qui complète le langage ECMAScript spec, fournit un meilleur support pour la comparaison des chaînes, le formatage des nombres et le formatage des dates et des heures; il fixe également les fonctions correspondantes dans le langage Spec. Une introduction peut être trouvée ici . Les implémentations sont disponibles en:

  • Chrome 24
  • Firefox 29
  • Internet Explorer 11
  • Opera 15

Il y a aussi une compatibilité mise en œuvre, Intl.js , qui fournira L'API dans les environnements où elle n'existe pas encore.

détermination de l'utilisateur la langue préférée reste un problème, puisqu'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 pourrait être basé sur la langue du système d'exploitation de l'utilisateur ou juste la langue du navigateur:

// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;

une bonne solution est de vider l'en-tête Accept-Language du serveur vers le client. Si formaté en JavaScript, il peut être passé à L'API D'internationalisation les constructeurs, qui sélectionneront automatiquement le meilleur emplacement (ou premier emplacement).

en bref, vous devez mettre dans une grande partie du travail vous-même, ou utiliser un framework/library , parce que vous ne pouvez pas compter sur le navigateur pour le faire à votre place.

divers bibliothèques et plugins pour la localisation:

n'hésitez pas à ajouter/modifier.

151
répondu Andy E 2017-06-19 12:31:25

Mozilla a récemment publié l'impressionnant l20n ou localisation 2.0. Dans leurs propres mots L20n est

une source ouverte, langage de script spécifique à la localisation utilisé pour traiter le genre, les pluriels, les conjugaisons, et la plupart des autres éléments excentriques du langage naturel.

leur implémentation js est sur le référentiel Github L20n.

10
répondu ashwoods 2013-06-24 11:07:59

une partie de celui-ci est natif, le reste est disponible à travers les bibliothèques.

Pour l'exemple Datejs est une bonne internationale de la date de la bibliothèque.

pour le reste, il s'agit juste de la traduction du langage, et JavaScript est nativement Unicode compatible (ainsi que tous les principaux navigateurs).

0
répondu Luca Matteis 2010-06-21 12:43:33

vous pouvez également essayer une autre bibliothèque - https://github.com/wikimedia/jquery.i18n .

en plus du remplacement de paramètres et de multiples formes plurielles, il a le soutien pour le genre une caractéristique plutôt unique des règles de grammaire personnalisées que certaines langues ont besoin.

0
répondu Amir E. Aharoni 2012-11-15 07:47:57