javascript – i18n-js翻译未在.yml中使用其他翻译进行更新

我已经读了好几天了,似乎什么都没有用.我已经看过很多关于这个问题的文档,但是没有一个工作对我有用.

我有 :

  Rails 5.0.1
  * sprockets (3.7.1)
  * sprockets-rails (3.2.0)
  * i18n (0.7.0)
  * i18n-js (3.0.0.rc15)

配置/ I18N-js.yml

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

配置/ application.rb中

    config.middleware.use I18n::JS::Middleware

当我将新翻译添加到相应的yml文件时,i18n / translations.js不会更新以包含新的.yml翻译.

例如,在en.yml中:

en:
 form_error:
    tos_check: "You must agree to Lexody's Terms of Use to continue."
    choose_city: "Please select a city from the menu."
    cancel_reason: "Please provide a reason for cancelling."

$('.prompt').html('<p style="color:#e57373">' + I18n.t('form_error.cancel_reason') +'</p>');

返回:[缺少“en.form_error.cancel_reason”翻译]

我试过了:

删除translations.js并运行rake i18n:js:export

rake tmp:cache:clear

rake资产:预编译

有没有人有我可以尝试的其他解决方案?谢谢!!

最佳答案 更新

在查看其他配置文件之后,这个config / i18n-js.yml似乎是可疑的:

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

根据export configuration文档,唯一的键是指要导出的翻译键,而不是文件名.因此’* .js *’将不匹配,导致不导出任何翻译.

将此文件更改为:

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

(原答案如下)

工作实例

这是一个最小的工作示例,它使用i18n-js gem产生预期的行为:

#!/bin/bash
rails _5.0.1_ new .
echo "gem 'i18n-js', '3.0.0.rc15'" >> Gemfile
echo "  NEW_KEY: NEW_VALUE" >> config/locales/en.yml
bundle install
bundle exec rake i18n:js:export
grep -o '"NEW_KEY"' public/javascripts/translations.js

对我来说,运行上面的脚本会在最后一行输出“NEW_KEY”,正如预期的那样(在新的Rails安装中运行i18n:js:export后,证明NEW_KEY已正确添加到public / javascripts / translations.js),这意味着什么否则你的本地项目正在进行中.

进一步的调查

为了了解其他具体内容,您必须进一步调查与新Rails安装相比,您在本地更改了哪些配置.

(请注意,最简单的方法是提供Minimal, Complete and Verifiable example,例如指向GitHub仓库的链接,它可以准确地解决您的问题.)

>你说“i18n / translations.js不会更新以包含新的.yml翻译.”,但更新的默认路径是public / javascripts / translations.js.如果您使用的是translation.js文件的非标准路径,那么在config / i18n-js.yml中是否有其他配置? (如果是,请分享此文件的全部内容).
>您是否确认新翻译根本没有出现在translations.js中(例如,使用上面的grep命令)?或者问题是否可能与asset pipeline配置有关?

点赞