Rails javascript, специфичный для i18n, yml с использованием плагина i18n-js

Мой вопрос заключается в том, можно ли каким-либо образом настроить i18n-js так, чтобы javascript просматривал только один конкретный файл .yml, но не все. Я следовал примеру в приведенных ниже ссылках, и javascript искал правильный ключ; однако, когда я смотрю на translation.js, который этот подключаемый модуль сгенерировал в элементе проверки, появляется весь ключ перевода. Мы беспокоились, что это может стать проблемой по мере роста нашего приложения, поскольку 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

приложение.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

person AirWick219    schedule 18.03.2014    source источник


Ответы (2)


Согласно документации вы можете указать конкретный ключ. У меня проблемы с обновлением файла translations.js, поэтому я не могу убедиться, что это действительно работает, но в документации это указано:

Внутри config/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'
person Pavan Katepalli    schedule 20.02.2015

В настоящее время нет способа сделать это с помощью простой настройки.

i18n-js не зависит от файлов перевода YML или папок перевода (например, config/locales по умолчанию в Rails). Он просто просит гем i18n (который поставляется с 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]

А затем используйте эту среду, которая будет загружать только файлы YML/Ruby под config/locales/js для запуска любой задачи, которая вам нравится, например:

RAILS_ENV=js_i18n rake i18n:js:export
person Kostas Rousis    schedule 21.05.2014