我最近在我的多頁面反應應用程序中使用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",[]]"
和format
是undefined
有沒有辦法添加自定義語言環境數據正確
我敢肯定zh_CN的是一個JSON。我在翻譯的最後一頁看到翻譯的單詞。但也得到錯誤。所以,我很困惑發生了什麼 –
這只是它不是你應該傳遞給'addLocaleData'和'IntlProvider'的同一個對象。當'addLocaleData'需要不同區域設置的字典時,'IntlProvider'需要所有翻譯的列表。我不知道這是爲什麼你有你的錯誤。 –