國(guó)際化
如今越來(lái)的越多的應(yīng)用都走向了海外,應(yīng)用走向海外需要支持不同國(guó)家的語(yǔ)言,這就意味著應(yīng)用資源文件需要支持不同語(yǔ)言環(huán)境下的顯示。本節(jié)就介紹一下設(shè)備語(yǔ)言環(huán)境變更后,如何讓?xiě)?yīng)用支持多語(yǔ)言。
應(yīng)用支持多語(yǔ)言
ArkUI開(kāi)發(fā)框架對(duì)多語(yǔ)言的支持比較友好,只需要在 resources 目錄下創(chuàng)建對(duì)應(yīng)國(guó)家的文件夾,名稱對(duì)國(guó)家簡(jiǎn)碼,例如中國(guó)為 zh ,則在 resources 下創(chuàng)建 zh 文件夾,然后在 zh 文件下創(chuàng)建對(duì)應(yīng)的類別文件,筆者以文本資源支持多語(yǔ)言為例。
添加多語(yǔ)言數(shù)據(jù)
- 在resources目錄下創(chuàng)建
zh/element文件夾目錄后,添加 string.json 文件:
筆者分別在zh目錄下的 string.json 和base目錄下的 string.json 中添加了一個(gè) json 數(shù)據(jù),name都是 calculator , value 一個(gè)是英文一個(gè)中文。
使用多語(yǔ)言數(shù)據(jù)
|
使用 resources 目錄下的資源,ArkUI開(kāi)發(fā)框架給我們提供了快捷方法: () ,比如要訪問(wèn) string.json 中的資源,可以簡(jiǎn)寫(xiě) ('app.string.name') ,筆者在第 3 節(jié)有介紹 [$()] 的使用,讀者請(qǐng)自行查看。
- 在
index.ets里使用添加的多語(yǔ)言,代碼如下:@Entry @Component struct Index { build() { Column({space: 10}) { Text('多語(yǔ)言測(cè)試:') .fontSize(22) Text($r("app.string.calculator")) // 使用多語(yǔ)言 .fontSize(22) } .padding(10) .width('100%') .height('100%') } }
i18n和intl簡(jiǎn)介

讓APP支持多語(yǔ)言可以采取資源本地化的操作,當(dāng)設(shè)備語(yǔ)言環(huán)境變更后系統(tǒng)會(huì)自動(dòng)讀取對(duì)應(yīng)的資源,當(dāng)需要手動(dòng)獲取語(yǔ)言環(huán)境相關(guān)信息時(shí),可以使用 @ohos.i18n 和 @ohos.intl 模塊提供的相關(guān) API 實(shí)現(xiàn)。
i18n模塊
declare namespace i18n { // 獲取設(shè)備系統(tǒng)語(yǔ)言 export function getSystemLanguage(): string; // 設(shè)置設(shè)備系統(tǒng)語(yǔ)言 export function setSystemLanguage(language: string): boolean; // 獲取設(shè)備系統(tǒng)地區(qū) export function getSystemRegion(): string; // 獲取時(shí)區(qū)ID對(duì)應(yīng)的時(shí)區(qū)對(duì)象 export function getTimeZone(zoneID?: string): TimeZone; // 省略部分API } export default i18n;i18n主要提供的是獲取系統(tǒng)信息,比如當(dāng)前系統(tǒng)語(yǔ)言,系統(tǒng)區(qū)域等,預(yù)了解更多信息讀者可參考官方文檔或者源碼,aboutToAppear() { let language = i18n.getSystemLanguage(); console.log(language);// 輸出:zh-Hans-CN }intl模塊
declare namespace intl { // 區(qū)域初始化選項(xiàng)。 export interface LocaleOptions { } // 區(qū)域信息設(shè)置對(duì)象 export class Locale { } // 時(shí)間日期格式化選項(xiàng)。 export interface DateTimeOptions { } // 日期格式化對(duì)象 export class DateTimeFormat { } // 數(shù)字格式化選項(xiàng) export interface NumberOptions { } // 數(shù)字格式化對(duì)象 export class NumberFormat { } // 省略相關(guān) API } export default intl;@ohos.intl模塊提供了信息在不同區(qū)域的差異化能力,比如日期顯示,在不同的國(guó)家顯示格式是不一樣的,可以采用DateTimeFormat獲取不同的顯示方式:aboutToAppear() { let date = new Date(2022, 5, 1, 17, 45, 30); // 創(chuàng)建日期 var datefmt= new intl.DateTimeFormat("en-GB"); // 格式化對(duì)象 console.log(datefmt.format(date)); // 輸出01/06/2022 }
審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
60文章
2925瀏覽量
45576 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2151瀏覽量
35851 -
OpenHarmony
+關(guān)注
關(guān)注
33文章
3942瀏覽量
20915
發(fā)布評(píng)論請(qǐng)先 登錄
Qt多國(guó)語(yǔ)言(國(guó)際化)問(wèn)題小結(jié)
用OpenHarmony設(shè)置zh_CN國(guó)際化以后總是報(bào)錯(cuò)的原因是什么
開(kāi)啟OpenHarmony應(yīng)用開(kāi)發(fā)之旅
4.25OpenHarmony技術(shù)日,開(kāi)放原子開(kāi)源基金會(huì)孫文龍秘書(shū)長(zhǎng)發(fā)表精彩致辭!
OpenHarmony數(shù)據(jù)轉(zhuǎn)碼應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(下)
中軟國(guó)際教培開(kāi)發(fā)板通過(guò)OpenHarmony兼容性測(cè)評(píng)
淺議基于JSF的Java國(guó)際化編程及其實(shí)現(xiàn)
柳傳志談聯(lián)想國(guó)際化:看中目標(biāo)拐大彎
iOS的國(guó)際化功能方便了APP走向國(guó)際
攜安世半導(dǎo)體邁入A股 聞泰科技更加國(guó)際化
劍指國(guó)際化,誰(shuí)能搶灘新大陸?
國(guó)際化測(cè)試和本地化測(cè)試的特點(diǎn)和區(qū)別
鴻蒙實(shí)戰(zhàn)開(kāi)發(fā):【國(guó)際化部件】
OpenHarmony城市技術(shù)論壇第11期(香港站)【智能終端操作系統(tǒng)技術(shù)與國(guó)際化生態(tài)構(gòu)建】大咖齊聚
OpenHarmony開(kāi)發(fā)技術(shù):【國(guó)際化】實(shí)例
評(píng)論