mailtrain/shared/langs.js

72 lines
2.1 KiB
JavaScript
Raw Normal View History

'use strict';
function convertToFake(dict) {
function convertValueToFakeLang(str) {
let from = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+\\|`~[{]};:'\",<.>/?";
let to = "ɐqɔpǝɟƃɥıɾʞʅɯuodbɹsʇnʌʍxʎz∀ԐↃᗡƎℲ⅁HIſӼ⅂WNOԀÒᴚS⊥∩ɅX⅄Z0123456789¡@#$%ᵥ⅋⁎()-_=+\\|,~[{]};:,„´<.>/¿";
return str.replace(/(\{\{[^\}]+\}\}|%s)/g, '\x00\x04$1\x00').split('\x00').map(c => {
if (c.charAt(0) === '\x04') {
return c;
}
let r = '';
for (let i = 0, len = c.length; i < len; i++) {
let pos = from.indexOf(c.charAt(i));
if (pos < 0) {
r += c.charAt(i);
} else {
r += to.charAt(pos);
}
}
return r;
}).join('\x00').replace(/[\x00\x04]/g, '');
}
function _convertToFake(dict, fakeDict) {
for (const key in dict) {
const val = dict[key];
if (typeof val === 'string') {
fakeDict[key] = convertValueToFakeLang(val);
} else {
fakeDict[key] = _convertToFake(val, {});
}
}
return fakeDict;
}
return _convertToFake(dict, {});
}
// The langugage labels below are intentionally not localized so that they are always native in the langugae of their speaker (regardless of the currently selected language)
const langCodes = {
'en-US': {
getShortLabel: t => 'EN',
getLabel: t => 'English',
longCode: 'en-US'
},
'es-ES': {
getShortLabel: t => 'ES',
getLabel: t => 'Español',
longCode: 'es-ES'
},
2019-05-06 13:14:52 +00:00
'pt-BR': {
getShortLabel: t => 'BR',
getLabel: t => 'Português',
longCode: 'pt-BR'
},
'fk-FK': {
getShortLabel: t => 'FK',
getLabel: t => 'Fake',
longCode: 'fk-FK'
}
}
function getLang(lng) {
return langCodes[lng];
}
module.exports.convertToFake = convertToFake;
2019-05-06 13:14:52 +00:00
module.exports.getLang = getLang;