【问题标题】:Is running makemessages necessary every time?每次都需要运行makemessages吗?
【发布时间】:2021-02-24 06:43:54
【问题描述】:

我正在阅读 makemessages 的 django 文档,但措辞不是很清楚:

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

在上面的文字中,我似乎不清楚makemessages 将“拉出”标记为翻译的字符串是什么意思。 (拉出来干什么?去哪里?)

与此同时,compilemessages 的描述很有意义,因为一旦我更改了语言文件,它就会简单地编译消息。

如果compilemessages 能完成我正在寻找的工作,我应该在什么时候使用makemessagesmakemessages的意义何在?

【问题讨论】:

    标签: django locale po


    【解决方案1】:

    makemessages 用于扫描您的应用程序以查找标记为要翻译的字符串。一旦有了这些字符串,它就会将它们放入po 文件中。如果您随后添加更多字符串以翻译到您的应用程序,那么您将需要运行 makemessages 以生成更新的 po 文件。 compilemessages 使用po 文件的内容来创建mo 文件,因此必须先更新po 文件。

    makemessages 接受区域设置参数:

    pipenv run django-admin makemessages --locale=de
    

    这允许您为应用支持的每个语言环境创建一个po 文件。

    【讨论】:

    • 谢谢@Stu。我看到运行 makemessages 也会不断从我的 po 文件中删除字符串。真令人沮丧。我想我只能通过让makemessages自动从某处的html文件中提取字符串来将字符串添加到ta po文件中?
    猜你喜欢
    • 2020-06-10
    • 2015-09-10
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多