2016-04-13 10 views
2

Tepkisel intl kullanarak bir React App üzerinde i18n'yi kurmaya çalışıyorum. Uygulama evrensel hale getirilmiştir (böylece hem istemcide hem de sunucuda düğüm kullanılır). Ne sahip basit bir örneği şudur:Düğümle ilgili yerel zamanlamalar

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

sunucu render biçimlendirilmiş tarihi geçersiz olabilir sağlama tepki ve sunucu uzak hale atmak neden istemci render tarihten farklıdır. Ben sunucusu ve tarayıcı hem de bu küçük testi çalıştı sunucu tarih tr yerel geri gönderiyor ve tarayıcı en-GB

render edilir: tarayıcısında

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

o günlükleri:

"13/04/2016" "2016/04/13" Ben beklediğiniz olduğunu

ama düğümünde alıyorum

"2016/04/13" "4/13/2016"

Bunun nedeni, sunucu tarafından oluşturulan tepki kodunun sürümünün tarayıcı sürümünden farklı olmasının nedeni nedir?

Sadece bunun bir sorun olduğunu tahmin ediyorum. Düğüm, v5.4.1 sürümdür.

cevap

2

Yani aynı sorun karşısında kimsenin yaklaşması durumunda, bunu çözmek için yaptım. Düğüm, varsayılan olarak en yerel değeri destekler ancak bu aslında en-GB yerel değil, daha çok ABD sürümüdür. İstediğin YBÜ ile düğümü yeniden edebilir - https://github.com/nodejs/node/wiki/Intl veya alternativly ben NPM https://www.npmjs.com/package/full-icu

+0

Yanıt olarak işaretlenmelidir! Teşekkürler. – Dimitry