欢迎来到代码驿站!

当前位置:首页 >

在一个js文件里配置多语言的一种思路

时间:2020-04-09 22:28:11|栏目:|点击:
目前大多数的思路是不同语言的js文件分开做,然后根据用户语言环境去加载对应的js文件。

这里介绍一种使用场景,在一个js文件里完成。可以打算支持多种语言(中文、日文、英文等),而且输出文字的地方也比较多,可能有上百条,中间也经常要拼接变量。

let lang_type = 2; // 获取语言类型,可以是 0,1,2

// 储存多语种文本
let xz_lang = { 
    // 属性名写成方便理解的文字。我用的中文,如果考虑和外国人协作,可以写成英文。
    // 在属性名前面加上下划线,和文本内容做出区别。
    // 按照固定顺序排列(如:中日英)
    // {}表示需要进行替换的部分
    '_过滤作品类型的按钮': [
        '排除指定类型的作品',
        'タイプでフィルタリングする',
        'Filter by works type'
    ],
    '_tag搜索任务开始': [
        '收藏数不低于{},向下抓取{}页',
        'ブックマークの数は{}ページ以上で、{}ページがクロールされます。',
        'The number of bookmarks is not less than {}, {} pages down to crawl.'
    ]
};

// 翻译程序
function translate(name) {
    let content = xz_lang[name][lang_type];
    if (arguments.length > 1) {        // 把占位符 {} 替换成传递的参数
        for (let i = 1; i < arguments.length; i++) {
            content = content.replace('{}', arguments[i]);
        }
    }
    return content;
}

// 测试
console.log(translate('_过滤作品类型的按钮'));
console.log(translate('_tag搜索任务开始',1000,1000));
其实想把所有文字都翻译,但由于语法结构问题变量的位置是未知的,可以参考模板渲染的思路。
例如:
var language = {
    'hello': [
        'hello,{val}!',
        '{val},コン!'
    ]
};
var lang = 0; // 当前英文

function translate (msgVariable, data, msg) {
    if (msg !== undefined) language[msgVariable].push(msg);
    return language[msgVariable][lang].replace('{val}', data);
}
var data = '张三';
var msg = translate('hello', data, '你好,{val}!');

var hello = {
    "cn" : "哈喽",
    "jp" : "こんにちは",
    "en" : "f**k you"
};

或者这样子,也是可以的:

//在页面初始化的时候判断当前的环境,然后直接设定key值就可以,比如说我现在是日语
var lang = "jp";
console.log(hello[lang]);
//拓展的话往对象里面加值就行了,比如说加韩文
var hello = {
    "cn" : "哈喽",
    "jp" : "こんにちは",
    "en" : "f**k you",
    "kr" : "为何不洗澡思密达"
};
lang = "kr";
console.log(hello[lang]);

上一篇:前端MD5加密:js-md5

栏    目:

下一篇:R语言ggplot2边框背景去除的实现

本文标题:在一个js文件里配置多语言的一种思路

本文地址:http://www.codeinn.net/misctech/2233.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有