- Providing multilingual files (Traditional Chinese/English/Russian)。
【Basic Steps】
- creating a project and naming as lang
- add QLabel component and define its Text to “Hello” 。
Captured from Qt Designer as below。
- add multilingual setting to *.pro file
TRANSLATIONS += lang_zh_TW.ts \ lang_en_US.ts \ lang_ru_RU.ts
- produce *.ts via lupdate
c:\Qt\2010.03\Qt\bin\lupdate.exe lang.pro
- open lang_zh_TW.ts、lang_en_US.ts、lang_ru_RU.ts via Qt Linguist。
- produce *.pm via lrelease, we’ll get lang_zh_TW.qm、lang_en_US.qm、lang_ru_RU.qm
c:\Qt\2010.03\Qt\bin\lrelease.exe *.ts
- copy *.qm files to execute-file folder (ex. Debug/Release for Windows OS)
- 內定語系,讀取 OS的語系
- 指定語系(以俄文為例,強制使用俄文)
- 讓客戶指定語系,建議(這部分是我的想法,比較省事,否則就要一個一個元件去 setText() )
- 出現一個讓客戶可以選定語系的選單(Combox,選單內使用圖檔讓客戶定義語系)。
客戶選完之後將設定存檔(xml/ini Format)。並提醒客戶重開該應用程式。 - 重開之後,按照設定載入語系檔。
- 出現一個讓客戶可以選定語系的選單(Combox,選單內使用圖檔讓客戶定義語系)。
- 在 MacOsX底下會讀取 zh_CN 檔,而不是 zh_TW,建議先用qDebug() 先行確認。
qDebug() << QLocale::system().name(); - 參考下面資料,裡面提供語系檔,可參考命名方式
- C:\Qt\2010.03\qt\translations
- http://code.google.com/p/qwit/source/browse/#svn/trunk/translations
- 另一種方法是使用setCodecForTr。不過嘗試製作一個簡單的語言切換選單,
但發現在俄文底下動作並不正常。#include <QTextCodec> void Dialog::on_comboBox_activated() { QString str_hello = tr("Hello"); if (ui->multilingual->currentText() == "Traditional Chinese(Taiwan)") { QTextCodec::setCodecForTr(QTextCodec::codecForName("Big5-ETen")); str_hello = tr("哈囉"); }else if (ui->multilingual->currentText() == "Pycckom(Russia)") { QTextCodec::setCodecForTr(QTextCodec::codecForName("KOI8-R")); str_hello = tr("здравствуйте"); } ui->label->setText(str_hello); qDebug() << str_hello; }
- 結果
- 針對此問題,可以採用 fromUtf8 來指定QString格式。
但目前 WinXp還有問題,而在MacOs底下動作正常。ex. ui->pushButton->setText(QString::fromUtf8("Привет"));
- 猜想是Qt Creator 1.3.1在WinXp存檔格式並非雙字元,如果使用 Editplus 編輯,並存成utf8 格式
就可以暫時解決這個問題。 - 參考 Как записать в файл ?
http://www.prog.org.ru/topic_10946_0.html;prev_next=prev
- QT範例(tools/i18n/i18n.pro),可參考 TRANSLATIONS 部分
Qt Demo & Examples | Tools | Internationalization - Internationalization with Qt
http://doc.qt.nokia.com/4.0/i18n.html - qt林林总总(1)
http://blog.csdn.net/qipnx/archive/2007/01/11/1480410.aspx - QTextCodec Class Reference
http://doc.qt.nokia.com/4.6/qtextcodec.html - Qt4 Gossip: 簡單的顯示中文(使用 Unicode 轉換) http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/DisplayChinese.html
- [Qt-creator] QtCreator and UTF-8
http://www.mail-archive.com/qt-creator@trolltech.com/msg01847.html