【发布时间】:2011-12-16 09:25:49
【问题描述】:
我刚刚意识到 Rails(目前为 3.1.3)中的 l(或 localize)方法似乎无法根据当前设置的语言环境管理时钟格式。我只是假设是这种情况,并没有专门对此进行测试...我刚刚验证了日期已根据语言环境重新格式化。
我在我的 rails 控制台中获得了以下所有内容的 24 小时制时钟。两种语言环境之间唯一明显的区别是月份名称的大写。
I18n.l Time.now, :format => :short, :locale => :"en"
I18n.l Time.now + 12.hours, :format => :short, :locale => :"en"
I18n.l Time.now, :format => :short, :locale => :"sv-SE"
I18n.l Time.now + 12.hours, :format => :short, :locale => :"sv-SE"
现在,这是为什么呢? 这不是本地化时间的一部分吗?
我发现 AM/PM 的唯一手动干预是为我可以“手动”要求 12 小时制的表单生成选择。一个奇怪的选择,因为对我来说,这就像我想依赖语言环境一样。
查看 Mac OS,我确实可以分别为格式首选项选择语言和区域设置,但这就是我们使用 en-US、en-GB、sv-SE 命名的原因,对吧?表示语言国家。我可以通过适合瑞典的格式将 en-SE 文件添加到我的应用程序中,其中包含英语翻译。
我假设并非所有美国开发人员都进入并编辑英语的默认语言环境文件(en-US 看起来与 en btw 相同)以获得适合美国用户的 12 小时制。所以,请随意向我展示我是多么愚蠢。我完全希望这个问题能够确定一些非常基本的问题。
简而言之。我做错了什么?以及如何“修复”我的时间戳? :)
【问题讨论】:
标签: ruby-on-rails time localization