J'ai des fichiers HTML statiques et je souhaite modifier le texte statique à l'intérieur avec la modification du côté client via Mustache.js. p>
Il semble que c'était possible l'extension de moustache de Twitter sur Github: https://github.com/bcherry/mustache.js " a> p>
Mais récemment, l'extension I18N spécifique a été supprimée ou modifiée. P>
J'imagine une solution où Puis la moustache remplace le Quelqu'un peut-il me donner un exemple comment faire cela? P> http: /server/static.html? lang = fr code> charges
moustache.js code> et un fichier JSON de langue basé sur le code Lang param
data_en.json code>. p>
{{tags}} code> avec les données envoyées. p>
5 Réponses :
Ceci est assez simple et assez simple.
Tout d'abord, vous devrez ajouter du code pour déterminer la chaîne de requête et ensuite, j'utilise jQuery pour gérer lang code>. Pour cela, j'utilise snippet extrait de la réponse ici . p>
ajax code> et
onReady code> Traitement de l'état: p>
{"title": "this is title", "content": "this is english content"}
Comment allez-vous aborder les pluriels?
Je ne pense pas que la réponse du silence résout / explique le problème.
Le problème réel est que vous devez exécuter la moustache deux fois (ou utilisez autre chose, puis Moustache). P>
Les données données à ce modèle de moustache peuvent être: p> Ensuite, vous stockez tous vos modèles / messages i18n en tant qu'objet JSON massive de modèles de moustache sur le serveur: p> ci-dessous est la traductions "EN": P> {
"title" : "You have {{amount}} fart(s) left",
"item" : "Smells like {{description}}"
}
C'est un bon sommation description des problèmes d'internationalisation et de moustache!
Assurez-vous de vous rappeler que d'autres langues sont significativement différentes de FR. p>
en fr et es, les adjectifs arrivent après le nom. "Haricots verts" devient "Verts haricots" (Greens Green) en FR, donc si vous branchez des variables, vos modèles traduits doivent avoir les variables dans l'ordre inverse. Donc, par exemple, Printf ne fonctionnera pas parce que les arguments ne peuvent pas changer d'ordre. C'est la raison pour laquelle vous utilisez des variables nommées comme dans l'option 1 ci-dessus et des modèles traduits dans des phrases et des paragraphes entiers, plutôt que des phrases de concaténation. p>
Vos données doivent également être traduites, de sorte que le mot «caca '» provenait de données - d'une manière ou d'une autre qui doit être traduite. Différentes langues font des pluries différemment, de même que l'anglais, comme en dent / dents, pieds / pieds, etc. FR a également des lunettes et des pantalons toujours pluriels. Les autres langues ont la même manière que les exceptions et les idomes étranges. Au Royaume-Uni, IBM 'sont' au salon du salon alors que dans les États-Unis, IBM 'est' au salon professionnel. Le russe a plusieurs règles différentes pour les pluriaux selon s'ils sont des personnes, des animaux, des objets étroits longs, etc. Dans d'autres pays, des milliers de séparateurs sont des espaces, des points ou des apostrophes, et dans certains cas ne fonctionnent pas de 3 chiffres: 4 Japon, incohérent en Inde. p>
Contez-vous avec un soutien linguistique médiocre; C'est juste trop de travail. p>
Et ne confondez pas la langue croissante avec le changement de pays changeant - la Suisse, la Belgique et le Canada ont également des orateurs, sans parler de Tahiti, d'Haïti et du Tchad. L'Autriche parle de, Aruba parle NL et Macao parle PT. P>
Vous pouvez utiliser des lambdas avec une bibliothèque comme I18Next ou autre chose.
{ name: 'Mike', i18n: function() { return function(text, render) { return render(i18n.t(text)); }; } }
Meilleur commentaire Imho, très simple mais efficace.
"Runction" → "Fonction" Je ne peux pas éditer car la modification serait <6 caractères!
Ma réponse est basée sur des pays en développement. La réponse est très formidable, j'ajouterai simplement la possibilité d'utiliser des balises Moustache dans le code-clé. Il est vraiment nécessaire que vous souhaitiez pouvoir obtenir les messages d'obtenir en fonction de l'état actuel de la moustache ou dans des boucles
Il est basé sur un simple rendu double p> performances 'T frappé à cause de la moustache fonctionnant sur une très petite chaîne. p> ici un petit exemple: p> Données JSON: P> description_banana = "{{#plurable}}a {{name}} is{{/plurable}} green" (Adjectives not getting "s" in plurals)
description_banana = "{{#plurable}}Une {{name}} est verte{{/plurable}}" (Adjectives getting an "s" in plural, so englobing the adjective as well)
info.plurable = function()
{
//Check if needs plural
//Parse each word with a space separation
//Add an s at the end of each word except ones from a map of common exceptions such as "a"=>"/*nothing*/", "is"=>"are" and for french "est"=>"sont", "une" => "des"
//This map/function is specific to each language and should be expanded at need.
}
Comment allez-vous aborder les pluriels?
Difficile de répondre, les pluriels sont très différents selon les langages, français, allemands, anglais, japonais, etc., vous devez adapter le mot au pluriel uniquement, d'autres fois, vous devrez supprimer / ajouter des éléments aux mots environnants, ou même changer le mot en soi. Dans mon expérience, les pluriels devront être traités avec des sous-fonctions, spécifiques à la lange et la syntaxe locale.