AM / PM не в верхнем регистре при использовании I18n.l с% p в Rails - PullRequest
3 голосов
/ 23 марта 2011

У меня проблема, которую я не могу понять.Я пытаюсь отформатировать дату, используя пользовательский формат, который я определил в моем файле en.yml:

en:
  hello: "Hello world"
  time:
      formats:
          history_table: "%m/%d/%Y %I:%M:%S %p %Z"

Это вызывается с помощью помощника l:

l version.created_at, :format => :history_table

По какой-то причине это показывает AM / PM в нижнем регистре, а не в верхнем, как должно быть в случае с% p.

Я немного поиграл в консоли, и кажется, что эторазница в поведении между функцией локализации и strftime:

ruby-1.9.2-p180 :043 > I18n.l user.updated_at, :format => "%m/%d/%Y %I:%M:%S %p %Z"
 => "03/23/2011 01:52:16 am UTC" 
ruby-1.9.2-p180 :044 > user.updated_at.strftime("%m/%d/%Y %I:%M:%S %p %Z")
 => "03/23/2011 01:52:16 AM UTC"

Я что-то не так делаю?Это ошибка?Любое руководство очень ценится, так как мой лоб болит от удара о стену.

Редактировать: Это было решено (иш).Если посмотреть на локализацию активной поддержки по умолчанию, то нет различия между% p и% P.https://github.com/rails/rails/blob/master/activesupport/lib/active_support/locale/en.yml

Я переопределил локализацию в моем локальном файле en.yml, чтобы использовать прописные буквы.Однако мне бы очень хотелось, чтобы Rails поддерживал оба варианта.

1 Ответ

3 голосов
/ 29 марта 2011

При поиске источника активной поддержки я обнаружил следующее при английской локализации:

  time:
    formats:
      default: "%a, %d %b %Y %H:%M:%S %z"
      short: "%d %b %H:%M"
      long: "%B %d, %Y %H:%M"
    am: "am"
    pm: "pm"

Другими словами, нет различия между встроенными в локализацию% P и% p, посколькув срок.К сожалению, это означает, что в отдельных пользовательских форматах невозможно выбирать между представлениями в верхнем и нижнем регистре, но можно определить, что вы хотите глобально, переопределив форматы по умолчанию в вашем собственном файле en.yml.Например, вот мой обновленный файл en.yml, который теперь вызывает вывод AM / PM в верхнем регистре.

en:
  hello: "Hello world"
  time:
      formats:
          history_table: "%m/%d/%Y %I:%M:%S %p %Z"
      am: "AM"
      pm: "PM"
...