React Native Date Picker provides comprehensive localization support through the locale prop and related configuration options.
Locale Prop
The locale prop accepts a Locale ID that determines:
Date order (year-month-day vs day-month-year, etc.)
Language of weekday/month names
12/24-hour time format preference
AM/PM display
Basic Usage
import DatePicker from 'react-native-date-picker'
// French locale
< DatePicker
date = { date }
onDateChange = { setDate }
locale = "fr"
/>
// Japanese locale
< DatePicker
date = { date }
onDateChange = { setDate }
locale = "ja"
/>
// Spanish locale
< DatePicker
date = { date }
onDateChange = { setDate }
locale = "es"
/>
Common Locale IDs
Language Locale ID Example English (US) en or en_USMonth/Day/Year, 12-hour French frDay/Month/Year, 24-hour German deDay.Month.Year, 24-hour Japanese jaYear/Month/Day, 24-hour Spanish esDay/Month/Year, 24-hour Chinese (Simplified) zh or zh_CNYear/Month/Day, 24-hour Portuguese (Brazil) pt_BRDay/Month/Year, 24-hour Korean koYear. Month. Day, 12-hour
You can use any valid locale identifier. The picker will adapt the date/time format to match that locale’s conventions.
Date Order
The locale automatically determines the order in which date components appear.
Example: Different Date Orders
// US English - Month/Day/Year
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "date"
locale = "en_US"
/>
// French - Day/Month/Year
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "date"
locale = "fr"
/>
// Japanese - Year/Month/Day
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "date"
locale = "ja"
/>
The date order is determined by the locale preference and cannot be customized independently. To change the date order, use a locale that has your preferred format.
The time format (12-hour with AM/PM vs 24-hour) is influenced by the locale and device settings.
iOS Behavior
On iOS, the locale prop determines the 12/24-hour format:
// French locale uses 24-hour format
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "time"
locale = "fr"
/>
// US English locale uses 12-hour format with AM/PM
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "time"
locale = "en_US"
/>
Android Behavior
On Android, the 12/24-hour format is determined by the device settings by default, regardless of the locale prop.
is24hourSource Prop (Android Only)
Use is24hourSource to control how the 24-hour format is determined on Android:
"device" - Use device settings (default on Android)
"locale" - Use locale preference (default on iOS)
// Android: Use locale to determine 12/24-hour format
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "time"
locale = "fr"
is24hourSource = "locale"
/>
It is NOT recommended to force a specific 12/24-hour format as this goes against user preferences. If you must enforce a format, choose a locale with the desired preference and set is24hourSource="locale".
Platform Default Behavior Can Override? iOS Uses locale setting No (always locale-based) Android Uses device setting Yes (via is24hourSource="locale")
AM/PM Display
When using 12-hour format, the AM/PM selector appears automatically. The display is controlled by:
iOS : The locale prop determines if AM/PM is shown
Android : Device settings (or locale if is24hourSource="locale")
// 12-hour format with AM/PM (US English)
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "time"
locale = "en_US"
/>
// 24-hour format, no AM/PM (French)
< DatePicker
date = { date }
onDateChange = { setDate }
mode = "time"
locale = "fr"
is24hourSource = "locale"
/>
Important Limitations
Modal Text Not Localized
The locale prop does NOT translate the modal’s title, confirm button, or cancel button text. It only affects the picker’s date/time format.
To localize modal text, use the title, confirmText, and cancelText props:
// French locale with French modal text
< DatePicker
modal
open = { open }
date = { date }
locale = "fr"
title = "Sélectionner la date"
confirmText = "Confirmer"
cancelText = "Annuler"
onConfirm = { ( date ) => {
setOpen ( false )
setDate ( date )
} }
onCancel = { () => setOpen ( false ) }
/>
Complete Localization Example
import React , { useState } from 'react'
import { Button } from 'react-native'
import DatePicker from 'react-native-date-picker'
export default () => {
const [ date , setDate ] = useState ( new Date ())
const [ open , setOpen ] = useState ( false )
return (
<>
< Button title = "Sélectionner" onPress = { () => setOpen ( true ) } />
< DatePicker
modal
open = { open }
date = { date }
mode = "datetime"
locale = "fr"
is24hourSource = "locale"
title = "Choisissez une date et une heure"
confirmText = "Confirmer"
cancelText = "Annuler"
onConfirm = { ( date ) => {
setOpen ( false )
setDate ( date )
} }
onCancel = { () => {
setOpen ( false )
} }
/>
</>
)
}
This example provides a fully French-localized experience:
Date format follows French conventions (Day/Month/Year)
24-hour time format (no AM/PM)
Modal text in French
Dynamic Localization
You can dynamically change the locale based on your app’s language settings:
import React , { useState } from 'react'
import DatePicker from 'react-native-date-picker'
import { useTranslation } from 'react-i18next' // or your i18n library
export default () => {
const { i18n } = useTranslation ()
const [ date , setDate ] = useState ( new Date ())
const [ open , setOpen ] = useState ( false )
// Get locale from your app's language
const locale = i18n . language // e.g., 'en', 'fr', 'es'
// Get translations from your i18n system
const modalTexts = {
en: { title: 'Select date' , confirm: 'Confirm' , cancel: 'Cancel' },
fr: { title: 'Sélectionner la date' , confirm: 'Confirmer' , cancel: 'Annuler' },
es: { title: 'Seleccionar fecha' , confirm: 'Confirmar' , cancel: 'Cancelar' },
}
const texts = modalTexts [ locale ] || modalTexts . en
return (
< DatePicker
modal
open = { open }
date = { date }
locale = { locale }
is24hourSource = "locale"
title = { texts . title }
confirmText = { texts . confirm }
cancelText = { texts . cancel }
onConfirm = { ( date ) => {
setOpen ( false )
setDate ( date )
} }
onCancel = { () => setOpen ( false ) }
/>
)
}
Summary
Locale Prop Controls
Date component order
Weekday/month names
12/24-hour preference (iOS always, Android with is24hourSource="locale")
Manual Localization
Modal title via title prop
Button text via confirmText and cancelText
Use with i18n libraries for dynamic translations