multi-lang-js

javascript multilingual loader, combined with vue and other frameworks, configuring the txt file language package.

Usage no npm install needed!

<script type="module">
  import multiLangJs from 'https://cdn.skypack.dev/multi-lang-js';
</script>

README

前端多语言(json文件)加载器

script引入:

  • https://xxxx/js/multi-lang.js

npm安装

  • npm install multi-lang-js --save

使用示例


<script src="/assets/js/vue.min.js"></script>
<script src="https://xxxx/js/multi-lang.js"></script>
<script>
var vue_app_body = new Vue({
        el: '#bigo_lang_e',
        data: {
                langContent:{
                }
        }
});
// 1:
var multiLang = new MultiLang() 
//2:import multiLang from 'multi-lang-js';

multiLang.init({
    path: 'css/',
    dataType:'json',
    name: {
        'en': 'lang_en.txt',
        'cn': 'lang_cn.txt',
        'tw': 'lang_cn.txt',
        'th': 'lang_th.txt',
        'vn': 'lang_vn.txt',
        'ru': 'lang_ru.txt',
        'ko': 'lang_ko.txt',
        'id': 'lang_id.txt'
    },
    callback: function(data, langName){
        vue_app_body.langContent = data;
        // 第二个参数推荐不再使用,为了兼容而存在。返回的是浏览器语言名。如 cn
        // 如需获取语言相关。请用 this.appLang 等。请看其3个语言相关属性。
    }
});
</script>

对象multiLang,有3个语言相关属性

属性名 类型 说明
appLang str 对象初始化即可获得,如:cn
appLangString str 对象初始化即可获得,如:zh-cn
packageLang str init()之后获得,表示加载的语言包。如 vn

multiLang.init() 初始化参数说明

参数名 类型 说明
path str 翻译文本的相对路径,这里我把所有翻译文本放到css文件夹下
dataType str 值为 txt 或者json。可忽略此参数,默认为json,值为txt时,则返回的是txt文本
name obj 各个语言对应加载的翻译文本,属性名不可改,对应的文本名字可以改
callback fun 回调的第一个参数是加载到的json(或者文本)数据,该函数中this指向new出的对象

multiLang.setLang(langname,callback) 设置语言 **如果你觉得multiLang.setLang 使用麻烦,也可以:localStorage.lang=langname,这种写法 ** **注意:设置语言,会让全站语言都立马改动,demo可参考github上的页面。开多个页签试试 **

参数名 类型 说明
langname str 必须设置,你要设置的语言名
callback function 可选的回调函数

测试支持 初始化判断何种语言:先查浏览器地址栏参数有lang 参数,其次查 localStorage.lang的值,最后看浏览器语言

所以为了测试预览,你可以在地址后带入参数,lang=en(你想要的语言)。

说明 如果你配置的name中,没有(比如当前埃及用户访问),则尝试使用en(英文),如果英文也没有配置,则使用配置的“第一个”语言包。

1.3.0改动 去除 从localstorage获取语言码的逻辑

1.3.1改动 增加 bn 孟加拉语 ne 尼泊尔语两种 多语言

1.3.2 增加阿语标识ar-er , 增加柬埔寨语的语言选择

1.3.3 增加多语言支持 ['gu', 'gu,gu-in'], // 古吉拉特语
['kn', 'kn,kn-in'], // 埃纳德语
['mr', 'mr,mr-in'], // 马拉地语
['pa', 'pa,pa-in'], // 旁遮普语
['ta', 'ta,ta-in'] // 泰米尔语

1.3.4 增加多语言支持 ['te', 'te,te-in'], //泰卢固语

1.3.5 增加多语言支持 ['fil', 'fil-PH'], //菲律宾语

1.3.6 修正菲律宾语的支持
['fil', 'fil-ph'], //菲律宾语
增加意大利语的支持
['it','it,it-ch,it-it'], //意大利语

1.3.7
修改输出变量名称,防止某些包打包工具会认为MultiLang 重复声明
var multiLangInstacne = new MultiLang();
export default multiLangInstacne

1.3.8 增加多语言支持 ['uk', 'uk,uk-ua'], //乌克兰语
['be', 'be,be-by'], //白俄罗斯语
['kk', 'kk,kk-kz'], //哈萨克语

1.3.9 忽略

1.3.10 修复bug

1.3.11 增加初始化参数 queryLang,
如果设置了该值,取多语言将会从url上获取该参数作为语言码
eg
multiLang.init({ queryLang: 't' })
若访问 页面index?t=ar 则会映射到ar阿拉伯语
若访问 index?t=ar&lang=en 依然会映射到ar阿拉伯语,因为queryLang优先级高于默认的"lang"参数
若访问 index?lang=en 映射到英语,因为t参数缺失,使用默认参数'lang'

1.3.12
--增加多语言
['fa', 'fa,fa-ir'], //波斯语
['da', 'da,da-dk'], //丹麦语
['ml', 'ml,ml-in'], //马拉雅拉姆语
['or', 'or,or-in'], //奥里雅语
--将queryLang获取的参数自动转为小写
eg.
multiLang.init({ queryLang: 't' })
若访问页面 index?t=AR 将会转化为ar再做语言码映射

1.3.13
--增加方法strMapToLang
传入浏览器语言参数,返回对应的语言码
eg
multiLang.strMapToLang('zh-hans') //cn multiLang.strMapToLang('vi-vn') //vn

1.3.14
完善柬埔寨语(高棉语)的浏览器标识
['kh', 'kh,km-kh']

1.3.15
--增加多语言
['as', 'as-in'],//阿萨姆语
['ka', 'ka-ge'],//格鲁吉亚语
['sa','sa-in'],//梵语
['uz','uz-latn,uz-latn-uz,uz-cyrl,uz-cyrl-uz'],//乌兹别克语

1.3.16
--多语言增加同名标识 如 ['as', 'as,as-in']

1.3.17 --增加西语的标识 es-us