2013-11-24 3 views
0

У меня есть эта модель:Как добавить переводы к активной модели

class Coupon 
    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    attr_accessor :id 

    def initialize(attributes = {}) 
    attributes.each do |name, value| 
     send("#{name}=", value) 
    end 
    end 

    def persisted? 
    false 
    end 
end 

Как я могу добавить i18n переводы этой модели? В частности:

  • Как перевести его название модели?
  • Как перевести его атрибуты?
  • Как я могу предоставить пользовательский перевод для своей кнопки отправки?

Я использую SimpleForm.

ответ

2

В вашей конфигурации/Locales папки, создать activerecord.nl.yml (например, для голландцев), то в этом файле положить активные записи переводов следующего

nl: 
    activerecord: 
    models: 
     coupon: translation 
     coupons: translation 

Как для меток и кнопок, создавать простой-form.nl.yml файл, содержащий

nl: 
    buttons: &buttons 
    submit: translation 
    ... 

и

labels: &labels 
    name: translation 
    ... 

в конце т шляпа файл, положить

simple_form: 
    buttons: 
     defaults: 
     <<: *buttons 
    labels: 
     defaults: 
     <<: *labels 

путем разделения списка ярлыков и кнопок из простой формы раздела, вы можете также использовать их в другом месте в ваших взглядах

+0

Хороший трюк, с помощью переменных. Тем не менее, похоже, что это не работает для меня. Ни атрибуты, ни имя модели не переводится. Вот тестовый код https://github.com/Nerian/i18n-test-app – Nerian

+0

Кроме того, обратите внимание, что я хочу, чтобы пользовательский перевод был переведен только для одной модели, а не для всех. – Nerian

+0

Я не вижу код simple_form в вашем yml-файле? Это простая метка формы, которая заботится о переводе меток. Для кнопок я обычно использую что-то вроде = f.button: submit, t ('buttons.submit') – Danny

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