Интернационализация local_time (Rails) - PullRequest
0 голосов
/ 03 июня 2019

Простой вопрос, но очень важный, пожалуйста. У меня есть поле зрения: @event.start_time, к которому я применил local_time, поскольку в таблице по умолчанию используется UTC, но пользователи могут быть откуда угодно.

Я бы хотел перевести время с английского языка на язык текущего пользователя. на данный момент мое поле выглядит как <%= local_time(@event.start) %>.

Я попробовал <%= I18n.l(local_time(@event.start), format: :long) %> и, очевидно, он не работает, так как ожидает объект даты, а не строку.

Кто-нибудь знает, как обращаться, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 03 июня 2019

Вы не можете напрямую использовать Интернационализацию здесь, gem local_time поддерживает ее, но для этого вам нужно будет предоставить набор переводов, например, если вы проверяете файл i18n.coffee камня, который вы найдет уже добавленный по умолчанию набор для перевода на английский язык, и аналогично вы можете добавить для других .

Пример:

LocalTime.config.i18n["es"] = {
  date: {
    dayNames: [ … ],
    monthNames: [ … ],
    …
  },
  time: {
    …
  },
  datetime: {
    …
  }
}

LocalTime.config.locale = "es"

Источник: https://github.com/basecamp/local_time#configuration

Другой вариант заключается в том, что если у вас есть часовой пояс, сохраненный в вашей базе данных, вы можете преобразовать время UTC в определенный часовой пояс и затем перейти к I18n.l, который преобразует время в нужный вам формат. Для этого либо вы можете установить Time.zone непосредственно на часовой пояс пользователя, либо использовать метод in_time_zone для преобразования времени UTC во время пользователя. Чтобы установить Time.zone напрямую, вы можете добавить before_action в ApplicationController следующим образом:

before_action :set_time_zone

def set_time_zone
  Time.zone = current_user.time_zone if current_user
end

Теперь, когда вы будете получать время для этого конкретного сеанса, оно будет возвращать его в часовом поясе пользователя, поэтому вам не придется каждый раз преобразовывать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...