【问题标题】:How can I do i18n for javascript with Middleman?如何使用 Middleman 为 javascript 做 i18n?
【发布时间】:2012-02-18 04:31:32
【问题描述】:

MM 使用的技术堆栈中是否已经有一些东西可以处理 JS 的 i18n?例如。将 javascript: 部分从 en.ymles.yml 文件中取出并使其作为 translation.js 文件或类似文件可用的东西(我只知道它有时在 rails 中是如何完成的 )。

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

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

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

【问题讨论】:

    标签: javascript middleman


    【解决方案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"
    

    【讨论】:

      【解决方案2】:

      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的所有功能了。

      【讨论】:

        猜你喜欢
        • 2012-12-23
        • 1970-01-01
        • 2016-09-16
        • 2016-06-07
        • 2011-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多