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}`) } }