Sim*_*nMD 5 inflector ruby-on-rails-4
在Rails 4(支持多语言变形)中,我可以设置:
config.i18n.default_locale = :es
Run Code Online (Sandbox Code Playgroud)
在我的config/application.rb中,它允许我在控制台中执行以下操作:
'general'.pluralize(:es) => "generales"
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时:
rails g model General conciencia:string atencion:string
Run Code Online (Sandbox Code Playgroud)
Rails生成的文件的'general'复数为'generals',西班牙语应该是'generales'
如果设置了语言环境,Rails不应该为其生成器使用多语言导向器吗?有没有办法强迫它使用它们?
谢谢!
有点晚了,但为了记录:Rails 问题中有一个关于为什么会这样的争论(所以这不是一个错误,但你可以讨论它):
来源:https ://github.com/rails/rails/issues/10125#issuecomment-17274499
在 Rails 4 之前,inflector 不支持多个语言环境。只有一套规则。应用程序具有默认区域设置,并且在 i18n 应用程序中,每个请求可能具有不同的区域设置,但这不会影响变形器。
变形器不仅由应用程序使用,框架还使用它来将路径转换为类名、将类名转换为表、为关联 API 动态创建方法名称等。
显然,这些计算不能改变。如果您的架构有一个“regions”表,则无论应用程序如何发展,Active Record 都必须始终将 Region 类映射到“regions”表(除非架构发生更改,但架构必须可视化为大部分静态的)对此,比配置选项更加静态)。
我曾经开发过使用 :en 开始开发的应用程序,获得 i18ned,然后切换到默认语言环境 :es。区域设置会影响该思维模式中的界面。内部的一切都应该像以前一样工作。
您应该能够以不影响关联名称、表、路由等静态内容的方式更改默认区域设置和其他所有内容。
在这种情况下,您可能有 i18n 路由(随请求的区域设置而变化),但一般来说,上面的陈述应该是正确的。
为了尽可能向后兼容,我们保持框架不变,并将变形设置为默认值 :en,以便现有应用程序在升级后获得相同的映射。
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |