Я сделал инициализатор с именем: «date_formats.rb» и это выглядит следующим образом:Рельсы дата i18n с пользовательские форматы не перевод
Date::DATE_FORMATS[:default] = "%B %e, %Y" # November 3, 2013
DateTime::DATE_FORMATS[:default] = "%B %e, %Y" # November 3, 2013 14:22
Time::DATE_FORMATS[:default] = "%B %d, %Y %H:%M" # November 3, 2013 14:22
Так что, когда я называю somemodel.created_at
я получил что-то вроде: December 16, 2014 12:37
. Мне это нравится, потому что мне не нужно бороться с strftime
больше
Проблема начинается, когда мне нужна эта дата для печати на испанском языке. До сих пор я установил рельсы-18N драгоценный камень, а потому, что я должен перевести некоторые пользовательские тексты я уже с es.yml, который выглядит следующим образом:
es:
hello: "Hello world"
Client: "Cliente"
update: "Actualización"
create: "Creación"
identification_number: "Número de identificación"
created_by: "Creado por"
identification_type: "Tipo de identificación"
name: "Nombre"
observations: "Observaciones"
status: "Estado"
client_type: "Tipo de cliente"
contract_start_date: "Fecha de inicio de contrato"
contract_end_date: "Fecha de fin de contrato"
contact_name: "Nombre del contacto"
telephone: "Teléfono"
email: "Email"
address: "Dirección"
created_by_id: "Id creador"
date:
order:
- :day
- :month
- :year
abbr_day_names:
- dom
- lun
- mar
- mié
- jue
- vie
- sáb
abbr_month_names:
- ~
- ene
- feb
- mar
- abr
- may
- jun
- jul
- ago
- sep
- oct
- nov
- dic
day_names:
- domingo
- lunes
- martes
- miércoles
- jueves
- viernes
- sábado
month_names:
- ~
- enero
- febrero
- marzo
- abril
- mayo
- junio
- julio
- agosto
- septiembre
- octubre
- noviembre
- diciembre
formats:
short: "%d de %b"
default: "%d/%m/%Y"
long: "%A, %d de %B de %Y"
time:
formats:
short: "%d de %b a las %H:%M hrs"
default: "%a, %d de %b de %Y a las %H:%M:%S %Z"
long: "%A, %d de %B de %Y a las %I:%M %p"
am: "am"
pm: "pm"
Оно не переводить даты мои. Он работает только в том случае, если я назову это следующим образом: l somemodel.created_at
, но я не хочу, чтобы метод локализовал каждый раз, когда мне нужно отображать дату.
До сих пор мой application.rb выглядит следующим образом:
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.available_locales = ['es', :es]
config.i18n.default_locale = :es
I18n.locale = config.i18n.locale = config.i18n.default_locale
Обратите внимание, что я перепробовал много обходных путей, чтобы убедиться, что она загружается правильно .yml, и я убедился, что это ,
получил это .. в любом случае это должен быть способ автоматического перевода дат. –
Вы можете переопределить 'to_s' в' Date' и 'DateTime', чтобы всегда использовать' I18n'. но я думаю, что это ужасная идея и удивительное решение для такого простого использования. Помните Rails 2.3? Вы должны были добавить 'h' ко всему в представлении, теперь это только' l' для вещей, которые вам нужно локализовать. – spickermann
почему вы думаете, что это ужасная идея? я нахожу это интересным –