API 参考
useModernI18n Hook
useModernI18n 是插件提供的 React Hook,用于在组件中访问国际化功能。
返回值说明
使用示例
changeLanguage 方法
changeLanguage 方法用于切换语言,它会:
- 更新 i18next 实例的语言
- 更新浏览器缓存(Cookie/LocalStorage)
- 更新 URL 路径(如果启用
localePathRedirect)
changeLanguage 是异步函数,返回 Promise。
语言支持检查
isLanguageSupported 用于检查某个语言是否在支持的语言列表中:
资源加载状态
isResourcesReady 指示当前语言的翻译资源是否已加载完成并可以使用。这在使用了 SDK 后端动态加载资源时特别有用。
使用场景:
- 在资源加载时显示加载状态
- 在资源准备好之前阻止渲染依赖翻译的内容
- 优雅地处理资源加载错误
isResourcesReady 会自动检查:
- i18n 实例是否已初始化
- 当前语言是否有资源正在加载中(仅 SDK 后端)
- 当前语言的所有必需命名空间是否已在 store 中加载完成
I18nLink 组件
I18nLink 组件用于创建带语言前缀的链接。
Props 说明
使用示例
Runtime 插件 API
在 Runtime 插件的 onBeforeRender 钩子中,可以通过 context.changeLanguage 方法修改语言。这对于需要根据请求信息(如用户偏好、地理位置等)动态设置语言的场景非常有用。
context.changeLanguage
在 onBeforeRender 钩子中,i18n 插件会在 context 上添加 changeLanguage 方法,供其他 Runtime 插件使用。
类型定义:
使用示例
注意事项
-
执行顺序:确保 i18n 插件在其他使用
changeLanguage的插件之前注册,这样context.changeLanguage才会可用。 -
异步操作:
changeLanguage是异步方法,需要使用await等待完成。 -
错误处理:如果传入无效的语言代码,会抛出错误,建议添加错误处理:
- 语言验证:建议在调用
changeLanguage前验证语言是否在支持的语言列表中:
changeLanguage 方法会:
- 更新 i18n 实例的语言
- 在浏览器环境中缓存语言选择(Cookie/LocalStorage)
- 触发语言切换相关的回调
但不会自动更新 URL 路径,如果需要更新 URL,需要配合路由插件或手动处理。
与 react-i18next 集成
插件完全兼容 react-i18next,可以使用 useTranslation Hook 和其他 react-i18next 功能。
useTranslation Hook
i18next 实例访问
可以通过 useModernI18n 获取 i18next 实例:
类型定义
I18nInstance 接口
I18nInitOptions 接口
LanguageDetectorOptions 接口
Resources 类型
命名空间的值可以是字符串(用于简单的键值对)或对象(用于嵌套的翻译结构)。