9
votes

5 Réponses :


0
votes

Ceci est assez simple et assez simple.

Tout d'abord, vous devrez ajouter du code pour déterminer la chaîne de requête lang code>. Pour cela, j'utilise snippet extrait de la réponse ici . p> xxx pré>

et ensuite, j'utilise jQuery pour gérer ajax code> et onReady code> Traitement de l'état: p>

{"title": "this is title", "content": "this is english content"}


1 commentaires

Comment allez-vous aborder les pluriels?



2
votes

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>

c'est le plus I18N fonctionne comme processus en deux étapes, comme ce qui suit: H2>
  1. rend le texte i18n avec les variables données. Li>
  2. rendre le code HTML avec le texte i18n post-rendu. Li> OL>

    Option 1: Utilisez la moustache partielles h2> xxx pré>

    Les données données à ce modèle de moustache peuvent être: p> xxx pré>

    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}}"
    }
    


1 commentaires

C'est un bon sommation description des problèmes d'internationalisation et de moustache!



0
votes

Assurez-vous de vous rappeler que d'autres langues sont significativement différentes de FR.

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.

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.

Contez-vous avec un soutien linguistique médiocre; C'est juste trop de travail.

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.


0 commentaires

6
votes

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));
        };
    }
}


2 commentaires

Meilleur commentaire Imho, très simple mais efficace.


"Runction" → "Fonction" Je ne peux pas éditer car la modification serait <6 caractères!



2
votes

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> xxx pré>

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.
}


2 commentaires

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.