Skip to content

Localization

@bturkis/datepicker ships with 15 built-in languages. Calendar month names and weekday labels are generated via the browser's Intl.DateTimeFormat API, ensuring native-quality translations.

Supported Languages

CodeFlagLanguagePlaceholder Example
tr🇹🇷TürkçeTarih seçin
en🇬🇧EnglishSelect date
de🇩🇪DeutschDatum wählen
fr🇫🇷FrançaisChoisir une date
es🇪🇸EspañolSeleccionar fecha
it🇮🇹ItalianoSeleziona data
pt🇧🇷PortuguêsSelecionar data
ru🇷🇺РусскийВыберите дату
ar🇸🇦العربيةاختر التاريخ
ja🇯🇵日本語日付を選択
zh🇨🇳中文选择日期
ko🇰🇷한국어날짜 선택
nl🇳🇱NederlandsDatum kiezen
pl🇵🇱PolskiWybierz datę
uk🇺🇦УкраїнськаОберіть дату

TimePicker Translations

All 15 languages include full TimePicker support with localized labels.

CodeTime LabelNow ButtonTime PlaceholderAMPM
trSaatŞimdiSaat seçinÖÖÖS
enTimeNowSelect timeAMPM
deUhrzeitJetztUhrzeit wählenAMPM
frHeureMaintenantChoisir l'heureAMPM
esHoraAhoraElegir horaAMPM
itOraAdessoScegli oraAMPM
ptHoraAgoraEscolher horaAMPM
ruВремяСейчасВыбрать времяAMPM
arالوقتالآناختر الوقتصم
ja時刻現在時刻を選択午前午後
zh时间此刻选择时间上午下午
ko시간지금시간 선택오전오후
nlTijdNuKies tijdAMPM
plGodzinaTerazWybierz godzinęAMPM
ukЧасЗаразОбрати часAMPM

12-Hour Format with Localized AM/PM

vue
<!-- Turkish: shows ÖÖ / ÖS buttons -->
<DatePicker v-model="time" type="time" hour-format="12" lang="tr" />

<!-- Japanese: shows 午前 / 午後 buttons -->
<DatePicker v-model="time" type="time" hour-format="12" lang="ja" />

Usage

vue
<!-- Set language via lang prop -->
<DatePicker v-model="date" lang="ja" />

The lang prop is reactive — changing it updates all labels immediately.

Custom Locale

You can register your own locale at runtime:

ts
import { registerLocale } from "@bturkis/datepicker";
import type { BtLocale } from "@bturkis/datepicker";

const myLocale: BtLocale = {
  code: "sv",
  placeholder: "Välj datum",
  rangePlaceholder: "Välj intervall",
  todayLabel: "Idag",
  clearLabel: "Rensa",
  timeLabel: "Tid",
  nowLabel: "Nu",
  timePlaceholder: "Välj tid",
  datetimePlaceholder: "Välj datum och tid",
  am: "FM",
  pm: "EM",
};

registerLocale(myLocale);

Then use it:

vue
<DatePicker v-model="date" lang="sv" />

How It Works

UI labels (buttons, placeholders) come from the locale object. Calendar data (month names, weekday abbreviations) are generated by Intl.DateTimeFormat using the locale code, which means you get native browser translations automatically — no need to ship month name dictionaries.

ts
// Internal: getWeekDays('ja') →
// Uses Intl.DateTimeFormat('ja-JP', { weekday: 'short' })
// → ['月', '火', '水', '木', '金', '土', '日']

Released under the MIT License.