3 votes

Dates locales dans Node react-intl

Je tente de mettre en place i18n sur une application React en utilisant react-intl. L'application est rendue de manière universelle (à la fois sur le client et sur le serveur en utilisant node). Un exemple basique de ce que j'ai est le suivant:

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 (

        );
    }
}

ReactDOM.render(

    ,
    document.getElementById('container')
);

La date formatée rendue par le serveur est différente de la date rendue par le client, ce qui entraîne une invalidité du checksum react et provoque l'annulation du rendu côté serveur. Le serveur renvoie la locale en-US de la date et le navigateur rend en-GB

J'ai essayé ce petit test à la fois sur le serveur et sur le navigateur:

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

Dans le navigateur, cela affiche:

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

Ce qui est ce que je m'attendais, mais dans node j'obtiens

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

Ce qui est peut-être la raison pour laquelle la version rendue par le serveur du code react est différente de la version du navigateur??

Je suppose que c'est là le problème. Node est en version v5.4.1

2voto

jamie holliday Points 194

Donc, au cas où quelqu'un rencontrerait le même problème, voici ce que j'ai fait pour le résoudre. Node ne supporte que l'locale par défaut, mais il ne s'agit en fait pas de l'local en-GB mais plutôt de la version en-US. Vous pouvez reconstruire node avec l'ICU que vous souhaitez - https://github.com/nodejs/node/wiki/Intl ou alors, j'ai installé le package full-icu depuis npm https://www.npmjs.com/package/full-icu

0voto

Dimitry Points 324

Il est également possible de subventionner le module node.js Intl avec le package Intl. Voir https://github.com/yahoo/intl-locales-supported

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X