我们的应用程序的每个用户可以使用不同的日期和时间格式。我知道日期格式取决于用户的语言和可能的时区。
我想我可以尝试在ApplicationController中运行Date::DATE_FORMATS[:default] = "%m/%d/%Y"
之类的东西。在这种情况下,Date.today.to_s将返回属性格式化日期。它是线程安全的吗?
我看到的另一个选项是将个人资料存储到config/locales/en.yml
,使用en_US
,en_GB
,en_...
等不同的密钥,并将区域设置名称存储到用户的个人资料中。在这种情况下,我将需要使用I18n.localize格式化日期。如果在特定en
中找不到密钥,是否可以回退到en_US
?
答案 0 :(得分:1)
对于Date::DATE_FORMATS
或TIME::DATE_FORMATS
,不幸的是,您需要特别注意使其使用线程安全。但是,不应该太难做到。
对于您的第二个问题,我相信您关注的是区域设置回退和i18n gem has support for locale fallbacks。使用以下功能可以轻松启用此功能:
I18n::Backend::Simple.include(I18n::Backend::Fallbacks)