在我的语言环境 rails 控制台中,我可以看到通过 I18n gem 可以使用以下语言环境
> I18n.available_locales
=> [:en, :de, :es, :ja, :"pt-BR", :"zh-CN", :"zh-HK", :"zh-TW"]
我尝试使用
localize
具有特定的英文日期格式 -> I18n.with_locale("en") { I18n.l(Time.zone.now, format: "%B, %Y") }
=> "April, 2016"
这很好用。然后我用西类牙语和日语尝试同样的事情 -
> I18n.with_locale("es") { I18n.l(Time.zone.now, format: "%B, %Y") }
=> "s, 2016"
> I18n.with_locale("ja") { I18n.l(Time.zone.now, format: "%B, %Y") }
=> "s, 2016"
看起来月份名称被翻译为
"s"
.rails I18n gem definitely defines month names对于上述语言环境。是否
#localize
方法甚至利用这些,还是试图从其他地方拉?谢谢!
最佳答案
我收到了与 you 相同的输出集已经提到。以下是我用来调试行为的步骤。
I18n.load_path
.没有。I18n.with_locale(:en) { I18n.localize(Time.zone.now, format: "%B, %Y") }
内部调用
I18n.translate(:"date.month_names", :locale => :en)[Time.zone.now.mon]
返回
"April"
相似地,I18n.with_locale(:es) { I18n.localize(Time.zone.now, format: "%B, %Y") }
内部调用
I18n.translate(:"date.month_names", :locale => :es)[Time.zone.now.mon]
但是没有可用的翻译,
I18n.translate(:"date.month_names", :locale => :es)
=> "translation missing: es.date.month_names"
Time.zone.now.mon = 4
.所以,它返回 "translation missing: es.date.month_names"[4]
这是 "s"
希望这可以帮助。
关于ruby-on-rails - 在 Rails I18n 中本地化日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36881411/