H5快应用国际化

石勇
• 阅读 2265

案例背景

最近在H5快应用开发过程中,需要根据系统语言加载对应的H5动态网址。但我的项目中的网站国际化是根据动态url来实现的,需要我自己实现动态加载不同国家语言的url网址。比如,手机系统语言为日语时,打开日语网页;系统语言为简体中文时,打开简体中文网页,系统语言为英语时,打开英文网站,如下图所示:

H5快应用国际化H5快应用国际化H5快应用国际化

解决方案

步骤一:绑定变量

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

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
java script三大组成部分
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。JavaScript的三大组成部分是:1、ECMAScript:JavaScript的核心,描述了语言的基本语法(var、for、if、a
皕杰报表只显示中文(去国际化)
皕杰报表支持国际化(查看同一张报表,不同的国家显示不同的语言),报表具体显示何种语言与以下2方面有关系:1、浏览器里的“首选语言”设置2、服务器端的字符集设置如果要显示中文,必须服务端支持中文字符集(zhCN)和浏览器的首选语言设置为简体中文这两个条件同时满足。如果想“无论任何情况下都显示中文”,即:去掉国际化,可以如下操作:1、用压缩软件打开biosrep
Android通过URL打开Activity
关注公众号QXF069为每个Activity绑定一个url可以方便的让第三方app直接打开这些Activity。也可以方便在app内部进行页面跳转,解耦。背景举一个常见的案例,假设我们有个产品A,产品A包含h5网页端和客户端,当用户在手机打开我们的h5网页端的时候,我们会期望如果用户手机安装了我们的客户端,则直接打
Stella981 Stella981
4年前
IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
IOSAPP国际化程序内切换语言实现不重新启动系统(支持项目中stroyboard、xib混用。完美解决方案)参考文章:(1)IOSAPP国际化程序内切换语言实现不重新启动系统(支持项目中stroyboard、xib混用。完美解决方案)(https://www.oschina.net/action/GoToLink
Wesley13 Wesley13
4年前
Java scirpt 简介
javascript简介:  JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。基本特点:  JavaScri
程序员小五 程序员小五
1年前
融云 IM 干货丨 私有云IMKit的国际化开发文档在哪里可以找到?
私有云IMKit的国际化开发文档可以在融云开发者文档中心找到。以下是不同平台的国际化开发文档链接:Web平台语言设置:Web平台的IMKit支持中英文两种语言。SDK会根据设置语种展示IMKit界面组件文案。默认展示中文。可以通过以下代码切换语言:java
codigger codigger
4个月前
微语言框架:让程序会说多种语言的"翻译官"
在编程世界中,每种语言都有自己的特长。Java擅长企业应用,Python在数据分析领域表现出色,JavaScript则是网页开发的首选。但当我们想要在一个项目中同时使用多种语言时,传统方法往往需要在不同的开发环境之间来回切换,既麻烦又容易出错。什么是微语言
芝士年糕 芝士年糕
3年前
更改配置本地host地址
Hosts是一个没有扩展名的系统文件,主要作用是定义IP地址和主机名的映射关系,就是将一些常用的域名网址与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,如果找到,系统会立即打开对应网页,若没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析,若发现是被屏蔽
程序员小五 程序员小五
2年前
融云 IM SDK 国际化支持程度如何?
融云IMSDK默认支持三种语言,简体中文,英语,阿拉伯语,系统设置为对应语言后,SDK默认展示为对应语言。其他语言变体需要客户端单独适配。IMKitSDK增加本地化语言问题描述应用程序集成了AndroidIMKit,需要支持多语言。分析(根因分析、需求分析
大模型助力国际术语专业化,前后联动实现所见即所得
一、现状问题国际系统当前的多语言是国际业务的普遍特点,仅仅仓储管理系统,当前系统语言种类已经达到了九种,并且随着业务的开展还在不断的扩展,现有的国际系统支持的语言有中文、英语、日语、韩语、葡萄牙语、西班牙语、法语、德语、越南语。其中每个语言包的词条都有上万
程序员小五 程序员小五
1年前
融云 IM 干货丨私有云IMKit支持哪些国家的语言?
私有云IMKit支持以下国家的语言:默认支持的语言简体中文(zhCN)英语(enUS)阿拉伯语(ar)其他语言支持除了上述默认支持的语言外,IMKit还支持通过客户端单独适配其他语言。例如,可以通过以下步骤添加日语支持:1.创建Localizations:
石勇
石勇
Lv1
射人先射马,擒贼先擒王。
文章
5
粉丝
0
获赞
0