1

申し訳ありませんが、これは本当に簡単です。しかし、私はI18nを追加するために多くの方法を試してきましたが、うまくいかないようです。翻訳を配列に追加する方法は何ですか?

これは、ビュー

= @event.categories.map(&:name).to_sentence 

は、これは私が翻訳はこちらのフォームでの作業ではなく、得ることができたロケールで

#Categories 
    categories: 
    gastronomy: Gastronomy 
    family: Family 
    sports: Sports 
    scene: Scene 
    traditional: Tradition 
    music: Music 
    party: Party 

です。どんな考え?

答えて

1

オプション1

今、あなたは次の操作を行うことができます

categories: 
    gastronomy: Gastronomy 
    family: Family 
    sports: Sports 
    scene: Scene 
    traditional: Tradition 
    music: Music 
    party: Party 

次のYAMLファイル構造を持っていると仮定すると:

@event.categories.map{|n| I18n.t("categories.#{n}"}.to_sentence 

オプション2

いっそのこと、あなたがローカライズされた名前を返すためにあなたのCategoryモデルを変更することができます。

cat.name # localized name 

あなたの元の文も

@event.categories.map(&:name).to_sentence 
に動作します:今、 name方法は、ローカライズされた値を返します

class Category < ActiveRecord::Base 

    def name 
    key = read_attribute(:name) 
    return key if key.blank? # return immediately if nil 
    # use the key as value if the localization value is missing 
    I18.n("categories.#{key}", :default => key.humanize) 
    end 
end 

オプション3

Globalize3 gemを使用してください。詳細はscreencastをご覧ください。

+0

これはすばらしい答えです!どうもありがとう! –

+0

エッジケースを処理する答えが更新されました。見てみましょう。 –

関連する問題