from django.db import models
class Post(models.Model):
Достаточно типичный пример :). В данном примере необходимо обратить внимание лишь на
from django.utils.translation import gettext as _Первое – подключение функции gettext, второе – её использование. Теперь,
по идее, при добавлении/редактировании Post через админку Django, поля title, description, content должны быть озаглавлены по русски – лишь в том случае, если в словаре имеются соответствующие записи.
Где найти словарь? Как добавить в него записи?
По умолчанию, словарь можно найти в директории conf/locale/ru/LC_MESSAGES/ установленного Django. Там находится всего два файла: django.po и django.mo
django.po – текстовый файл. Для интереса посмотрите его содержание, думаю будет все понятно.bin/make-messages.py – дабы не создавать всю эту иерархию директорий и файлов, можно запустить данную утилиту (внимание, для успешного запуска её нужно хапускать из родительской дирректории проекта < projectname >, или директории приложения < appname >). Например, для создания «ru» локали необходимо выполнить след. комманду
make-messages.py -l ru
после выполнения будут созданы необходимые директории и пустой файл django.po
bin/compile-messages.py – компилирует django.po, в результате чего получаем django.mo
В качестве замечания отмечу, что для той-же стандартной админки необходимо чтобы имелся словарь (< LANGUAGE_CODE > которого указан в настройках вашего проекта) с соответсвующим наполнением. Иначе говоря, если в ловаре не будет переводов для админки – админка работать не будет. Как вариант разрешения этой проблемы – писать свой словарь в продолжении дефолтного словаря из дистрибутива фреймворка.
Теперь немного об инструментарии, с помощью которого можно немного упростить себе жизнь.
Eclipse-плагин для редактирования .po файлов
GTEd
URL для установки: http://gted.sourceforge.net/update
утилита xgettext
На основе исходного файла генерирует шаблон для переводчика. Например, при выполнении (для примера, представленного выше)
xgettext models.py –output=django.po
мы получим:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR < EMAIL@ADDRESS >, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-06-23 16:17+0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME < EMAIL@ADDRESS >\n"
"Language-Team: LANGUAGE < LL@li.org >\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.py:6
msgid "title"
msgstr ""
#: test.py:7
msgid "description"
msgstr ""
#: test.py:8
msgid "content"
msgstr ""
можно тоже взять за основу.
Вот в принципе и все, что я хотел сказать по данному поводу :)