React-intl使用json树格式

时间:2016-10-03 14:01:20

标签: javascript json reactjs internationalization react-intl

我在我的项目中使用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>

有什么想法吗?

2 个答案:

答案 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);