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

Posted

技术标签:

【中文标题】找不到存储文件 __init__.py 翻译的语言环境路径【英文标题】:Unable to find a locale path to store translations for file __init__.py 【发布时间】:2014-09-16 05:03:06 【问题描述】:

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

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

我做错了什么?

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,帮助了我。如果 locale 目录已经可用,只需执行 makemessages 命令即可。 在 Django 1.9 中,您需要定义 LOCALE_PATHS,即使它是 locale,否则编译后的文本将无法被发现。 请注意,这个文件夹没有有任何's',并且它必须在app文件夹中(这样你就没有任何LOCALE_PATHS要配置) 这里有更多关于 Django 如何发现该目录的信息 - docs.djangoproject.com/en/3.2/topics/i18n/translation/…【参考方案2】:

其实你可以配置locale文件夹的位置。在你的 settings.py 中添加:

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

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

mkdir -p website/locale/de

【讨论】:

您实际上不需要为每种语言创建一个文件夹。 django-admin makemessages 会为你做这个 这很混乱,我们应该为每个应用程序创建一个条目吗?还是将所有应用的所有语言环境存储在同一个语言环境文件夹中?【参考方案3】:

问题是命令不是从应用目录运行,而是从项目目录运行。 This snippet from the docs 解释它:

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

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

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

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

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

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

创建它
$ mkdir locale

如果不是。

【讨论】:

以上是关于找不到存储文件 __init__.py 翻译的语言环境路径的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm 在 __init__.py 中找不到任何 OpenCV 函数的引用

__init__.py 在同一目录中找不到模块[重复]

使用 pytest 运行测试时出现问题 - 在我自己的包中找不到模块

django-admin.py 找不到自定义设置文件

找不到模块'cx_Freeze__init__'

无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常