Carbon Components Svelte предоставляет мощный набор UI-компонентов,
включая календарь (DatePicker) с возможностью локализации,
что особенно важно для приложений, ориентированных на пользователей из
разных стран. Локализация влияет на отображение месяцев, дней недели,
формата даты и текста элементов управления.
Компонент календаря использует стандартные механизмы JavaScript для
локализации через объект Intl.DateTimeFormat. Основные
параметры локализации задаются через проп locale:
<script>
import { DatePicker } from 'carbon-components-svelte';
let selectedDate = new Date();
</script>
<DatePicker
bind:value={selectedDate}
locale="ru-RU"
/>
Ключевой момент: locale принимает
строку в формате [язык]-[регион], например "ru-RU" для
русского языка, "en-US" для американского английского. Этот
параметр отвечает за:
Январь, Февраль …)Пн, Вт …)дд.мм.гггг)Carbon Components Svelte позволяет отдельно управлять форматом даты с
помощью пропа dateFormat. Это полезно, если необходимо,
чтобы отображение даты соответствовало региональным стандартам:
<DatePicker
bind:value={selectedDate}
locale="ru-RU"
dateFormat="dd.MM.yyyy"
/>
Поддерживаемые форматы используют стандартные шаблоны:
dd — день с ведущим нулёмMM — месяц с ведущим нулёмyyyy — полный годКомпонент календаря предоставляет проп i18n для передачи
пользовательских текстов элементов управления, таких как кнопки «Назад»,
«Вперёд», «Сегодня», а также подсказок для дней недели:
<DatePicker
bind:value={selectedDate}
locale="ru-RU"
i18n={{
nextMonth: "Следующий месяц",
previousMonth: "Предыдущий месяц",
openCalendar: "Открыть календарь",
closeCalendar: "Закрыть календарь"
}}
/>
Особенность: Если i18n не задан,
компонент автоматически использует стандартные английские тексты. Для
полной локализации важно передавать переводы всех ключевых
элементов.
date-fns-tz или luxon.bind:value важно учитывать, что
объект Date в JavaScript всегда содержит информацию о
локальном времени.DatePicker поддерживает выбор диапазона
(DatePickerRange). Для локализации всех элементов диапазона
необходимо передавать аналогичные параметры locale и
i18n:
<script>
import { DatePickerRange } from 'carbon-components-svelte';
let range = { start: null, end: null };
</script>
<DatePickerRange
bind:value={range}
locale="ru-RU"
i18n={{
startLabel: "Дата начала",
endLabel: "Дата окончания",
nextMonth: "Следующий месяц",
previousMonth: "Предыдущий месяц"
}}
/>
Это обеспечивает корректное отображение всех надписей и календарных элементов на русском языке.
Компонент позволяет менять локаль динамически, что удобно для
мультиязычных приложений. Необходимо просто изменить значение
locale и компонент автоматически обновит отображение:
<script>
import { DatePicker } from 'carbon-components-svelte';
let selectedDate = new Date();
let currentLocale = "ru-RU";
function switchLocale() {
currentLocale = currentLocale === "ru-RU" ? "en-US" : "ru-RU";
}
</script>
<button on:click={switchLocale}>Сменить язык</button>
<DatePicker bind:value={selectedDate} {currentLocale} />
locale и
i18n. Один только locale влияет на месяцы и
дни недели, но не переводит кнопки и подсказки.Локализация календаря в Carbon Components Svelte позволяет создавать удобный и понятный интерфейс для пользователей из разных стран, обеспечивая правильное отображение всех дат и элементов управления без дополнительной сложности в коде.