Вы не можете напрямую использовать Интернационализацию здесь, 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
Теперь, когда вы будете получать время для этого конкретного сеанса, оно будет возвращать его в часовом поясе пользователя, поэтому вам не придется каждый раз преобразовывать его.