Τοπικοποίηση
Κάθε ενσωματωμένο κείμενο UI (κουμπιά κλεισίματος, ετικέτες σελιδοποίησης, ανακοινώσεις ταξινόμησης, προτροπές μεταφόρτωσης…) επιλύεται μέσω του μητρώου locale. Μόνο το en είναι ενσωματωμένο στο bundle — κάθε άλλη γλώσσα φορτώνεται από έξω (εισαγόμενο module ή αρχείο 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Ζωντανό demo
Άλλαξε το locale — οι ετικέτες σελιδοποίησης και τα κουμπιά dialog ενημερώνονται άμεσα.
Επιλογή ενός 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" });Ανάγνωση κειμένων στα δικά σου components
import { useLocale, localeOption } from "@zephora/react";
function SaveBar() {
const { t } = useLocale();
return <Button>{t("apply")}</Button>;
}
// Outside React:
localeOption("cancel", "tr"); // "İptal"Διαθέσιμα locales
Έρχεται με 48 έτοιμες μεταφράσεις. Η καθεμία είναι ανεξάρτητο module — εισήγαγε μόνο ό,τι χρειάζεσαι (ή κάνε fetch το αντίστοιχο .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). Οι placeholders χρησιμοποιούν τη σύνταξη {param} που παρεμβάλλεται από το t(key, params).