【问题标题】:How to generate a single translation file for a large Qt project?如何为大型 Qt 项目生成单个翻译文件?
【发布时间】:2009-12-01 22:46:01
【问题描述】:

我有一个大型项目,其中包含一个使用“子目录”模板定义所有项目组件的 qmake 项目文件。目前我在每个子项目的 qmake 文件中定义翻译文件。这会导致为每个子项目生成单独的翻译文件,这很快就会变得太麻烦而无法维护。

如何让 lupdate 生成包含所有子项目的所有翻译字符串的单个翻译文件?

【问题讨论】:

    标签: qt internationalization qmake


    【解决方案1】:

    首先将所有pro 文件 拆分为pro 和pri 文件。然后将所有pri文件放到一个全局pro文件中,并为该pro文件生成语言文件。

    特殊语言 pro 文件如下所示:

    TEMPLATE = app
    DEPENDPATH +=  Proj1 Proj2 Proj3    
    
    include(Proj1/Proj1.pri)  
    include(Proj2/Proj2.pri)
    include(Proj3/Proj3.pri)
    
    TRANSLATIONS = en.ts fr.ts it.main.ts ja.main.ts nl.main.ts
    

    脚本可以轻松为您生成此项目语言文件。

    【讨论】:

    • 我刚刚尝试了您的解决方案,假设我只需要在 .pri 文件中指定 SOURCES、HEADERS 和 Forms,它就可以工作!谢谢你的回答。
    • pri 文件中有什么内容?
    • @BenJones,.pri 文件只是被另一个 .pro 文件包含的 .pro 文件。所以扩展名的区别只是为了表明它们被包含在内。这种分离允许拥有一个.pro 文件,该文件结合了您从中生成翻译的所有来源。
    【解决方案2】:

    我知道这个问题已经很老了,但我仍然会附加我的解决方案。这最终得到了几个单独的翻译文件,但这是我真正想要达到的。然后您可以在主项目文件上运行lupdate,它将生成/更新每个子目录中的 .ts 文件。

    因此,在每个 pro 文件中,您必须指定 TARGET,并且该项目必须位于与此名称完全相同的文件夹中。

    在每个项目文件中,我都包含一个共享的 pri 文件:

    # Including shared configurations
    !include(../common/shared.pri) {
      error(shared.pri not found)
    }
    

    然后,在这个 pri 文件中:

    # Including traslations for every language
    exists($$_PRO_FILE_PWD_/translations/) {
        TRANSLATIONS += $$_PRO_FILE_PWD_/translations/$${TARGET}_de_DE.ts
        message(> Found Translations for $${TARGET}: $$_PRO_FILE_PWD_/translations/$${TARGET}_de_DE.ts)
    }
    

    对于更多翻译语言,您可以添加一点逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-14
      • 2018-12-30
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多