2013-10-27 11 views
7

Ich habe versucht, follow the guide, aber es ist nicht klar genug.Django JavaScript Übersetzung funktioniert nicht

  1. Ich habe das meinem urls.py

    urlpatterns = patterns('', 
        (r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'), 
    ) 
    
  2. generiert die lang Dateien mit diesem Befehl:

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

root_folder/locale/fr/LC_MESSAGES jetzt enthalten django.po & djangojs.po und alert(gettext('this is to be translated')); in eine meiner js-Dateien wa s in djangojs.po abgeholt.

  1. Ich lief django-admin.py compilemessages und den Server neu gestartet.

  2. hinzugefügt dies meine base.html:

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

Bitte beachte, dass ich ‚locale‘ hinzugefügt, um die Ausnahme nicht vorbei die Paketnamen zu vermeiden, wenn dynamisch Übersetzungen Laden.

  1. Besucht /jsi18n/locale/ von meinem Browser und alles, was ich bekommen, ist Django Übersetzungsfunktionen:

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

Warum ‚das ist übersetzt werden‘ zeigt nicht und auf welcher Grundlage wird es eine Show bestimmte Sprache, ohne sie mit der URL zu übergeben?

Antwort

10

Ich weiß nicht genau, wie Ihr Problem zu lösen, aber ich kann Ihnen sagen, wie die Dinge für mich arbeiten:

Der locale Ordner in meinem tickets App ist.

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> 

und Nachrichtendatei zu erstellen:

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

Hoffentlich Sie etwas von dieser abholen können.

4

Für andere mit meinem speziellen Fall, js Nachrichten generiert und kompiliert OK, aber nicht in Vorlagen oder Seiten gerendert, wenn Sie i18n Sprache URLs verwenden.

Dies ist, weil Javascript-Katalog zu i18n URLs Muster, nicht zu normalen Mustern hinzugefügt werden soll.

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

Danke in der Tat, ich verbrachte viele Stunden auf diesem. Ich habe ein relevantes [Ticket] (https://code.djangoproject.com/ticket/25751) geöffnet, um die Dokumente zu korrigieren, die in meinen Augen nicht funktionieren. – raratiru

+0

Für jeden, der darüber stolpert: von dem, was ich verstehe, lesen Sie die Kommentare in der oben genannten Ticket https://code.djangoproject.com/ticket/25751, scheint dies nur passieren, wenn Ihre _root_ URL verwendet "i18n_patterns" (kann jemand bestätigen - oder krank - das?) –