ruby-on-rails - 在 Rails I18n 中本地化日期时间

标签 ruby-on-rails internationalization rails-i18n

在我的语言环境 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 相同的输出集已经提到。以下是我用来调试行为的步骤。

  • 检查是否 rails-i18n通过检查 Gemfile.lock ( 实际上,它不是 )是我的 rails 应用程序的一部分。属于我的 Gemfile.lock 的 I18n gem 是来自 activesupport gem 的依赖项
  • 检查 I18n 加载路径以获取“es”语言环境的任何翻译文件 I18n.load_path .没有。
  • 通过 I18n.translate 方法了解它如何处理日期和时间格式。格式字符串中的格式指令 [%a, %A, %b, %B, %p, %P] 仅用于本地化(日、月、子午线 (AM/PM) 指示符 - 较短和较长的格式)因为只有那些包含语言文本。

  • 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/

    相关文章:

    mysql - Rails 3 和 mysql 主从复制

    mysql - 为什么仅通过 Rails 中的套接字访问我的 Rails mysql 时会损坏?

    wordpress - Woocommerce 更改客户名称顺序

    ruby-on-rails - rails-i18n date_select 错误

    ruby-on-rails - rails : How to make Date strftime aware of the default locale?

    ruby-on-rails - 如何自动为 'validate' 设置错误消息?

    html - Rails 错误消息破坏注册表单

    java - JSP 国际化 RTL/LTR

    testing - 您如何针对 Iñtërnâtiônàlizætiøn 测试您的应用程序? (国际化?)

    ruby-on-rails - FactoryGirl 的唯一性验证失败