grid-apps-cmms/src/kiri/lang.js

80 lines
2.3 KiB
JavaScript
Raw Normal View History

2020-06-03 22:39:30 -04:00
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
2019-04-11 10:47:58 -04:00
"use strict";
(function() {
if (self.kiri.lang) return;
2020-06-03 22:39:30 -04:00
const KIRI = self.kiri, LANG = self.kiri.lang = { current: {} };
2021-02-27 23:02:59 -05:00
const KDFL = 'en-us';
2020-06-03 22:39:30 -04:00
let lset = navigator.language.toLocaleLowerCase();
2021-02-27 23:02:59 -05:00
LANG.map = function(key) {
if (!key) {
return KDFL;
}
let tok = key.split('-');
switch (tok[0]) {
2021-03-06 12:21:25 -05:00
case 'da': return 'da-dk';
case 'de': return 'de-de';
case 'en': return 'en-us';
2021-03-25 09:32:54 -04:00
case 'es': return 'es-es';
2021-03-06 12:21:25 -05:00
case 'fr': return 'fr-fr';
case 'pl': return 'pl-pl';
2021-02-27 23:02:59 -05:00
}
return KDFL;
};
2020-03-18 14:09:38 -04:00
LANG.get = function() {
return lset;
};
LANG.set = function() {
let map, key, keys = [...arguments];
2020-03-18 14:09:38 -04:00
// provide default if none given
if (keys.length === 0) {
keys = [lset, lset.split('-')[0], 'en'];
2020-03-18 14:09:38 -04:00
}
for (let i=0; i<keys.length; i++)
{
key = keys[i]
if (!(map = LANG[key])) {
continue;
}
2020-03-18 14:09:38 -04:00
lset = key;
let missing = [];
let invalid = [];
2019-04-11 10:47:58 -04:00
// default to EN values when missing
Object.keys(LANG.en).forEach(key => {
if (!map[key]) {
map[key] = LANG.en[key];
missing.push(key);
2019-04-11 10:47:58 -04:00
}
});
// update current map from chosen map
Object.keys(map).forEach(key => {
if (LANG.en[key]) {
let val = map[key];
// turn arrays into newline separated strings
if (Array.isArray(val)) {
val = val.join('\n');
}
LANG.current[key] = val;
} else {
invalid.push(key);
}
2019-04-11 10:47:58 -04:00
});
if (missing.length) {
console.log(`language map "${key}" missing keys [${missing.length}]: ${missing.join(', ')}`);
}
if (invalid.length) {
console.log(`language map "${key}" invalid keys [${invalid.length}]: ${invalid.join(', ')}`);
}
return key;
2019-04-11 10:47:58 -04:00
}
return undefined;
2019-04-11 10:47:58 -04:00
}
})();