2013-09-16 1 views
3

Je veux implémenter une localisation pour les vues (doit aussi inclure le corps). Je l'ai déjà fait en chargeant un fichier JSON et en parcourant les clés. Les clés sont des noms de classe. Puis-je simplement attribuer la valeur de la clé à l'élément avec la classe.AngularJS Implémentation d'une localisation pour les templates

fichier Langue (JSON)

".Header-Title" : "My Title", 
".Header-Text" : "Lorem ipsum vehicula interdum." 

Exemple de code

$.load("./Content/Text/main-en.json", function(data) { 
    for (key in data) { 
    $(key).html(data[key]); 
    } 
}); 

J'ai aimé parce que le texte est séparé du HTML et script. Comme pour savoir, puis-je accomplir cela dans AngularJS. Mes pensées sont d'étendre le fournisseur de route par un paramètre supplémentaire qui prend le chemin au fichier de langue JSON. Après le chargement d'une vue, une fonction doit être appelée. Affectez les valeurs comme dans l'exemple de code. Juste commencé avec AngularJS. Des idées ou de l'aide?

Répondre

4

Vous pouvez utiliser le Localization Service par Coding SmackDown TV

1) Chargez le service, et inclure votre fichier i18n. Par exemple, prenez ce

// /i18/en/dictionary_en.js 
[ 
    { 
     "key":"_More_", 
     "value":"More", 
     "description":"More button" 
    } 
] 

// In the localize service 
$http({ method:"GET", url:url, cache:false }).success(localize.successCallback).error(function() { 
    // the request failed set the url to the default resource file 
    var url = '/i18n/en/dictionary_en.js'; 
    localize.language = 'en'; 
    // request the default resource file 
    $http({ method:"GET", url:url, cache:false }).success(localize.successCallback); 
}); 

2) Dans vos vues, utilisez le filtre de i18 ou par ng-bind

<button data-i18n="_More_"> 
Questions connexes