如何与Middleman进行i18n for javascript?

时间:2012-02-18 04:31:33

标签: javascript middleman

MM使用的技术堆栈中是否存在可以处理i18n for JS的东西?例如。需要javascript的内容:en.ymles.yml文件中的部分,并将其作为translation.js文件提供 - 或类似的内容(我只知道它有时是如何完成的在rails )。

Fwiw,https://github.com/fnando/i18n-js似乎是一种流行的rails解决方案。我猜这个JS的部分工作得很好。我只是不确定如何将构建过程集成到MM堆栈中,以便生成所有文件并最终到达正确的位置。

  

@tdreyno建议:目前不是,但看起来我们可以联系起来   链轮(JS)和I18n。

有没有人这样做过或者有关于如何继续的建议(对于那些在Ruby / Rails中获得但尚未在3.1资产路径中挖掘但又不怕尝试的人)。

2 个答案:

答案 0 :(得分:1)

我正在考虑解决完全相同的问题。所以这是我的解决方案:

source/layouts/layout.html.slim

javascript:
  var I18n = {};
  I18n.locale = 'fr';
  I18n.translations = {};
  I18n.translations['fr'] = #{I18n.backend.send(:translations)[:fr].to_json};

然后访问JS中的翻译就像这样简单:

I18n.translations.fr['menu']['glossaire']
#=> "Glossaire"

答案 1 :(得分:0)

caedes'解决方案简单易行,但在我的情况下,我希望能够使用一些i18n-js更复杂的功能,如字符串插值,而不仅仅是拥有一组嵌套字典。

幸运的是,i18n-js可以read in from a dictionary。我使用browserify安装了i18n-js,并使用window.I18n = require('i18n-js');全局导入,并添加了部分_i18n_js.slim

javascript:
  I18n.translations = #{I18n.backend.send(:translations).to_json};

然后您可以使用优秀i18n-js的所有功能。