首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Qt 學習之路 (33):國際化實戰指南 (上)

     編輯:關於C語言

2D 繪圖系列告一段落,轉向開發者常問的國際化 (i18n) 主題。Qt 提供多種國際化方案,推薦使用 tr() 函式搭配 .ts/.qm 翻譯檔流程,避免硬編碼字元集導致的相容性問題。

標記可翻譯字串:tr() 的正確用法

在原始碼中,所有面向使用者的可見字串皆以 tr() 包裹:

QMenu *fileMenu = new QMenu(tr("&File"), menuBar);
QAction *newFile = new QAction(tr("&New..."), fileMenu);
fileDialog->setWindowTitle(tr("Open File"));
QMessageBox::information(NULL, tr("Path"), tr("You selected\n%1").arg(path));

注意 & 標記選單快捷鍵,%1 佔位符搭配 arg() 實現動態參數插值——這是支援翻譯的關鍵,切勿改用字串串接 (+),否則 lupdate 無法提取完整語句。

翻譯工作流:從 .pro 到 .qm

  1. 專案檔設定:在 .pro 加入 TRANSLATIONS += myapp.ts
  2. 提取字串:終端機執行 lupdate MyApp.pro,生成 .ts (XML 格式)
  3. 翻譯編輯:使用 Qt Linguist 開啟 .ts 逐項翻譯,完成後點選「發布」產出二進位 .qm
  4. 載入翻譯:修改 main() 載入 .qm:
    QTranslator qtTranslator;
    qtTranslator.load("myapp.qm");
    a.installTranslator(&qtTranslator);

常見坑點:相對路徑載入失敗

若執行後介面仍為英文,通常是 .qm 檔未置於執行檔同目錄。load() 採相對路徑會在執行檔所在資料夾尋找,請確認部署時將 .qm 複製至同層目錄。這也印證翻譯檔為動態載入,支援執行時期切換語言。

下集預告

下一篇將深入 tr() 多載參數、複數形式處理、QT_TR_NOOP 等進階宏、以及如何翻譯 Qt 內建對話框 (如檔案選擇器) 的標準按鈕文字。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved