i18n 在 jq 中的多语言实现方式

1 篇文章 0 订阅

1.原生JS实现多语言

html:      
<section class="table_sec">
             <h1 id="locale">en</h1>
                <h3 data-trans="js_gloTitle">你好</h3>
                <h3 data-trans="js_m">这是原生JS 实现的多语言!</h3> 
        </section>

JavaScript

<script type="text/javascript">
window.global_lan = 'zh';
// 获取对应的json 对象
var getTranslate = null;
// 改变对应的json 对象
var setTranslate = function (lang) {
    var lanObj;
    lanObj = {
        zh: {
            js_gloTitle: "你好",
            js_m: "这是原生JS 实现的多语言!",
        },
        en: {
            js_gloTitle: "Hello",
            js_m: "This is a multi-language native JS implementation!", 
        }
    }[/^zh/.test(lang) ? "zh" : "en"];
    // 设置其值
    getTranslate = function (lang) {
        return lanObj[lang] || lang
    }
};
$(function () {
    (function e() {

        window.global_lan = localStorage.language || window.navigator.language;
        setTranslate(global_lan);//设置默认语言
        var t = /^zh/.test(global_lan);
        $("#locale").text(t ? "en" : "cn");
        // 获取所有需要翻译的结构化数据
        var r = $("[data-trans]");
        console.log(getTranslate('js_gloTitle'))
        Array.prototype.forEach.call(r, function (e) {
            var attrName = e.getAttribute("data-trans");//获取需要设置多语言的标签
            e.textContent = getTranslate(attrName);//设置语言
            console.log(attrName)
            console.log(getTranslate(attrName))
        })
        // 手动切换语言 en or zh
        $("#locale").off('click').on("click", function () {
            localStorage.setItem("language", t ? "en" : "zh");
            setTranslate(global_lan);
            e();
        });
    })()
});
 
 </script>

 

2.I18n插件实现多语言

引入文件

<script src="./js/jquery-2.1.1.min.js"></script>         
<!-- 加载语言包文件 -->
<script src="./js/jquery.i18n.properties-min-1.0.9.js"></script>

语言包目录:
I18N文件夹

html:


<li><a href="obout.html#services" data-lang="nav_about_serv">SERVICES</a></li>
<li><a href="obout.html#micro_influ" data-lang="nav_micro_influ">MICRO-INFLUENCERS</a></li>
<li><a href="obout.html#our_clients" data-lang="nav_our_clients">OUR CLIENTS</a></li>

 

JS:

// 语言包
    loadProperties();  
    function loadProperties(langType) { 
        var langType=langType||'en';
         $.i18n.properties({  
             name:'strings',    //属性文件名     命名格式: 文件名_国家代号.properties
             path:'./i18n/',   //注意这里路径是你属性文件的所在文件夹
             mode:'map',
             language:langType,     //这就是国家代号 name+language刚好组成属性文件名:strings+zh -> strings_zh.properties
             callback:function(){  
                $("[data-lang]").each(function(){  
            

                    $(this).html($.i18n.prop($(this).data("lang")));  
                 
                });  
             }  
         });  
    } 
    // 切换语言
    // $("#lang").on('change',function(){
    //     sessionStorage.setItem("langType",$(this).val());
    //     loadProperties($(this).val());
    // });
    $("#l_cn").click(function(){
        console.log("cn")
        sessionStorage.setItem("langType",'cn');
        loadProperties('cn');
    })
    $("#l_en").click(function(){
        console.log("langType","en")
        sessionStorage.setItem("langType",'en');
        loadProperties('en');
    })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值