使用i18n-js插件导航javascript i18n特定的yml

时间:2014-03-18 15:10:04

标签: javascript jquery ruby-on-rails rails-i18n

我的问题是,无论如何都要配置i18n-js,以便javascript只查找一个特定的.yml文件,但不是全部。我已经按照下面的链接中的示例进行了操作,并让javascript查找正确的密钥;但是,当我查看translation.js中这个插件在inspect元素中生成时,所有翻译键都显示出来。我们担心这会成为一个问题,因为我们的应用程序增长,因为javascript只需要知道它需要的翻译密钥。我想只需要一个config / locales / en / javascript.yml来将javascript的所有翻译放在这里。

遵循示例

https://github.com/fnando/i18n-js

http://blog.10to1.be/rails/2011/03/22/localizing-javascript-in-your-rails-app/

rake i18n:js:setup

的application.js

//= require i18n
//= require i18n/translations

application.html.haml

 = javascript_include_tag 'translation'

目录

|config
|-locales
|--en
|---en.yml
|---javascript.yml   <------ that's what I want and the js only look at this one2

2 个答案:

答案 0 :(得分:0)

目前,通过简单的配置无法做到这一点。

i18n-js与任何YML翻译文件或翻译文件夹(例如Rails的默认config/locales)无关。它只是要求i18n gem(随Rails一起提供)检索所有可用的翻译,然后将它们导出为JS格式。

然而,你可以定义一个自定义rails环境,比如说js_i18n,你可以在其中覆盖默认的i18n加载路径:

# config/environments/js_i18n.rb
# code similar to the rest of your config files - you could copy `development.rb`
# ...
config.i18n.load_path = Dir[Rails.root.join('config', 'locales', 'js', '*.{rb,yml}').to_s]

然后使用这个环境只加载config/locales/js下的YML / Ruby文件来运行你喜欢的任何任务,例如:

RAILS_ENV=js_i18n rake i18n:js:export

答案 1 :(得分:0)

根据文档,您可以指定特定密钥。我在翻译translate.js文件时遇到问题,因此我无法验证这是否真的有效,但文档说明了这一点:

内部配置/ i18n-js.yml

translations:
- file: "app/assets/javascripts/application/i18n/translations.js"
  only: '*.js*'

内部en.yml

  js:
    posts:
      select2:
        placeholder: 'Please, select tags'
        no-matches: 'No tags found'