H5快應用國際化
阿新 • • 發佈:2020-12-17
案例背景
最近在H5快應用開發過程中,需要根據系統語言載入對應的H5動態網址。但我的專案中的網站國際化是根據動態url來實現的,需要我自己實現動態載入不同國家語言的url網址。比如,手機系統語言為日語時,開啟日語網頁;系統語言為簡體中文時,開啟簡體中文網頁,系統語言為英語時,開啟英文網站,如下圖所示:
解決方案
步驟一:繫結變數
web元件的src屬性值需要用變數繫結,不能固定寫死,如下圖中{{ }}中的loadUrl就是一個繫結變數,loadUrl在ux檔案中script標籤下進行定義,如果是基於海外快應用IDE H5模板建立的工程,此步驟可忽略,IDE模板程式碼都已經幫你搞定了。
<!—template部分 --> <web src="{{loadUrl}}" </web> <!—script部分 --> export default { data: { loadUrl: "https://transit.navitime.com/en", },
步驟二:初始化變數
在快應用生命週期onInit()方法中通過快應用API device介面獲取系統地區語言,判斷語言後加載對應的H5網址。
onInit: function () { const device = require("@system.device") const res = device.getInfoSync(); let local = res.language; //system lauguage let region = res.region; //system region console.info('onInit :localole= ' + local + ", region=" + region); if (local === 'zh') { if (region === "CN") { this.loadUrl = "https://transit.navitime.com/zh-cn/"; } else if (region === "TW") { this.loadUrl = "https://transit.navitime.com/zh-tw/"; } } else if (local === 'ja') { this.loadUrl = "https://transit.navitime.com/ja/?from=huawei.quickapp"; } else { //Other languages can use the default language H5 this.loadUrl = "https://transit.navitime.com/en"; } },
步驟三
此步驟是針對H5快應用已經開啟執行的場景。如果使用者此時去系統設定切換語言,希望H5網頁也要更新相應的語言。如果不想更新,可以忽略此步驟,使用者可以退出應用,重新進入即可。
快應用提供了在執行期間監聽語言配置發生變化的介面,適配程式碼如下:
onConfigurationChanged(object) { console.log("onConfigurationChanged object=" + JSON.stringify(object)); if (object.type === "locale") { const configuration=require("@system.configuration") var localeObject = configuration.getLocale(); let local= localeObject.language; let region= localeObject.countryOrRegion; console.info(onConfigurationChanged(object :localole= ' + local + ", region=" + region); if (local === 'zh') { if (region === "CN") { this.loadUrl = "https://transit.navitime.com/zh-cn/"; } else if (region === "TW") { this.loadUrl = "https://transit.navitime.com/zh-tw/"; } } else if (local === 'ja') { this.loadUrl = "https://transit.navitime.com/ja/?from=huawei.quickapp"; } else { //Other languages can use the default language H5 this.loadUrl = "https://transit.navitime.com/en"; } } },
總結
此案例可以幫助開發者快速實現網頁載入的國際化,為H5快應用全球釋出提供了好的解決方案。
原文連結:
https://developer.huawei.com/consumer/cn/forum/topic/0204404985127060222?fid=18
作者:AppGallery Connect