python - 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
,而在新文件中,占位符取决于上下文。
推荐阅读
- php - Symfony表单视图猜错方法?
- artifactory - 从 JFrog 获取最新的工件 - Artifactory OSS
- uwp - UWP 应用安装程序文件中存在的本地文件的 URI
- php - PHP如何在strpos之后添加变量字符串
- expo - Expo/Metro/Minify:如何排除特定变量名不被破坏?
- java - 如何在谷歌地图中使用 latlng 字符串数组绘制多边形
- c - 调用动态 c 数组值
- angular - 如何通过路径识别路线
- php - 在 WooCommerce 中确定产品类型 - 致命错误:在 null 上调用成员函数 is_type()
- ssl - 在需要使用客户端证书进行身份验证的 VS19 中添加服务引用