Djangoで、多言語対応の事典サイトを作ろうとしています。
templateに記載する内容については、template内に、
{% trans "Hello" %}のように記述し、
poファイルに言語毎に対応する記述をすることで、対応することができました。
データベースに保存したデータの多言語化対応については、どのように処理すべきでしょうか。
仮に多言語の事典を作るとすると、どうしたら良いでしょうか。
この事典には、「名称」とそれに対する「解説」が記録されており、各言語に翻訳できるものとします。例えば、検索フォームに「パソコン」と入力し、「日本語」を選択すれば、「パソコンとは、…」という解説が表示されます。その状態で、「英語」を選択すれば「computer is...」と表示され、「中国語」を選択すれば「电子计算机是…」と表示されます。
私が考えたのは、下記の2つの方法です。2の方法の方が良いかと思っています。
1.一つのmodelsクラスの中に、全言語の「名称」と「解説」を記述する方法。
python
1# models.py 2 3# 単語・解説を処理するクラス 4class Word(models.model): 5 name_ja = models.CharField(maxlength=100) # 日本語の名称を入れる 「パソコン」等 6 explanation_ja = models.TextField() # 日本語の解説を入れる 7 name_en = models.CharField(maxlength=100) # 英語の名称を入れる 「computer」等 8 explanation_en = models.TextField() # 英語の解説を入れる 9 name_zh = models.CharField(maxlength=100) # 中国語の名称を入れる 「电子计算机」等 10 explanation_zh = models.TextField() # 中国語の解説を入れる 11 # …… 以下、言語毎に名称と解説を入れる
2.言語のモデル、単語のモデル、単語の外国語訳のモデル、各単語・言語毎の解説のモデルの4つのクラスを作る方法
python
1# models.py 2# 言語を処理するクラス 3class Language(models.Model): 4 language_name = models.CharField(max_length=100) # 言語の名称 「日本語」、「英語」、「中国語」等 5 6 7# 単語を処理するクラス 8class WordJa(models.Model): 9 word_name_ja = models.CharField(max_length=100) # 日本語の名称 「パソコン」等 10 11# 単語の外国語訳を処理するクラス 12class WordTranslation(models.Model): 13 word_name_ja = ForeignKey(WordJa, on_delete=models.CASCADE) # 日本語の名称 「パソコン」等 14 language = ForeignKey(Language, on_delete=models.CASCADE) # 言語 「英語」等 15 translation = models.CharField(max_length=100) # 訳語 「computer」等 16 17# 単語と言語と解説を処理するクラス 18class Explanation(models.Model): 19 word_name_ja = ForeignKey(WordJa, on_delete=models.CASCADE) # 日本語の名称 「パソコン」等 20 language = ForeignKey(Language, on_delete=models.CASCADE) # 言語 「英語」等 21 explanation = TextField() # その言語での解説 「computer is …」等
1だと冗長になってしまいますので、2の方法の方が良いかと思っています。
他に良い方法はありますでしょうか?
どのように考えるのが、定石なのでしょうか?
お分かりの方、ご教示頂ければ幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー