API 参考
useModernI18n
useModernI18n 是插件提供的 React Hook,用于在组件中访问国际化状态和操作。
返回值
基本用法
changeLanguage
切换语言时会依次执行:
- 更新 i18next 实例的语言
- 更新浏览器缓存(Cookie / LocalStorage,取决于
caches配置) - 更新 URL 路径前缀(如果启用了
localePathRedirect)
changeLanguage 是异步函数,使用时需要 await:
isResourcesReady
在自定义后端场景中,翻译资源需要异步加载,可以用 isResourcesReady 防止在资源未就绪时渲染:
isResourcesReady 会检查:i18n 实例是否已初始化、当前语言是否有资源正在加载、所有必需命名空间是否已加载完成。
I18nLink 组件
带语言前缀的路由链接组件。
Props
用法
Runtime 插件 API
i18n 插件会在 onBeforeRender 钩子的 context 上挂载 changeLanguage 和 i18nInstance,供其他 Runtime 插件使用:
注意事项:
- 确保 i18n 插件在使用
context.changeLanguage的插件之前注册 changeLanguage在服务端不会更新 URL 路径,需要配合路由插件或手动处理
类型定义
I18nInstance
插件使用的 i18next 实例类型(i18next i18n 类型的子集,仅列出插件实际使用的字段):
I18nSdkLoader
自定义后端加载函数的类型:
LanguageDetectorOptions
与 react-i18next 集成
插件完全兼容 react-i18next,两套 API 可以混用:
useTranslation(react-i18next):获取t()函数做翻译,这是最常用的 HookuseModernI18n(插件提供):获取语言切换、支持列表、资源加载状态等插件层面的状态
大多数组件只需要 useTranslation,只有涉及语言切换或需要检查加载状态时才需要 useModernI18n:
也可以通过 useModernI18n 获取 i18next 实例后直接调用 react-i18next 之外的能力: