blessing-skin-server/resources/assets/src/js/common/i18n.js
Pig Fang 846f29ef6d style(js): stricter eslint rules (#108)
* style(js): stricter eslint rules

* build: ignore .eslintignore
2017-12-29 23:28:11 +08:00

57 lines
1.1 KiB
JavaScript

'use strict';
$.locales = Object.create(null);
$.currentLocale = Object.create(null);
/**
* Load current selected language.
*
* @return void
*/
function loadLocales() {
for (const lang in $.locales) {
if (!isEmpty($.locales[lang])) {
$.currentLocale = $.locales[lang] || Object.create(null);
}
}
}
/**
* Translate according to given key.
*
* @param {string} key
* @param {dict} parameters
* @return {string}
*/
function trans(key, parameters = {}) {
if (isEmpty($.currentLocale)) {
loadLocales();
}
const segments = key.split('.');
let temp = $.currentLocale || {};
for (const i in segments) {
if (isEmpty(temp[segments[i]])) {
return key;
} else {
temp = temp[segments[i]];
}
}
for (const i in parameters) {
if (!isEmpty(parameters[i])) {
temp = temp.replace(':'+i, parameters[i]);
}
}
return temp;
}
if (process.env.NODE_ENV === 'test') {
module.exports = {
trans,
loadLocales,
};
}