2013-10-27 4 views
7

Я попытался follow the guide, но это не совсем ясно.Django JavaScript translation not working

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

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

    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 wa s подняли в djangojs.po.

  1. Я запустил django-admin.py compilemessages и перезапустил сервер.

  2. Добавлено это мой base.html:

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

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

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

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

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

ответ

10

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

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

urls.py

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

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

base.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 

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

4

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

Это потому, что каталог javascript следует добавлять к шаблонам URL-адресов 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),) 
+0

Спасибо, действительно, я потратил много времени на это. Я открыл соответствующий [билет] (https://code.djangoproject.com/ticket/25751), чтобы исправить документы, которые, как мне кажется, не работают. – raratiru

+0

Для тех, кто наткнулся на это: из того, что я понимаю, читаю комментарии в вышеупомянутом билете https://code.djangoproject.com/ticket/25751, похоже, это происходит только тогда, когда ваш _root_ url использует 'i18n_patterns' (может кто-то подтвердить - или немощный - это?) –