【问题标题】:Define a date format in a translation string在翻译字符串中定义日期格式
【发布时间】:2015-03-26 12:08:14
【问题描述】:

在 Rails 中,我可以使用 I18n 格式化日期,如下所示:

I18n.l(@order.created_at, format: :long)

我可以在翻译中提供一个占位符:

config/locales/en.yml:

en:
  order:
    ordered_on_by: "Ordered on %{date} by %{name}

用作:

I18n.t('order.ordered_on_by', 
       date: I18n.l(@order.created_at, format: :long),
       name: @order.customer_name)

但我希望 ordered_on_by 翻译中包含日期格式。这样我就可以将其用作:

I18n.t('order.ordered_on_by',
       date: @order.created_at,
       name: @order.customer_name)

如何在翻译字符串中定义日期或时间格式?

【问题讨论】:

    标签: ruby-on-rails localization internationalization


    【解决方案1】:

    不妨试试

    en:
      order:
        ordered_on_by: "Ordered on %{l date, :fomat => :long} by %{name}
    

    如果这不起作用,您可以尝试在 en.yml 中将 .strftime 添加到 %{date}

    【讨论】:

    • 您确定在语言环境文件中使用localize 方法有效吗?
    • 不是真的,这就是我建议使用的原因。 strftime
    • %{} 的内容似乎没有被评估,因此在其中添加.strfimel() 助手将无济于事。它们按字面意思出现在输出中。
    • 您实际上可以在 YAML 中使用 ruby​​ 代码,就像在 erb 视图中一样。试试ordered_on_by: "Ordered on <%= l(date, format: :long) %> by %{name}(但我不确定你的ERB标签会知道date变量...)
    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 2020-07-06
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2017-07-28
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多