Django’da lokalizasyon

Arkadaşlar merhaba,

Bugün Django’da lokalizasyon işlemlerini nasıl yaparsınız aşama aşama söylemek istiyorum.  Django bizim için neredeyse tüm dil ve lokalizasyon işlemlerini düşünmüş. Tek yapmamız gereken biraz konfigürasyon. Django ile yaptığım bir uygulamaya dil desteği eklemek istediğimde , ilk başta ayarları tam oturtmak ve bunu anlamak zor olmuştu. Dökümantasyonda kaçırdığım bir kaç nokta yüzünden biraz süre kaybettim diyebilirim. O yüzden aşama aşama neler yapılması gerektiğini buraya yazmak istedim.

1- Settings.py ‘da yapılması gereken ayarlar

 from django.utils.translation import ugettext_lazy as _

MIDDLEWARE_CLASSES = (
‘django.contrib.sessions.middleware.SessionMiddleware’,
‘django.middleware.locale.LocaleMiddleware’,
‘django.middleware.common.CommonMiddleware’,
‘django.middleware.csrf.CsrfViewMiddleware’,
‘django.contrib.auth.middleware.AuthenticationMiddleware’,
‘django.contrib.auth.middleware.SessionAuthenticationMiddleware’,
‘django.contrib.messages.middleware.MessageMiddleware’,
‘django.middleware.clickjacking.XFrameOptionsMiddleware’,
)

LOCALE_PATHS = (os.path.join(BASE_DIR, “locale”),)

LANGUAGES = (
              (“tr”, _(“Türkçe”)),
             (“en”, _(“English”))
)

2- Proje klasörü altına , settings.py ‘de belirttiğimiz locale isimli klasör açılmalı.

3- Projeye ait urls.py dosyasında yapılacak değişiklikler

from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns(”,
# Examples:
# url(r’^$’, ‘projectname.views.home’, name=’home’),
# url(r’^blog/’, include(‘blog.urls’)),
                      (r’^i18n/’, include(‘django.conf.urls.i18n’))

4- Şablonları(template), görünümleri (views), formları (forms), modelleri(models) dil destekli hale getirin.  Örnek olarak;

test.html
—————————————————————————
{% load i18n %}
<p> {% trans ‘Merhaba Dünya!’ %} <p>
<p>{{ translated_string }}<p>
views.py
————————————————————————–

from django.utils.translation import ugettext as _

def home(request):
translated_string = _(” Karakter dizisi “)
return render(“app/test.html”,  {“translated_string”: translated_string})

 

5- Proje klasoru altındayken çalıştırılacak komutlar.

// Türkçe dil dosyasının oluşmasını sağlar, tr yerine diğer dilleride yazabilirsiniz.
$ django-admin.py makemessages -l tr
// Bu işlemden sonra , /ProjeKlasoru/locale/tr/LC_MESSAGES/django.po dosyası oluşacaktır.
// Bu dosyanın içinde, çevirmek istediğiniz kelime dizileri bulabilir , karşılıklarını yazabilirsiniz.
$ python manage.py compilemessages

 

Önemli Notlar:

1- Bu işlemleri yapabilmek için, makinede ‘gettext’ kurulu olmalıdır.

2- Görünümlerinizde (views.py) , ‘ugettext’ fonksiyonunu kullanmanız önemlidir.

3- Formlarda(forms.py) veya Modelerinizde(models.py) , ‘ugettext_lazy’ fonksiyonunu kullanmanız önemlidir.

Daha fazla bilgi için tıklayın

Unuttuğum, atladığım bir ayrıntı varsa mail atmanız çok memnun edecektir. Ben fark edersem gerekli güncellemeleri yaparım.