【问题标题】:Month names inflection in Rails I18nRails I18n 中的月份名称变化
【发布时间】:2011-01-14 10:45:17
【问题描述】:

我想在波兰语中使用不同的月份名称。例如现在它是这样工作的:

>> I18n.l Time.now, :format => "%e %B"
=> "14 styczeń"

但我想指定另一种月份格式:

>> I18n.l Time.now, :format => "%e %Q"
=> "14 stycznia"

翻译的月份名称在我的 pl.yml 文件中 pl.date.month_names。我不想改变它。其他情况我可以加pl.date.another_month_names,但是我不知道如何使I18n.l方法使用它。

那么我该如何实现呢?也欢迎其他解决方案(帮助程序、自定义方法等)。

【问题讨论】:

  • 您遇到了一个困扰本地化人员很长时间的难题 - 如何处理比英语更复杂的语言。您在下面提出的作为您自己问题的答案的建议与其说是一种解决方案,不如说是一种解决方法,但它似乎是最好的方法,直到本地化获得更复杂的变形支持,至少类似于复数已经拥有的东西。

标签: ruby-on-rails date localization inflection


【解决方案1】:

我在德语翻译中遇到了奇怪的月份名称的类似问题。 我必须在我的 locale.yml 中配置月份名称,现在它可以按预期工作:

de:
  defaults: &defaults
    month_names:
      [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
    formats:
       default: "%d. %B %Y"
       short: "%d.%m.%Y"
  date:
    <<: *defaults
  time:
    <<: *defaults

【讨论】:

  • month_names 数组中的第一个值是什么?
  • 在代码中,有注释:“# 不要忘记开头的 nil;没有第 0 个月这样的东西”。这就是为什么。
【解决方案2】:

由于没有人回答我的问题,我找到了一种解决方案。

我刚刚创建了另一个翻译,例如 alt_pl.yml 并添加了我的自定义月份名称,然后:

>> I18n.l Time.now, :format => "%e %Q", :locale => :alt_pl
=> "15 stycznia"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多