Můj web

Čeština ve frameworku Django

Publikováno 25.7.2012

Django administrace je standardně po nainstalování v angličtině. Zapnout češtinu je snadné. V souboru settings.py nastavíte konstantu:

LANGUAGE_CODE = 'cs'

Určitě budete chtít používat české překlady i ve vlastní aplikaci.

Existuje několik způsobů, jak pracovat s překlady ve skriptu. Já osobně preferuji funkci ugettext(). Tudíž si ji nejprve naimportujeme:

from django.utils.translation import ugettext as _

Tímto zápisem docílíme zkráceného zápisu funkce. Dále ve skriptu tedy voláme funkci pro překlad takto:

_("Body")

Lokalizované texty můžeme používat samozřejmě i v templatech. Takto řekneme Djangu, že má překládat template:

{% load i18n %}

A takto pak zapisujeme texty:

{% trans "Body" %}

Pokud si text nepřeložíme v lokalizačním souboru, uvidíme ho na výstupu jako Body. Abychom docílili českého překladu Tělo, založíme si v projektu soubor s českými překlady. Z adresáře projektu spustíme příkaz:

$ python manage.py makemessages -l cs

Vznikne soubor locale/cs/LC_MESSAGES/django.po který obsahuje texty pro překlad. Při generování lokalizačního souboru se procházejí jak skripty, tak templaty. Následujícím příkazem pak kdykoliv zaktualizujeme předgenerované překlady ve všech lokalizačních souborech:

$ python manage.py makemessages -a

V adresáři projektu v českém lokalizačním souboru django.po zadáme překlady, tedy např.:

#: aplikace/models.py:38
msgid "Body"
msgstr "Tělo"

Není třeba se bát, že se nám po úpravě zdrojového skriptu a přegenerování lokalizačního souboru přeložené texty ztratí. I po zakomentování řádku skriptu s textem, případně smazání textu, zůstanou v souboru django.po přeložené texty zakomentované na konci souboru. Jakmile text vrátíte zpět, objeví se zpět již přeložený podle msgid.

Po přeložení textů je nutné zkompilovat lokalizační soubor do strojově čitelného tvaru django.mo příkazem:

$ python manage.py compilemessages
A máme hotovo!

 

Komentáře

Komentáře jsou vypnuty.