【问题标题】:How to control translation in a gettext system?如何在 gettext 系统中控制翻译?
【发布时间】:2014-04-29 07:39:30
【问题描述】:
我在 linux 环境中的 c++ 应用程序中广泛使用 gettext 系统来翻译成不同的语言。一切正常。
现在,假设整个应用程序已从德语翻译成英语。但是我需要查询一些应该是德语的字符串(意思是对原始字符串的查询)。
像 gettext("Energie") --> 这是德语,翻译成英语的“Energy”,用户可以看到,但我需要字符串“Energie”。
可能有很多解决方案,但我专门研究 gettext 系统。 gettext 系统中有没有办法检索原始文本?任何帮助表示赞赏。
【问题讨论】:
标签:
c++
internationalization
gettext
【解决方案1】:
gettext 无法实现这样的反向翻译。这是一个简单的法语 .PO 文件:
msgid "a strawberry"
msgstr "une fraise"
msgid "a drill"
msgstr "une fraise"
您不能将“une fraise”反向翻译回英文,因为有两种可能的含义,gettext 不会知道您的意思。
【解决方案2】:
也许您需要 Python gettext 文档所称的“延迟翻译”:与其在定义时应用翻译功能,不如在打印时应用。
取而代之的是,它将在每种语言中使用不同的数组索引:
name = _('Energie')
dict[name] = 50
print('%s is %d' % (name, dict[name]))
这样做:
name = 'Energie'
dict[name] = 50
print('%s is %d' % (_(name), dict[name]))
(假设_() 被用作真正的翻译函数;如果它是预处理器指令,这将不起作用,因为我读到它在 C 环境中通常是这种情况。)