在 Qt 中實現多國語言支持(即國際化和本地化,通常簡稱 i18n 和 l10n)是通過使用 tr()
函數來標記可翻譯的文本,以及使用翻譯文件(.ts
)和翻譯工具來處理不同語言版本的應用程序。這樣可以讓應用程序在不同的語言環境中運行時顯示適當的文本。
以下是如何在 Qt 程式中處理多國語言的步驟:
1. 使用 tr()
函數標記可翻譯的文本
tr()
是 Qt 提供的函數,用來標記應該被翻譯的字符串。這些字符串將被提取並放入翻譯文件中。
例如:
在這裡,tr("Hello, world!")
標記了字符串 "Hello, world!" 為可翻譯的文本。
2. 使用 lupdate
提取可翻譯文本
當您編寫了程序並且標記了所有可翻譯的文本後,需要使用 Qt 的工具 lupdate
來提取這些文本並生成翻譯文件。
在 Qt 的項目根目錄中運行以下命令:
這將掃描您的源代碼並提取出所有使用 tr()
函數標記的字符串。然後它會生成一個 .ts
文件,該文件將包含所有需要翻譯的字符串。
3. 翻譯文件 .ts
翻譯文件 .ts
是 XML 格式的,包含原始文本和翻譯文本。這些文件通常是根據語言生成的。例如,en_US.ts
是英文的翻譯文件,zh_CN.ts
是簡體中文的翻譯文件。
可以使用 Qt 的 Linguist
工具來打開 .ts
文件,進行翻譯。
- 打開
Linguist
(通常安裝了 Qt 的開發工具後可以找到)。 - 載入
.ts
文件。 - 為每個原始字符串添加翻譯。
翻譯文件的一個例子可能如下所示:
在這個例子中,<source>
標籤包含原始文本,而 <translation>
標籤包含翻譯文本。
4. 編譯翻譯文件
當您完成翻譯後,需要將 .ts
文件編譯為二進制的 .qm
文件,這是 Qt 應用程序運行時加載的翻譯文件。
使用 lrelease
工具編譯 .ts
文件:
這將生成 .qm
文件。每個 .ts
文件都會對應一個 .qm
文件,並且 .qm
文件是應用程序運行時加載的翻譯文件。
5. 加載翻譯文件
在您的 Qt 程式中,需要加載相應語言的翻譯文件。這是通過 QTranslator
類來完成的。
例如,若要加載簡體中文的翻譯,可以這麼做:
這樣,Qt 就會加載 "zh_CN.qm"
這個翻譯文件並應用它。如果用戶的語言設置為簡體中文,則界面將顯示中文文本。
6. 根據語言環境動態切換語言
您可以在運行時根據用戶的選擇動態切換語言。這通常會在應用程序的設置界面中實現,當用戶選擇不同語言時,程序會重新加載相應的翻譯文件。
例如:
這樣,您可以根據用戶的選擇(例如 "zh_CN"
或 "en_US"
)來加載對應的翻譯文件。
7. 設置語言
您可以根據系統語言或者用戶設置來決定加載哪個翻譯文件。例如,您可以根據操作系統的語言設置自動加載翻譯:
這樣會根據系統的語言來選擇適當的翻譯文件。
8. 測試和維護
- 測試您的多國語言功能,確保翻譯的文本顯示正確,並且不會有任何錯誤或遺漏。
- 隨著應用程序的發展,您可能會添加新的文本。每次更新源代碼後,都需要使用
lupdate
來提取新的字符串,並在翻譯文件中進行翻譯。
小結
在 Qt 中處理多國語言支持的基本步驟:
- 使用
tr()
函數標記可翻譯的文本。 - 使用
lupdate
提取翻譯字符串並生成.ts
文件。 - 使用
Linguist
工具翻譯字符串。 - 使用
lrelease
編譯翻譯文件生成.qm
文件。 - 在應用中加載翻譯文件並應用於界面。
- 根據需要動態切換語言。
沒有留言:
張貼留言