2021-04-16 12:43:46 +00:00
|
|
|
import { I18nManager } from 'react-native'
|
|
|
|
import i18n from 'i18n-js'
|
|
|
|
import moment from 'moment'
|
|
|
|
|
|
|
|
const changeListeners: Record<string, any> = {}
|
|
|
|
|
|
|
|
let allString: Record<string, any> = {}
|
|
|
|
|
|
|
|
let Strings: Record<string, any> = {}
|
|
|
|
let languageCode: string
|
|
|
|
|
2021-04-16 15:43:31 +00:00
|
|
|
/*
|
2021-04-16 13:12:30 +00:00
|
|
|
const isRTL: { [key: string]: boolean } = {
|
|
|
|
en: false,
|
|
|
|
sv: false,
|
2021-04-16 15:43:31 +00:00
|
|
|
}*/
|
2021-04-16 13:12:30 +00:00
|
|
|
|
2021-04-16 12:43:46 +00:00
|
|
|
export const LanguageService = {
|
|
|
|
get: () => Strings,
|
|
|
|
getLanguageCode: () => languageCode,
|
|
|
|
setAllData: ({ data }: { data: Record<string, any> }) => {
|
|
|
|
allString = data
|
|
|
|
},
|
|
|
|
seti18nConfig: ({ langCode }: { langCode: string }) => {
|
|
|
|
i18n.translations = { [langCode]: Strings }
|
|
|
|
i18n.locale = langCode
|
2021-04-16 15:43:31 +00:00
|
|
|
I18nManager.forceRTL(false)
|
|
|
|
|
2021-04-16 12:43:46 +00:00
|
|
|
moment.locale(langCode)
|
|
|
|
},
|
|
|
|
setLanguageCode: ({ langCode }: { langCode?: string }) => {
|
|
|
|
if (langCode && allString[langCode]) {
|
|
|
|
languageCode = langCode
|
|
|
|
Strings = allString[langCode]
|
|
|
|
} else {
|
|
|
|
const dataKeys = Object.keys(allString)
|
|
|
|
languageCode = dataKeys[0]
|
|
|
|
Strings = allString[languageCode]
|
|
|
|
}
|
|
|
|
Object.keys(changeListeners).forEach((k) => {
|
|
|
|
changeListeners[k](langCode)
|
|
|
|
})
|
|
|
|
if (langCode) {
|
|
|
|
i18n.translations = { [langCode]: Strings }
|
|
|
|
i18n.locale = langCode
|
|
|
|
}
|
|
|
|
return Strings
|
|
|
|
},
|
|
|
|
|
|
|
|
// @ts-expect-error Fix later
|
|
|
|
onChange: ({ key }: { key: string }, cb) => {
|
|
|
|
// @ts-expect-error Fix later
|
|
|
|
changeListeners[`${key}`] = (langCode) => cb(langCode)
|
|
|
|
},
|
|
|
|
}
|