Impossible de trouver un chemin de paramètres régionaux pour stocker les traductions du fichier __init__.py

106

J'essaye de traduire une application Django. J'ai créé des chaînes avec {% trans %}dans mes modèles. Cependant, lorsque j'exécute la commande suivante dans mon dossier d'application, je reçois un message d'erreur:

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

Qu'ai-je fait de mal?

Antoine M.
la source

Réponses:

157

Il s'avère que vous devez d'abord créer un localedossier en utilisant mkdir locale. Si vous exécutez la commande à partir d'un dossier d'application, vous avez besoin d'un localedossier dans ce dossier d'application.

Antoine M.
la source
Merci, m'a aidé. makemessagesExécutez simplement la commande à partir de ce localerépertoire si elle est déjà disponible.
SaeX
4
Dans Django 1.9, vous devez définir LOCALE_PATHSmême s'il en est localeautrement, le texte compilé ne sera pas détectable.
Wtower
Notez que ce dossier n'a pas de 's', et qu'il doit être dans le dossier de l'application (de cette façon vous n'en avez pas LOCALE_PATHSà configurer)
tobiasBora
28

En fait, vous pouvez configurer l'emplacement du dossier des paramètres régionaux. Dans votre settings.py ajoutez:

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

Créez ensuite un dossier pour chacune des langues que vous souhaitez traduire:

mkdir -p website/locale/de
David Dehghan
la source
2
vous n'avez en fait pas besoin de créer un dossier pour chacune des langues. django-admin makemessages le fera pour vous
MagicLAMP
C'est déroutant, sommes-nous censés créer une entrée pour chaque application? Ou stocker tous les paramètres régionaux de toutes les applications dans le même dossier de paramètres régionaux?
Vadorequest
12

Le problème est que la commande n'est pas exécutée à partir du répertoire de l'application mais à partir du répertoire du projet. Cet extrait de la documentation l' explique:

Il s'avère que vous devez d'abord créer un localedossier en utilisant mkdir locale.

./manage.py makemessages[…] S'exécute sur toute l'arborescence des sources du répertoire courant et extrait toutes les chaînes marquées pour la traduction. Il crée (ou met à jour) un fichier de message dans le répertoire conf / locale (dans l'arborescence Django) ou locale (pour le projet et l'application).

Donc, vous exécutez la commande à partir du répertoire de l'application:

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

… Ou vous définissez un répertoire de paramètres régionaux à l'échelle du projet en utilisant LOCALE_PATHSet vous pouvez exécuter à makemessagespartir du répertoire principal à partir de là.

Dans tous les cas, vous devez vérifier que le ./locale/répertoire est présent et le créer en utilisant

$ mkdir locale

au cas où ce ne serait pas le cas.

jnns
la source