QtQuick中的自上而下定位 经过几周的ON和OFF研究,我还没有找到一个完整的指南来指导QTQuoT中的翻译/本地化(如使用QML语言,而不是C++或Python)。 一般来说,我问的是,在QtQuick尽可能适当地本地化一个项目的步骤是什么,用最少或最好没有C++。< /强>

QtQuick中的自上而下定位 经过几周的ON和OFF研究,我还没有找到一个完整的指南来指导QTQuoT中的翻译/本地化(如使用QML语言,而不是C++或Python)。 一般来说,我问的是,在QtQuick尽可能适当地本地化一个项目的步骤是什么,用最少或最好没有C++。< /强> ,qt,localization,qml,translation,qt-quick,Qt,Localization,Qml,Translation,Qt Quick,更具体地说,在理解QtQuick如何处理本地化方面,我需要填补很多漏洞 到目前为止,我已经: 将QT_TR_NOOP()附加到我的所有可翻译字符串,以便在运行时进行翻译 使用lupdate_only{SOURCES+=LanguageStrings.qml}将包含所有字符串的我的文件添加到我的.pro文件中 使用qtlangist生成的翻译文件 但是,我打算实现一个动态改变语言的选项,而我所看到的关于翻译的唯一例子并不是完全在C++中,而是为每个语言创建了一个项目的实例,而不是在运行时改变字

更具体地说,在理解QtQuick如何处理本地化方面,我需要填补很多漏洞

到目前为止,我已经:

  • 将QT_TR_NOOP()附加到我的所有可翻译字符串,以便在运行时进行翻译

  • 使用lupdate_only{SOURCES+=LanguageStrings.qml}将包含所有字符串的我的文件添加到我的.pro文件中

  • 使用qtlangist生成的翻译文件

<>但是,我打算实现一个动态改变语言的选项,而我所看到的关于翻译的唯一例子并不是完全在C++中,而是为每个语言创建了一个项目的实例,而不是在运行时改变字符串。 那么,如何在运行时更改语言?我可以设置一个变量吗?是否从系统区域设置中提取?我还没有看到一个可靠的答案


有什么想法吗?< /P> < P>你可以用最小的C++来完成(至少我认为这是最小的)。我过去曾使用安装应用程序的系统的区域设置(直接在main()中)这样做:

qgui应用程序应用程序(argc、argv);
翻译;
if(translator.load(“:/translations/myapp_”+QLocale::system().name())){
app.installTranslator(&translator);
}否则{

谢谢!这看起来像我需要的,而且你的C++实现看起来比wiki上的更干净,这很不幸在QtQue2的最新版本上不起作用。什么是代码?看看链接。它包含QML和C++代码,还有一个项目文件和涉及把所有东西捆绑在一起的步骤。一般的想法是通过C++将对象从一个出口通过QuestCutExtProjt属性导入QML。然后,对象可以在QML内部提供的名称下提供。剩下的很简单。在本例中,它们有三个按钮,在onClicked槽中,您只需调用该对象的一个函数。
QGuiApplication app(argc, argv);

QTranslator translator;

if(translator.load(":/translations/myapp_" + QLocale::system().name())) {
    app.installTranslator(&translator);
} else {
    qDebug() << "Unable to load translation";
}