在我的域中,许多模型都有名称,描述等。这些属性需要翻译。我知道如何在数据库中表示这一点。但是我很难找到用Rails表示这种方法的方法。
|-------translations-table--------| |translation_id|locale|translation| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |----------------------modelx-table---------------------| |id|name_translation_id|description_translation_id|price| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |-------modely-table--------| |id|name_translation_id|date| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
答案 0 :(得分:0)
您无需为翻译创建额外的模型,只需要设置.yml格式的区域设置,查看this以获取进一步说明
好了,现在我理解你的观点,你想在你的实体/模型上添加可翻译的字段,这样用户可以通过UI管理这些翻译吗?你的方法是正确的,但是有一个名为{{3}的宝石这可以做同样的事情,但玩具更多,而且你想要的更加标准化。
答案 1 :(得分:0)
这是我最终提出的解决方案:
#Models
class Translation
has_many :translation_records
end
class TranslationRecord
(translation_records.find_by :locale => I18n.locale).text
end
class ModelX
belongs_to :name_translation, :class_name => 'Translation'
belongs_to :description_translation, :class_name => 'Translation'
def name
name_translation.current
end
def description
description_translation.current
end
end
#Migrations
class CreateTranslationRecords < ActiveRecord::Migration[5.0]
def change
create_table :translation_records do |t|
t.references :translation
t.string :locale
t.string :text
end
add_index :translation_records, :locale
end
end
class CreateTranslation < ActiveRecord::Migration[5.0]
def change
create_table :translations do |t|
# only id column
end
end
end
class AddTranslationToModelXs < ActiveRecord::Migration[5.0]
def change
add_reference :model_xs, :name_translation
add_reference :model_xs, :description_translation
end
end