2014-09-29 12 views
5

La mia configurazione

settings.pyDjango non makemessages di lavoro per i file JS

INSTALLED_APPS = (
    ... 
    'myprojectname', 
    ... 
) 

STATIC_ROOT = '/var/www/a_valid_path/' 

LOCALE_PATHS = (
    os.path.join(BASE_DIR, "locale"), 
) 

urls.py

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

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

La mia struttura del progetto è la seguente:

|- projectname 
|--- app1 
|--- app2 
|--- manage.py 
|- virtualenv 
|- static 
|--- js 
|--- css 

Ho anche la cartella locale nella cartella principale del mio progetto, dove si trova manage.py.

Quello che sto facendo

semplice avvio:

./manage.py -l ro -d djangojs 

Il mio problema

Non funziona. Non è stato generato il file .po. Funziona la traduzione lato server, tuttavia (viste + modelli). Ho seguito tutti i consigli e ancora niente. Ho anche provato a creare il file djangojs.po per vedere se Django lo elimina o fa qualcosa con esso - no.

Non viene generato alcun errore, viene mostrato solo processing locale ro (per un tempo molto breve - troppo breve se me lo chiedi), e questo è quanto. Qualsiasi aiuto?

Edit: dimenticato di dire che la mia cartella contenente i file JS non è all'interno di ogni app Django, ma in un luogo separato. Ancora, Django non dovrebbe guardare all'interno dello STATICFILES_DIRS?

+0

Dove si trovano i file '.js' che si desidera tradurre? –

+0

Sono entrambi nella cartella 'static/js' fornita dall'impostazione predefinita di django e nella cartella dichiarata nella variabile' STATIC_ROOT' (tramite 'collectstatic'). –

risposta

1

I makemessage di Django effettuano solo i messaggi dai file presenti su uno dei tuoi TEMPLATE_DIRS. Quindi tutti i file che vuoi tradurre devono essere in una di quelle directory.

È possibile farlo in diversi modi: uno

  • Posizionare il file * .js in uno dei vostri TEMPLATE_DIRS come è
  • In-fodera gli JS nei file html
  • posto tutto il le stringhe che hanno bisogno di traduzione in data-attributi sul DOM e li afferrano dal Dom tramite JS
+0

Sì, i modelli funzionano, ma la soluzione non è un'opzione, perché creerebbe un sovraccarico enorme a questo punto nell'applicazione. –

+0

Un'altra opzione (più confusa) sarebbe quella di incorporare il JS nei file html. –

+0

Penso che solo la traduzione guardi solo nei TEMPLATE_DIRS impostati nel file delle impostazioni. Quindi se vuoi che i tuoi file js siano tradotti devono essere in un file in uno dei tuoi TEMPLATE_DIRS. –

0
  1. Stai esecuzione makemessages da una directory padre di quelli che contengono i file JavaScript?
  2. I nomi dei file JavaScript termina con un .js?
  3. È necessario utilizzare django.gettext('string') o _('string') per contrassegnare stringhe che richiedono traduzioni?
+0

1. No. Per quanto posso vedere, Django guarda solo nella directory corrente (ovunque tu esegua 'django-admin.py' o' manage.py' da), che non è l'ideale. Non riesco a eseguire il comando un livello più in alto, perché è lì che ho il mio virtualenv e molte altre cose. 2. Sì. 3. Sto usando 'gettext', poiché è quello che usano gli esempi nei documenti. Se eseguo 'manage.py' dalla mia directory JS, funziona. –

+0

Puoi aggiornare il tuo esempio con la struttura della tua directory? –

+0

Appena aggiornato la domanda. –

Problemi correlati