React-Admin升级至3.18版本后翻译失效,UI显示i18n键名问题求助
问题根因
React Admin 从3.17.0版本开始移除了默认内置的英文i18n配置,旧版本未传入i18nProvider时会自动加载英文翻译,3.17.0之后未正确配置该属性就会直接渲染i18n键名。你此前添加配置后未生效,属于配置不规范或者依赖版本兼容问题,可按以下步骤排查修复:
修复步骤
- 第一步:对齐所有react-admin相关依赖版本,排除版本不兼容问题
// package.json 调整后示例 "react-admin": "3.18.1", "ra-language-english": "3.18.1", "ra-i18n-polyglot": "3.18.1"
调整后删除node_modules和包锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),重新安装依赖清除缓存影响。
- 第二步:正确初始化
i18nProvider并传入根级<Admin>组件,示例代码如下:
import React from 'react'; import { Admin, Resource } from 'react-admin'; import polyglotI18nProvider from 'ra-i18n-polyglot'; import englishMessages from 'ra-language-english'; // 无自定义翻译直接初始化即可 const i18nProvider = polyglotI18nProvider(() => englishMessages, 'en'); const App = () => ( <Admin i18nProvider={i18nProvider}> {/* 项目原有Resource配置 */} </Admin> ); export default App;
- 第三步:如果项目有自定义翻译需求,合并翻译时要保留react-admin的默认翻译字段,避免覆盖导致失效:
const customMessages = { en: { ...englishMessages, // 必须保留默认翻译的展开引入 custom: { tip: '自定义文案' } } } const i18nProvider = polyglotI18nProvider(locale => customMessages[locale], 'en');
内容的提问来源于stack exchange,提问作者John McCabe
相关产品推荐
相关产品推荐

