145 votes

Internationalisation en Javascript

Je me demande comment faire face à l'internationalisation en javascript. J'ai Cherché sur google mais je n'obtiens pas de réponses convaincantes pour:

  • N'Javascript prise en charge native de l'Internationalisation?
  • Qu'est-ce que i18n en javascript?
  • La façon de traiter avec calendrier, monétaire, date, etc?

Je l'ai déjà lu http://stackoverflow.com/questions/934175/internationalization-inside-javascript

164voto

Andy E Points 132925

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.

13voto

ashwoods Points 1479

Mozilla a récemment sorti le génial L20n ou la localisation 2.0. Dans leurs propres mots, L20n est

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

Leur implémentation js est sur le dépôt github L20n.

5voto

Adeel Points 9888

Microsoft a récemment publié un plugin de globalisation jquery. Les détails sont ici

2voto

Nikita Koksharov Points 1552

Vous pouvez essayer la célèbre bibliothèque i18next .

0voto

Luca Matteis Points 19338

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 la traduction, et JavaScript est nativement compatible avec Unicode (ainsi que tous les principaux navigateurs).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X