|
Table of contents
|
Добавление возможности перевода строк в 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 аналогично предыдущим примерам. |
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |