|
Оглавление
|
Добавление возможности перевода строк в JavaScript порождает ряд проблем:
Django предоставляет интегрированное решения для этих проблем. Оно передаёт переводы в JavaScript, таким образом вы можете использовать gettext в JavaScript.
Основным решением для этих проблем является представление
Вы можете использовать это так: js_info_dict = {
'packages': ('your.app.package',),
}
urlpatterns = patterns('',
(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
)
Каждая строка в packages должна быть в формате,
аналогичном параметру INSTALLED_APPS, и должна
ссылаться на пакет, который содержит каталог
Вы можете создать представление динамически, указав пакеты в схеме URL: urlpatterns = patterns('',
(r'^jsi18n/(?P<packages>\S+?)/$, 'django.views.i18n.javascript_catalog'),
)
Учитывая это, вы указываете пакеты в виде списка их имён, разделённых знаками + в URL. Это особенно полезно, если ваши страницы используют код из разных приложений, которые часто меняются и у вас нет желания помещать переводы в единый большой файл. С точки зрения безопасности эти значеним могут быть только в django.conf или в любом пакете указанном в параметре INSTALLED_APPS. Для использования каталога просто подключите динамически генерируемый скрипт: <script type="text/javascript" src="/path/to/jsi18n/"></script>
Этим способом пользуется административный сайт для получения каталога с переводами от сервера. После загрузки каталога ваш JavaScript код может использовать стандартный интерфейс gettext: document.write(gettext('this is to be translated'));
Есть даже интерфейс ngettext и функция интерполяции строк: d = {
count: 10
};
s = interpolate(ngettext('this is %(count)s object', 'this are %(count)s objects', d.count), d);
Функция s = interpolate(ngettext('this is %s object', 'this are %s objects', 11), [11]);
Синтаксис интерполяции позаимствован из Python. Вы не должны злоупотреблять интерполяцией, это всё ещё JavaScript, так что код будет повторять подстановки с помощью регулярного выражения. Это не так быстро как строковая интерполяция в Python, так что не используйте это лишний раз. Создание и обновление каталогов с переводами происходит аналогично другим видам каталогов. Единственное отличие в том, что следует указывать параметр -d djangojs: make-messages.py -d djangojs -l de
Эта команда создаёт или обновляет каталог с переводами для JavaScript кода для немецкого языка. После обновления каталогов, просто выполните compile-messages.py аналогично предыдущим примерам. |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |