我最近在我的多页 React 应用程序中使用 React-Intl 进行国际化。
我编写了一个组件“IntlProviderWithLocal”来添加自定义语言环境。
import React from 'react'
import {IntlProvider, addLocaleData} from 'react-intl';
import zh_CN from '../../../components/i18n/zh_CN/angular_locale'
export default (props) => {
const {children, ...last} = props
addLocaleData(zh_CN);
return (
<IntlProvider {...last} messages={zh_CN} >
{children}
</IntlProvider>
)
}
但我得到错误:
Error formatting message: "publish.card.preview" for locale: "zh_CN", using default message as fallback
我在 中设置了一个 BreakPoint react-intl/lib/index.es.js
,它显示了var formatter = state.getMessageFormat(message, locale, formats)
.
是formats
一个空数组。步进函数getMessageFormat
,
return function () {
var args = Array.prototype.slice.call(arguments);
var cacheId = getCacheId(args);
var format = cacheId && cache[cacheId];
if (!format) {
format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))();
if (cacheId) {
cache[cacheId] = format;
}
}
return format;
};
最后我Locale data added to IntlMessageFormat is missing a pluralRuleFunction for :zh_CN
在format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))();
.
此刻,args
是["预览", "zh_CN", Object]
,cacheId
是"["预览","zh_CN",[]]"
,format
是undefined
有没有办法正确添加自定义语言环境数据