2021-12-12 17:15:24 +08:00

69 lines
2.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module.exports = {
locale: 'en',
locales: {},
registerLocale(locales) {
this.locales = locales
},
setLocale(code) {
for (const key in this.locales) {
if (key.toLowerCase() == code.toLowerCase() ||
key.toLowerCase() == code.toLowerCase()) {
this.locale = key;
break;
}
}
},
/**
* 返回带(或不带)参数的类型的翻译结果
* @param {string} key, /util/language/en.js 中的键名,如 "curslide"
* @param {object} data, 传入的参数,如 {num: 123}
* @returns {string}
*
* @desc 如:"activeno": "当前学生{activeno}位",
* activeno 为 key可以输入data {activeno: 15}
* 返回:"当前学生15位"
*/
_(key, data) {
let locale = this.locale
let locales = this.locales
let hasKey = locale && locales[locale] && locales[locale].content[key]
if (hasKey) {
key = locales[locale].content[key]
// let res = key.replace(/\{[\s\w]+\}/g, x => {
// x = x.substring(1, x.length - 1).trim()
// return data[x];
// })
return key
}
throw new Error(`语言处理错误${key}`)
},
/**
* 返回二选一类型的翻译结果
* @param {string} key, /util/language/en.js 中的键名,如 "curslide"
* @param {object} data, 传入的参数,如 {first: true} 选择前面的
* @returns {string}
*
* @desc 如:"sendprob": "Send | Check",
* sendprob 为 key可以输入data {first: true}
* 返回:"Send"
*/
_b(key, data) {
let locale = this.locale
let locales = this.locales
let hasKey = locale && locales[locale] && locales[locale][key]
if (hasKey) {
key = locales[locale][key]
let res = key.split('|')[data.first ? 0 : 1].trim()
return res
}
throw new Error(`语言处理错误${key}`)
}
}