2012-09-10 13 views
5

Ho letto e seguito le istruzioni in here, ma non riesco a vedere la stringa in javascript nel file po.Supporto di Django per traduzioni in file Javascript

structure of my project is: 
cb/  
    cb_app  
    cb  
    static_files  
    templates 

Per prima cosa ho copiato questi nel mio url.py:

js_info_dict = { 
    'packages': ('cb_app',), 
} 

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

Poi ho aggiunto questo script al mio html:

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

Lo script effettivo in cui mi piacerebbe ottenere il traduzione, è così semplice:

$(document).ready(function() { 
    $('#id_sales_item').chosen({no_results_text: gettext('No results match')}); 
}); 

... ed è utilizzato nello stesso html.

Quindi c'è altro che devo fare?

Tutto ciò che ho fatto è stato eseguire la riga in basso sia da cb/cb che da cb/cb_app.

django-admin.py makemessages -l en_GB 

Ma ancora nessun segno di 'Nessun risultato match' in entrambi i cb/cb/localecb/cb_app/locale

Qualche consiglio?

risposta

4

Ho finalmente trovato il problema.

La documentazione suggerisce di creare i messaggi una volta dal progetto Django e una volta dall'app Django. In questo modo si finisce con due directory locale. E in nessuno di questi le traduzioni javascript verrebbero comunque rilevate. Questo è un bel casino.

la soluzione più pulita che ho trovato è quello di andare a settings.py e inserire questa linea (vedi anche la mia gerarchia del progetto di cui sopra):

LOCALE_PATHS = ('/home/kave/projects/cb/locale',) 

quindi creare una directory chiamata locale nel progetto-root-directory (vedi il percorso sopra)

Non dimenticare di applicare le voci in url.py e html (vedere sopra).

Infine, ora che i di locali sono unificati in un unico luogo, andare a progetto-root-directory: /home/kave/projects/cb ed eseguire questi due comandi:

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

Il primo comando ottenere i testi di traduzione da entrambe le sottocartelle progetto e app . Il secondo ottiene la traduzione javascript in un secondo file po.

Questo è tutto.

+1

Tu sei il mio salvatore !, è triste che non l'ho trovato in documenti django :( –

Problemi correlati