簡體   English   中英

Python3、Jinja2、預編譯模板、本地化

[英]Python3, Jinja2, pre-compiled template, localization

我有一些舊的項目 .po/.mo 文件,帶有像 %s 這樣的占位符,它被用來翻譯 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

如果您想知道為什么不能自動執行此操作:您想用{{some_var}}類的內容替換%s 占位符是some_var的信息應該從哪里來? 在舊文件中,您總是使用%s而在新文件中,占位符取決於上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM