AbdulElahGwaith's picture
Upload folder using huggingface_hub
cf86710 verified
---
sidebar_position: 5
---
# Localization
## Configure the Locale
| Prop Name | Type | Description |
| ----------------------- | --------------------------------------------- | ------------------------------------------------------------------ |
| `locale` | [`Locale`](https://date-fns.org/docs/I18n) | Set the locale. Default is `en-US`. |
| `weekStartsOn` | `1` \| `2` \| `3` \| `4` \| `5` \| `6` \| `7` | Display the days falling into the other months. |
| `firstWeekContainsDate` | `1` \| `4` | Configure the first date in the first week of the year. |
| `ISOWeek` | `boolean` | Use [ISO Week Dates](https://en.wikipedia.org/wiki/ISO_week_date). |
### Set a Different Locale
To set a locale different than the the default `English (US)`, pass to the `locale` prop a [Locale](https://date-fns.org/docs/I18n) object imported from `date-fns`.
For example, to localize the calendar in Spanish, import the `es` locale object from date-fns and pass it to the component.
```tsx caption="render:Spanish"
import { es } from "date-fns/locale";
<DayPicker locale={es} />; // Set the locale to Spanish
```
<BrowserWindow>
<ExamplesV8.Spanish />
</BrowserWindow>
### First Date of the Week
Use `weekStartsOn` to override the first date of the week.
```tsx
<DayPicker weekStartsOn={0} />
```
<BrowserWindow>
<ExamplesV8.SpanishWeekStartsOn />
</BrowserWindow>
### First Week of the Year
Use `weekStartsOn` to override the first date of the first week of the year, used to calculate the week numbers. Possible values are `1` (Monday) or `4` (Thursday).
```tsx caption="render:WeeknumberCustom"
<DayPicker
showWeekNumber
firstWeekContainsDate={1} // First week must contain Monday
/>
```
<BrowserWindow>
<ExamplesV8.WeeknumberCustom />
</BrowserWindow>
### ISO Week Dates
Use `ISOWeek` to switch using [ISO Week Dates](https://en.wikipedia.org/wiki/ISO_week_date) instead of the locale setting.
```tsx caption="render:WeeknumberIso"
<DayPicker
showWeekNumber
ISOWeek // Switch to ISO week
/>
```
<BrowserWindow>
<ExamplesV8.WeeknumberIso />
</BrowserWindow>
## Translate DayPicker
:::info Draft
This paragraph is still a work in progress. If you have any questions, ask to the [discussions](https://github.com/gpbl/react-day-picker/discussions) page on Github.
:::
Use these props to translate DayPicker in any language.
| Prop Name | Type | Description |
| ------------ | ------------------------------------------------- | ------------------------------------------ |
| `labels` | [`Labels`](../api/type-aliases/Labels.md) | Map the ARIA labels used within DayPicker. |
| `formatters` | [`Formatters`](../api/type-aliases/Formatters.md) | Map the function used as date formatters. |
| `dir` | `rtl` \| `ltr` | Set the text direction. |
### ARIA Labels
ARIA labels are used by DayPicker to provide a better accessibility experience. Use the `labels` prop to translate the labels used in the component.
```tsx
<DayPicker
labels={{
labelNext: () => "Prossimo mese"
labelPrevious: () => "Mese precedente"
}}
/>
```
| Member | Type | Description |
| :------------------- | :---------------------------------------------------------- | :------------------------------------------------- |
| `labelMonthDropdown` | () => `string` | Returns the label for the "Months" dropwdown |
| `labelNext` | [`NavButtonLabel`](../api/type-aliases/NavButtonLabel.md) | Label for the "Next month" button. |
| `labelPrevious` | [`NavButtonLabel`](../api/type-aliases/NavButtonLabel.md) | Label for the "Previous month" button. |
| `labelWeekNumber` | [`WeekNumberLabel`](../api/type-aliases/WeekNumberLabel.md) | Label for the "Next month" button. |
| `labelWeekday` | [`WeekdayLabel`](../api/type-aliases/WeekdayLabel.md) | Label for the week day used in the head component. |
| `labelYearDropdown` | () => `string` | Label for the "Years" dropdown. |
### Formatters
Use the `formatters` prop to format the dates and the week numbers.
| Member | Type | Description |
| :------------------- | :------------------------------------------------------------------ | :----------------------------------------------------------------- |
| `formatCaption` | [`DateFormatter`](../api/type-aliases/DateFormatter.md) | Format the month in the caption when `captionLayout` is `buttons`. |
| `formatDay` | [`DateFormatter`](../api/type-aliases/DateFormatter.md) | Format the day in the day cell. |
| `formatMonthCaption` | [`DateFormatter`](../api/type-aliases/DateFormatter.md) | Format the month in the navigation dropdown. |
| `formatWeekNumber` | [`WeekNumberFormatter`](../api/type-aliases/WeekNumberFormatter.md) | Format the week number. |
| `formatWeekdayName` | [`DateFormatter`](../api/type-aliases/DateFormatter.md) | Format the week day name in the header |
| `formatYearCaption` | [`DateFormatter`](../api/type-aliases/DateFormatter.md) | Format the year in the navigation dropdown. |
### RTL Text Direction
To set the right-to-left text direction, toggle the `dir` prop to `rtl`.
```tsx caption="render:Rtl"
import { arSA } from "date-fns/locale";
<DayPicker locale={arSA} dir="rtl" />;
```
<BrowserWindow>
<ExamplesV8.Rtl />
</BrowserWindow>
### Numbering System
Use the proper `formatters` to change the [numbering system](https://en.wikipedia.org/wiki/Numeral_system) used in the calendar.
For example, to switch to hindu-arabic use the native [`Date.toLocaleString`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString):
```tsx caption="render:NumberingSystem"
import { format } from "date-fns/format";
import { arSA } from "date-fns/locale";
import { DayPicker, Formatters } from "react-day-picker";
const NU_LOCALE = "ar-u-nu-arab";
const formatDay = (day) => day.getDate().toLocaleString(NU_LOCALE);
const formatWeekNumber = (weekNumber) => weekNumber.toLocaleString(NU_LOCALE);
const formatMonthCaption = (date, options) => {
const y = date.getFullYear().toLocaleString(NU_LOCALE);
const m = format(date, "LLLL", options);
return `${m} ${y}`;
};
export function NumberingSystemExample() {
return (
<DayPicker
locale={arSA}
dir="rtl"
showWeekNumber
formatters={{
formatDay,
formatMonthCaption,
formatWeekNumber
}}
/>
);
}
```
<BrowserWindow>
<ExamplesV8.NumberingSystem />
</BrowserWindow>