我创建了一个名为'date_formats.rb'的初始化程序,它看起来像:
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
斗争
当我需要这个日期用西班牙语打印时,问题就开始了。到目前为止我已经安装了 rails-18n gem,因为我必须翻译一些自定义文本,我已经有了 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,并且我已经确定它。
答案 0 :(得分:0)
但localize
或短l
方法是实现这一诀窍的方法。你无法摆脱它。如果没有该方法,则根本不会调用I18n
模块。