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

标签 python flask python-babel flask-babel

如何更新现有的 messages.pot 文件? 比如我翻译了messages.pot文件:

....
#: forms.py:11
msgid "Nickname"
msgstr "Имя"

#: forms.py:18
msgid "Wrong email"
msgstr "Неправильный пароль"
....

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

flash(gettext('Login successful'))

然后运行: 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 ""
....

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

最佳答案

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

获取所有要翻译的字符串:

pybabel extract -F babel.cfg -o messages.pot .

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

pybabel init -i messages.pot -d . -l ru

要更新存在的 po 文件:

pybabel update -i messages.pot -d .

po文件编译成mo:

pybabel compile -f -d .

查看更多信息 documentation .

关于python - Flask-Babel 更新现有的 messages.pot 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18822396/

相关文章:

python - 在特定索引上启动 iterrows() 循环

python - 导入错误 : cannot import name 'Flask' from partially initialized module 'flask' (most likely due to a circular import)

python - 在 Jinja2 中使用 babel 链接

python - 单元测试 Flask Babel 翻译

python - 如何在 wxPython 中使用 StaticBox 创建方形 LED 形状

Python 项目组织(特别是外部库)

python - 将表单数据从 React 句柄提交函数发送到 python API?

Python、flask、babel-message,例如西类牙语 - 如何

python - 从字典值中删除外部列表

python - 在线程中使用 Popen 会阻塞每个传入的 Flask-SocketIO 请求