Django makemessages不能创建新添加的语言。

15

我在我的Django应用程序中有12种语言,如果我运行以下命令:

python manage.py makemessages --all

它将为这些语言创建所有12个.po文件,现在我又添加了3种新的语言:

LANGUAGES = (
    ...
    ('th', gettext('Thai')),
    ('tl', gettext('Tagalog')),
    ('vi', gettext('Vietnamese')),
)

当我运行 makemessages --all 命令时,它就跳过了三种新语言。我错过了什么吗?

编辑:也许文档难以理解:

makemessages

django-admin makemessages

运行在当前目录的整个源代码树上,并提取所有标记为需要翻译的字符串。 它会在 conf/locale(Django 树)或 locale(项目和应用程序)目录中创建(或更新)消息文件。 在更改消息文件后,您需要使用 compilemessages 编译它们以便与内置的 gettext 支持一起使用。有关详情,请参阅 i18n 文档。

2个回答

26

第一次在命令行中需要指定您感兴趣的语言。

python manage.py makemessages -l th -l tl -l vi

其后使用--all标志调用的所有后续调用将为所有语言生成PO文件。


如果有人需要的话,我遇到了相反的问题... 我从 LANGUAGES 中删除了一个条目,但我认为如果发现任何具有该语言代码的文件,它会生成该语言。 您可以使用“-x”来不生成/更新特定语言。 - Tim Tisdall

0

您应该运行下面的命令。*下面的命令可以创建或更新一个或多个django.po文件:

django-admin makemessages --locale=th --locale=tl --locale=vi

或者:

django-admin makemessages -l th -l tl -l vi

实际上,下面的命令只能更新所有django.po文件,但不能创建django.po文件。
django-admin makemessages --all

或者:

django-admin makemessages -a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接