Skip to content

Instantly share code, notes, and snippets.

@serdardurbaris
Last active February 11, 2022 14:05
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save serdardurbaris/6f53a745364d1211bc1ac4acb0b018e3 to your computer and use it in GitHub Desktop.
Save serdardurbaris/6f53a745364d1211bc1ac4acb0b018e3 to your computer and use it in GitHub Desktop.
Django Çoklu Dil
"""
----------------------------
setting.py dosyasındaki ayarları yaptıktan sonra locale klasörü oluşturmak için
pycharm > Tools > Run manage.py task çalıştırılır.
manage.py konsoluna sırasıyla aşağıdaki komutlar yazılır.
makemessages -l tr
makemessages -l en
tek seferde tüm dilleri oluşturmak için aşağıdaki komutu kullanın
makemessages --locale=af --locale=ar --locale=ast --locale=az --locale=bg --locale=be --locale=bn --locale=br --locale=bs
--locale=ca --locale=cs --locale=cy --locale=da --locale=de --locale=dsb --locale=el --locale=en --locale=en-au
--locale=en-gb --locale=eo --locale=es --locale=es-ar --locale=es-co --locale=es-mx --locale=es-ni --locale=es-ve
--locale=et --locale=eu --locale=fa --locale=fi --locale=fr --locale=fy --locale=ga --locale=gd --locale=gl
--locale=he --locale=hi --locale=hr --locale=hsb --locale=hu --locale=ia --locale=id --locale=io --locale=is
--locale=it --locale=ja --locale=ka --locale=kab --locale=kk --locale=km --locale=kn --locale=ko --locale=lb
--locale=lt --locale=lv --locale=mk --locale=ml --locale=mn --locale=mr --locale=my --locale=nb --locale=ne --locale=nl
--locale=nn --locale=os --locale=pa --locale=pl --locale=pt --locale=pt-br --locale=ro --locale=ru --locale=sk
--locale=sl --locale=sq --locale=sr --locale=sr-latn --locale=sv --locale=sw --locale=ta --locale=te --locale=th
--locale=tr --locale=tt --locale=udm --locale=uk --locale=ur --locale=vi --locale=zh-hans --locale=zh-hant
--ignore=venv/*
PO dosyaları içerisinde parametreler aşağıdaki şekilde tanımalanacak
msgid "home"
msgstr "Anasayfa"
manage.py konsoluna aşağıdaki komut yazılır.
compilemessages
yukarıdaki komut yazıldıktan sonra .mo uzantılı dosyalar otomatik olarak oluşur
HTML DOSYASINDA KULLANIMI
{% load i18n %}
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>{% trans "home" %}</h1>
</body>
</html>
"""
import os
import os.path
import sys
from django.utils.translation import ugettext_lazy as _
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale"),)
# Application definition
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', # Çoklu dil desteğinisağlayan middleware
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/
LANGUAGE_CODE = 'tr'
LANGUAGES = [
('af', _('Afrikaans')),
('ar', _('Arabic')),
('ast', _('Asturian')),
('az', _('Azerbaijani')),
('bg', _('Bulgarian')),
('be', _('Belarusian')),
('bn', _('Bengali')),
('br', _('Breton')),
('bs', _('Bosnian')),
('ca', _('Catalan')),
('cs', _('Czech')),
('cy', _('Welsh')),
('da', _('Danish')),
('de', _('German')),
('dsb', _('Lower Sorbian')),
('el', _('Greek')),
('en', _('English')),
('en-au', _('Australian English')),
('en-gb', _('British English')),
('eo', _('Esperanto')),
('es', _('Spanish')),
('es-ar', _('Argentinian Spanish')),
('es-co', _('Colombian Spanish')),
('es-mx', _('Mexican Spanish')),
('es-ni', _('Nicaraguan Spanish')),
('es-ve', _('Venezuelan Spanish')),
('et', _('Estonian')),
('eu', _('Basque')),
('fa', _('Persian')),
('fi', _('Finnish')),
('fr', _('French')),
('fy', _('Frisian')),
('ga', _('Irish')),
('gd', _('Scottish Gaelic')),
('gl', _('Galician')),
('he', _('Hebrew')),
('hi', _('Hindi')),
('hr', _('Croatian')),
('hsb', _('Upper Sorbian')),
('hu', _('Hungarian')),
('ia', _('Interlingua')),
('id', _('Indonesian')),
('io', _('Ido')),
('is', _('Icelandic')),
('it', _('Italian')),
('ja', _('Japanese')),
('ka', _('Georgian')),
('kab', _('Kabyle')),
('kk', _('Kazakh')),
('km', _('Khmer')),
('kn', _('Kannada')),
('ko', _('Korean')),
('lb', _('Luxembourgish')),
('lt', _('Lithuanian')),
('lv', _('Latvian')),
('mk', _('Macedonian')),
('ml', _('Malayalam')),
('mn', _('Mongolian')),
('mr', _('Marathi')),
('my', _('Burmese')),
('nb', _('Norwegian Bokmål')),
('ne', _('Nepali')),
('nl', _('Dutch')),
('nn', _('Norwegian Nynorsk')),
('os', _('Ossetic')),
('pa', _('Punjabi')),
('pl', _('Polish')),
('pt', _('Portuguese')),
('pt-br', _('Brazilian Portuguese')),
('ro', _('Romanian')),
('ru', _('Russian')),
('sk', _('Slovak')),
('sl', _('Slovenian')),
('sq', _('Albanian')),
('sr', _('Serbian')),
('sr-latn', _('Serbian Latin')),
('sv', _('Swedish')),
('sw', _('Swahili')),
('ta', _('Tamil')),
('te', _('Telugu')),
('th', _('Thai')),
('tr', _('Turkish')),
('tt', _('Tatar')),
('udm', _('Udmurt')),
('uk', _('Ukrainian')),
('ur', _('Urdu')),
('vi', _('Vietnamese')),
('zh-hans', _('Simplified Chinese')),
('zh-hant', _('Traditional Chinese')),
]
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='home_index'),
]
# startup projenin url dosyası
from django.shortcuts import render
from django.utils.translation import ugettext as _
from django.http import HttpResponse, HttpResponseRedirect
from django.utils import translation
from django.urls import reverse
def index(request):
response = render(request, 'index.html', {
'anasayfa': _("home"),
})
return response
def redirect(request):
activate(translation.get_language())
if request.user.id:
return HttpResponseRedirect(reverse('home_index'))
@serdardurbaris
Copy link
Author

Eğer makemessages komutunda aşağıdaki şekilde hata alırsanız venv i ignore ederek çalıştırın

xgettext: .\venv\Lib\site-packages\pip-9.0.1-py3.6.egg\pip_vendor\webencodings_init_.py:1: Unknown encoding "utf8". Proceeding with ASCII instead.
xgettext: Non-ASCII string at .\venv\Lib\site-packages\pip-9.0.1-py3.6.egg\pip_vendor\webencodings_init_.py:64.

Kullanılacak komut
python manage.py makemessages --locale=en --ignore=venv/*

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment