You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
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;
|
|
|