1

これが本当に簡単ならごめんなさい。しかし、私はI18nを追加するために多くの方法を試しましたが、機能しないようです。

これがビューです

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

これはロケールにあります

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

私はなんとか翻訳をフォームで機能させることができましたが、ここではできませんでした。なぜですか?

4

1 に答える 1

1

オプション1

次のyamlファイル構造があると仮定します

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

これで、次のことができます。

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

オプション2

さらに良いことCategoryに、ローカライズされた名前を返すようにモデルを変更できます。

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

ここで、nameメソッドはローカライズされた値を返します。

cat.name # localized name

元のステートメントも機能します

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

オプション3

Globalize3gemを使用します。詳細については、このスクリーンキャストをご覧ください。

于 2012-04-18T19:23:05.443 に答える