Spaces:
Runtime error
Runtime error
import English from './languages/Eng'; | |
import Chinese from './languages/Zh'; | |
import Italy from './languages/It'; | |
import Portuguese from './languages/Br'; | |
import Spanish from './languages/Es'; | |
// === import additional language files here === // | |
// New method on String allow using "{\d}" placeholder for | |
// loading value dynamically. | |
interface String { | |
format(...replacements: string[]): string; | |
} | |
if (!String.prototype.format) { | |
String.prototype.format = function () { | |
var args = arguments; | |
return this.replace(/{(\d+)}/g, function (match, number) { | |
return typeof args[number] != 'undefined' ? args[number] : match; | |
}); | |
}; | |
} | |
// input: language code in string | |
// returns an object of translated strings in the language | |
export const getTranslations = (langCode: string) => { | |
if (langCode === 'en') { | |
return English; | |
} | |
if (langCode === 'cn') { | |
return Chinese; | |
} | |
if (langCode === 'it') { | |
return Italy; | |
} | |
if (langCode === 'Br') { | |
return Portuguese; | |
} | |
if (langCode === 'Es') { | |
return Spanish; | |
} | |
// === add conditionals here for additional languages here === // | |
return English; // default to English | |
}; | |
// input: language code in string & phrase key in string | |
// returns an corresponding phrase value in string | |
export const localize = (langCode: string, phraseKey: string, ...values: string[]) => { | |
const lang = getTranslations(langCode); | |
if (phraseKey in lang) { | |
return lang[phraseKey].format(...values); | |
} | |
if (phraseKey in English) { | |
// Fall back logic to cover untranslated phrases | |
return English[phraseKey].format(...values); | |
} | |
// In case the key is not defined, return empty instead of throw errors. | |
return ''; | |
}; |