React-Intl:添加到IntlMessageFormat的语言环境数据缺少`pluralRuleFunction`

问题描述:

我最近在我的多页面反应应用程序中使用React-Intl进行国际化。React-Intl:添加到IntlMessageFormat的语言环境数据缺少`pluralRuleFunction`

我编写了一个组件“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设置断点,它显示了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; 
}; 

最后我在format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))();得到一个错误Locale data added to IntlMessageFormat is missing a pluralRuleFunction for :zh_CN

此时,args["预览", "zh_CN", Object]cacheId"["预览","zh_CN",[]]"formatundefined

有没有办法添加自定义语言环境数据正确

您似乎没有您的翻译传递给供应商。

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

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

我敢肯定zh_CN的是一个JSON。我在翻译的最后一页看到翻译的单词。但也得到错误。所以,我很困惑发生了什么 –

+0

这只是它不是你应该传递给'addLocaleData'和'IntlProvider'的同一个对象。当'addLocaleData'需要不同区域设置的字典时,'IntlProvider'需要所有翻译的列表。我不知道这是为什么你有你的错误。 –