Qt國際化 中文化(漢化)

2021-06-11 18:56:32 字數 2276 閱讀 9404

最近的乙個專案需要把系統從原先的英文版漢化。

為了完成這個工作,收集和學習了不少的資料。所以就自己整理資料留作記錄吧。

在網上你會發現很多關於qt顯示中文出現亂碼的現象:

於是你上網搜尋解決方案,不外乎以下三個語句:

qtextcodec::setcodecforlocale(qtextcodec::codecforname("gb2312"));  

qtextcodec::setcodecforcstrings(qtextcodec::codecforname("gb2312"));

qtextcodec::setcodecfortr(qtextcodec::codecforname("gb2312"));

出現亂碼的原因主要是因為qt預設使用的編碼方式是:unicode;而windows中文系統的編碼方式:gbk等;編碼不一致所以出現亂碼。

ps:用上面的方式解決中文化不是最優的方式;最好的方式是使用英文版本,通過國際化提供其中文版本。

言歸正傳,說說翻譯問題.

qt內部採用的全

unicode

編碼,這從根本上保證了多國語介面實現的正確性和便捷性。

qt本身提供的

linguist

工具,用來實現翻譯過程十分方便。

qt國際化的使用首先就需要用到:tr();

出於國際化的需要,將需要在介面上顯示的文字都用tr()包起來。推薦的使用方式:

原始碼英文,然後提供英文到其他語言的翻譯包。

首先,把需要翻譯的文字使用tr()包裹起來;這點十分重要。因為qt的翻譯工具會把原始碼中所有的被tr()包裹起來的字串提取出來,用於下一步的操作。

其次,需要在工程檔案*.pro裡面新增語句:;擴充套件名為ts的檔案時翻譯檔案的原始檔。包含了所有被tr包裹的字串以及位置;

命名方式建議為:語言.ts例如:chinese.ts、english.ts等。需要幾個ts就新增幾個。

translations+= chinese.ts\

english.ts

再次,是使用lupdate工具編譯提取出ts檔案。使用方法如下:

windows下:執行中輸入cmd,進入到命令列視窗,使用cd語句進入到qt安裝目錄下的bin資料夾;

然後輸入:lupdate *.pro

*.pro

包含pro

檔案的全路徑。

lupdate

會解析*.pro

檔案,生成

translations

中的*.ts 

檔案現在回在工程目錄先看到*.ts檔案。

ubuntu下:開啟終端,如果lupdate已經在bin目錄下直接執行。如果沒有則同windows下的操作相同。

最後,使用qt自帶的linguist工具開啟*.ts檔案按照提示把每個需要翻譯的字串一一翻譯,並且儲存生成release版本:即*.qm檔案

*.qm檔案是我們最後需要的二進位制檔案。它取出了很多不需要的資訊。體積比*.ts檔案小很多。

以上步驟我們已經獲得了需要的翻譯檔案:*.qm;接下來我們需要載入這個檔案來實現翻譯。

實現方式有兩種:

**如下:

int main(int argc,char* argv)

這個方式就是啟動程式時候直接載入翻譯檔案。

動態載入需要給視窗定義乙個動態載入的函式:

void qtest::sl_translate()

else

retranslatorui();

}

這是乙個qt的slots函式,這裡m_ptranslator是乙個qtranslator的類指標。ischinese是乙個flags用於判斷當前的語言。

這裡涉及到了翻譯檔案的安裝與解除安裝。

使用這個函式可以進行動態載入。 注:

這裡會有些人發現自己的函式呼叫了、載入翻譯檔案也成功了。可是介面的文字部分甚至於所有的字元轉都沒有轉換到對應的語言,這是為什麼呢?

其實細心的人已經發現我函式最後一行呼叫了函式:retranslatorui();

如果你的介面是由designer設計的那麼你會發現那裡有個函式:retranslateui();載入翻譯檔案時候程式會自動呼叫這些語句以實現語言轉換。

例如:

void qtest::retranslatorui()

這樣我們的步驟就都結束了。

這裡是乙個簡單的例子:translate

轉貼 國際化 本地化和中文化

國際化 本地化和多語言化的概念 一般來說,國際化 是指把原來為英文設計的計算機系統或應用 軟體改寫為同時支援多種語言和文化習俗的過程 在軟體創作的初期,一般的程式語言,編譯,開發都是只支援英文的,為了適應更廣的語言 和文化習俗,軟體有必要在設計結構和機制上支援多語言的擴充套件特性,這一過程稱為國際化...

QT國際化支援

為了是我們的qt程式支援如中文等其他語言,通常的做法是在需要翻譯的地方顯示的用tr標記,所以你在閱讀其他人編寫的源程式時會看到很多字串做了tr標記,這樣做是有原因的。1.在hello.pro檔案中增加 translations hello zh cn.ts 2.進入工程目錄,執行 lupdate h...

QT國際化 小結

qt應用程式的國際化問題,應該總的來說還是比較容易的,如果你原始碼中沒有使用漢字,直接使用英文,這個問題就不大,下面我講的是通過在原始碼中直接使用中文 就是本地化了的 然後把中文翻譯成別的文字而言的 例如加密文字 大致分這麼幾個步驟,基本與對英文進行國際化的步驟差不多 這裡是針對windows平台的...