Ruby on rails SimpleForm、I18n和Rails:将名称空间从de.simple_form.*更改为de.activerecord.*?

Ruby on rails SimpleForm、I18n和Rails:将名称空间从de.simple_form.*更改为de.activerecord.*?,ruby-on-rails,internationalization,simple-form,Ruby On Rails,Internationalization,Simple Form,我们刚刚用SimpleForm替换了FormTastic,虽然FormTastic在名称空间de.activerecord.*中使用了我们的翻译,但SimpleForm似乎坚持de.simple\u form.*。我在谷歌上搜索了一下,也阅读了文档,其中有趣的是有以下代码片段: en: activerecord: models: admin/user: User attributes: admin/user: name:

我们刚刚用SimpleForm替换了FormTastic,虽然FormTastic在名称空间
de.activerecord.*
中使用了我们的翻译,但SimpleForm似乎坚持
de.simple\u form.*
。我在谷歌上搜索了一下,也阅读了文档,其中有趣的是有以下代码片段:

en:
  activerecord:
    models:
        admin/user: User
    attributes:
        admin/user:
            name: Name
但是,在其他任何地方,我都找不到有关SimpleForm是否可以使用
en.activerecord.
作为其名称空间的更多信息


那么我可以强制SimpleForm更改其名称空间吗?非常感谢您的帮助。

检查此文件,我想您可以通过monkey patch将名称空间更改为您的名称空间。

检查此文件,我想您可以通过monkey patch将名称空间更改为您的名称空间。

也可以通过别名/合并YAML树的部分:

de:
  active_record: &myAliasName
    models:
      contact:
          name: "Name"
          age: "Alter"
  simple_form:
    <<: *myAliasName
    another_key: "another_value"

这可能是解决此问题的一种方法,但我认为它的性能可能会稍慢一些。

也有可能只是别名/合并YAML树的部分:

de:
  active_record: &myAliasName
    models:
      contact:
          name: "Name"
          age: "Alter"
  simple_form:
    <<: *myAliasName
    another_key: "another_value"

这可能是解决此问题的一种方法,尽管我认为它的性能可能会稍慢一些。

我意识到这是一个非常老的问题,但我只是在SimpleForm 3.1中尝试做同样的事情时遇到了它

SimpleForm现在有一个配置选项来指定i18n前缀,它可以在
config/initializers/simple_form.rb
的底部找到。您可以简单地将其配置为使用您想要的任何范围,例如
activerecord
而不是
simple\u form

# Defines which i18n scope will be used in Simple Form.
config.i18n_scope = 'activerecord'

我意识到这是一个非常古老的问题,但我只是在SimpleForm3.1中做同样的事情时遇到了这个问题

SimpleForm现在有一个配置选项来指定i18n前缀,它可以在
config/initializers/simple_form.rb
的底部找到。您可以简单地将其配置为使用您想要的任何范围,例如
activerecord
而不是
simple\u form

# Defines which i18n scope will be used in Simple Form.
config.i18n_scope = 'activerecord'

+1,这句话特别:+1,这句话特别:哈哈,谁投票否决了我?事实上,提供的答案正是我想要的,所以我在这里添加了它,以防其他人对这个简单的问题搜索得太远哈哈,谁投票否决了我?事实上,提供的答案正是我想要的,所以我在这里添加了它,以防其他人对这个简单的问题搜索得太远