微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python3,Jinja2,预编译模板,本地化

如何解决Python3,Jinja2,预编译模板,本地化

我有一些带有%s等占位符的旧项目.po / .mo文件,它用于转换python字符串 但是现在我在jinja2模板中有了这些字符串

问题是同时在.po文件%s中,而在模板{{some_var}}

例如,我有模板:

{% if some_var %}
Some text {{ some_var }}
{% else %}
Some another text {{ some_var1 }}
{% endif %}

我只想执行条件,过滤器等。 所以我想得到字符串

Some another text {{ some_var1 }}

Some text {{ some_var }}

接下来,我将获得占位符顺序并将其替换为%s,使用gettext并最终呈现模板

有什么建议吗?谢谢

解决方法

没有自动方法可以执行此操作,但是您只能使用旧的.po文件。如果您的构建系统使用msgmerge来更新.po文件,则旧的翻译将被重用,但将作为“模糊”条目。然后,您可以更新.po文件中的翻译。

您也可以手动执行此操作。假设您的.pot文件是myproject.pot,并且要将其合并到现有的(旧)文件ru.po中,则可以执行以下操作:

$ msgmerge --previous --verbose ru.po myproject.pot

如果您想知道为什么不能自动执行此操作:您想用%s之类的内容替换{{some_var}}。占位符为some_var的信息应该从哪里来?在旧文件中,您始终使用%s;在新文件中,占位符取决于上下文。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。