2012-03-04 4 views
3

私はルビーオンレール(3.1)上でアプリケーションを実行していますでの検証が提起した(I18N)のエラーテキストを翻訳し、さまざまな言語に翻訳を処理する必要がある方法。私は、コントローラのテキストが正しくI18Nのfeauturesを使用して処理だが、何のモデルで検証について、このような特に:モデル(ルビーオンレール)

validate :valid_quantities? 

def valid_quantities? 
    if self.quantity*self.unitprice < 1.00 
    errors.add("The transaction value", "is < 1.00") 
    return false 
end 

は、どのように私は他の言語のサポートを提供するためにこれをコーディングするのでしょうか?
さらに、数値の書式設定を処理する方法は?私はActionViewヘルパーとユーザに電話することはできません。 number_to_currency

答えて

1

[OK]を、私は、部分的な進歩を遂げて、次の作品のようになります。

変更が

errors.add(" ",I18n.t(:valid_quantities,:amount=>1.00)) 

にモデル検証のコードがde.yml

de: 
    valid_quantities: "Der Mindestwert einer Order ist %{amount}" 
への翻訳を入力します。

しかし、私はまだ1,00 FO、英語のための1.00(正確にその数をフォーマットする方法を探していますrドイツ語)。

3

標準の検証については、http://guides.rubyonrails.org/i18n.html#error-message-scopesを参照してください。あなたのカスタム検証のために、なぜI18n.tを使用しないのですか?

errors.add(:transaction_value, I18n.t("errors.attributes.transaction_value.below_1")) 
+0

カントはそれが働いて得るように見える/config/locales/en.ymlの例であり、Iこれを追加しましただけでなく、de.ymlへの翻訳を追加 エラーが次のように: 属性: transaction_value: below_1:デアTransaktionswertイストクライナー1.00 を、私はまだエラーメッセージが出ます:欠落している 取引値翻訳:de.errorsを.attributes.transaction_valu e.below_1 – KKK

1

あなたは数字や日付をローカライズするための方法I18n.lを使用する必要があります。

Railsのガイドあなたがまっすぐに翻訳ファイルに翻訳を追加することができるはずそれによってエラーの局在性に関するいくつかの追加情報があります。http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

8

私はこれを使用します。

total_price = self.quantity*self.unitprice 
errors.add(:transaction_value, :transaction_undervalued, { value: total_price }) 

IMHOあなたは

activerecord.errors.models.[model_name].attributes.transaction_undervalued 
activerecord.errors.models.[model_name] 
activerecord.errors.messages 
errors.attributes.transaction_undervalued 
errors.messages 
:より良い :transaction_undervaluedのような単純なキーワード、 rails guides - i18n - error message scopesによると、いくつかの名前空間でそのように国際化の外観を使用します

*置き換える[MODEL_NAME]モデルは、この検証のロケールの一部については

を使用していると、これは

en: 
    errors: &errors 
    messages: 
     transaction_undervalued: "The transaction value is %{value}. That is < 1.00" 
関連する問題