ruby-on-rails 为什么`1.ordinalize`在带有rails-i18 n gem的Ruby on Rails中可以在locales:en &:fr中工作,而不能在:de中工作?

dldeef67  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(112)

在Ruby on Rails中,ordinalize方法在:de语言环境中不起作用。给出的错误是:

> 1.ordinalize
=> "translation missing: de.number.nth.ordinalized"

这很容易重现:
1.使用命令rails new test1创建一个全新的rails应用程序
1.通过将rails-i18n gem添加到Gemfile并运行bundle来安装它
1.复制并编辑config/locale/en.yml文件,通过以下编辑创建fr.yml和de.yml:

==> config/locales/de.yml <==
    de:
      hello: "Hallo Welt"
    
    ==> config/locales/en.yml <==
    en:
      hello: "Hello world"
    
    ==> config/locales/fr.yml <==
    fr:
      hello: "Bonjour le monde"

然后尝试在rails控制台中使用ordinalize:

test1 git:(main) ✗ rails console
Loading development environment (Rails 7.0.4.3)
3.1.2 :001 > I18n.locale
 => :en
3.1.2 :002 > 1.ordinalize
 => "1st"
3.1.2 :003 > I18n.locale = :fr
 => :fr
3.1.2 :004 > 1.ordinalize
 => "1er"
3.1.2 :005 > I18n.locale = :de
 => :de
3.1.2 :006 > 1.ordinalize
 => "translation missing: de.number.nth.ordinalized"

查看rails-i18 n源代码,其中似乎有处理GermanFrench中的number.nth.ordinalized转换密钥的代码
如果我手动添加一个number.nth.ordinalized键到de.yml文件中,那么就可以找到该翻译。
请有人能帮助我理解为什么这是不工作,并理想地解释什么需要改变,使其工作。
先谢谢你了。

20jt8wwn

20jt8wwn1#

rails-i18 n gem的最后一个版本(7.0.6)是在去年11月发布的。
您可以等待发布切换到主分支,方法是将Gemfile中的行更改为:

gem 'rails-i18n', github: 'svenfuchs/rails-i18n', branch: 'master'

之后,您应该能够获得:

[2] pry(main)> I18n.locale = :de
=> :de
[3] pry(main)> 1.ordinalize
=> "1."

相关问题