42 lines
1023 B
TypeScript
42 lines
1023 B
TypeScript
import i18nConfig from "@/i18nConfig"
|
|
import { createInstance } from "i18next"
|
|
import resourcesToBackend from "i18next-resources-to-backend"
|
|
import { initReactI18next } from "react-i18next/initReactI18next"
|
|
|
|
export default async function initTranslations(
|
|
locale: any,
|
|
namespaces: any,
|
|
i18nInstance?: any,
|
|
resources?: any
|
|
) {
|
|
i18nInstance = i18nInstance || createInstance()
|
|
|
|
i18nInstance.use(initReactI18next)
|
|
|
|
if (!resources) {
|
|
i18nInstance.use(
|
|
resourcesToBackend(
|
|
(language: string, namespace: string) =>
|
|
import(`/public/locales/${language}/${namespace}.json`)
|
|
)
|
|
)
|
|
}
|
|
|
|
await i18nInstance.init({
|
|
lng: locale,
|
|
resources,
|
|
fallbackLng: i18nConfig.defaultLocale,
|
|
supportedLngs: i18nConfig.locales,
|
|
defaultNS: namespaces[0],
|
|
fallbackNS: namespaces[0],
|
|
ns: namespaces,
|
|
preload: resources ? [] : i18nConfig.locales
|
|
})
|
|
|
|
return {
|
|
i18n: i18nInstance,
|
|
resources: i18nInstance.services.resourceStore.data,
|
|
t: i18nInstance.t
|
|
}
|
|
}
|