Impossibile trovare un percorso locale per memorizzare le traduzioni per il file __init__.py


106

Sto cercando di tradurre un'app Django. Ho creato alcune stringhe con {% trans %}nei miei modelli. Tuttavia, quando eseguo il seguente comando nella cartella dell'app, ricevo un messaggio di errore:

$ django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`

Cos'ho fatto di sbagliato?

Risposte:


156

Risulta che devi localeprima creare una cartella usando mkdir locale. Se esegui il comando da una cartella dell'app, hai bisogno di una localecartella all'interno di quella cartella dell'app.


Grazie, mi hai aiutato. Esegui semplicemente il makemessagescomando da quella localedirectory se è già disponibile.
SaeX

4
In Django 1.9 è necessario definire LOCALE_PATHSanche se è localealtrimenti il ​​testo compilato non sarà rilevabile.
Wtower

Nota che questa cartella non ha alcuna "s" e che deve essere nella cartella dell'app (in questo modo non ne hai LOCALE_PATHSda configurare)
tobiasBora

28

In realtà puoi configurare dove si trova la cartella locale. Nel tuo settings.py aggiungi:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )

Quindi crea una cartella per ciascuna delle lingue che desideri tradurre:

mkdir -p website/locale/de

2
in realtà non è necessario creare una cartella per ciascuna delle lingue. django-admin makemessages lo farà per te
MagicLAMP

Questo è fonte di confusione, dovremmo creare una voce per ogni app? O memorizzare tutte le impostazioni locali per tutte le app nella stessa cartella delle impostazioni locali?
Vadorequest

12

Il problema è che il comando non viene eseguito dalla directory dell'app ma dalla directory del progetto. Questo frammento dei documenti lo spiega:

Risulta che devi localeprima creare una cartella usando mkdir locale.

./manage.py makemessages[…] Esegue l'intero albero dei sorgenti della directory corrente ed estrae tutte le stringhe contrassegnate per la traduzione. Crea (o aggiorna) un file di messaggi nella directory conf / locale (nell'albero Django) o locale (per progetto e applicazione).

Quindi, esegui il comando dalla directory dell'app:

$ cd app
$ django-admin makemessages -l <locale>

... oppure si definisce una directory locale a livello di progetto utilizzando LOCALE_PATHSe makemessagesda lì è possibile eseguire dalla directory principale.

In ogni caso, dovresti controllare che la ./locale/directory sia presente e crearla usando

$ mkdir locale

nel caso non lo sia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.