【问题标题】:Rails 4 I18n-js gem not picking up changes to the locale filesRails 4 I18n-js gem 不接受对语言环境文件的更改
【发布时间】:2015-03-14 13:24:11
【问题描述】:

我最近安装了 i18n-js gem 以启用 javascript 中的翻译,但我对语言环境文件所做的任何更改都没有传递到我的 javascript。

assets/javascripts/application.js

//= require i18n
//= require i18n/translations
//= require_tree .

config/locales/en.yml

en:
  confirmation: "Confirmation"
  yes: "Yes"
  no: "Cancel"

宝石文件

# Internationalization in javascript
gem 'i18n-js', '~> 2.1.2'

assets/javascripts/config.coffee

$ ->
  alert I18n.t('yes')
  dataConfirmModal.setDefaults
      title: I18n.t("confirmation");
      commit: I18n.t("yes");
      cancel: I18n.t("no");

是/否的翻译不会通过,但确认会通过。我已经尝试了从重新启动服务器到在语言环境文件更改时运行 I18n.backend.reload! 的所有方法。

【问题讨论】:

  • 我遇到了完全相同的问题,它只是发生在这个特定的单词上。我最终用其他东西作为前缀是/否。最后我只是不知道发生了什么。
  • 你们有多个语言环境文件吗?在我的情况下,我总是需要在双文件中更新它们(复制粘贴就足够了)

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


【解决方案1】:

您是否尝试过从终端运行 rake tmp:cache:clearrake i18n:js:export?如果没有,请尝试一下。当我遇到此问题时,似乎可以为我解决问题。

【讨论】:

  • rake i18n:js:export 为我修复了它。
【解决方案2】:

这是一个普遍的 Rails 问题,不仅仅是 i18n-js,如果你从控制台查找 :yes 或 :no 就可以看到:

> I18n.t(:yes)
=> "translation missing: en.yes"

有一个article talking about this。 TL;DR,这些是保留词,表示真假,您可以在 YAML 中将它们重新定义为:

"yes": "Yes"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多