No se puede encontrar una ruta de configuración regional para almacenar las traducciones del archivo __init__.py

106

Estoy intentando traducir una aplicación de Django. Creé algunas cadenas {% trans %}en mis plantillas. Sin embargo, cuando ejecuto el siguiente comando en la carpeta de mi aplicación, recibo un mensaje de error:

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

¿Qué hice mal?

Antoine M.
fuente

Respuestas:

156

Resulta que localeprimero debes crear una carpeta usando mkdir locale. Si está ejecutando el comando desde la carpeta de una aplicación, necesita una localecarpeta dentro de esa carpeta de la aplicación.

Antoine M.
fuente
Gracias, me ayudó. Simplemente ejecute el makemessagescomando desde ese localedirectorio si ya está disponible.
SaeX
4
En Django 1.9 necesita definir LOCALE_PATHSincluso si es de localeotra manera, el texto compilado no será detectable.
Wtower
Tenga en cuenta que esta carpeta no tiene ninguna 's' y que debe estar en la carpeta de la aplicación (de esa manera no tiene ninguna LOCALE_PATHSpara configurar)
tobiasBora
28

En realidad, puede configurar dónde está la carpeta de configuración regional. En su settings.py agregue:

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

Luego, cree una carpeta para cada uno de los idiomas que desea traducir:

mkdir -p website/locale/de
David Dehghan
fuente
2
en realidad, no es necesario crear una carpeta para cada uno de los idiomas. django-admin makemessages hará esto por usted
MagicLAMP
Esto es confuso, ¿se supone que debemos crear una entrada para cada aplicación? ¿O almacenar todas las configuraciones regionales para todas las aplicaciones en la misma carpeta de configuración regional?
Vadorequest
12

El problema es que el comando no se ejecuta desde el directorio de la aplicación sino desde el directorio del proyecto. Este fragmento de los documentos lo explica:

Resulta que localeprimero debes crear una carpeta usando mkdir locale.

./manage.py makemessages[…] Se ejecuta en todo el árbol de origen del directorio actual y extrae todas las cadenas marcadas para traducción. Crea (o actualiza) un archivo de mensaje en el directorio conf / locale (en el árbol de Django) o locale (para proyectos y aplicaciones).

Entonces, ejecutas el comando desde el directorio de la aplicación:

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

... o define un directorio de configuración regional para todo el proyecto usando LOCALE_PATHSy puede ejecutar makemessagesdesde el directorio principal desde allí.

De cualquier manera, debe verificar que el ./locale/directorio esté presente y crearlo usando

$ mkdir locale

en caso de que no lo sea.

jnns
fuente