我正在尝试翻译 Django 应用程序。我在模板中使用
{% trans %}
创建了一些字符串。但是,当我在应用程序文件夹中执行以下命令时,我收到一条错误消息:
$ django-admin.py makemessages -l fr
CommandError: Unable to find a locale path to store translations for file __init__.py`
我做错了什么?
事实证明,您需要首先使用
locale
创建一个 mkdir locale
文件夹。如果您从应用程序文件夹中运行该命令,则该应用程序文件夹中需要有一个 locale
文件夹。
实际上您可以配置区域设置文件夹的位置。在你的settings.py中添加:
LOCALE_PATHS = (
PROJECT_ROOT + '/website/locale', )
然后为您要翻译的每种语言创建一个文件夹:
mkdir -p website/locale/de
问题是该命令不是从应用程序目录运行,而是从项目目录运行。 文档中的这段代码解释了这一点:
原来您需要先使用
locale
创建一个 mkdir locale
文件夹。
因此,您可以从应用程序目录运行命令:[…] 运行当前目录的整个源代码树,并提取所有标记为翻译的字符串。它在conf/locale(在Django 树中)或locale(对于项目和应用程序)目录中创建(或更新)消息文件。./manage.py makemessages
$ cd app
$ django-admin makemessages -l <locale>
...或者您使用
LOCALE_PATHS
定义项目范围的语言环境目录,然后您可以从主目录运行
makemessages
。无论哪种方式,您都应该检查
./locale/
目录是否存在并使用创建它
$ mkdir locale
万一不是。
LOCALE_PATHS
,但我没有设置环境变量。当我设置环境变量时,我运行了
python manage.py makemessages -l de
并且它运行正确。
mkdir locale 从终端在应用程序文件夹中创建语言环境目录。从 PyCharm 内部创建它时,我不断收到错误消息:
CommandError:无法找到存储文件 allauth_introducao/init.py 翻译的语言环境路径。确保应用程序中存在“区域设置”目录或已设置 LOCALE_PATHS 设置。
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 设置已设置。