问题描述
我有一些带有%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
;在新文件中,占位符取决于上下文。