Перевод JavaScript Django не работает

пробовал следовать инструкции но это недостаточно ясно.

  1. я добавил Это к моему urls.py

    urlpatterns = patterns('',
        (r'^jsi18n/(?P<packages>S+?)/$', 'django.views.i18n.javascript_catalog'),
    )
    
  2. сгенерировал файлы lang с помощью этой команды:

    django-admin.py makemessages -d djangojs -l fr
    

root_folder/locale/fr/LC_MESSAGES теперь содержать django.po & djangojs.po и alert(gettext('this is to be translated')); в одном из моих файлов js был подобран в djangojs.po.

  1. Я побежал django-admin.py compilemessages и перезагрузки сервер.

  2. добавил Это к моей базе.HTML-код:

    <script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' 'locale' %}" >< /script >
    

обратите внимание, что я добавил "locale", чтобы избежать исключения не передавать имя пакета при динамической загрузке переводов.

  1. посетил /jsi18n/locale/ из моего браузера и все, что я получаю, это функции перевода Django:

    /* gettext library */
    
    var catalog = new Array();
    
    function pluralidx(count) { return (count == 1) ? 0 : 1; }
    
    
    function gettext(msgid) {
    ....
    

почему "это должно быть переведено" не отображается и на каком основании он покажет конкретный язык без передачи его с URL?

2 ответов


Я не знаю, как решить вашу проблему, но я могу сказать вам, как вещи работают для меня:

на locale папка находится внутри моего tickets app.

urls.py

js_info_dict = {
    'domain': 'djangojs',
    'packages': ('tickets',),
}

urlpatterns = patterns('',
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
    ...

базы.HTML-код

<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>

и создать файл сообщения:

python -m django-admin makemessages -d djangojs -l fr
python -m django-admin compilemessages

надеюсь, вы можете забрать что-то из этого.


для других с моим конкретным случаем сообщения js генерируются и компилируются нормально, но не отображаются в шаблонах или страницах при использовании URL-адресов языка i18n.

это потому, что каталог javascript должен быть добавлен к шаблонам urls i18n, а не к обычным шаблонам.

urlpatterns += patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )

=>

urlpatterns += i18n_patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )