2014-12-18 2 views
1

Я сделал инициализатор с именем: «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, и я убедился, что это ,

ответ

0

Я думаю, что вы можете сделать locale в url и установить его по умолчанию на es в контроллере приложения. См. Это link.

Я сделал некоторую работу в i18n раньше и нашел config.i18n.default_locale довольно flaky.

Надеюсь, это поможет.

0

Но localize или короткий l метод метод, который делает трюк. Вы не можете избавиться от него. Без этого метода модуль I18n вообще не вызывается.

+0

получил это .. в любом случае это должен быть способ автоматического перевода дат. –

+0

Вы можете переопределить 'to_s' в' Date' и 'DateTime', чтобы всегда использовать' I18n'. но я думаю, что это ужасная идея и удивительное решение для такого простого использования. Помните Rails 2.3? Вы должны были добавить 'h' ко всему в представлении, теперь это только' l' для вещей, которые вам нужно локализовать. – spickermann

+0

почему вы думаете, что это ужасная идея? я нахожу это интересным –

Смежные вопросы