* add japanese to list of languages * add japanese translations * change `jp` to `ja` * minor changes to Japanese translation * minor changes to Japanese translation * update japanese strings with feedback * Update languages.ts * Extract translations * Gitignore new compiled file * allow switching to japanese --------- Co-authored-by: Jake Gold <jake@blueskyweb.xyz> Co-authored-by: Eric Bailey <git@esb.lol>
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import {useEffect} from 'react'
|
|
import {i18n} from '@lingui/core'
|
|
|
|
import {useLanguagePrefs} from '#/state/preferences'
|
|
import {messages as messagesEn} from '#/locale/locales/en/messages'
|
|
import {messages as messagesHi} from '#/locale/locales/hi/messages'
|
|
import {messages as messagesJa} from '#/locale/locales/ja/messages'
|
|
import {sanitizeAppLanguageSetting} from '#/locale/helpers'
|
|
import {AppLanguage} from '#/locale/languages'
|
|
|
|
/**
|
|
* We do a dynamic import of just the catalog that we need
|
|
*/
|
|
export async function dynamicActivate(locale: AppLanguage) {
|
|
switch (locale) {
|
|
case AppLanguage.hi: {
|
|
i18n.loadAndActivate({locale, messages: messagesHi})
|
|
break
|
|
}
|
|
case AppLanguage.ja: {
|
|
i18n.loadAndActivate({locale, messages: messagesJa})
|
|
break
|
|
}
|
|
default: {
|
|
i18n.loadAndActivate({locale, messages: messagesEn})
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function useLocaleLanguage() {
|
|
const {appLanguage} = useLanguagePrefs()
|
|
useEffect(() => {
|
|
dynamicActivate(sanitizeAppLanguageSetting(appLanguage))
|
|
}, [appLanguage])
|
|
}
|