skolplattformen-backup/packages/app/services/languageService.ts

73 lines
1.8 KiB
TypeScript
Raw Normal View History

import { I18nManager } from 'react-native'
import i18n from 'i18n-js'
import moment from 'moment'
import 'moment/locale/ar'
import 'moment/locale/de'
import 'moment/locale/pl'
import 'moment/locale/sv'
const changeListeners: Record<string, any> = {}
let allString: Record<string, any> = {}
let Strings: Record<string, any> = {}
let languageCode: string
2021-04-16 20:07:42 +00:00
const rtlList: { [key: string]: boolean } = {
2021-04-16 13:12:30 +00:00
en: false,
de: false,
2021-04-18 13:06:42 +00:00
pl: false,
2021-04-16 13:12:30 +00:00
sv: false,
2021-04-16 20:07:42 +00:00
so: false,
ar: true,
}
2021-04-19 09:13:34 +00:00
export const isRTL = (langCode: string) => {
if (!rtlList.hasOwnProperty(langCode)) {
2021-04-16 20:07:42 +00:00
return false
}
return rtlList[langCode]
}
2021-04-16 13:12:30 +00:00
export const LanguageService = {
get: () => Strings,
getLanguageCode: () => languageCode,
setAllData: ({ data }: { data: Record<string, any> }) => {
allString = data
},
seti18nConfig: ({ langCode }: { langCode?: string }) => {
if (langCode) {
i18n.translations = { [langCode]: Strings }
i18n.locale = langCode
2021-04-16 20:07:42 +00:00
I18nManager.forceRTL(isRTL(langCode))
}
2021-04-28 13:20:44 +00:00
i18n.fallbacks = true
i18n.defaultLocale = 'sv'
i18n.missingBehaviour = 'guess'
2021-04-16 15:43:31 +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)
})
return Strings
},
// @ts-expect-error Fix later, Typecast callback
onChange: ({ key }: { key: string }, cb) => {
// @ts-expect-error Fix later, Typecast callback
changeListeners[`${key}`] = (langCode) => cb(langCode)
},
}
2021-04-28 13:20:44 +00:00
export const i18nService = i18n