缺少翻译时禁用 i18next 回退到“父”键

问题描述 投票:0回答:0

我正在做一个使用

i18next
react-i18next
i18next-http-backend
的项目。有两个命名空间:common 是存储在应用程序中的翻译,而 db 是从后端获取的。初始化看起来像这样:

i18n
  .use(LanguageDetector)
  .use(HttpBackend)
  .use(initReactI18next)
  .init({
    react: {
      useSuspense: false,
    },
    fallbackLng: (code) => getLanguageCode(code),
    ns: ["common", "db"],
    defaultNS: "common",
    fallbackNS: false,
    lowerCaseLng: true,
    cleanCode: true,
    debug: Settings.DEBUG_I18NEXT,
    resources,
    backend: {
      loadPath: `${Settings.API_BASE_HOST}/admin/api/translations/{{lng}}.json`,
    },
  })
  .then(() => i18n.reloadResources(null, ["db"], () => {}));

问题是,当我有两个数据库键,例如

kp.key
kp.key.subkey
,其中第一个有所选语言的翻译,但第二个没有,
t("kp.key.subkey")
被翻译成
kp.key
的翻译而不是返回它自己的默认值(键,空字符串或其他..)

我怎样才能让它不这样做?!?!?我觉得我已经弄乱了这里找到的所有可能的选项:https://www.i18next.com/overview/configuration-options 没有任何运气。使问题复杂化的一件事是,共同的翻译是嵌套的 JSON 结构,而数据库键作为平面 JSON 对象返回,键名是通常使用“.”的字符串。作为分隔符,但现在改变这个有点晚了..

reactjs internationalization i18next react-i18next i18next-http-backend
© www.soinside.com 2019 - 2024. All rights reserved.