2016-05-05 1 views
1

Lorsque vous essayez de formater un message USI validejquery/globaliser personnalisée numéro formatter

'Votre nombre de billets open est {n, numéro}'

jquery/Globalize lancer une exception: fmt est non défini (...)

Le message est compilé sans erreur avec le compilateur globalize mais échoue lors de l'exécution.

En utilisant jquery/globaliser & 1.1.1 1.0.0
question semblable à: github.com/jquery/globalize/issues/563


Modification du jquery/Globalisons ... Globalisons/message Le fichier source .js (ajout du mot customFormatters) supprime l'erreur ... mais la modification d'un fichier source tiers n'est pas acceptable dans le projet.

Globalize.messageFormatter = 
Globalize.prototype.messageFormatter = function(path, customFormatters) { 
... 
formatter = new MessageFormat(cldr.locale, pluralGenerator, customFormatters).compile(message) 




Le paquet ci-dessous de NPM gère également le formatage des messages comme prévu. https://www.npmjs.com/package/format-message


(je PM'ed Rafael de jquery/globaliser et il a demandé que je poste la question ici)

Les questions:

  1. Quelqu'un at-il rencontré ceci et quelle était votre solution de contournement?

  2. Est-ce que quelqu'un utilise jquery/globalize pour le formatage de base/date/unit/etc et une autre bibliothèque comme 'format-message' pour le formatage des messages?

  3. Les projets pour lesquels il sera utilisé sont nodejs et basés sur un navigateur (spa). Passerait à Intl et un polyfill serait une alternative valable. (La prise en charge de Safari est requise http://caniuse.com/#search=intl)

  4. Existe-t-il un test permettant d'évaluer le coût de performance de l'ajout de 'customFormatters' à la source via un PR.

+0

Hey Jason, merci d'avoir posté votre message ici, afin qu'il puisse aussi aider la communauté. –

Répondre

0
  1. utilisation variables replacement instead, par exemple, 'Your open ticket count is {n}' et Globalize.formatMessage('<message>', {n: Globalize.formatNumber(n)}). Avec Globalize, vous pouvez mettre en forme les nombres, les dates, l'heure relative, l'unité, etc. en utilisant leurs modules de formatage respectifs et en les passant au message en tant que remplacement de variable. Chacun des formateurs possède son propre ensemble d'options afin que vous puissiez personnaliser la sortie comme vous le souhaitez Par conséquent, la différence est que vous pourrez définir la mise en forme dans le code, pas dans le message lui-même.Un grand avantage d'utiliser Globalize pour tous ces formateurs plus le formateur de message est que vous pouvez utiliser globalize-compiler pour analyser votre code de façon statique et générer du code précompilé très efficace (petit et rapide) pour s'exécuter en production. Voir aussi notre app demo using webpack.

  2. Notez que Intl (défini par ecma-402 aujourd'hui) ne définit que les formateurs de nombres et de dates. Il ne définit pas le formateur de message, pluriel (fera bientôt partie de la spécification), formateur relatif, etc. Par conséquent, vous pouvez trouver polyfil pour les deux premiers seulement.

  3. Cette section est encore très grossière, mais assurez-vous de lire Globalize performance section.

PS: J'ai mis à jour https://github.com/jquery/globalize/issues/563 merci.