亚洲欧美一区二区在线观看_久久精品视频免费观看_欧美精品 日韩_日韩精品在线观看视频

首頁>觀點 > 正文

使用 Qt Quick 進行國際化和本地化 當前滾動

2023-06-28 03:37:24    出處:QT教程

Qt Quick是一個基于QML語言的用戶界面框架,旨在幫助開發人員更輕松地創建現代,流暢和高度可定制的用戶界面。它是Qt框架中的一個重要組成部分,通過將界面設計與業務邏輯分離,提高了開發效率和代碼可維護性。Qt Quick提供了豐富的組件庫和動畫效果,使得開發者可以在不需要編寫大量代碼的情況下快速構建漂亮的用戶界面。同時,Qt Quick還支持跨平臺開發,可以在多個平臺上運行,包括桌面,移動設備和嵌入式系統。


(資料圖片僅供參考)

以下部分描述了國際化 QML 源代碼的各個方面。如果應用程序中的所有用戶界面組件都遵循這些指南,則可以針對不同的語言和當地文化習俗(例如日期和數字的格式化方式)本地化應用程序的各個方面。

、對所有文字用戶界面字符串使用 qsTr()

QML 中的字符串可以使用 qsTr()、qsTranslate()、qsTrId()、QT_TR_NOOP()、QT_TRANSLATE_NOOP() 和 QT_TRID_NOOP() 函數標記為翻譯。標記字符串的最常用方法是使用 qsTr() 函數。例如:

Text{id: txt1;text: qsTr("Back");}

此代碼使“Back”成為翻譯文件中的關鍵條目。在運行時,翻譯系統查找關鍵字“Back”,然后獲取當前系統語言環境對應的翻譯值。結果返回到 text 屬性,用戶界面將顯示當前語言環境的“Back”的適當翻譯。

、為翻譯器添加上下文

用戶界面字符串通常很短,因此需要幫助翻譯文本的人理解文本的上下文。可以在源代碼中添加上下文信息作為要翻譯的字符串的額外描述性文本。這些額外的描述包含在交付給翻譯人員的 .ts 翻譯文件中。

.ts 文件是帶有源文本和翻譯文本位置的 XML 文件。.ts 文件可轉換為二進制翻譯文件,并作為應用程序的一部分。

Text{id: txt1;// This user interface string is only used here//: The back of the object, not the front//~ Context Not related to back-steppingtext: qsTr("Back");}

在上面代碼片段中:

//: 行上的文本是翻譯器的主要注釋。

//~ 行上的文本是可選的額外信息。文本的第一個單詞用作 .ts 文件中 XML 元素的附加標識符,因此請確保第一個單詞不是句子的一部分。例如,.ts 文件中的注釋“Context Not related to that”被轉換為“Not related to that”。

【領 QT開發教程 學習資料, 點擊下方鏈接莬費領取↓↓ ,先碼住不迷路~】

點擊這里:

、消除相同文本的歧義

翻譯系統將用戶界面文本字符串合并為獨特的項目。這種合并使翻譯工作的人員不必多次翻譯相同的文本。 但是,在某些情況下,文本相同但含義不同。

通過添加一些 id 文本作為 qsTr() 函數的第二個參數來區分相同的文本。

在以下代碼片段中,not front 文本是一個 id,用于區分此“Back”文本與后退“Back”文本:

Text{id: txt1;text: qsTr("Back", "not front");}

、使用 %x 將參數插入字符串

下面的代碼片段有一個帶有兩個數字參數 %1 和 %2 的字符串。這些參數與 .arg() 函數一起插入。

Text{text: qsTr("File %1 of %2").arg(counter).arg(total)}

%1 指的是第一個參數,%2 指的是第二個參數,此代碼產生的輸出類似于:“File 2 of 3”。

、使用 %Lx 使數字本地化

如果在指定參數時包含 %L 修飾符,則數字將根據當前選擇的語言環境(地理區域)的數字格式約定來格式化。

Text{text: qsTr("%L1").arg(total)}

如果 total 是數字“”,英文區域設置輸出為“4,”;德文區域設置輸出為“,56”。

、國際化日期、時間和貨幣

需要查詢當前的語言環境(地理區域)并使用 Date 的方法來格式化字符串。

() 返回一個 Locale 對象,其中包含有關語言環境的各種信息。特別是, 屬性包含當前語言環境的語言和國家信息。可以對其進行解析以確定當前語言環境的適當內容。

Text{text: qsTr("Date %1").arg(Date().toLocaleString(()))}

上面代碼段使用 Date() 獲取當前日期和時間,然后將其轉換為當前語言環境的字符串。 然后它將日期字符串插入到 %1 參數中以進行適當的轉換。

要確保貨幣數字已本地化,請使用 Number 類型。 此類型具有與 Date 類型類似的功能,用于將數字轉換為本地化的貨幣字符串。

、將 QT_TR_NOOP() 用于可翻譯的數據文本字符串

如果用戶在不重啟的情況下更改系統語言,根據系統的不同,數組和列表模型中的字符串以及其他數據結構可能不會自動刷新。要強制在用戶界面中顯示文本時刷新文本,需要使用 QT_TR_NOOP() 宏聲明字符串。然后,當填充要顯示的對象時,需要明確檢索每個文本的翻譯。

ListModel{id: myListModel;ListElement{//: Capital city of Finlandname: QT_TR_NOOP("Helsinki");}}...Text{text: qsTr((0).name); // 獲取元素 0 中 name 屬性的翻譯}

、使用 Locale 擴展本地化功能

如果想要不同地理區域的不同圖形或音頻,可以使用 () 來獲取當前的語言環境。 然后為該語言環境選擇合適的圖形或音頻。

下面的代碼片段展示了如何選擇一個合適的圖標來代表當前語言環境的語言。

:{switch (().(0,2)){case "en":languageIcon = "../images/language-icon_";break;case "fi":languageIcon = "../images/language-icon_";break;default:languageIcon = "../images/language-icon_";}}

、為動態語言變化做好準備

可以通過使用 QCoreApplication::installTranslator() 和 QCoreApplication::removeTranslator() 添加和刪除翻譯器來更改 Qt 翻譯函數使用的語言。之后可以調用 QQmlEngine::retranslate() 來觸發所有使用翻譯的綁定的刷新。因此,用戶界面將動態切換到新選擇的語言。

或者,也可以將 QEvent::LanguageChange 事件轉發到應用程序的 QQmlEngine 實例或將自己的信號連接到 QQmlEngine::retranslate()。

Qt Quick 應用程序使用與 Qt C++ 應用程序相同的底層本地化系統(lupdate、lrelease 和 .ts 文件)。

.pro 文件中的 SOURCES 變量適用于 C++ 源文件。如果在那里列出 QML 或 JavaScript 源文件,編譯器會嘗試將它們構建為 C++ 文件。可以使用 lupdate_only{...} 條件語句,以便 lupdate 工具看到 .qml 文件,但 C++ 編譯器會忽略它們。

例如,以下 .pro 文件片段指定應用程序中的兩個 .qml 文件。

lupdate_only{SOURCES =  \}

還可以使用通配符匹配來指定 .qml 源文件。搜索不是遞歸的,因此需要在源代碼中指定每個包含用戶界面字符串的目錄:

lupdate_only{SOURCES = *.qml \*.js \content/*.qml \content/*.js}

【領 QT開發教程 學習資料, 點擊下方鏈接莬費領取↓↓ ,先碼住不迷路~】

點擊這里:

關鍵詞:

相關內容

消費
產業
永贏基金范帆:關注AI賦能的消費電子投資機會 環球報資訊 消費電子行業關鍵點就在于“產品創新”,也就是供給創造需求。從上一輪
焦點關注:停息掛賬5大協商步驟 信用卡逾期被起訴了會怎樣? 停息掛賬5大協商步驟信用卡出現逾期情況之后,客戶若想辦理停息掛賬
天天觀天下!全國首艘海陸一體化智能FPSO開啟交付之路 6月26日清晨5時許,全國首艘海陸一體化智能FPSO(浮式生產儲卸油裝置)
焦點快看:「港股異動」萬科企業(02202.HK)漲4.56% 【財華社訊】萬科企業(02202 HK)截至14:25上漲4 56%,現報10 54港元,
基金
主站蜘蛛池模板: 国产乱子夫妻xx黑人xyx真爽 | 欧美成人精品在线| 日本丰满少妇黄大片在线观看 | 中文字幕人成一区| 久久久综合免费视频| 久久精品人人做人人爽电影| 麻豆av一区| 国产一区亚洲二区三区| 久久99精品久久久久久噜噜| 国产中文字幕免费观看| 国产精品精品久久久久久| 国产精品久久久久久av福利 | 99国产精品白浆在线观看免费| 天天成人综合网| 欧美日本在线视频中文字字幕| 欧美精品一区在线发布| 久久精品最新地址| 国产精品第3页| 欧美亚洲视频在线看网址| 国产日韩欧美在线观看| 亚洲综合视频一区| 日本三日本三级少妇三级66| 国语自产精品视频在线看| 国产精品福利在线| 91精品国产91久久久久青草| 日本一区二区三区在线视频| 久久综合电影一区| 在线不卡日本| 欧美精品一区在线发布| 国产精品成人播放| 欧美日韩在线不卡一区| 777午夜精品福利在线观看| 精品99在线视频| 亚洲精品国产精品久久| 秋霞无码一区二区V| 天天干天天色天天爽| 日本精品一区二区三区四区| 国产一区二区在线免费| 亚洲.欧美.日本.国产综合在线| 国产伦精品一区二区三区视频免费 | 国产在线精品播放|