找不到存储文件 __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 函数的引用