2013-10-27 20 views
7

Ho provato a follow the guide ma non è abbastanza chiaro.Django Traduzione JavaScript non funziona

  1. ho aggiunto questo al mio urls.py

    urlpatterns = patterns('', 
        (r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'), 
    ) 
    
  2. generata file della lingua locale utilizzando il comando:

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

root_folder/locale/fr/LC_MESSAGES ora contengono django.po & djangojs.po e alert(gettext('this is to be translated')); in uno dei miei file js wa s raccolto in djangojs.po.

  1. ho corse django-admin.py compilemessages e riavviato il server.

  2. Aggiunto questo al mio base.html:

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

Nota che ho aggiunto 'locale' per evitare l'eccezione di non passare il nome del pacchetto durante il caricamento dinamico traduzioni.

  1. Visitato /jsi18n/locale/ dal mio browser e tutto quello che ottiene è Django funzioni di traduzione:

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

Perche 'questo è da tradurre' non sta mostrando e su quale base mostrerà una lingua specifica senza trasmetterla con l'URL?

risposta

10

non so esattamente come risolvere il tuo problema, ma posso dirvi, come funzionano le cose per me:

La cartella locale è dentro la mia tickets app.

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> 

e creare file di messaggio:

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

Speriamo che si può prendere qualcosa da questo.

4

Per gli altri con il mio caso particolare, i messaggi js vengono generati e compilati correttamente ma non resi in modelli o pagine quando si utilizzano gli URL di lingua i18n.

Ciò è dovuto al fatto che il catalogo javascript deve essere aggiunto ai modelli di URL i18n, non ai modelli normali.

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

Grazie davvero, ho passato molte ore su questo. Ho aperto un [ticket] rilevante (https://code.djangoproject.com/ticket/25751) per correggere i documenti che, ai miei occhi, non sono funzionali. – raratiru

+0

Per chiunque inciampi su questo: da quello che capisco leggendo i commenti nel biglietto di cui sopra https://code.djangoproject.com/ticket/25751, questo sembra accadere solo quando il tuo _root_ url sta usando 'i18n_patterns' (qualcuno può confermare - o infermo - questo?) –