GH GambleHub

Интерфейсҳои бисёрзабонӣ ва маҳаллисозӣ

1) Принсипҳо

1. Забон пӯст нест. Матнҳо, форматҳо, самти навиштан, тасвирҳо, блокҳои ҳуқуқӣ ва ҳатто паймоиш тағйир меёбанд.
2. Аввал калидҳо, баъд матнҳо. Калидҳои семантикӣ ва параметрҳо - тарҷумаҳо дертар меоянд.
3. Псевдолокализатсия - пеш аз баромадан. Обхезиҳо, хатҳои "сахт дӯхташуда" ва англикизмҳои пинҳон.
4. Пӯшишҳо пешгӯишавандаанд. 'ru-UA → ru → en'. Не камбудиҳои "ором".
5. Амният. Ягон HTML аз тарҷума ба DOM бидуни беҳдошт; ҷойгузинҳо танҳо мавқеъ/ном доранд.
6. A11y-equivalence. Матнҳои Alt, тамғакоғазҳо, ихтисорот - ҳама чиз локализатсия шудааст.


2) Стратегияи локалӣ

Рамзҳои система: 'забон-REGION' (масалан, 'pt-BR', 'en-GB').
Интихоби маҳал: профили корбар → танзим; эҳтиёт - муайянкунии худкор аз ҷониби браузер/гео (бо тасдиқ).
Бисёр минтақаҳо: забонро аз қонун фарқ кунед: 'es-ES' ≠ 'es-MX' (қонунҳо/пардохтҳо/маҳдудиятҳои гуногун).
Занҷираи Folback: UI забони наздиктарин аст; матнҳои ҳуқуқӣ - нусхаи қатъии минтақавӣ, вагарна дархост ва тасдиқи онро манъ мекунад.


3) Меъмории иттилоотӣ ва мундариҷа

Соҳаҳои асосӣ: навигатсия, CTA, иштибоҳҳо, шаклҳо, дархостҳо, огоҳиҳо, ҳарфҳо, PDF/баннерҳо.
Васеъшавии матн: + 30-40% захираи паҳнои (Олмон/Финляндия). Тарҳ - тағйирёбанда (фасеҳ/шабака).
Оҳанг/услуб: луғати бренд (истилоҳҳо, бидуни "тарҷумаи забонак" дар ҷойҳои интиқодӣ).
Тасвирҳо/нишонаҳо: дар расмҳо матнро пешгирӣ кунед; агар лозим бошад, версияҳои маҳаллиро нигоҳ доред.


4) меъмории i18n

Калидҳо: 'домен. фасли. нияти пардохтҳои '→'. бозпас гирифтан. хато. insufficient_funds'.
Ҷойгузинҳо: номгузоришуда ('{миқдор}', '{дақиқа}'), форматкардашуда аз сатр.
Формати ICU: зарб, гендер, мувофиқат.
Файлҳо: аз рӯи маҳал ва доменҳо ('/i18n/{ locale }/{ domain} .json '), қисмҳо танбалӣ бор карда мешаванд.
Сервер/мизоҷ: пешниҳоди универсалӣ, ҷойгиршавӣ дар куки + HTTP-Vary.

Калиди намунавӣ (ICU):
json
{
"betslip": {
"placed": "Ставка на сумму {amount} {currency} принята",
"timeout": "Ожидаем подтверждение… ~{seconds, plural, one {# сек} few {# сек} many {# сек} other {# сек}}"
}
}

5) Форматкунӣ: рақамҳо, санаҳо, асъорҳо, воҳидҳо

Истифодаи 'Intl. ':
js const nf = new Intl.NumberFormat('uk-UA', { style:'currency', currency:'UAH' });
nf.format(2000); // 2 000,00 ₴

const df = new Intl.DateTimeFormat('tr-TR', { dateStyle:'medium', timeStyle:'short' });
df.format(new Date());

const pl = new Intl.PluralRules('ru-RU');

Воҳидҳои хурд: Маблағҳоро дар сент/копекҳо нигоҳ доред; Формат дар муштарӣ.
Вақти нисбӣ: 'Intl. Формати нисбӣ '.
Воҳидҳо: 'Intl. Рақами формат ({услуб: 'воҳид', воҳиди: 'метр'}) '.
Тақвим/ҳафта: рӯзи 1-уми ҳафта ва формати сана - аз рӯи маҳал.


6) RTL ва самти навиштан

Дастгирии 'dir = "rtl"' барои 'ar', 'he', 'fa'; истифодаи 'dir = "auto"' барои мундариҷаи фармоишӣ.
Нишонаҳо/шевронҳо; оинаҳои carousel ва stepper.
Рақамҳо/аломатҳои асъорӣ - тирезаҳои LTR (пешгирӣ кардани бетартибиҳои омехтаи BIDi).
Хусусиятҳои CSS Boolean ('inline-start/end') ба ҷои чап/рост.


7) Шаклҳо ва вуруд

Номҳо/суроғаҳо: ба апостроф/диакритика/насабҳои дугона иҷозат диҳед.
Телефонҳо: E.164 захира; ниқобҳо - нарм, бо пуштибонӣ.
Форматҳои суроғаҳо: фармоиши саҳроӣ аз рӯи кишвар; индекс/ҳолат метавонад намерасад.
Клавиатура: 'inputmode', 'autocomplete' барои маҳал дуруст аст.
Ҷойгузинҳо: намунаҳо бо забони/формати маҳаллӣ.


8) Псевдолокализатсия ва озмоиш

Ба таври худкор сатрҳоро бо '【 аз 】' + васеъшавӣ '+ + +' (~ 35%) иваз кунед.
Псевдолокалро ба маҷлиси дев ҳамчун 'qps-ploc' дохил кунед.
Скриншотҳо бо контекст барои тарҷумонҳо: равшансозии ҷойгоҳҳо ва матнҳои дароз.
Санҷиш: ороишҳо, фарзияҳо, обхезиҳо, сатрҳои "сахт часпонидашуда", RTL.


9) Огоҳиҳо, ҳарфҳо, қолибҳо

Қолаби ҳарф ва мавзӯъ - барои ҳар як маҳал; матнҳо ва тарҳҳои алоҳида.
Сана/миқдор дар мавзӯъ - формат аз рӯи локал.
Пайвандҳои огоҳиномаи конфигуратсия ҳамеша бо забони ҳарф мебошанд.
SMS: кӯтоҳ, бе нохунакҳои бисёрқабата; UTM - маҳаллисозӣ нест.


10) Бехатарӣ ва эътимоднокӣ

Ҳеҷ гоҳ тарҷумаро ҳамчун HTML шарҳ надиҳед, замимаҳои бехатарро истифода баред.
Ҷойгузинҳо - танҳо маълумот, на нишона.
Сабтҳо/ченакҳо тасниф карда намешаванд, аммо бо ҷойгоҳ барои пайгирии мушкилот.
Folback вақте ки файли тарҷума мавҷуд нест - "ором" (нишон додани англисӣ + телеметрия).


11) Иҷро

Қисмҳои интиқол аз рӯи хатсайрҳо/доменҳо; барои зуд-зуд бор кардан.
Кеш CDN с 'ET' ag '/' Кэш-назорат '.
Ҳангоми тағир додани маҳалҳо аз rerenders канорагирӣ кунед - i18n контекст бо хотира.


12) Хусусиятҳои IGaming

Радди масъулият ва бозии масъул: матн аз кишвар вобаста аст (18 +/21 +, мақомоти танзимкунанда, хатҳои кӯмак).
KYC/AML: шартҳои қонунии дуруст (масалан, "Манбаи маблағҳо", "Соҳиби судманд"), имконоти парванда/таваллуд.
Усулҳои пардохт: номҳои маҳаллӣ (PIX, Папара, SEPA) ва шартҳо (ETA/комиссияҳо) - қатъиян аз рӯи минтақа.
Коэффисентҳо ва формат: 'даҳӣ/касрӣ/амрикоӣ' - шарҳҳои маҳаллӣ ва мисол.
Матнҳои ҳуқуқӣ: версияҳои минтақавии бетағйир; манъ кардани folbeck аз дигар қаламравҳо.


13) Нишонаҳои системаи тарроҳӣ (мисол)

json
{
"i18n": {
"fallback": ["en"],
"rtl": ["ar", "he", "fa"],
"textExpansionPct": 0.35,
"screenshotHints": true
},
"typography": {
"lineHeight": { "ui": 1.4, "dense": 1.3 },
"hyphens": "auto",
"tabularNums": true
},
"layout": {
"minLabelWidth": 96,
"gap": { "sm": 8, "md": 12, "lg": 16 }
},
"a11y": {
"ariaMirroring": true,
"altTranslate": true,
"contrastAA": true
}
}

14) Снайперҳо

Реаксия + i18next (пурборкунандаи танбал, ICU):
ts import i18n from 'i18next';
import ICU from 'i18next-icu';
import { initReactI18next } from 'react-i18next';

i18n.use(ICU).use(initReactI18next).init({
lng: 'uk-UA',
fallbackLng: ['ru', 'en'],
load: 'languageOnly',
interpolation: { escapeValue: false },
resources: {} // пусто — грузим лениво
});

export async function loadNamespace(ns: string, lng = i18n.language){
const mod = await import(`/i18n/${lng}/${ns}.json`);
i18n.addResourceBundle(lng, ns, mod.default, true, true);
}
Плюрализатсияи ICU (рус/укр):
json
{
"notifications": "{count, plural, one {# уведомление} few {# уведомления} many {# уведомлений} other {# уведомления}}"
}
Intl барои асъор/санаҳо:
js const money = (v, c, l) => new Intl.NumberFormat(l, {style:'currency', currency:c}).format(v/100);
const rel = (v, unit, l) => new Intl.RelativeTimeFormat(l, {numeric:'auto'}).format(v, unit);
// money(250000,'EUR','de-DE') → 2.500,00 €
Синфи RTL дар реша:
js const rtl = new Set(['ar','he','fa']);
document.documentElement.dir = rtl.has(locale.split('-')[0])? 'rtl': 'ltr';
Псевдолокал (дев):
js const pseudo = s => s.replace(/[aAeEiIoOuU]/g, m => ({a:'à',e:'ê',i:'ï',o:'ô',u:'û'}[m.toLowerCase()]        m)).replace(/([^\s])/g,'$1\u0301');

15) Таназзули холӣ/хато/хокистарӣ

Тарҷумаи калидӣ вуҷуд надорад: мо забони англисӣ + сабти 'missing _ key' -ро нишон медиҳем.
Файли локалӣ нест: folback ва баннер "Қисми интерфейс бо забони англисӣ".
Матн хеле дароз аст: бисёр сатр, 'line-clamp' дар ҷои, асбоб бо матни пурра.


16) Ченакҳо ва назорати сифат

Фарогирӣ% аз рӯи калид/макон (ҳадаф ≥ 98%).
Вақт ба тарҷума (TTT) барои нашри нав.
Сатҳи хатогӣ L10n: порчаҳои визуалӣ, нуқсонҳои RTL, форматҳои хато.
Хониши осон (тадқиқоти субъективӣ) ва NPS дар як маҳал.
Тасдиқи ҳуқуқӣ аз рӯи минтақа (рӯйхати назоратӣ).


17) Антипаттернҳо

Ҳамоҳангсозии сатрҳо дар рамз ("Шумо бурдед" + маблағ + "!") - грамматикаро мешиканад.
Матн дар тасвирҳо/нишонаҳо бе версияҳои маҳаллӣ.
Паҳнои сахт барои забони англисӣ.
Иваз намудани қонунҳои кишвар бо забон (истифодаи 'es-ES' барои Мексика).
Тарҷумаи HTML аз CMS бидуни санитария.
Ҳамон калид бо маъноҳои гуногун дар ҷойҳои гуногун.


18) Рӯйхати назоратии QA

Хатҳо ва калидҳо

  • Ҷойгоҳҳои номбаршуда; созгор нест.
  • ICU-pluralization/ҷинс дар ҷойҳои зарурӣ.
  • Занҷираи folback кор мекунад.

Тарҳ ва дастрасӣ

  • Маржаи паҳнӣ + 30-40%; 'line-clamp', печонидани калима.
  • Тамғакоғазҳои Alt/aria локализатсия шудаанд.
  • Оинаи RTL нишонаҳо/паймоиш; рақамҳо хонда мешаванд.

Форматҳо

  • Санаҳо/асъорҳо тавассути 'Intl. '; маблағ аз воҳидҳои хурд.
  • Суроға/Телефон/Ном - Қоидаҳои тағйирёбандаи кишвар.

Бехатарӣ/иҷрои

  • Тарҷумаҳо HTML-ро иҷро намекунанд; XSS хориҷ карда шуд.
  • Қисмҳои танбал, кэши CDN, бидуни такрори нолозим.

Хусусиятҳои IGaming

  • Disclaimers/18 +/хатҳои ёрирасон - аз рӯи салоҳият.
  • Матнҳои KYC/AML ба таври қонунӣ оштӣ шудаанд.
  • Номҳои пардохт/ETA/пардохтҳо - маҳаллӣ.

19) Ҳуҷҷатгузорӣ дар системаи тарроҳӣ

Разделы: i18n Токенс, Роҳнамо (ICU/Plural/RTL), Намунаҳо (Почтаҳо/SMS/Тостҳо), Сатрҳои ҳуқуқӣ дар як минтақа.
Воситаҳо: псевдолокал, скриншотҳои экранҳо, гузориши фарогирӣ, линтери асосӣ.
Раванд: луғат, хотираи тарҷума, скриншотҳои контекстӣ, баррасии сухангӯи модарӣ.


Хулосаи мухтасар

UI бисёрзабона кори систематикӣ дар сатҳи меъморӣ, тарроҳӣ, мундариҷа ва ҳуқуқ мебошад. Калидҳо ва пӯшишҳоро ташкил кунед, ICU ва 'Intl' -ро истифода баред, RTL-ро дастгирӣ кунед, псевдо-локалро пешакӣ иҷро кунед ва дурустии ҳуқуқии матни минтақаро таъмин кунед. Он гоҳ маҳсулот эҳсос хоҳад шуд - аз коэффисиентҳо ва пардохтҳо то мактубҳо ва кӯмак - дар ҳар кишвар ва барои ҳар як корбар.

Contact

Тамос гиред

Барои саволҳо ё дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram ё WhatsApp — ихтиёрӣ.

Номи шумо ихтиёрӣ
Email ихтиёрӣ
Мавзӯъ ихтиёрӣ
Паём ихтиёрӣ
Telegram ихтиёрӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиёрӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.