如何在Rails生成器上强制执行语言环境变换?

时间:2014-01-11 00:06:45

标签: ruby-on-rails-4 inflector

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

config.i18n.default_locale = :es

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

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

但是当我跑步时:

rails g model General conciencia:string atencion:string

Rails生成的文件的'general'复数为'generals',西班牙语应该是'generales'

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

  

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

     

变形器不仅被应用程序使用,它也被使用   将路径转换为类名,将类名转换为表的框架,   为关联API等动态创建方法名称

     

显然,这些计算不能改变。如果您的架构有   "区域" table,Active Record必须始终将Region类映射到   "地区"表,无论应用程序的演变   (除非架构发生更改,但架构必须可视化为   对于这个来说,大部分是静态的,配置更加静态   选项)。

     

我使用过:en,get开始开发开发的应用程序   i18ned,然后切换到默认语言环境:es。区域设置是   影响这种心态的界面的东西。一切   内部应该像以前一样工作。

     

您应该能够更改默认语言环境和其他所有内容   一种不影响关联名称等静态内容的方法,   桌子,路线等

     

可能是你有i18n路线的情况(随之改变)   请求的语言环境),但一般来说上面的语句应该是   真。

     

为了尽可能向后兼容,我们离开了   框架未触及,并使变形具有默认值   of:以便现有应用程序获得相同的映射   升级。