Flask-Babel更新现有的messages.pot文件

use*_*936 2 python babel flask

如何更新现有的messages.pot文件?例如,我已经翻译了messages.pot文件:

....
#: forms.py:11
msgid "Nickname"
msgstr "???"

#: forms.py:18
msgid "Wrong email"
msgstr "???????????? ??????"
....
Run Code Online (Sandbox Code Playgroud)

如果我用选择器gettext标记新文本,例如:

flash(gettext('Login successful'))
Run Code Online (Sandbox Code Playgroud)

并运行: pybabel extract -F babel.cfg -o messages.pot
我将收到一个新的messages.po文件:

    ....
#: forms.py:11
msgid "Nickname"
msgstr ""

#: forms.py:18
msgid "Wrong email"
msgstr ""

#: models.py:783
msgid "Login successful"
msgstr ""
....
Run Code Online (Sandbox Code Playgroud)

那么,如何更新现有的messages.pot文件,保存已翻译的字符串("昵称","错误的电子邮件")?

tbi*_*icr 11

pot 文件不用于翻译,它只是没有特定语言的所有翻译字符串列表.

对于使用的真实翻译po- 文本文件和mo- 带翻译的二进制文件.将为您需要的任何语言创建此文件.看我的文件结构:

translations/
translations/ru/
translations/ru/LC_MESSAGES/
translations/ru/LC_MESSAGES/messages.mo
translations/ru/LC_MESSAGES/messages.po
translations/messages.pot
Run Code Online (Sandbox Code Playgroud)

获取所有字符串进行翻译:

pybabel extract -F babel.cfg -o messages.pot .
Run Code Online (Sandbox Code Playgroud)

到初始化po文件(第一次):

pybabel init -i messages.pot -d . -l ru
Run Code Online (Sandbox Code Playgroud)

要更新存在的po文件:

pybabel update -i messages.pot -d .
Run Code Online (Sandbox Code Playgroud)

要将po文件编译为mo:

pybabel compile -f -d .
Run Code Online (Sandbox Code Playgroud)

查看更多的文档.