首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于状态更新react-i18next语言?

如何基于状态更新react-i18next语言?
EN

Stack Overflow用户
提问于 2021-01-31 20:42:09
回答 1查看 218关注 0票数 0

我知道如何更改react-i18next语言,但此更改仅对当前会话或设备有效。

因此,在更改区域设置时,我首先更新i18next以提供即时的ux反馈,然后进行api调用以更新数据库中的用户配置文件。

代码语言:javascript
复制
export async function useLocale(locale: Locale) {
  const { i18n } = useTranslation();
  const { updateProfile }= userService();
  i18n.changeLanguage(locale);
  return updateProfile({locale})
}

现在,如何确保i18next在下一次连接时从用户状态获取区域设置?我的用户状态存储在zustand中:

代码语言:javascript
复制
export const userStore = create(() => ({ name: "Joe", locale: "en" }));

i18nconfig为:

代码语言:javascript
复制
const languages = {
  EN: "en",
  FR: "fr",
};

const langDetectorOptions = {
  order: ["cookie", "localStorage", "navigator"],
  lookupCookie: "locale",
  lookupLocalStorage: "locale",
  caches: ["localStorage", "cookie"],
  excludeCacheFor: ["cimode"],
  checkWhitelist: true,
};

const resources = {
  en: { translation: en },
  fr: { translation: fr },
};

export default i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    resources,
    lng: languages.EN,
    detection: langDetectorOptions,
    fallbackLng: languages.EN,
    keySeparator: ".",
    whitelist: [languages.EN, languages.FR],
    interpolation: { escapeValue: false },
  });

EN

回答 1

Stack Overflow用户

发布于 2021-02-04 22:07:01

您可能需要实现一个自定义语言检测器:https://www.i18next.com/misc/creating-own-plugins.html#languagedetector

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65979189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档