J'essaie 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?
Il s'avère que vous devez d'abord créer un dossier locale
à l'aide de mkdir locale
. Si vous exécutez la commande à partir d'un dossier d'application, vous avez besoin d'un dossier locale
dans ce dossier d'application.
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
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 dossier locale
à l'aide de mkdir locale
.
./manage.py makemessages
[…] Exécute toute l'arborescence source du répertoire courant et extrait toutes les chaînes marquées pour la traduction. Il crée (ou met à jour) un fichier de messages dans le répertoire conf/locale (dans le répertoire Django) ou local (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 à l'aide de LOCALE_PATHS
et vous pouvez exécuter makemessages
à partir du répertoire principal à partir de là.
Dans tous les cas, vous devez vérifier que le ./locale/
répertoire est présent et créez-le en utilisant
$ mkdir locale
au cas où ce ne serait pas le cas.