Ограничение количества локализаций во время rails i18n-js

#ruby-on-rails #rails-i18n

#ruby-on-rails #rails-i18n

Вопрос:

Я работаю над веб-приложением ruby on rails, в котором мы используем rails I18njs gem для переводов js. В моем исходном коде браузера я мог видеть, что отображаются ключи перевода js для всех локализаций. Есть ли какой-либо способ ограничить его только пользовательской локализацией и резервной локализацией.

имя драгоценного камня: i18n-js

Ответ №1:

Если I18n.available_locales задано (например, в вашем файле Rails config / application.rb), то будут экспортированы только указанные локали.

Установите свой язык как:

 I18n.defaultLocale = "pt-BR";
I18n.locale = "pt-BR";
I18n.currentLocale();
// pt-BR
  

Теперь вы можете применить свою конфигурацию до загрузки I18n следующим образом:

 I18n = {} // You must define this object in top namespace, which should be `window`
I18n.defaultLocale = "pt-BR";
I18n.locale = "pt-BR";

// Load I18n from `i18n.js`, `application.js` or whatever

I18n.currentLocale();
// pt-BR
  

Проверьте здесь для получения более подробной информации: https://github.com/fnando/i18n-js

Ответ №2:

Вы захотите переключиться с загрузки всех переводов по умолчанию в один translations.js файл на конфигурацию экспорта

Это довольно простая конфигурация, которая экспортирует каждый язык в отдельный файл локали:

config/i18n-js.yml

 # bake fallbacks into each locale file.
fallbacks: true

# split translations into separate files per-locale
translations:
  - file: "public/javascripts/i18n/%{locale}.js"
  only: '*'
  

Затем вы можете загрузить из макета только тот язык, который вам нужен, следующим образом:

app/views/layouts/application.html.erb

 <%= javascript_include_tag "i18n" %>
<%= javascript_include_tag "i18n/#{I18n.locale}" %>