本地化助手

用于创建和合并本地化配置的函数。

import {
DEFAULT_LOCALE,
mergeLocale,
createLocale,
resolveLocale,
weekdayToNumber,
} from "react-date-range-picker-headless";

DEFAULT_LOCALE

默认的英文本地化对象。所有字段都用英文字符串填充。

类型Locale
DEFAULT_LOCALE.weekdays; // ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
DEFAULT_LOCALE.months; // ["January", "February", ..., "December"]
DEFAULT_LOCALE.confirm; // "Confirm"
DEFAULT_LOCALE.placeholder; // "Select date"

mergeLocale

将部分本地化配置合并到默认本地化配置中。

签名mergeLocale(partial?: Partial<Locale>): Locale

如果没有提供部分配置,则返回 DEFAULT_LOCALE。当 rangeSeparator 被覆盖但 formatRange 没有被覆盖时,formatRange 会自动重新生成以使用新的分隔符。

mergeLocale(); // DEFAULT_LOCALE
mergeLocale({
confirm: "OK",
cancel: "Back",
rangeSeparator: " - ",
});
// { ...DEFAULT_LOCALE, confirm: "OK", cancel: "Back", rangeSeparator: " - ", formatRange: (s, e) => `${s} - ${e}` }

createLocale

使用 Intl.DateTimeFormat 从 BCP 47 本地化键创建本地化配置。

签名createLocale(localeKey: string, overrides?: Partial<Locale>): Locale
参数类型描述
localeKeystringBCP 47 本地化标识符 (例如 "ko", "ja", "zh-CN", "pt-BR")。
overridesPartial<Locale>在 Intl 生成后应用的额外覆盖。

Intl.DateTimeFormat 生成工作日名称、月份名称、AM/PM 标签和格式化函数。非 Intl 字段(confirm、cancel、placeholder 等)除非被覆盖,否则回退到 DEFAULT_LOCALE

const koLocale = createLocale("ko", {
confirm: "확인",
cancel: "취소",
clear: "초기화",
placeholder: "날짜 선택",
});
// koLocale.weekdays -> ["일", "월", "화", "수", "목", "금", "토"]
// koLocale.months -> ["1월", "2월", ...]
// koLocale.formatDate(new Date(2026, 2, 1)) -> "2026. 03. 01."

resolveLocale

合并部分本地化配置,并旋转星期标题以匹配 weekStartsOn

签名resolveLocale(partial?: Partial<Locale>, weekStartsOnNum?: number): Locale
参数类型默认值描述
partialPartial<Locale>本地化覆盖。
weekStartsOnNumnumber0一周的第一天 (0 = 星期日)。

weekStartsOnNum 不为 0 时,weekdays 数组会被旋转,以使标题从正确的一天开始。

resolveLocale(undefined, 1).weekdays;
// ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"]

weekdayToNumber

WeekDay 字符串转换为其数值。

签名weekdayToNumber(day: WeekDay): number
weekdayToNumber("sunday"); // 0
weekdayToNumber("monday"); // 1
weekdayToNumber("saturday"); // 6