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


105

我正在尝试翻译Django应用。我{% trans %}在模板中创建了一些字符串。但是,当我在我的应用文件夹中执行以下命令时,会收到错误消息:

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

我做错什么了?

Answers:


156

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


谢谢,帮了我。只需makemessages从该locale目录执行命令(如果已经可用)。
SaeX 2015年

4
在Django 1.9中,LOCALE_PATHS即使不是这样,也需要定义,locale否则编译后的文本将不会被发现。
Wtower

请注意,这个文件夹并没有任何的“,而且它必须在应用程序文件夹中(这样你没有任何LOCALE_PATHS配置)
tobiasBora

28

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

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

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

mkdir -p website/locale/de

2
您实际上不需要为每种语言创建一个文件夹。django-admin makemessages将为您做到这一点
MagicLAMP 2015年

这很令人困惑,是否应该为每个应用创建一个条目?还是将所有应用程序的所有语言环境存储在同一个语言环境文件夹中?
Vadorequest '18

12

问题在于该命令不是从应用程序目录运行,而是从项目目录运行。文档中的以下代码片段对此进行解释:

原来您需要locale先使用创建一个文件夹mkdir locale

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

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

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

…或使用定义项目范围的语言环境目录,LOCALE_PATHS然后可以makemessages从主目录运行。

无论哪种方式,都应检查./locale/目录是否存在并使用创建目录

$ mkdir locale

万一不是。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.