进行动态菜单获取时,设置的name值,默认会走国际化formatterMessage方法,导致某些菜单打开时,会报如下错误:
[React Intl] Missing message: "XXXX" for locale: "zh-CN" __stack_frame_overlay_proxy_console__ @ index.js:2178 index.js:2178
[React Intl] Cannot format message: "XXXX", using message id as fallback.
具体应该如何处理掉这个错误呢?刚接触,万分感谢
https://github.com/ant-design/ant-design-pro/blob/master/src/models/menu.js#L25
换掉这一样
const result = {
...item,
name: item.name,
locale,
authority: item.authority || parentAuthority,
};
此处已经修改为item.name,依旧提示如上问题
https://github.com/ant-design/ant-design-pro/blob/master/src/models/menu.js#L25
换掉这一样
同时,BasicLayout文件中getPageTitle也修改了formatterMessage方法
@iquanzhan 我按照你说的方式去配置,还是这样的问题。
@iquanzhan 配好后,是不报错了,但是不走国际化了。
@iquanzhan 配好后,是不报错了,但是不走国际化了。
是的,我的还是依旧有这个问题。修改后还是会有报错现象。还没有解决方案
@iquanzhan 配好后,是不报错了,但是不走国际化了。
是的,我的还是依旧有这个问题。修改后还是会有报错现象。还没有解决方案
我在basiclayout 把
const pageName = formatMessage({
id: currRouterData.locale || currRouterData.name,
defaultMessage: currRouterData.name,
});
改成
const pageName = {
id: currRouterData.locale || currRouterData.name,
// defaultMessage: currRouterData.name,
};
虽然不报错了。但是国际化就没了。
@iquanzhan 配好后,是不报错了,但是不走国际化了。
是的,我的还是依旧有这个问题。修改后还是会有报错现象。还没有解决方案
我在basiclayout 把
const pageName = formatMessage({ id: currRouterData.locale || currRouterData.name, defaultMessage: currRouterData.name, });
改成
const pageName = { id: currRouterData.locale || currRouterData.name, // defaultMessage: currRouterData.name, };
虽然不报错了。但是国际化就没了。
你是想实现,如果国际化中找不到时,再走自定义的中文。还是?
@iquanzhan 我是想实现直接找中文(类似官网原生需求),我现在在debug了。一起加油
我已经解决了。
修改src/menu/models/menu.js formatter方法里面的 locale 属性。
动态获取的 item.children 没有 locale 属性,我现在是写死测试的。(源码是获取item.route来组装数据)
现在来记录,以便后面的人遇到问题可以得到思路并且解决。
Most helpful comment
我已经解决了。
修改src/menu/models/menu.js formatter方法里面的 locale 属性。
动态获取的 item.children 没有 locale 属性,我现在是写死测试的。(源码是获取item.route来组装数据)
现在来记录,以便后面的人遇到问题可以得到思路并且解决。