Локалізація
Кожен вбудований рядок UI (кнопки закриття, мітки пагінації, оголошення сортування, підказки завантаження…) розв'язується через реєстр locale. У бандл вбудовано лише en — будь-яка інша мова завантажується ззовні (імпортований модуль або файл JSON) і реєструється через addLocale. Той самий реєстр обслуговує @zephora/react і @zephora/native. en, tr.
Завантаження locale
// 1) As a module (tree-shaken, typed):
import { addLocale } from "@zephora/react";
import { trLocale } from "@zephora/theme/locales/tr";
addLocale("tr", trLocale);
// 2) As JSON over the network (e.g. from your CDN):
const messages = await fetch("/locales/tr.json").then((r) => r.json());
addLocale("tr", messages);
// JSON dosyası pakette hazır: @zephora/theme/locales/tr.jsonЖиве демо
Перемкніть locale — мітки пагінації та кнопки діалогу оновляться миттєво.
Вибір locale
// Web
<ZephoraConfigProvider locale="tr">...</ZephoraConfigProvider>
// React Native
<ZephoraProvider theme={lightTheme} locale="tr">...</ZephoraProvider>Реєстрація власного locale
addLocale накладає ваші повідомлення поверх англійських, тож часткові визначення безпечні. updateLocale патчить наявний.
import { addLocale, updateLocale } from "@zephora/react";
addLocale("de", {
intlLocale: "de",
firstDayOfWeek: 1,
close: "Schließen",
cancel: "Abbrechen",
confirm: "Bestätigen",
loading: "Wird geladen…",
pageOf: "Seite {page} von {count}",
});
updateLocale("de", { clear: "Leeren" });Читання рядків у власних компонентах
import { useLocale, localeOption } from "@zephora/react";
function SaveBar() {
const { t } = useLocale();
return <Button>{t("apply")}</Button>;
}
// Outside React:
localeOption("cancel", "tr"); // "İptal"Доступні locale
Постачається з 48 готовими перекладами. Кожен — незалежний модуль: імпортуйте тільки те, що потрібно (або завантажте відповідний .json).
| Код | Мова | Шлях імпорту |
|---|---|---|
ar | العربية (Arabic) | @zephora/theme/locales/ar |
az | Azərbaycanca (Azerbaijani) | @zephora/theme/locales/az |
bg | Български (Bulgarian) | @zephora/theme/locales/bg |
bn | বাংলা (Bengali) | @zephora/theme/locales/bn |
ca | Català (Catalan) | @zephora/theme/locales/ca |
cs | Čeština (Czech) | @zephora/theme/locales/cs |
da | Dansk (Danish) | @zephora/theme/locales/da |
de | Deutsch (German) | @zephora/theme/locales/de |
el | Ελληνικά (Greek) | @zephora/theme/locales/el |
es | Español (Spanish) | @zephora/theme/locales/es |
et | Eesti (Estonian) | @zephora/theme/locales/et |
fa | فارسی (Persian) | @zephora/theme/locales/fa |
fi | Suomi (Finnish) | @zephora/theme/locales/fi |
fr | Français (French) | @zephora/theme/locales/fr |
he | עברית (Hebrew) | @zephora/theme/locales/he |
hi | हिन्दी (Hindi) | @zephora/theme/locales/hi |
hr | Hrvatski (Croatian) | @zephora/theme/locales/hr |
hu | Magyar (Hungarian) | @zephora/theme/locales/hu |
hy | Հայերեն (Armenian) | @zephora/theme/locales/hy |
id | Bahasa Indonesia (Indonesian) | @zephora/theme/locales/id |
is | Íslenska (Icelandic) | @zephora/theme/locales/is |
it | Italiano (Italian) | @zephora/theme/locales/it |
ja | 日本語 (Japanese) | @zephora/theme/locales/ja |
ka | ქართული (Georgian) | @zephora/theme/locales/ka |
kk | Қазақша (Kazakh) | @zephora/theme/locales/kk |
ko | 한국어 (Korean) | @zephora/theme/locales/ko |
lt | Lietuvių (Lithuanian) | @zephora/theme/locales/lt |
lv | Latviešu (Latvian) | @zephora/theme/locales/lv |
ms | Bahasa Melayu (Malay) | @zephora/theme/locales/ms |
nl | Nederlands (Dutch) | @zephora/theme/locales/nl |
no | Norsk bokmål (Norwegian) | @zephora/theme/locales/no |
pl | Polski (Polish) | @zephora/theme/locales/pl |
pt | Português (Portuguese) | @zephora/theme/locales/pt |
pt-br | Português do Brasil (Brazilian Portuguese) | @zephora/theme/locales/pt-br |
ro | Română (Romanian) | @zephora/theme/locales/ro |
ru | Русский (Russian) | @zephora/theme/locales/ru |
sk | Slovenčina (Slovak) | @zephora/theme/locales/sk |
sl | Slovenščina (Slovenian) | @zephora/theme/locales/sl |
sr | Srpski (Serbian) | @zephora/theme/locales/sr |
sv | Svenska (Swedish) | @zephora/theme/locales/sv |
sw | Kiswahili (Swahili) | @zephora/theme/locales/sw |
ta | தமிழ் (Tamil) | @zephora/theme/locales/ta |
th | ไทย (Thai) | @zephora/theme/locales/th |
tr | Türkçe (Turkish) | @zephora/theme/locales/tr |
uk | Українська (Ukrainian) | @zephora/theme/locales/uk |
vi | Tiếng Việt (Vietnamese) | @zephora/theme/locales/vi |
zh-cn | 简体中文 (Simplified Chinese) | @zephora/theme/locales/zh-cn |
zh-tw | 繁體中文 (Traditional Chinese) | @zephora/theme/locales/zh-tw |
Довідник повідомлень
Повний набір ключів міститься в типі ZephoraLocale — дії (close, cancel, confirm, clear…), стани даних (loading, noData, emptyMessage), рядки форм (showPassword, browseFiles, removeFile), навігація (pageOf, nextPage, breadcrumb), відображення даних (sortAscending, selectAllRows, goToSlide) та дати (prevMonth, chooseDate, firstDayOfWeek, intlLocale). Плейсхолдери використовують синтаксис {param}, що інтерполюється функцією t(key, params).