2013-11-21 1 views
0

Я переводил свое приложение с помощью i18next, но он только переводил часть приложения.Перевод приложения с i18next

В моем приложении я использую coffeescript с расширением Craftyjs, и хотя некоторые вещи, как кнопки и некоторые тексты, переведены, другие нет.

Одним из примеров того, что не будет переводить:

btnLearn.replace '<div id="learn-mode" class="learw">#{__("LEARN HERE")}</div>' 

Но это хорошо перевести:

btnWrapper.replace """ 
    <div class="btn-golden" id="teach"><i class="btn-goldenw"></i><span class="btn-goldenw-body">#{__("&nbsp;TEACH HERE&nbsp;")}</span><i class="btn-goldenw-right"></i></div> 
""" 

Любые идеи, что я могу сделать, чтобы получить перевод сделано правильно?

ответ

0

Я подозреваю, что проблема в том, что __("LEARN HERE") внутри:

'<div id="learn-mode" class="learw">#{__("LEARN HERE")}</div>' 

не вызов функции, это просто символьная строка. Из fine manual:

Строка Интерполяция, Блок строк и блоков Комментарии

рубин стиль строки интерполяции включен в CoffeeScript. Строки с двойными кавычками допускают интерполированные значения, используя #{ ... }, а строки с одним кадром - буквальные.

Так #{...} не делает интерполяцию строки в одиночных кавычках и I18N инструменты нужно увидеть __("LEARN HERE") вызов. Измените свои котировки, чтобы позволить интерполяцию строк, и все должно работать лучше:

btnLearn.replace "<div id=\"learn-mode\" class=\"learw\">#{__("LEARN HERE")}</div>" 
btnLearn.replace "<div id='learn-mode' class='learw'>#{__("LEARN HERE")}</div>" 
#...