9 Ocak 2015 Cuma

Django hvad ile Model'de Çoklu Dil Desteği

Django ile uygulama yaparken bazen model dosyalarınızda çoklu dil desteği oluşturmak isteyebilirsiniz. 3.parti uygulama olarak hvad bunun için müthiş bir kolaylık sağlıyor. Uygulamanın github sayfasına buradan veya kendi dökümantasyonuna buradan ulaşabilirsiniz.
Biz bu yazıda basit bir örnek yaparak model dosyamızı nasıl çoklu dil desteği verebiliriz ve bunu web sitesinde seçim olarak nasıl gösterebiliriz buna bakacağız. İlk olarak basit bir şekilde uygulamayı kuralım.
pip install django-hvad
Ardında uygulamayı projemize dahil edelim.
INSTALLED_APPS = (
    ....
    'hvad',
)
Şimdi uygulamayı kullanabiliriz. İlk önce yapmamız gereken model oluşturmak. Model oluştururken bildiğiniz gibi djangonun kendi model sınıflarından kalıtım alıyoruz. Burada ise yapmamız gereken hvad uygulamasının sınıflarından kalıtım almak. Basit bir model oluşturalım.
from hvad.models import TranslatableModel, TranslatedFields,
class Images(TranslatableModel):
    image = models.ImageField()
    category = models.ForeignKey(Category)

    translations = TranslatedFields(
        title=models.CharField(max_length=200),
        description=models.TextField(),
    )

Burada gördüğünüz gibi bir model oluşturduk. Burada image alanı sabit olduğu için translation içerisine almadık sonuç olarak resim her zaman aynı. Ama title ve description alanları her dil için farklı olarak girilmesi gerektiğinden dolayı TraslatedField alanı içerisin aldık. Şimdi bu model oluşturduğumuza göre admin.py dosyası içerisinde ayarlamalarını yapmalıyız. admin.py dosyası şu şekilde olmalı.
from *.models import Images
from hvad.admin import TranslatableAdmin

class ImagesAdmin(TranslatableAdmin):
    def __init__(self, *args, **kwargs):
        super(ImagesAdmin, self).__init__(*args, **kwargs)
Bunları yaptıktan sonra admin sayfasından ekleme yapmaya çalışırsanız şu şekilde bir pencere ile karşılacaksınız.
Gördüğünüz gibi hemen hemen her dil için ekleme yapabiliyoruz. Burada TranslatedField alanı içerisine almadıklarımızı bir kere girmemiz yeterli aldıklarımızı için her dil için farklı olarak girmeliyiz. Burada bazı dilleri istemeyebilirsiniz. Bunun için istediğiniz dilleri şu şekilde settings.py dosyasına ekleyebilirsiniz.
LANGUAGES = (
    ('tr', 'Turkish'),
    ('en', 'English'),
)
Artık sadece Türkçe ve İngilizce sekmelerini göreceksiniz. Bu şekilde iki dile indirmiş olduk. Peki ekleme yaptıktan sonra bunları view dosyaları içerisinde dillere göre nasıl alacağız. Buda oldukça basit.
images = Images.objects.language('en').all()
Bu şekilde sadece ingilizce yazılan kısımlar gelecektir. Eğer siz bir kayıt eklerken sadece türkçe kısmını girer ve ingilizce kısmını boş bırakırsanız bu sorguda o kayıt gelmeyecektir. Burada language kısmı içerisini session değerinden çekerek kullanıcının seçtiği dile göre veritabanından sorgulama yapabilirsiniz. Bu yazıda çok basit bir şekilde hvad uygulamasının kullanımından bahsettik. Gerçekten de insanın işini çok kolaylaştıran bir uygulama. Daha fazla bilgiye kendi dökümantasyonundan oulaşabilirsiniz.
Kaynakça

0 yorum :

Yorum Gönder