2016-04-13 5 views
2

react-intlを使用してReact Appにi18nを設定しようとしています。アプリはユニバーサルレンダリングされています(クライアントとサーバーの両方でノードを使用)。私が持っているものの基本的な例がこれです:ノードのローカル日付react-intl

import React, {Component} from 'react'; 
import ReactDOM from 'react-dom'; 
import {IntlProvider, FormattedDate} from 'react-intl'; 

class App extends Component { 
    const date = new Date(); 
    render() { 
     return (
      <div> 
       <FormattedDate value={date} /> 
      </div> 
     ); 
    } 
} 

ReactDOM.render(
    <IntlProvider locale="en-GB"> 
     <App /> 
    </IntlProvider>, 
    document.getElementById('container') 
); 

サーバーレンダリングされたフォーマットされた日付は無効であるとチェックサムを反応させると、サーバーが離れてレンダリングスロー原因クライアントレンダリング日付と異なっています。ブラウザそれで

var date = new Date(); 
console.log(date.toLocaleDateString('en-GB')); 
console.log(date.toLocaleDateString('en-US')); 

:サーバーは、日付のEN-USロケールを送り返していると、ブラウザが

エンGB

をレンダリングしている私は、サーバーとブラウザの両方で、この小さなテストを試してみましたログ:

"13/04/2016" "2016年4月13日"

私が期待するものであるが、ノードに、私は

"2016年4月13日"を取得します"4/13/2016"

これは、おそらく、サーバーが反応コードのレンダリングバージョンがブラウザのバージョンと異なるのでしょうか?

私はちょうどこれが問題であると推測しています。ノードはバージョンv5.4.1です

答えて

2

誰かが同じ問題を抱えている場合は、ここで私が解決したことがあります。ノードはデフォルトでenロケールのみをサポートしますが、実際にはen-GBロケールではなくen-USバージョンです。私はそれはIntlパッケージに国際Node.jsのポリフィルすることも可能ですNPM https://www.npmjs.com/package/full-icu

+0

答えとしてマークする必要があります。ありがとう。 – Dimitry

関連する問題