如何初始化 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')