首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Qt 4.8.5 配合 VS2010 實現動態語言切換的關鍵步驟

     編輯:程式設計綜合問答

核心流程

  1. 標記可翻譯字符串:代碼中用 tr("Source Text") 包裹所有可見文本。
  2. 生成 .ts 文件:lupdate project.pro 掃描源碼生成 XML 翻譯源文件。
  3. 翻譯:使用 Qt Linguist 打開 .ts,逐條翻譯並釋放 (Ctrl+Enter)。
  4. 發布 .qm 文件:lrelease project.pro 編譯生成二進制翻譯文件。
  5. 加載翻譯器:運行時安裝 QTranslator 到 qApp。

動態切換代碼示例

// main.cpp
QApplication app(argc, argv);
QTranslator translator;
QString locale = QLocale::system().name(); // "zh_CN"

if (translator.load(":/i18n/myapp_" + locale)) {
    app.installTranslator(&translator);
}

// 切換語言槽函數
void MainWindow::switchLanguage(const QString &locale) {
    qApp->removeTranslator(&m_translator);
    if (m_translator.load(":/i18n/myapp_" + locale)) {
        qApp->installTranslator(&m_translator);
    }
    // 關鍵:觸發 UI 重新翻譯
    retranslateUi();  // 手動調用或依賴 changeEvent
}

// 重寫 changeEvent 自動響應
void MainWindow::changeEvent(QEvent *event) {
    if (event->type() == QEvent::LanguageChange) {
        ui->retranslateUi(this); // UI 設計器生成的重新翻譯函數
    }
    QMainWindow::changeEvent(event);
}

VS2010 集成要點

  • 安裝 Qt Visual Studio Add-in (對應 Qt 4.8.5 版本)。
  • 專案屬性 → Qt Build Steps → 添加 lupdate / lrelease 自定義構建步驟,自動生成 .ts/.qm。
  • .qm 文件放入資源文件 .qrc 以 :/i18n/ 前綴訪問,打包進 EXE 避免外部依賴。

常見問題排查

注意

Qt 4.8.5 已停止維護,新項目強烈建議遷移至 **Qt 5/6 + CMake**,國際化機制基本兼容但構建系統現代化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因解決
切換後界面不變未調用 retranslateUi 或 changeEvent 未觸發手動調用 ui->retranslateUi(this) 或發送 LanguageChange 事件
.ts 文件為空源碼未用 tr() 包裹、lupdate 路徑錯誤檢查 tr() 使用、.pro 中 SOURCES/HEADERS/TRANSLATIONS 設置
運行找不到 .qm未加入 .qrc 或路徑前綴錯誤資源文件前綴需與 load() 參數一致 (如 ":/i18n/")