динамический перевод/перевод с переменной с i18next

Почему я не могу перевести динамически соотв. используя переменную с i18next?

Например, в моем JS-файле я получил это:
Здесь я использую переменную и присваиваю ее функции i18n, и она не работает:

//this does not work:
var dynamicTranslation = "myText.toBetranslated";
console.log("translation dynamic ", !{JSON.stringify(t(dynamicTranslation))});    

Здесь я жестко закодировал строку сверху непосредственно в функцию i18n, и она работает:

//inserted string is the same string as in dynamic translation but this does work:           
console.log("translation static ", !{JSON.stringify(t("myText.toBetranslated"))});

В результате получаю:

перевод динамический
перевод статический правильный перевод

Чтобы решить эту проблему, я попытался решить ее, поигравшись с setTimeout:

setTimeout(function() {console.log("time out translation: " + !{JSON.stringify(t(dynamicTranslation))})}, 2000);

Но он все равно покажет пустой результат:

тайм-аут перевода:


person thadeuszlay    schedule 17.10.2016    source источник
comment
у тебя случайно нет плунжера для него. Потому что ваш синтаксис кажется немного незнакомым.   -  person Vladimir M    schedule 22.10.2016


Ответы (1)


Это нефритовый синтаксис. Первый код не работал, потому что он отображается с помощью jade на внутреннем сайте. В этот момент jade не принимает во внимание часть JS, а только визуализирует ее и отправляет результат (вместе с нетронутым кодом JS) во внешний интерфейс. Поэтому часть с переменной внутри t()-функции не переводится, потому что не учитывает код JS.

person thadeuszlay    schedule 22.10.2016