【问题标题】: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 环境中通常是这种情况。)

      【讨论】:

        猜你喜欢
        • 2012-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 2011-07-04
        • 1970-01-01
        相关资源
        最近更新 更多