无法找到存储文件 __init__.py 翻译的语言环境路径

问题描述 投票:0回答:7

我正在尝试翻译 Django 应用程序。我在模板中使用

{% trans %}
创建了一些字符串。但是,当我在应用程序文件夹中执行以下命令时,我收到一条错误消息:

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

我做错了什么?

python django django-templates translation django-i18n
7个回答
187
投票

事实证明,您需要首先使用

locale
创建一个
mkdir locale
文件夹。如果您从应用程序文件夹中运行该命令,则该应用程序文件夹中需要有一个
locale
文件夹。


35
投票

实际上您可以配置区域设置文件夹的位置。在你的settings.py中添加:

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

然后为您要翻译的每种语言创建一个文件夹:

mkdir -p website/locale/de

20
投票

问题是该命令不是从应用程序目录运行,而是从项目目录运行。 文档中的这段代码解释了这一点:

原来您需要先使用

locale
创建一个
mkdir locale
文件夹。

./manage.py makemessages
[…] 运行当前目录的整个源代码树,并提取所有标记为翻译的字符串。它在conf/locale(在Django 树中)或locale(对于项目和应用程序)目录中创建(或更新)消息文件。

因此,您可以从应用程序目录运行命令:

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

...或者您使用

LOCALE_PATHS

 定义项目范围的语言环境目录,然后您可以从主目录运行 
makemessages

无论哪种方式,您都应该检查

./locale/

 目录是否存在并使用 
创建它

$ mkdir locale

万一不是。


0
投票
如果您想要每个应用程序的

locale

目录,只需在运行
makemessages之前使用翻译字符串
(包含带有翻译字符串的文件)在每个应用程序目录中创建它们即可。并且
django
会找到他们。没必要cd

如果您想要一个项目范围的

locale

 目录,请在运行 
makemessages
 之前在项目目录中创建它。


0
投票
对于我来说,我已经正确设置了

LOCALE_PATHS

,但我没有设置环境变量。当我设置环境变量时,我运行了
python manage.py makemessages -l de
并且它运行正确。


0
投票
各位,我注意到一件事。我必须通过发出命令

mkdir locale 从终端在应用程序文件夹中创建语言环境目录。从 PyCharm 内部创建它时,我不断收到错误消息:

CommandError:无法找到存储文件 allauth_introducao/init.py 翻译的语言环境路径。确保应用程序中存在“区域设置”目录或已设置 LOCALE_PATHS 设置。


-1
投票
您必须在

locale

 文件夹下创建 
django-project
 文件夹,如下所示。 *根据我的实验,文件夹名称必须是
locale

django-project |-core | └-settings.py |-app1 | |-models.py | └-admin.py |-app2 | |-models.py | └-admin.py └-locale # Here
然后,您可以使用下面的

命令

在每个
django.po
中创建
locale/<...>/LC_MESSAGES/。 *以下命令可以创建或更新一个或多个django.po
:

django-admin makemessages --locale=en --locale=fr --locale=ja
或者:

django-admin.py makemessages -l en -l fr -l ja
然后,在每个

django.po

中创建
locale/<...>/LC_MESSAGES/
,如下所示:

django-project |-core | └-settings.py |-app1 | |-models.py | └-admin.py |-app2 | |-models.py | └-admin.py └-locale |-en | └-LC_MESSAGES | └-django.po # Here |-fr | └-LC_MESSAGES | └-django.po # Here └-ja └-LC_MESSAGES └-django.po # Here
并且,您可以使用下面的

命令

更新
django.po
文件夹中的所有
locale。 *使用以下命令,只能更新django.po
,不能创建
django.po
:

django-admin makemessages --all
或者:

django-admin makemessages -a
并且,您可以使用下面的

命令

将每个
django.po
中的
django.mo
编译为
locale/<...>/LC_MESSAGES/

django-admin compilemessages
然后,每个

django.po

中的
django.mo
被编译为
locale/<...>/LC_MESSAGES/
,如下所示:

django-project |-core | └-settings.py |-app1 | |-models.py | └-admin.py |-app2 | |-models.py | └-admin.py └-locale |-en | └-LC_MESSAGES | |-django.po | └-django.mo # Here |-fr | └-LC_MESSAGES | |-django.po | └-django.mo # Here └-ja └-LC_MESSAGES |-django.po └-django.mo # Here
此外,即使您在 

locale

core
app1
 文件夹下创建 
app2
 文件夹,如下所示:

django-project |-core | |-settings.py | └-locale # Here |-app1 | |-models.py | |-admin.py | └-locale # Here └-app2 |-models.py |-admin.py └-locale # Here
然后,运行以下命令:

django-admin.py makemessages -l en -l fr -l ja
然后,根据我的实验,您仍然会收到以下错误,并且与 

Django 如何发现翻译 相反,因此您必须在 locale

 文件夹下创建 
django-project
 文件夹:

CommandError:无法找到存储翻译的语言环境路径 文件管理.py。确保“locale”目录存在于应用程序中或 LOCALE_PATHS 设置已设置。

© www.soinside.com 2019 - 2024. All rights reserved.