我最近在我的多页面反应应用程序中使用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
我在react-intl/lib/index.es.js
中设置了一个BreakPoint,它显示了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
有没有办法正确添加自定义区域设置数据
答案 0 :(得分:1)
您似乎无法将翻译传递给提供商。
messages={zh_CN}
应该是包含您的翻译的键值存储,例如:
messages = {
"publish.card.preview": "Preview"
}
return <IntlProvider {...last} messages={messages} >
...
</IntlProvider>