2019-03-27 08:49:29 +00:00
'use strict' ;
function convertToFake ( dict ) {
function convertValueToFakeLang ( str ) {
let from = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+\\|`~[{]};:'\",<.>/?" ;
let to = "ɐqɔpǝɟƃɥı ɾʞʅɯ uodbɹsʇnʌʍxʎz∀ԐↃᗡƎℲ⅁HIſ Ӽ⅂WNOԀÒᴚS⊥∩ɅM 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'
} ,
2019-03-27 08:49:29 +00:00
'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 ;