Change locale in react-datepicker

后端 未结 6 1149
一向
一向 2021-02-04 03:30

I am using react-datepicker NPM package,
I tried to follow documentation but I was unable to import

registerLocale 

and

         


        
相关标签:
6条回答
  • 2021-02-04 03:38

    For dynamic locale imports you could use this code. However, you will get a larger package with dynamic imports:

    constructor(props) {
        const getLocale = locale => require(`date-fns/locale/${this.props.language}/index.js`)
        this.locale = getLocale(this.props.language);
    }
    

    And then use

    <DatePicker locale={this.locale} />
    
    0 讨论(0)
  • 2021-02-04 03:40

    You don't even need to use registerLocale, just use import variable name ja without quotes :

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

    You can also set the default locale for all date picker fields with setDefaultLocale :

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

    Hope this helps.

    0 讨论(0)
  • 2021-02-04 03:46
    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;
    

    I could get the result you wanted. And I tried to make it with moment library but it didn't work on my code. sorry

    0 讨论(0)
  • 2021-02-04 03:48

    For those who don't want to depend on date-fns module you can define your own localization.

    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} />
    
    0 讨论(0)
  • 2021-02-04 03:50

    In case you want to use a locale, that is not supported by date-fns (and those are quite few), you can do a shim.

    const monthsBG = ['Януари', 'Февруари', 'Март', 'Април', 'Май', 'Юни', 'Юли', 'Август', 'Септември', 'Октомври', 'Ноември', 'Декември'];
    const daysBG = ['нед', 'пон', 'вт', 'ср', 'четв', 'пет', 'съб'];
    
    registerLocale('bg', {
      localize: {
        month: n => monthsBG[n],
        day: n => daysBG[n]
      }, 
      formatLong:{} 
    });
    

    and then you can use this locale as any other

    <DatePicker
      locale="bg"
      ...
    />
    
    0 讨论(0)
  • 2021-02-04 03:54

    First of all make sure you are using the latest version of the plugin (2.0.0). Then you need to also install the date-fns module, but for the moment the react-datepicker is working with the 2.0.0-alpha.23 version.

    Then you need to import and register the locale you want and finally add the locale property to the DatePicker

    so (after installing the correct 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
    

    and use it

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

    Working demo at https://codesandbox.io/s/7j8z7kvy06

    0 讨论(0)
提交回复
热议问题