2014-02-20 54 views
1

我想在我的工具欄上進行翻譯。工具欄是一個listmodel:如何製作翻譯qml

import QtQuick 1.1 

    ListModel { 
     id:tBar 
    ListElement { 
      buttonText: QT_TR_NOOP("Cars In Speed Function") 
      bottomText: "" 
      event: "carsInSpdFn" 
      buttonLevel: "0" 
      buttonBurst: false 
      icon: "qrc:/icons/histogram_128x128_w.png" 
      color: "#369c3b" 
      active: true 

      permissionLevel: 0 
     } 
     ListElement { 
      buttonText: QT_TR_NOOP("Clear all logs") 
      bottomText: "" 
      event: "cleraAllLogs" 
      buttonLevel: "0" 
      buttonBurst: false 
      icon: "qrc:/icons/trash_128x128_w.png" 
      color: "steelblue" 
      active: true 

      permissionLevel: 3 
     } 

該列表在文件中調用屬性變量值。 主文件:

/.. 
DynamicApp{ 
    id: statistics 
    objectName: "Statistics" 
    toolbarModel: ToolbarModel{} 




    title: qsTr("Statistics management") 
    icon: "qrc:/icons/statistics_128x128_w.png" 
../ 

的DynamicApp是其中所定義的應用程序的窗口的QML文件。定義的toolbarModel是「屬性變體」。 DynamicApp:

/.. 
Rectangle { 
    id: app 
    width: main.width 
    height: main.height 
    color: layout_id.bgColor 
    opacity: 0  

    property variant parameter; 
    property bool useToolbar: true 
    property bool useTopbar: true 
    property bool activeApp: false 

    property variant toolbarModel 
    property string title: "" 
    property string icon: "" 
../ 

我知道如何通過QSTR或qsTranslate型號列表翻譯,但我不知道如何把它變成CAL財產變種becouse有調用到所有的文件toolbarModel。 你能解釋我如何在我的應用程序中翻譯這個列表嗎?

回答

1

對於翻譯,您需要將其添加到您的APP.pro中。你需要做一個黑客來添加QML翻譯,所以lupdate實際上可以到達它們。例如,在我們的項目,我們有:

# English 
TRANSLATIONS += settings/language/set_language/setting_en.ts 
# Spanish 
TRANSLATIONS += settings/language/set_language/setting_es.ts 

後,在lupdate以包括QML文件,我們做互聯網

evil_hack_hahaha_add_what_ever_you_want_etc { 
SOURCES += path_to_qml/*.qml \ 
    path_to_qml2/*.qml \ 
    ... 
} 

上找到後一招,在控制檯中運行

lupdate NAMEOFPROFILE.pro 

現在您將生成.ts包括qml的.ts。

做你的翻譯工作後,請記得

lrelease NAMEOFPROFILE.pro 

祝你好運!