React-Intl:添加到IntlMessageFormat的区域设置数据缺少`pluralRuleFunction`

时间:2017-08-02 09:48:21

标签: javascript reactjs react-intl

我最近在我的多页面反应应用程序中使用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",[]]"formatundefined

有没有办法正确添加自定义区域设置数据

1 个答案:

答案 0 :(得分:1)

您似乎无法将翻译传递给提供商。

messages={zh_CN}应该是包含您的翻译的键值存储,例如:

messages = {
    "publish.card.preview": "Preview"
}
return <IntlProvider {...last} messages={messages} >
    ...
</IntlProvider>