0

写真をカテゴリに分類する Web アプリケーションがあります。これらのカテゴリは現在スウェーデン語ですが、カテゴリ名の英語翻訳を追加するオプションを追加したいと考えています。

カテゴリが静的だった場合は、ロケール ファイルに翻訳を追加するだけで済みましたが、ユーザーがカテゴリ (および翻訳) を追加できるようになったので、どうすればよいかわかりません。

どうすればこれを行うことができますか?明らかな最初の考えは、各言語の列を などのデータベース テーブルに追加するtitle_enことtitle_svですが、プロジェクトの後半で顧客が言語を追加したいと思うようになると、すぐに非現実的になると思います。

誰かが以前に似たようなことをしましたか?どうもありがとう!

4

2 に答える 2

2

Rails i18n システムでは、さまざまなバックエンドを使用できます。「rails i18n バックエンド」を Google で検索すると、いくつかの実装と例が見つかります。

これにはデータベースを使用できます。これは、Web インターフェイスを介して翻訳を管理する RailsCast のデモです。

于 2013-11-04T14:01:48.550 に答える
1

考えられる解決策がいくつかあります。私の最初の選択は、aalang:stringフィールドを追加して、categorysparent_id:integerテーブルに追加することです。次に、自己参照関連をCategoryモデルに追加します (Category と呼ばれると思います...)。

belongs_to :translated, :class_name => 'Category', :foreign_key => 'parent_id'
has_many :translations, :class_name => 'Category', :foreign_key => 'parent_id'

次に、フィールドでフィルタリングするスコープをモデルに追加しますlang

scope :language, lambda{|lang| where("lang = ?", lang)}

そしてtranslate方法です。

def translate(lang)
  self.translations.language(lang).first if self.translations.language(lang).any?
end

したがって、メイン言語を 1 つ設定し、他の言語をいくつでも追加できます。

別の可能性はtranslations:text、モデルとserializeそれにフィールドを追加することです。したがって、シリアル化されたハッシュに翻訳を保存できます。そのソリューションの欠点は、シリアル化されたフィールドを簡単に検索できないことです。

于 2013-11-04T14:03:38.450 に答える