我在我的项目中使用react-intl并且我为任何语言加载json文件但是我需要我的json文件具有树格式。当我加载我的组件react-intl打印json的关键字符串。 例如:
{
"header":{
"title": "My title",
"text": "My text"
},
"footer":{
"title": "My title",
"text": "My text"
}
}
当我使用时:
<p><FormattedMessage id="header.title"/></p>
结果是:
<p>header.title</p>
有什么想法吗?
答案 0 :(得分:1)
如果你想在没有“Flatten messages Object”的情况下这样做,你可以像这样使用FormattedMessage:
<FormattedMessage id="header">
{txt => <span>{txt[title]}</span>}
</FormattedMessage>
结果将是:“我的头衔”
或当然:
<FormattedMessage id="footer">
{txt => <span>{txt[text]}</span>}
</FormattedMessage>
结果将是:“我的文字”
答案 1 :(得分:0)
我找到官方doc
的展平消息对象function flattenMessages(nestedMessages, prefix = '') {
return Object.keys(nestedMessages).reduce((messages, key) => {
let value = nestedMessages[key];
let prefixedKey = prefix ? `${prefix}.${key}` : key;
if (typeof value === 'string') {
messages[prefixedKey] = value;
} else {
Object.assign(messages, flattenMessages(value, prefixedKey));
}
return messages;
}, {});
}
let messages = flattenMessages(nestedMessages);