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

Ant*_* M. 96 django translation

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

$ django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Ant*_* M. 143

原来你需要先创建一个locale文件夹mkdir locale.

  • 在Django 1.9中,你需要定义`LOCALE_PATHS`,即使它是`locale`,否则编译后的文本将无法被发现. (4认同)

Dav*_*han 25

实际上,您可以配置语言环境文件夹的位置.在您的settings.py中添加:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )
Run Code Online (Sandbox Code Playgroud)

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

mkdir -p website/locale/de
Run Code Online (Sandbox Code Playgroud)

  • 实际上,您不需要为每种语言创建文件夹.django-admin makemessages会为你做这件事 (2认同)

jnn*_*nns 12

问题是该命令不是从app目录运行,而是从项目目录运行.文档中的这个片段解释了它:

原来你需要先创建一个locale文件夹mkdir locale.

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

因此,您可以从app目录运行命令:

$ cd app
$ django-admin makemessages -l <locale>
Run Code Online (Sandbox Code Playgroud)

...或者您使用定义项目范围的语言环境目录LOCALE_PATHS,您可以makemessages从那里从主目录运行.

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

$ mkdir locale
Run Code Online (Sandbox Code Playgroud)

如果不是.