2013-11-24 47 views
0

我有這樣的模式:如何添加翻譯到Active模式

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 

我如何添加國際化翻譯這種模式?具體如下:

  • 如何翻譯其型號名稱?
  • 如何翻譯其屬性?
  • 如何爲其提交按鈕提供自定義翻譯?

我正在使用SimpleForm。

回答

2

在你的config /區域設置文件夾,創建一個activerecord.nl.yml(如荷蘭),然後在該文件中把活動記錄翻譯如下

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

至於標籤和按鈕,創建一個簡單form.nl.yml文件,包含

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

labels: &labels 
    name: translation 
    ... 

在t的端帽子文件,把

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

通過拆分從簡單的形式部分標籤和按鈕的列表中,你也可以在你的意見的其他地方使用它們

+0

好的技巧,使用變量。儘管如此,它似乎並沒有爲我工作。屬性和型號名稱都未被翻譯。這裏是測試代碼https://github.com/Nerian/i18n-test-app – Nerian

+0

另外,請注意,我希望自定義提交翻譯僅適用於一個模型,而不是全部。 – Nerian

+0

我沒有看到你的yml文件中的simple_form代碼?這是簡單的表單標籤部分,負責翻譯標籤。 對於按鈕,我通常使用類似於 = f.button:submit,t('buttons.submit') – Danny