【问题标题】:How to run Qt5 applications with a specific translation?如何运行带有特定翻译的 Qt5 应用程序?
【发布时间】:2018-11-01 11:42:41
【问题描述】:

我正在向 Qt5 项目添加翻译,我想使用特定翻译运行应用程序,以使用不同的语言对其进行测试。我已经有了 .ts 文件并生成了相应的 .qm 文件。但是,我没有找到有关如何使用特定翻译运行 Qt5 应用程序的信息。我找到了一些基于在 linux 中设置 LANG 环境变量的参考资料,但我没有成功。

有谁知道是否可以使用特定语言运行 Qt5 应用程序?如果是,那么设置 Qt5 应用程序使用哪种语言的最佳方法是什么?

【问题讨论】:

    标签: qt internationalization qt5 translation


    【解决方案1】:

    TRANSLATIONS += lang_ua.ts 添加到您的 .pro 文件中。然后添加到您的main()

    QApplication a(argc, argv);
    QTranslator translator;
    translator.load("lang_ua");
    a.installTranslator(&translator);
    

    要更改翻译,请在 translator.load() 中加载另一个文件。 您的所有翻译都将通过QObject::tr() 阅读

    【讨论】:

    • 正如我在问题中提到的,我已经完成了翻译工作。我没有通过指定应用程序运行时应使用哪些翻译来测试特定翻译的方法。
    • @RAM 这个答案可以改进,但它基本上是正确的。如果您想使用不同的翻译,您必须自己以编程方式安装它。您可以添加自己的命令行开关以传入不同的语言环境名称并使用它来参数化您的翻译器。
    • @JasonHaslam 翻译的可用性不是问题,硬编码翻译语言是完全错误的。设置语言的标准 Qt 方法是使用默认的 QLocale 对象调用 QTranslator::load(),该对象设置在应用程序启动时根据系统的区域设置确定的区域设置信息。因此,更改系统的区域设置也将确定 Qt 应用程序将运行的区域设置,而无需进行任何硬编码。
    • @RAM 我没有说你应该对语言进行硬编码。我说你应该在你的应用程序中添加一个命令行开关来传递你想要测试的语言。然后,如果给出了开关,则在加载翻译时使用该语言而不是系统区域设置。
    • @JasonHaslam 对不起,我没能理解你的意思。我必须同意你的提议确实解决了问题。
    猜你喜欢
    • 1970-01-01
    • 2017-02-19
    • 2014-12-10
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多