Django makemessages未创建新添加的语言

15 投票
2 回答
5279 浏览
提问于 2025-04-18 17:10

我在我的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 个回答

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
26

你第一次在命令行使用的时候,需要指定你感兴趣的语言。

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

之后,如果你再用 --all 这个选项,就会为所有语言生成 PO 文件。

撰写回答