Ruby on rails Rails:初始值设定项中的转换

Ruby on rails Rails:初始值设定项中的转换,ruby-on-rails,translation,initializer,Ruby On Rails,Translation,Initializer,我有几个翻译藏在一个初始值设定项中,如下所示: GROUP_GOVERNANCE_STYLES = [ [I18n.t("constants.group_governance_styles.collective"), 1], [I18n.t("constants.group_governance_styles.electoral_democracy"), 2], [I18n.t("constants.group_governance_styles.dictatorship"), 3]

我有几个翻译藏在一个初始值设定项中,如下所示:

GROUP_GOVERNANCE_STYLES = [
  [I18n.t("constants.group_governance_styles.collective"), 1],
  [I18n.t("constants.group_governance_styles.electoral_democracy"), 2],
  [I18n.t("constants.group_governance_styles.dictatorship"), 3]
]
在我的en.yml文件中,我有:

en:
  constants:
    group_governance_styles:
      collective: "collective"
      electoral_democracy: "electoral democracy"
      dictatorship: "dictatorship"
不幸的是,当我尝试在视图中呈现这些翻译时,会出现以下错误:

translation missing: en.constants.group_governance_styles.collective
translation missing: en.constants.group_governance_styles.electoral_democracy
translation missing: en.constants.group_governance_styles.dictatorship

我也尝试过删除范围,但仍然发现缺少翻译。还有别的办法吗?也许我不知道初始值设定项有一个默认范围?

AFAIK,在初始值设定项之后会加载翻译。尝试将其放入environment.rb

如果您希望能够在其他初始值设定项文件中使用您的翻译文件,您可以添加一个
I18n
初始值设定项

config/initializers/i18n.rb


这管用!我对environment.rb了解不多,但用这样的常量填充它似乎是一种不好的做法。是否可以从environment.rb中加载包含常量的文件?同意。我也不太喜欢在environment.rb中添加代码。您也可以将该代码放在单独的文件中(可能在lib文件夹中?),并要求environment.rb中的该文件像一个符咒一样工作,并且是干净的:)谢谢。
# Load application custom translations in order to use them in other initializers
I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]