首页 > 解决方案 > 不同的日期格式和一种语言环境

问题描述

I18n.t('date.formats.default')用于日期格式。

问题是在不同的国家有不同的日期格式,但只有一种英语语言环境

例如美国的“ %m.%d.%Y ”和澳大利亚的“ %d.%m.%Y

我需要如何处理它的想法。

标签: ruby-on-railsrubyinternationalizationrails-i18n

解决方案


虽然您可能只是将其他东西用于日期格式,但最简单的插入式解决方案是将所有可能的变体存储在同一字符串中并在检索时执行(假设国家代码已知):

'date.formats.default': 'US[%m.%d.%Y],AU[%d.%m.%Y]'

code = 'AU'
format = I18n.t('date.formats.default')
format[/(?<=#{code}\[).*?(?=\])/] || format
#⇒ "%d.%m.%Y"

后者|| format需要支持正常格式,不带括号。


如果您不喜欢正则表达式,请将包含 hash 的 JSON 存储在那里,{CODE => FORMAT}解析它并检索值。


推荐阅读