2015-07-06 2 views
3

Я ищу решения для полимера 1.0, и все же мне трудно понять, как это работает. Найдено https://github.com/Polymer/i18next-element, который, к сожалению, пока не готов. Между тем я не могу понять, как использовать i18next. Я пытаюсь объединить всю информацию, которую я могу найти, а затем https://github.com/tabacha/javascript-i18n-example/blob/master/i18next/examle.html с любыми комбинациями от http://i18next.com/pages/sample.html и не забудьте взглянуть на http://japhr.blogspot.gr/2014/02/getting-started-with-i18next-and-polymer.html. Дело в том, что я, кажется, ошибаюсь, даже самая первая инициализация, которая импортирует требуемую JSON. Для начала i18next основан на функциях javascript, которые не могут работать внутри готовой функции полимера из-за различий в синтаксисе.Локализация/интернационализация для полимера 1,0

Так что мой вопрос: я получаю что-то неправильно или это действительно так сложно сделать с полимером? У кого-нибудь есть рабочий пример?

Попытка объяснить, что я имею в виду с примером, допустим, что у моего приложения-полимера есть список всех ярлыков кнопок, в которых метки хранятся на языке выбора JSON-файла. , поэтому в свойствах я получил пустой тип_имя: свойство Array. затем в готовом: функции() Я следую инструкциям из документации (после импортировал i18next.js файл конечно)

var option = { resGetPath: '/localizeddata/english.json' }; 
      i18n.init(option); 
var bvalue1 = i18n.t("buttons.value1"); 
var bvalue2 = i18n.t("buttons.value2"); 
this.buttons_list = {value1: bvalue1,value2: bvalue2} 

buttons_list, кажется, признание buttonvalue1 и 2, как неопределенные значений.

PS: Я заметил, что многие люди используют Дарт, я не использовал его раньше, поэтому до сих пор я только пробовал решения, упомянутые выше.

ответ

1

Оказывается, интернационализация/локализация в Polymer 1.0 действительно возможна с i18next, если набор функций должным образом используется и ограничен внутри функции, которая запускает событие выбора языка.

В функции выбора языка, вот синтаксис, который я напечатал (более подробно)

somefunction: function(){  
    var option = { resGetPath: '/localizeddata/english.json' }; 
    i18n.init(option); 
    (function(ok) { 
    i18n.init(function(t) { 
     arg = { 
     var value1 = i18n.t("buttons.value1"), 
     var value2 = i18n.t("buttons.value2") 
     } 
     ok.secondaryfunction(arg); 
    }); 
    })(this); 
} 
secondaryfunction:function(n){ 
    this.buttons_list = n 
} 

Таким образом, то, что я получаю внутри secondaryfunction является областью действия со всей страницы и используется в secondaryfunction где (если двойной правильно привязаны) коллекция обновляется. Вещь, должна быть осторожна в отношении того, когда и как загружаются функции.

2

Это может быть не прямой ответ на вашу проблему, но это решение тем не менее. Мы сделали our own i18n behavior в Polymer 1.0.

После элемента реализует поведение, которое вы можете написать шаблон следующим образом:

<template> 
    <span>[[localize('myString', locale)]]</span> 
</template> 

и он будет искать ключ myString в locale объекта и возвращает локализованную строку.

Вы также можете вызвать метод программно, используя this.localize('myString', locale).

0

Я только что опубликовал простой (сильно развивающийся) элемент (см. Его на gitlab или прочитать об этом here).Он загружает файлы перевода асинхронно и использование довольно прост:

<!-- Import it in head --> 
<link rel="import" href="bower_components/quaintous-i18n/quaintous-i18n.html"> 
<!-- initialize it in body --> 
<quaintous-i18n locales-path="/locales/fa.json"></quaintous-i18n> 

Теперь вы можете использовать его различными способами:

  • В вычисляемых свойств: просто добавьте I18N в качестве элемента behavior и перевести данные привязки, например {{__('hello')}}
  • В глобальном контексте используйте только объект I18N, например. I18N.__('hello')
Смежные вопросы