web-dev-qa-db-fra.com

Changer les paramètres régionaux dans react-datepicker

J'utilise react-datepicker package NPM,
J'ai essayé de suivre la documentation mais je n'ai pas pu importer

registerLocale 

et

setDefaultLocale

de react-datepicker

Voyez-vous où je me trompe?

 import DatePicker from 'react-datepicker';



...
    <DatePicker
            { ...this.props }
            dateFormat={ this.dateFormat }
            ref={ (node) => { this.ref = node; } }
            onClickOutside={ this.clickOutside }
          />
...

c'est le code où je veux importer les paramètres régionaux.

9
Stevan Tosic

Assurez-vous tout d'abord que vous utilisez la dernière version du plugin ( 2.0.0 ). Ensuite, vous devez également installer le date-fns module, mais pour le moment le react-datepicker fonctionne avec la version 2.0.0-alpha.23.

Ensuite, vous devez importer et enregistrer les paramètres régionaux souhaités et enfin ajouter la propriété locale à la DatePicker

donc ( après avoir installé les bonnes versions )

import DatePicker, { registerLocale } from "react-datepicker";
import el from "date-fns/locale/el"; // the locale you want
registerLocale("el", el); // register it with the name you want

et l'utiliser

<DatePicker 
    locale="el"
    ...
/>

Démo de travail sur https://codesandbox.io/s/7j8z7kvy06

12
Gabriele Petrioli
import React, { Component } from 'react';
import DatePicker, { registerLocale } from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import ja from "date-fns/locale/ja";

registerLocale("ja", ja);

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      date: new Date()
    }
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(date) {
    this.setState({
      date
    });
  }

  render() {
    return (
      <div className="App">
        <body>
          <DatePicker
            dateFormat="yyyy/MM/dd"
            selected={this.state.date}
            onChange={this.handleChange}
            locale='ja'
          />
        </body>
      </div>
    );
  }
}

export default App;

Je pourrais obtenir le résultat que vous vouliez. Et j'ai essayé de le faire avec la bibliothèque moment mais cela n'a pas fonctionné sur mon code. Désolé

2
t.kuriyama

Vous n'avez même pas besoin d'utiliser registerLocale, utilisez simplement le nom de la variable d'importation ja sans guillemets:

<DatePicker
  dateFormat="yyyy/MM/dd"
  selected={this.state.date}
  onChange={this.handleChange}
  locale=ja
/>

Vous pouvez également définir les paramètres régionaux par défaut pour tous les champs du sélecteur de date avec setDefaultLocale:

constructor (props) {
    registerLocale("ja", ja);
    setDefaultLocale("ja");
}

J'espère que cela t'aides.

1
Takman

Pour ceux qui ne veulent pas dépendre de date-fns module vous pouvez définir votre propre localisation.

const months = ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık']
const days = ['Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct', 'Pz']

const locale = {
  localize: {
    month: n => months[n],
    day: n => days[n]
  },
  formatLong: {}
}

<DatePicker locale={locale} />
1
ozgrozer

Dans le cas où vous souhaitez utiliser un paramètre régional, qui n'est pas pris en charge par date-fns (et ceux-ci sont assez peu nombreux), vous pouvez faire un shim.

const monthsBG = ['Януари', 'Февруари', 'Март', 'Април', 'Май', 'Юни', 'Юли', 'Август', 'Септември', 'Октомври', 'Ноември', 'Декември'];
const daysBG = ['нед', 'пон', 'вт', 'ср', 'четв', 'пет', 'съб'];

registerLocale('bg', {
  localize: {
    month: n => monthsBG[n],
    day: n => daysBG[n]
  }, 
  formatLong:{} 
});

puis vous pouvez utiliser ce paramètre régional comme tout autre

<DatePicker
  locale="bg"
  ...
/>
0
Arntor