在Rails 5.2中如何设置备用语言环境?
如果在语言环境中没有找到属性名称,则当前打印为空白。我希望它在这种情况下回退到:en。
是否仅适用于Rails 5版?
# config/application.rb
config.load_defaults 5.0
config.i18n.default_locale = :nb
运行规格并获得:
#<ActiveRecord::RecordInvalid: Det oppstod en feil: er allerede i bruk>
see the missing part here:
#<ActiveRecord::RecordInvalid: Det oppstod en feil: [MISSING RECORD NAME] er allerede i bruk>
# switch to
# config.i18n.default_locale = :en
#<ActiveRecord::RecordInvalid: Validation failed: Report date has already been taken>
更新:
@Nate在下面的回答中正确地设置了备用配置 (https://dev59.com/NK_la4cB1Zd3GeqP0vKJ#53453211)
然而,那不是问题所在。我了解到,问题出在我的nb.yml
文件中。
- 实验1。 删除nb.yml文件的所有内容,只留下“hello world”。成功:它打印属性(关联记录)名称。
- 实验2。 用官方的Rails nb.yml替换我们的nb.yml:https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/nb.yml :成功。我得到了有用的挪威语-英语消息
Det oppstod feil: Company må eksistere
。虽然不太美观,但很有帮助,也是我想要的! - 实验3。 证明。nb.yml重现了这个问题。
两种方法:
# A: SHOW attribute name
nb:
errors:
format: "%{attribute} %{message}"
# B: HIDE attribute name
nb:
errors:
format: "%{message}"
这带来了另一个问题。
方法B:隐藏使您在服务器端失去了视野。规格、日志和控制台将显示验证失败:不能为空
,但在 UI 中看起来很好。
我发布了另一个问题:Simpleform 错误没有属性名称,但在日志、控制台和规格中使用属性名称
:en
。然而这并没有解决我的问题,我想我可能是在问错问题,我犯了一个错误,假设了问题出在哪里。我认为我知道问题出在哪儿了,是我们/我自己的问题(就像99%的情况一样)。我们的 nb.yml 是问题所在。使用官方的 nb.yml https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/nb.yml 创建一个新的 Rails 5.2 app 不会有同样的问题。如果我用我们的 nb.yml 替换它,问题就会重新出现。我会更新我的问题,加上我学到的信息,并指向你的答案来解决回退的问题。 - oma[:en, :es, :de]
的顺序设置回退语言选项是没有意义的,因为你可能会得到一个用户只能说其中一种语言的部分界面显示了4种不同语言的情况。 - Christopher Oezbek