【问题标题】:How to enforce locale inflections on Rails generators?如何在 Rails 生成器上强制执行语言环境变化?
【发布时间】:2014-01-30 03:49:57
【问题描述】:

在 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 是否应该为其生成器使用多语言变形器?有没有办法强制它使用它们?

谢谢!

【问题讨论】:

  • 没人遇到过这个问题吗? :(
  • 我跑了,但只有复数形式,关于意见。我必须将语言环境放在所有方法调用上。对于脚手架的生成,我想,这可能是一个大问题,但我认为如果可能的话,用英语开发你的系统并将其翻译成你的语言是一个很好的做法。

标签: ruby-on-rails-4 inflector


【解决方案1】:

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

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

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

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

显然,这些计算不能改变。如果您的架构有 "regions" 表,Active Record 必须始终将 Region 类映射到 “区域”表,无论应用程序的演变如何 (除非架构发生变化,但架构必须可视化为 对此大多是静态的,比配置更静态 选项)。

我曾开发过使用 :en, get 开始开发的应用程序 i18ned,然后切换到 :es 的默认语言环境。语言环境是 在那种心态下影响界面的东西。一切 internal 应该像以前一样工作。

您应该能够更改默认语言环境和其他所有内容 一种不会影响诸如关联名称之类的静态事物的方式, 表格、路线等。

如果您有 i18n 路线(随着 请求的语言环境),但一般来说,上面的语句应该是 真的。

为了尽可能向后兼容,我们保留了 框架原封不动,并已使变形具有默认值 of :en 以便现有应用程序在 升级。

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2021-03-03
    • 2019-10-29
    • 1970-01-01
    • 2023-01-04
    • 2011-09-26
    相关资源
    最近更新 更多