将Django本地化文件放在项目文件夹外部
我遇到了一点小问题,需要一些帮助或者想法来解决。
我想问一下关于在django中生成*.po文件用于本地化翻译的事情。我使用一个Fabric脚本来部署每次代码发布时的新文件夹,但我把locale文件夹移到了项目外面,因为我希望每次发布时它都是一样的,并且可以在本地更新。
但是,当我尝试运行python manage.py makemessages -l en
时,django抱怨说我在运行命令的地方没有locale文件夹。
CommandError: This script should be run from the Django Git tree or your
project or app tree. If you did indeed run it from the Git checkout or
your project or application, maybe you are just missing the conf/locale
(in the django tree) or locale (for project and application) directory?
It is not created automatically, you have to create it by hand if you
want to enable i18n for your project or application.
我确实在设置中提供了一个指向项目外部的locale路径,当django读取文件时,这个设置是有效的。然而,似乎在生成需要翻译的字符串时,它也需要在当前工作路径下有一个locale文件夹。
现在我通过在工作文件夹中创建一个软链接(ln -s
)指向项目外部的locale
文件夹解决了这个问题,但我的语言处理工具rosetta却认为我有两个不同的应用需要翻译。其实它们是一样的,如果我更改一个,另一个也会跟着改变,但感觉有点奇怪……你有什么更好的、更符合python风格的解决办法吗?
非常感谢!
1 个回答
0
看看这个命令的源代码:https://github.com/django/django/blob/master/django/core/management/commands/makemessages.py#L256
似乎只有在你没有一个叫做 conf/locale
的文件夹时,LOCALE_PATHS
这个设置才会被考虑进去。检查一下你是否有 conf/locale
这个文件夹,如果有的话就把它删掉。另外,仔细看看那段代码可能也会对你有帮助。