Coraz częściej przygotowujemy serwisy, które z założenia mają byc dostepne w różnych językach.
Ostatnio pisałem przy okazji pewnego projektu instrukcję prostej "internacjonalizacji". Oto ona:
Krok 1
W pliku settings.py należy upewnić się, że USE_I18N jest ustawione na True (tak jest domyślnie)
Następnie należy dodać klasę LocaleMiddleware do MIDDLEWARE_CLASSES, np.:
MIDDLEWARE_CLASSES = ( "Django.middleware.common.CommonMiddleware", "Django.contrib.sessions.middleware.SessionMiddleware", "Django.contrib.auth.middleware.AuthenticationMiddleware", "Django.middleware.locale.LocaleMiddleware", )
Krok 2
Należy dodać klucze do tłumaczenia szablonów. Każdy szablon, który powinien wspierać tłumaczenie musi załadować bibliotekę i18n. Osiąga się to za pomocą znacznika {% load i18n %}
.
Każdy tekst, który ma być przetłumaczony powinien znaleźć się wewnątrz tagu {%trans "…" %}
.
Przykład prostego szablonu przystosowanego do tłumaczenia:
{% load i18n %} {% trans "Ten napis będzie przetłumaczony" %}
Na serwerze linuksowym należy przejść do głównego katalogu projektu i wykonać polecenia:
mkdir locale python manage.py makemessages -l en python manage.py makemessages -l pl
Po pomyślnym wykonaniu tych poleceń pliki językowe znajdują się w <główny_katalog_projektu>/locale/<język>/ LC_MESSAGE/django.po
, można je edytować i dodawać tłumaczenia dla poszczególnych łańcuchów. Po zakończeniu edycji należy je skompilować do plików .mo poleceniem
python manage.py compilemessages