如何初始化 i18next
how to initialize i18next
我想通过 i18next
包
创建一个多语言应用程序
但是这个包不能正常工作
这里是 i18next
文件
import i18n from "i18next";
import Backend from "i18next-xhr-backend";
import LanguageDetector from "i18next-browser-languagedetector";
import { initReactI18next } from "react-i18next";
const fallbackLng = ["en"];
const availableLanguages = ["de", "en", "fr", "it"];
i18n
.use(Backend).use(LanguageDetector).use(initReactI18next).init({
fallbackLng,
debug: true,
whitelist: availableLanguages,
interpolation: {
escapeValue: false,
},
});
export default i18n;
这是我为 JSON
个文件创建文件夹的方式
这就是 JSON 文件的写入方式
{
"select": {
"1": "choisissez votre langue"
}
}
这是我尝试使用它的方式
const { t } = useTranslation();
{t("select.1")}
我认为您的 json 缺少翻译键是这样工作的:
translation: {"select": "My translation", "nextOne": "Another Translation"}
我的完整工作示例(在实际项目中):
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import locales from "./locales";
import { getLang } from "../helpers/language-helper";
i18n
.use(initReactI18next) // passes i18n down to react-i18next
.init({
resources: locales,
lng: getLang(),
fallbackLng: getLang(),
interpolation: {
escapeValue: false,
},
});
// 语言环境文件:
import en from "./en";
import ko from "./ko";
import ar from "./ar";
export default {
en,
ko,
ar,
};
// 翻译文件(以en为例):
export default {
translation: {
language: "EN",
kaitTitle: "Kait Solution",
commonValiation: {
htmlTagMessasge: "Html tags not allowed",
tryAgain: 'Something went wrong. Please try again',
requiredField: "This field is Required",
},
}
}
// 使用
t('commonValiation.htmlTagMessasge')
我想通过 i18next
包
但是这个包不能正常工作
这里是 i18next
文件
import i18n from "i18next";
import Backend from "i18next-xhr-backend";
import LanguageDetector from "i18next-browser-languagedetector";
import { initReactI18next } from "react-i18next";
const fallbackLng = ["en"];
const availableLanguages = ["de", "en", "fr", "it"];
i18n
.use(Backend).use(LanguageDetector).use(initReactI18next).init({
fallbackLng,
debug: true,
whitelist: availableLanguages,
interpolation: {
escapeValue: false,
},
});
export default i18n;
这是我为 JSON
个文件创建文件夹的方式
这就是 JSON 文件的写入方式
{
"select": {
"1": "choisissez votre langue"
}
}
这是我尝试使用它的方式
const { t } = useTranslation();
{t("select.1")}
我认为您的 json 缺少翻译键是这样工作的:
translation: {"select": "My translation", "nextOne": "Another Translation"}
我的完整工作示例(在实际项目中):
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import locales from "./locales";
import { getLang } from "../helpers/language-helper";
i18n
.use(initReactI18next) // passes i18n down to react-i18next
.init({
resources: locales,
lng: getLang(),
fallbackLng: getLang(),
interpolation: {
escapeValue: false,
},
});
// 语言环境文件:
import en from "./en";
import ko from "./ko";
import ar from "./ar";
export default {
en,
ko,
ar,
};
// 翻译文件(以en为例):
export default {
translation: {
language: "EN",
kaitTitle: "Kait Solution",
commonValiation: {
htmlTagMessasge: "Html tags not allowed",
tryAgain: 'Something went wrong. Please try again',
requiredField: "This field is Required",
},
}
}
// 使用
t('commonValiation.htmlTagMessasge')