LibreChat / client /src /localization /Translation.tsx
N.Achyuth Reddy
Upload 683 files
9705b6c
import English from './languages/Eng';
import Chinese from './languages/Zh';
import German from './languages/De';
import Italian from './languages/It';
import Polish from './languages/Pl';
import Portuguese from './languages/Br';
import Spanish from './languages/Es';
import French from './languages/Fr';
import Russian from './languages/Ru';
import Japanese from './languages/Jp';
import Swedish from './languages/Sv';
import Korean from './languages/Ko';
import TraditionalChinese from './languages/ZhTraditional';
// === import additional language files here === //
const languageMap: { [key: string]: unknown } = {
'en-US': English,
'zh-CN': Chinese,
'de-DE': German,
'es-ES': Spanish,
'fr-FR': French,
'it-IT': Italian,
'pl-PL': Polish,
'pt-BR': Portuguese,
'ru-RU': Russian,
'ja-JP': Japanese,
'sv-SE': Swedish,
'ko-KR': Korean,
'zh-TC': TraditionalChinese,
// Add additional language mappings here
};
// New method on String allow using "{\d}" placeholder for
// loading value dynamically.
declare global {
interface String {
format(...replacements: string[]): string;
}
}
if (!String.prototype.format) {
String.prototype.format = function (...args: string[]) {
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) => {
const language = languageMap[langCode] || English;
return language;
};
// 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);
const phrase = lang[phraseKey] || English[phraseKey] || '';
return phrase.format(...values);
};