UNPKG

@cometchat/chat-uikit-react-native

Version:

Ready-to-use Chat UI Components for React Native

99 lines (78 loc) 2.73 kB
import de from './resources/de/translation.json'; import en from './resources/en/translation.json'; import es from './resources/es/translation.json'; import fr from './resources/fr/translation.json'; import hi from './resources/hi/translation.json'; import hu from './resources/hu/translation.json'; import lt from './resources/lt/translation.json'; import ms from './resources/ms/translation.json'; import pt from './resources/pt/translation.json'; import ru from './resources/ru/translation.json'; import sv from './resources/sv/translation.json'; import zh from './resources/zh/translation.json'; import zhTw from './resources/zh-tw/translation.json'; import ja from './resources/ja/translation.json'; import ko from './resources/ko/translation.json'; import tr from './resources/tr/translation.json'; import nl from './resources/nl/translation.json'; import it from './resources/it/translation.json'; import { Language } from './type'; export type TranslationKey = keyof typeof en; const defaultTranslations = { de, en, es, fr, hi, hu, lt, ms, pt, ru, sv, zh, ja, ko, tr, nl, it, "zh-tw":zhTw, "en-IN" : en, "en-GB" : en, "en-US" : en, } as const; export type SupportedLanguage = keyof typeof defaultTranslations; export interface CustomTranslations { [languageCode: string]: { [key: string]: string; }; } export const translate = ( language: Language, key: string, customTranslations?: CustomTranslations, fallbackLanguage: Language = 'en' ): string => { if (customTranslations?.[language]?.[key]) { return customTranslations[language][key]; } const defaultTranslation: { [key: string]: string } = defaultTranslations[language as SupportedLanguage] as { [key: string]: string }; if (defaultTranslation && key in defaultTranslation) { return defaultTranslation[key]; } if (language !== fallbackLanguage && customTranslations?.[fallbackLanguage]?.[key]) { return customTranslations[fallbackLanguage][key]; } if (language !== fallbackLanguage) { const fallbackTranslation: { [key: string]: string } = defaultTranslations[fallbackLanguage as SupportedLanguage] as { [key: string]: string }; if (fallbackTranslation && key in fallbackTranslation) { return fallbackTranslation[key]; } } console.warn(`Missing translation for key: ${key} in language: ${language} and fallback: ${fallbackLanguage}`); return key; }; export const getAvailableLanguages = (): SupportedLanguage[] => { return Object.keys(defaultTranslations) as SupportedLanguage[]; }; export default defaultTranslations;