Plone で作成していたサイトが、突然壊れてしまい、 それ以来自宅サーバ上のサイトをPloneで続けるか、 それともDjangoで作り直すか思案していたのですが、 Djangoでも多言語化が簡単にできそうなツールをみつけたので そろそろ自宅サイトを復活しようと思っています。 自宅で暇を見つけてはちまちま書いていくつもりなので、 いつになるか分かりませんが、それまではグーグルさんの お世話になります。
さて、そのツールとは、 django-multilingual-model 。 こちら のオリジナルを整形して、見やすくなっています。
これをインストールすると、以下のようなモデルを
class Book(models.Model):
ISBN = models.IntegerField()
title = models.CharField(max_length=32)
description = models.TextField()
以下のように変更する事で、title と description が多言語化されます。
from multilingual_model.models import MultilingualModel
from multilingual_model.models import MultilingualTranslation
class BookTranslation(MultilingualTranslation):
class Meta:
unique_together = ('parent', 'language_code')
parent = models.ForeignKey('Book', related_name='translations')
title = models.CharField(max_length=32)
description = models.TextField()
class Book(MultilingualModel):
ISBN = models.IntegerField()
つまり、翻訳したいアイテムだけを、MultilingualTranslation から継承した クラスに移動して、元のモデルは、MultilingualModel から継承するように 変更するだけ。素晴しい!
しかも、admin 入力も用意されていて、
from django.contrib import admin
import models
from multilingual_model.admin import TranslationInline
class BookTranslationInline(TranslationInline):
model = models.BookTranslation
class BookAdmin(admin.ModelAdmin):
list_display = ["ISBN"]
inlines = [BookTranslationInline]
admin.site.register(models.Book, BookAdmin)
こんな風に登録すると、ちゃんと言語別の入力フィールドを用意して くれるのです。来週には国際化も更に強化された Django 1.4 が 正式リリースされるようですし、ここは一念発起してサイトを作り直すしますか。
0 件のコメント:
コメントを投稿