Qt QML多語言機制核心講解

2021-09-11 08:46:13 字數 1785 閱讀 4312

在開發過程中,經常遇到 qml的 listview,其中 model 屬性裡面字段需要多語言

只需要在引用處新增,語言改變觸發函式,即可

本例context: util.lang(qstr(tabname))

其中 util.lang() 函式是語言改變自動觸發的js函式

lupdate 只是識別 qstr() 函式,然後進行字元替換 。lupdate不做編譯或者執行語法校驗

例如

以下寫法是錯誤的,但是這段錯誤的**是用於生成ts檔案進行字元替換的,生成ts檔案之後再去掉 util.lang() 函式,還原正確的**。當替換好字串發布qm檔案經過qt程式載入,執行時,執行到context: util.lang(qstr(tabname))引用處,qt多語言機制到qm檔案(此時已經載入到程式記憶體中)查詢對應的字串,進行替換

錯誤**(用於生成ts檔案):

listmodel 

listelement

listelement

//listelement

// listelement

listelement

listelement

listelement

listelement

}

正確**:

item 

model:

listmodel

listelement

listelement

//listelement

// listelement

listelement

listelement

listelement

listelement }}

}

listmodel 不加qstr(),即不在此處生成ts檔案

listmodel 

listelement

listelement

//listelement

// listelement

listelement

listelement

listelement

listelement

}

在這裡生成ts檔案,在qml檔案裡面新增自定義**純文字,生成完ts檔案後刪除

text

text

text

text

text

text

text

a.qml 包含一下**

listmodel 

listelement

listelement

//listelement

// listelement

listelement

listelement

listelement

listelement

}

在其它目錄新建 a.qml檔案(一定要保證qml檔名相同,否則qt程式無法查詢對應字元替換)

新建 a.qml檔案,生成ts檔案後刪除:然後ts發布qm檔案,用qt程式載入,這樣也行

text

text

text

text

text

text

text

軟體多語言

locale是指特定於某個國家或地區的一組設定,包括字符集,數字 貨幣 時間和日期的格式等。在windows中,每個locale可以用乙個32位數字表示,記作lcid。在winnt.h中可以看到lcid的組成。它的高16位表示字元的排序方法,一般為0。在它的低16位中,低10位是primary la...

多語言切換

專案中應用到了多語言切換,鞏固一下。貼上 大家一起學習。廢話不多說直接上 1 新增多語言 在res values 下預設有個strings,需要多種語言就來建立幾個strings,values右鍵 new 乙個 values res file file name 就是strings director...

Qt 筆記 多語言

1 使用命令 lupdate no obsolete main.pro 作用 將main.pro檔案內的所有源程式檔案中的被tr 包裝的字串打包成.ts檔案,此檔案可以使用qt的qt linguist開啟並翻譯 2 使用命令 lrelease main.pro 作用 通過.ts檔案生成.qm檔案,此...