ReactJS - Ant-Design v4 jalali(persian) datepicker problem

2.9k views Asked by At

I try a lot to change locale in antd datepicker but I still couldn't. in antd v3 I change locale to persian and have jalali(شمسی) calendar, but in antd v4, I do some ways but only have uncomplete translating.

برای مثال، وقتی دیت‌پیکر فارسی می‌شد، تاریخی که توی دیت‌پیکر قرار می‌گرفت تاریخِ میلادی بود: ۲۰۲۰/۱۰/۰۶

تنها تغییر این بود که نامِ ماه‌ها به شمسی شده بود. مثلِ «مهر ۲۰۲۰». و روزهای تقویم هم، روزهای شمسی بود، اما وقتی مثلا روی روزِ ۱۵ کلیک می‌کردم، این تاریخ توی دیت‌پیکر انتخاب می‌شد: ۲۰۲۰-۱۰-۰۶

codes:

import { DatePicker, ConfigProvider } from 'antd';
import "moment/locale/fa";
import moment from "moment";
import fa_IR from "antd/es/locale/fa_IR";
import locale from "antd/es/date-picker/locale/fa_IR";

<ConfigProvider locale={fa_IR}>
    <DatePicker locale={locale} defaultValue={moment()} />
</ConfigProvider>

and I also use ant-design-jalali. define an alias in webpack config:

module.exports = {
  ...
  resolve: {
    modules: ['node_modules'],
    alias: {
      moment: path.resolve(__dirname, './node_modules/antd-jalali-moment') // -> this alias
    }
  },
  ...
};
2

There are 2 answers

4
Mehdi Ardakani On BEST ANSWER

i had the same problem this worked for me:

first add antd-jalali next add day jalali js after that insert this lines into your code:

import 'moment/locale/fa';
import locale from 'antd/es/date-picker/locale/fa_IR';

and use in <DatePickerJalali {...props} locale={locale} />

0
reza relax On
import { DatePicker, ConfigProvider } from 'antd'; 
import "moment/locale/fa"; 
import moment from "moment"; 
import fa_IR from "antd/es/locale/fa_IR"; 
import locale from "antd/es/date-picker/locale/fa_IR"; 

<ConfigProvider locale={fa_IR}> <DatePicker locale={locale} defaultValue={moment()} /> </ConfigProvider>