【问题标题】:React intl return [object Object]反应国际返回[对象对象]
【发布时间】:2018-09-30 18:37:33
【问题描述】:

我正在尝试使用 react intl 来翻译我网站的页面。 Github

json 语言:

fr.json : 
{
    "errorPage.title": Erreur 404"
}

en.json : 
{
    "errorPage.title": Error 404"
}

我的 js 文件里有这个

const title = <FormattedMessage id="errorPage.title" defaultMessage="Erreur 404" />

document.title = title;

在我的标题页上返回这个 [object Object]

我该怎么办? 谢谢!

【问题讨论】:

    标签: reactjs internationalization react-intl


    【解决方案1】:

    由于密钥包含 .您需要访问密钥的符号,如

    object["errorPage.title"]
    

    您发布的 json 键值也在开头缺少双引号

    您需要执行以下操作才能使其正常工作

    const object = {
         "errorPage.title": "Error 404"
    }
    
    const title = object["errorPage.title"];
    document.title = title;
    

    【讨论】:

    • 我已经编辑了我的帖子,我正在使用库来翻译我的网站,我不能像这样声明变量...
    • 你能贴出你详细的json Lang吗?
    • 这是主要问题,我的 json 文件中只有这个。根据浏览器语言反应国际翻译字符串。
    【解决方案2】:

    我知道这是一个老问题,但也许答案可以帮助别人。

    FormattedMessage 是一个 React 组件,它提供了一种使用本地化消息的声明方式。因此,变量title(来自问题)的值不是字符串而是对象。

    为此,您应该强制使用react-intl (official doc)。

    const title = intl.formatMessage({ id: "errorPage.title", defaultMessage: "Erreur 404" });
    
    document.title = title;
    

    您可以找到更多关于react-intl 命令式和声明式使用here 的示例。

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 2011-06-05
      • 2016-09-03
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      相关资源
      最近更新 更多