Rails i18n.default_locale и формат даты ... похоже не работает по умолчанию - PullRequest
4 голосов
/ 13 марта 2012

Я хочу, чтобы Rails (3.2) использовал американский формат даты 14.03.2012, если я не скажу иначе.

У меня установлен драгоценный камень I18n, загружен (и изменен) файл config/locales/en-US.yml, чтобы иметь формат по умолчанию default: ! '%m/%d/%Y', установить мой языковой стандарт application.rb как config.i18n.default_locale = "en-US" и перезапустить.

Когда отображаются даты (например, простой вид), они по-прежнему имеют формат 2012-03-14. Если я использую метод I18n.l, дата отображается по желанию, 14.03.2012. Таким образом, локализация работает через класс I18n.

Полагаю, я ожидал, что значение «по умолчанию» будет «это то, что нужно использовать, если вам не сказано иначе локализовать или перевести». Видимо, я ожидал неправильно: -)

Таким образом, дальнейшее копание показало, что я могу изменить значения по умолчанию для даты и времени в инициализаторе, например config/initializers/date_formats.rb, например,

Date::DATE_FORMATS[:default]="%m/%d/%Y"
Time::DATE_FORMATS[:default]="%m/%d/%Y %H:%M"

Это похоже на то, что я хочу. Несколько тревожных сообщений предполагают, что это испортит то, как даты хранятся в базе данных, но мои тесты (с использованием PostgreSQL) показывают, что это не проблема.

Итак (разглагольствовать), почему, черт возьми, не все приложения должны соблюдать локаль по умолчанию, не перенося каждую дату на поверхность земли с помощниками l и t?

И (фактический вопрос) я нанесу непоправимый вред себе или другим, изменив формат даты и времени по умолчанию для моего приложения в инициализаторе?

1 Ответ

2 голосов
/ 27 мая 2012

У меня была та же проблема, и этот драгоценный камень помог мне https://github.com/jeremyevans/ruby-american_date

Просто добавьте его в свой Gemfile, без настроек

...