XLIFF 有trans-unit
'sid
和resname
. 对于 POT/PO 文件,themsgid
是要翻译的文本本身,如果我理解正确,这意味着 POT/PO 文件无法区分不同上下文中词汇相同的源文本(“foo”上下文中的“blah” ”将被视为与“bar”上下文中的“blah”相同)。XLIFF 可以区分两者,给每个自己trans-unit
的id
.
我知道没有运行时库能够访问 XLIFF 文件以获取翻译文本,似乎那里的所有 API 都只知道*.mo
文件,即从文件生成的二进制格式*.po
,所以我猜即使有人使用 XLIFF 进行翻译(无论是用于自制翻译还是订购给付费人员的翻译),他/她必须将生成的翻译转换为*.po
或*.mo
文件。
第二段的假设是否正确?如果不是,那么有什么方法可以避免这种转换?如果它是正确的,那么在第一段中的评论之后,这种转换在技术上是如何工作的,最重要的是,它能否或如何保持相似文本之间的区别,但由于上下文而在语义上有所不同?
关于这篇文章的注意事项:我知道这篇文章有两个问题,但由于两者都相互关联,我看不到将它作为两个问题发布的明确方法(这看起来不相关)。
更新
对于上下文,自 0.15 以来就存在一个msgctx
可用的gettext
,即自 2006 年 7 月以来。但我在gettext
Python 3 中看不到任何上下文参数。如果不支持(或不广泛支持),这并不比如果它不在那里。我对此感到警惕。