2014-11-18 1 views
1

Я только начинаю i18next, и я бы хотел создать файл перевода для каждого модуля в моем проекте. Похоже, что использование пространств имен было бы правильным путем. Проект может создавать макет страницы с использованием нескольких видов, поэтому мне нужно иметь возможность переводить строки из нескольких пространств имен одновременно.Как вы используете несколько пространств имен в i18next?

Я создал простой пример, который имеет два пространства имён, но я могу получить только i18next для перевода строк для одного пространства имен. Если я использую defaultNs: namespaces[0], то цифры будут переведены, с defaultNs: namespaces[1] пересчитываются цвета, а с defaultNs: namespacesничего не переведено. Но я не могу понять, как заставить оба пространства имен переводить.

<!doctype html> 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
     <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
     <script src="i18next.js"></script> 
     <script> 
     $(document).ready(function(){ 
      var language = "en"; 
      var namespaces = [ "numbers", "colors" ]; 
      var config = { 
       lng: language, 
       fallbackLng: "en", 
       resGetPath: "namespaces/__ns__/__ns__-__lng__.json", 
       ns: { 
        namespaces: namespaces, 
        defaultNs: namespaces[0] 
       }, 
       debug: true 
      }; 
      i18n.init(config, function onInitComplete() { 
       $(".xl8").i18n(); 
      }); 

     }); 
     </script> 
    </head> 
    <body> 
     <h1>hello, i18n!</h1> 
     <ol> 
      <li class="xl8" data-i18n="numbers.one">1</li> 
      <li class="xl8" data-i18n="numbers.two">2</li> 
      <li class="xl8" data-i18n="numbers.three">3</li> 
     </ol> 
     <ul> 
      <li class="xl8" data-i18n="colors.red">r</li> 
      <li class="xl8" data-i18n="colors.green">g</li> 
      <li class="xl8" data-i18n="colors.blue">b</li> 
     </ul> 
    </body> 
</html> 

ответ

2

я разместил этот же вопрос на GitHub и получил следующий рабочий ответ от jamuhl:

если ресурс не на использование пространства имен по умолчанию:

<li class="xl8" data-i18n="colors:colors.blue">b</li> --> namespace:key 
0

Не уверен, что это немного хак-иш для используемого варианта, который вы описываете, но (предполагая, что вы хотите иметь только два пространства имен, у один раз & ключи не конфликтуют), вы можете сделать это:

fallbackNS: 'colors', 
ns: { 
    namespaces: ['colors', 'numbers'], 
    defaultNs: 'numbers' 
} 

Это на самом деле не предназначены для использования случае, хотя - это более предназначен для ситуации, в которой вы хотите отобразить некоторые переводы по-разному на основе другого фактор - например, приложение, которое отображает «Сотрудник» для бизнес-пользователей или «Студент» для школьных пользователей, но в основном использует один и тот же набор значений по умолчанию.

 Смежные вопросы

  • Нет связанных вопросов^_^