簡體   English   中英

React-intl使用json樹格式

[英]React-intl use json tree format

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

任何想法?

我找到了官方文檔扁平化消息對象

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

如果要在沒有“ Flatten messages Object”的情況下執行此操作,則可以使用FormattedMessage,如下所示:

<FormattedMessage id="header">
  {txt => <span>{txt[title]}</span>}
</FormattedMessage>

結果將是:“我的標題”

或當然:

<FormattedMessage id="footer">
  {txt => <span>{txt[text]}</span>}
</FormattedMessage>

結果將是:“我的文字”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM