62a4b1ded1
(cherry picked from commit 7414815b06
)
81 lines
2.3 KiB
JavaScript
81 lines
2.3 KiB
JavaScript
'use strict';
|
||
|
||
function convertToFake(dict) {
|
||
function convertValueToFakeLang(str) {
|
||
let from = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+\\|`~[{]};:'\",<.>/?";
|
||
let to = "ɐqɔpǝɟƃɥıɾʞʅɯuodbɹsʇnʌʍxʎz∀ԐↃᗡƎℲ⅁HIſӼ⅂WNOԀÒᴚS⊥∩ɅMX⅄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'
|
||
},
|
||
'pt-BR': {
|
||
getShortLabel: t => 'BR',
|
||
getLabel: t => 'Português',
|
||
longCode: 'pt-BR'
|
||
},
|
||
'de-DE': {
|
||
getShortLabel: t => 'DE',
|
||
getLabel: t => 'Deutsch',
|
||
longCode: 'de-DE'
|
||
},
|
||
'fr-FR': {
|
||
getShortLabel: t => 'FR',
|
||
getLabel: t => 'Francais',
|
||
longCode: 'fr-FR'
|
||
},
|
||
'fk-FK': {
|
||
getShortLabel: t => 'FK',
|
||
getLabel: t => 'Fake',
|
||
longCode: 'fk-FK'
|
||
}
|
||
}
|
||
|
||
function getLang(lng) {
|
||
return langCodes[lng];
|
||
}
|
||
|
||
module.exports.convertToFake = convertToFake;
|
||
module.exports.getLang = getLang;
|