2015-11-05 27 views
1

形勢加載的組件:Qt Quick的不通過翻譯裝載機

寫作嵌入式Linux系統的Qt的快速應用,希望使用Qt翻譯mechnanism。應用程序應在通過RS232進入的命令中選擇語言,該命令目前被硬編碼爲設置爲英語的系統上的「de」。應用程序從RS232命令加載各種掩碼。

問題:

Qt Quick的轉換隻在主網頁(main.qml),而是通過Qt的裝載機(DEMO.ui.qml)不加載的頁面。來自main.qml的文本以德語顯示,來自DEMO.ui.qml的文本顯示爲未翻譯。

我已經爲所有英文翻譯(qml.en.ts)添加了「XX」前綴,這也不會出現在屏幕上。因此,對於通過Qt加載器加載的頁面,英文和德文翻譯都不會加載。

lupdate後清理版本,lrelease沒有幫助。 rm -rf build- $ appname- *,build沒有幫助。

代碼:

application.cpp:

xlat=new QTranslator(); 
if (xlat->load(QLocale("de"), "qml", ".", ":/qml/i18n/", ".qm")) { 
    qDebug()<<"load translator ok"; 
    bool ok=installTranslator(xlat); 
    //... 
} // else error message 
// ... 
viewer->setSource(QUrl("qrc:/qml/main.qml")); 
viewer->showFullScreen(); 
// ... 

main.qml:

import QtQuick 2.0 
Rectangle { 
    Text { 
     id: loadingMsg 
     text: qsTr("Loading ...") 
     // ... 
    } 
    Loader { 
     // ... 
     source: "" 
     function loadMask(aMaskId) { 
      // ... 
      setSource(gui.urlForMask(aMaskId)); 
     } 
    } 
    // ... 
} 

部件/ SimpleButton.qml:

import QtQuick 2.0 
// ... 
Rectangle { 
    Text { 
     id: label 
     text: "" 
     // ... 
    } 
    property alias text: label.text 
} 

掩模/ DEMO.ui .qml:

import QtQuick 2.0 
import "../components" 
//... 
    SimpleButton { 
     //... 
     text: qsTr("Vent.") 
    } 
//... 

qml.de.ts:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE TS> 
<TS version="2.1" language="de_DE"> 
<!-- ... --> 
<context> 
    <name>DEMO</name> 
    <!-- ... ---> 
    <message> 
     <source>Vent.</source> 
     <translation>Belüften</translation> 
    </message> 
</context> 
<context> 
    <name>main</name> 
    <message> 
     <source>Loading ...</source> 
     <translation>Lade ...</translation> 
    </message> 
    <!-- ... --> 
</context> 
+0

「DEMO.ui.qml」列在[SOURCES]變量中,如[此處]所述(http://doc.qt.io/qt-5/qtquick-internationalization.html#use-a-conditional-要隱藏-QML-源來自該編譯器)? – Mitch

+0

是:'lupdate_only {SOURCES + = qml/*。qml qml/masks/*。qml}' –

回答

1

重命名DEMO.ui.qmlDEMO.qml的伎倆。我猜想語言學工具(lupdate,lrelease)和Qt運行時環境對如何將文件名轉換爲上下文名稱有不同的想法。