用i18next翻译应用程序

时间:2013-11-21 08:43:49

标签: javascript coffeescript craftyjs 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>
"""

我能做些什么来正确完成翻译?

1 个答案:

答案 0 :(得分:0)

我怀疑问题在于__("LEARN HERE")内部:

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

不是函数调用,它只是一个文字字符串。来自fine manual

  

字符串插值,块字符串和块注释

     

CoffeeScript中包含Ruby样式的字符串插值。双引号字符串允许使用#{ ... }进行插值,单引号字符串是字面值。

因此#{...}不会在单引号字符串中进行字符串插值,而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>"
#...