5

在 Rails 4(支持多语言变形)中,我可以设置:

config.i18n.default_locale = :es

在我的 config/application.rb 中,它允许我在控制台中执行以下操作:

'general'.pluralize(:es)  => "generales"

但是当我运行时:

rails g model General conciencia:string atencion:string

Rails 生成带有复数形式“general”的文件,在西班牙语中应该是“generales”

如果设置了语言环境,Rails 不应该为其生成器使用多语言变形器吗?有没有办法强制它使用它们?

谢谢!

4

1 回答 1

0

有点晚了,但记录在案:Rails 问题中有一个关于为什么会这样的争论(所以这不是错误,但您可以讨论它):

来源:https ://github.com/rails/rails/issues/10125#issuecomment-17274499

在 Rails 4 之前,变形器不支持多语言环境。只有一套规则。该应用程序具有默认语言环境,并且在 i18n 应用程序中,每个请求可能具有不同的语言环境,但这不会影响变形器。

变形器不仅被应用程序使用,还被框架用于将路径转换为类名、类名到表、为关联 API 动态创建方法名等。

显然,这些计算不能改变。如果你的模式有一个“区域”表,Active Record 必须始终将区域类映射到“区域”表,无论应用程序的发展如何(除非模式发生变化,但模式必须被可视化为几乎是静态的对此,比配置选项更静态)。

我处理过使用 :en 开始开发的应用程序,获取 i18ned,然后切换到 :es 的默认语言环境。语言环境会影响这种心态中的界面。内部的一切都应该像以前一样工作。

您应该能够以不影响静态事物(如关联名称、表、路由等)的方式更改默认语言环境和其他所有内容。

在这种情况下,您可能有 i18n 路由(随请求的语言环境而变化),但总的来说,上述陈述应该是正确的。

为了尽可能向后兼容,我们保持框架不变,并且使变形具有默认值 :en 以便现有应用程序在升级后获得相同的映射。

于 2014-10-17T14:53:52.273 回答