美文网首页前端开发那些事儿
jq中引入i18n - 实现网站多语言功能

jq中引入i18n - 实现网站多语言功能

作者: __鹿__ | 来源:发表于2020-07-09 11:39 被阅读0次

    目的:在纯js、jq的项目中引入i18n 。实现网站的多语言切换。

    一、项目结构

    js文件夹:在项目中引入jQuery,因为是基于JQuery的。引入jQuery版本的i18n,后面有下载地址。
    lang文件夹:里面存放自定义的语言包。
    index.html : 案例demo


    image.png

    二、下载 i18n

    下面是github地址,克隆下来,会得到一个文件夹。
    https://github.com/jquery-i18n-properties/jquery-i18n-properties

    image.png

    我们这里只需要把 jquery.i18n.properties.js 文件拷贝到我们的项目中即可。

    三、新建语言包 - lang文件夹

    1、文件夹名是自己取的名字(lang),随便取什么都行,但是后面引入时,要一致。
    2、在文件夹下面手动新建你所需要的语言包,我这边是中文和英文。(注意:文件名要规范,文件名_国家代号.properties。例如:strings_en.properties)


    image.png
    image.png

    四、html代码

    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>国际化</title>
        <script src="./js/jquery-3.4.1.js"></script>
        <script src="./js/jquery.i18n.properties.js"></script>
    </head>
    
    <body>
        <button id='btn' data-locale="BtnChange">切换语言</button>
        <div>
            <p data-locale="Login">登录</p>
            <p data-locale="UserName">用户名:</p>
            <p data-locale="Password">密码:</p>
        </div>
    
    
        <script type="text/javascript">
            isEng = true
            btn.onclick = function () {
                if (!isEng) {
                    loadProperties('en');
                } else {
                    loadProperties('zh');
                }
                isEng = !isEng
    
            }
            function loadProperties(lang) {
                $.i18n.properties({
                    name: 'strings',  //资源文件名称 , 命名格式: 文件名_国家代号.properties
                    path: 'lang/',    //资源文件路径,注意这里路径是你属性文件的所在文件夹,可以自定义。
                    mode: 'map',     //用 Map 的方式使用资源文件中的值
                    language: lang,  //这就是国家代号 name+language刚好组成属性文件名:strings+zh -> strings_zh.properties
                    callback: function () {
                        $("[data-locale]").each(function () {
                            console.log($(this).data("locale"));
                            $(this).html($.i18n.prop($(this).data("locale")));
    
                        });
                    }
                });
            }
            loadProperties('en');//调用
    
    
        </script>
    </body>
    
    </html>
    

    代码说明:
    1、切换语言按钮点击时,isEng取反,这样可以实现一个按钮两个种功能。
    2、loadProperties()方法要调用。如果你想默认中文的话就传值 “zh” 即可。
    3、name:传值(strings_en.properties)中的 strings。
    4、path:传值 lang文件夹名,注意要加 / 。
    5、language:获取到的就是(strings_en.properties)中的 en。
    6、callback : 就是遍历data-locale 中的值,给对应的键名添加内容。

    以上就是全部代码。这样就可以实现,点击按钮切换不同的语言。

    相关文章

      网友评论

        本文标题:jq中引入i18n - 实现网站多语言功能

        本文链接:https://www.haomeiwen.com/subject/ajdjcktx.html