QT程式國際化的過程

2021-05-24 21:42:42 字數 1016 閱讀 4654

1.在所有需要採用雙語或多語的地方採用qobject::tr("")將要顯示的字串包起來。

這裡的字串最好為英文,ascii的編碼在**都不會解碼錯。

tr()的作用之一是從.qm檔案中取出與其所包含的內容對應的資訊。

有些地方不宜採用tr(),比如定義某些變數使用的字串,如:

static const char* strings = ;

可以採用qt_tr_noop() 和 qt_translate_noop() 來標誌它們。

前者用於單個字 符串,後者用於多個字串。

如果要使用printf/sprintf之類的函式動態生成字串,需要替換為arg(),如:

qstring s = tr("button %1").arg(i);

2.使用findtr命令為要翻譯的所有檔案生成乙個.po檔案。如:

findtr 1.cpp 2.cpp 3.cpp > 1.po

3.開啟這個1.po檔案,主要修改以下幾項:

3.1 編碼方式: 將charset=iso-8859-1中的「iso-8859-1」替換為gbk或utf-8。

在windows下修改時使用gbk,在linux下使用「utf-8」

3.2 提取出的字串: 提取出的字串格式如下:

msgid "examplewidget::&file"

msgstr ""

其中examplewidget為檔案的指定範圍,在翻譯時要去掉,最後變為

msgid "::&file"

msgstr "檔案(&f)"

4.使用qt提供的工具msg2qm將.po轉化為.qm檔案,如:

msg2qm 1.po 1.qm

一般這個工具放在qt安裝目錄的tools/msg2qm下,有時還需要make生成一下,最終的格式可能是:

./msg2qm 1.po 1.qm

此外,qt 還提供了類似於 msgmerge 的工具 mergetr,它用於把新提取的資訊檔案和

已經翻譯過的資訊檔案融合起來,在此不再贅述。

QT國際化支援

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

QT國際化 小結

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

qt國際化程式設計

下面說一下qt國際化程式設計的操作步驟 1 編寫源 2 在 pro檔案中新增translations ts 有多少中語言就新增多少個ts檔案。3 執行lupdate pro 生成ts檔案。lupdate會根據源 中的內容提取出待翻譯的字段,然後生成ts檔案,ts檔案是xml格式的。4 用qt lin...