SkyGrass
SkyGrass
  • 发布:2016-02-03 17:20
  • 更新:2022-03-04 14:46
  • 阅读:14321

H5国际化的实现[基于i18n]

分类:MUI

要过年啦,客户的项目还没开始动工,客户就喊着要 客户端支持国际化,要中英文双语的。
....度娘....,果然还是有解决方案的。 依然是基于 jquery 的,学名:i18n
首先呢,还是加引用,可以是这样的。

<script src="//cdn.bootcss.com/jquery/3.0.0-beta1/jquery.min.js"></script>  
        <script type="text/javascript" src="js/jquery.i18n.properties-min-1.0.9.js"></script>

其次呢,Dom结构咯;这里我就简单的放了俩按钮,第一个是表现的,第二个用来点击触发改变用的;

<div class="mui-content">  
            <button id='btn'></button>  

            <button id='changelanguage'></button>  
        </div>  
最后呢,就是js代码了
``````javascript  
<script>  
            var lang = '';  
            $(function() {  
                lang = (jQuery.i18n.browserLang().substring(0, 2)); //默认从浏览器语言读取  
                jQuery.i18n.properties({  
                    name: 'strings',  
                    path: 'i18n/', //资源文件路径  
                    mode: 'map', //用Map的方式使用资源文件中的值  
                    language: lang,  
                    callback: function() { //加载成功后设置显示内容  
                        $('#btn').html($.i18n.prop('btn'));  
                        $('#changelanguage').html($.i18n.prop('changelanguage'));  
                    }  
                });  
            })  
            document.getElementById("changelanguage").addEventListener('tap', function() {  
                if ('zh' == lang) {  
                    lang = 'en';  
                } else {  
                    lang = 'zh';  
                }  
                jQuery.i18n.properties({  
                    name: 'strings',  
                    path: 'i18n/', //资源文件路径  
                    mode: 'map', //用Map的方式使用资源文件中的值  
                    language: lang,  
                    callback: function() { //加载成功后设置显示内容  
                        $('#btn').html($.i18n.prop('btn'));  
                        $('#changelanguage').html($.i18n.prop('changelanguage'));  
                    }  
                });  
            });  
        </script>

好了,上面都是页面上代码了,最最后就是对应的配置文件了,你不配置,代码怎么知道你的英文要先显示成什么中文呢??
只要指定要配置的id就行。比如上面的按钮的id是 btn,所以这里配置文件里 写btn;
没了。就这么多了,最后附上包

10 关注 分享
蔡繁荣 wenju ParetoOu llallen Float 凌晨两点半 j***@163.com 五叶神 w***@163.com 5***@qq.com

要回复文章请先登录注册

6***@163.com

6***@163.com

回复 1***@qq.com :
换了一个框架。这个问题IOS确实不兼容。我也没找到办法
2022-03-04 14:46
1***@qq.com

1***@qq.com

回复 6***@163.com :
请问大佬有解决没,我也碰到在ios中i18n调用无效
2022-03-02 16:42
6***@163.com

6***@163.com

回复 kangjie :
IOS你是怎么解决的?
2021-11-17 16:26
6***@163.com

6***@163.com

回复 kangjie :
老哥你的是怎么解决的IOS上显示不出来
2021-11-17 16:25
5***@qq.com

5***@qq.com

真诚的请教下, strings_zh.proges 这个文件,如果是不同页面的控件id相同是怎么处理的? 比如A页面有 id=btn,B页面也有 id=btn 啊,i18n 是怎么区分不同页面的 表示? A.btn ?
2021-05-13 19:37
kangjie

kangjie

使用hbuilder源码调试mui工程,使用i18n ios手机上居然无法识别国际化,android运行正常
2020-10-18 09:42
5***@qq.com

5***@qq.com

回复 Jay10447 :
$('.username').attr('placeholder', $.i18n.prop('usernameplaceholder'));
2020-07-24 16:04
5***@qq.com

5***@qq.com

请问,mui.alset 弹窗里面的内容怎么使用国际化????
2020-07-24 16:04
小夏君

小夏君

回复 以马内利CJ :
请教下 如何实现
2019-06-03 11:02
4***@qq.com

4***@qq.com

回复 以马内利CJ :
请问你遇到过mui.openwindow打开的页面就无法使用i18n吗?只能是首页才可以
2019-01-10 18:54