import i18n from "i18next"; import LanguageDetector from "i18next-browser-languagedetector"; import { initReactI18next } from "react-i18next"; import { getStringItem } from "@/utils/storage"; import en_US from "./lang/en_US"; import zh_CN from "./lang/zh_CN"; import { LocalEnum, StorageEnum } from "#/enum"; const defaultLng = getStringItem(StorageEnum.I18N) || (LocalEnum.en_US as string); i18n // detect user language // learn more: https://github.com/i18next/i18next-browser-languageDetector .use(LanguageDetector) // pass the i18n instance to react-i18next. .use(initReactI18next) // init i18next // for all options read: https://www.i18next.com/overview/configuration-options .init({ debug: true, nsSeparator: false, // 禁用冒号作为命名空间分隔符,abp中很多这样的 lng: defaultLng, // localstorage -> i18nextLng: en-US fallbackLng: LocalEnum.en_US, interpolation: { escapeValue: false, // not needed for react as it escapes by default prefix: "{", suffix: "}", }, resources: { en_US: { translation: en_US }, zh_CN: { translation: zh_CN }, }, }); export default i18n; export const { t } = i18n;