بومیسازی
هر رشته متنی داخلی رابط کاربری (دکمههای بستن، برچسبهای صفحهبندی، اعلانهای مرتبسازی، پرامپتهای آپلود…) از طریق رجیستری locale resolve میشود. فقط en در باندل جاسازی شده است — هر زبان دیگر از بیرون (ماژول قابل import یا فایل 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 را عوض کنید — برچسبهای صفحهبندی و دکمههای 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" });خواندن رشتههای متنی در کامپوننتهای خودتان
import { useLocale, localeOption } from "@zephora/react";
function SaveBar() {
const { t } = useLocale();
return <Button>{t("apply")}</Button>;
}
// Outside React:
localeOption("cancel", "tr"); // "İptal"localeهای موجود
با 48 ترجمه آماده عرضه میشود. هر کدام یک ماژول مستقل است — فقط چیزی را که نیاز دارید import کنید (یا .json متناظر را fetch کنید).
| کد | زبان | مسیر import |
|---|---|---|
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). Placeholderها از سینتکس {param} استفاده میکنند که با t(key, params) درج میشود.