GH GambleHub

Köp dilli interfeýsler we lokalizasiýa

1) Ýörelgeler

1. Dil deri däl. Tekstler, formatlar, hatyň ugry, suratlar, hukuk bloklary we hatda nawigasiýa hem üýtgeýär.
2. Ilki açarlar, soň tekstler. Semantik açarlary we parametrleri guruň - terjimeler soň gelýär.
3. Pseudo-lokalizasiýa - çykýança. Tolkunlary, "berk tikilen" setirleri we gizlin anglikizmleri tutuň.
4. Folbekleri öňünden aýdyp bolýar. 'ru-UA → ru → en'. "Asuda" şowsuzlyklar ýok.
5. Howpsuzlyk. Sanitizsiz DOM-a terjimeden HTML ýok; pleýsholderler diňe pozisiýaly/atlandyrylan.
6. A11y-ekwiwalentlik. Alt-tekstler, aria-bellikler, gysgaltmalar - hemme zat lokallaşdyrylýar.


2) Lokalizasiýa strategiýasy

Ulgam kodlary: 'language-REGION' (mysal üçin 'pt-BR', 'en-GB').
Lokal saýlamak: ulanyjy profili → sazlamak; ätiýaçlyk - brauzer/geo boýunça awto-detekt (tassyklama bilen).
Köp sebit: dili hukukdan tapawutlandyryň: 'es-ES' ≠ 'es-MX' (dürli kanunlar/tölegler/çäkler).
Folbek zynjyry: UI - iň ýakyn dil; hukuk tekstleri - berk sebit görnüşi, ýogsam blok we tassyklama haýyşy.


3) Maglumat arhitekturasy we mazmuny

Esasy ugurlar: nawigasiýa, CTA, ýalňyşlyklar, formalar, maslahatlar, habarnamalar, hatlar, PDF/bannerler.
Tekst giňeldilmegi: giňligi 30-40% (nemes/fin). Leýaut - elastik (flex/grid).
Äheň/stil: marka sözlügi (kritiki ýerlerde "sleng terjimesiz" adalgalar).
Şekiller/nyşanlar: suratlardaky tekstden gaça duruň; zerur bolsa, ýerli wersiýalary saklaň.


4) i18n arhitekturasy

Açarlar: 'domain. section. intent` → `payments. withdraw. error. insufficient_funds`.
Pleysholderler: ('{amount}', '{minutes}') diýlip atlandyrylýar.
ICU MessageFormat: köplük, jyns, utgaşdyrmak.
Faýllar: lokal we domen boýunça ('/i18n/{ locale }/{ domain} .json '), çankalar ýaltalyk bilen ýüklenýärler.
Serwer/müşderi: ähliumumy render, çerezde lokal + HTTP-Vary.

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

5) Formatlamak: sanlar, seneler, walýutalar, birlikler

'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');

Minor birlikler: summalary sent/kopek bilen saklaň; müşderide formatlamak.
Deňeşdirme wagty: 'Intl. RelativeTimeFormat`.
Birlikler: 'Intl. NumberFormat({ style:'unit', unit:'meter' })`.
Senenama/hepde: hepdäniň 1-nji güni we senäniň formaty - lokal boýunça.


6) RTL we hat ugry

'dir =' rtl '' for 'ar', 'he', 'fa'; ulanyjy mazmuny üçin 'dir =' auto 'ulanyň.
Nyşanlary/chevron 'lary tersine öwüriň; aýnalar karuseller we stepperler.
Walýuta belgileri - LTR penjireleri (garyşyk BiDi bulam-bujarlykdan gaça duruň).
CSS-logiki häsiýetleri ('inline-start/end') left/right ýerine.


7) Görnüşler we giriş

Atlar/salgylar: apostroflara/diakritikalara/goşa familiýalara ýol beriň.
Telefonlar: E.164 saklamak; maskalar - ýumşak, goýma goldawy bilen.
Salgy formatlary: ýurt boýunça meýdanlaryň tertibi; indeks/ştat ýok bolup biler.
Klawiatura: 'inputmode', 'autocomplete' lokalizasiýa üçin dogry.
Pleýsholderler: ýerli dilde/formatda mysallar.


8) Pseudo-lokalizasiýa we synag

Setirleri awtomatiki usulda çalyşyň 【 【 Ěě ~ 】 '+ uzaldyş' + + '(35%).
"qps-ploc" diýip psevdolokaly dev-gurnama goşuň.
Terjimeçiler üçin kontekstli skrinshotlar: pleýsholderleri we uzyn tekstleri yşyklandyrmak.
Synap görüň: kesmek, göçürmek, taşlamak, "gaty tikilen" setirler, RTL.


9) Habarnamalar, hatlar, şablonlar

Her lokal üçin hat we tema şablony; tekstleri we sütünleri bölüň.
Mowzukdaky seneler/pullar - lokal boýunça formatlanýar.
"Habarnamalary düzmek" baglanyşyklary - elmydama hat dilinde.
SMS: gysgaça, köp satrly dyrnaksyz; UTM - lokalizasiýa bolmazdan.


10) Howpsuzlyk we ygtybarlylyk

Terjimäni hiç haçan HTML hökmünde düşündirmäň, ygtybarly goýmalary ulanyň.
Pleýsholderler - diňe maglumatlar, bellik däl.
Loglar/metrikler - gizlin däl, ýöne kynçylyklar üçin ýerli.
Terjime faýly elýeterli bolmadyk ýagdaýynda folbek - "sessiz" (iňlis + telemetriýany görkeziň).


11) Öndürijilik

Marşrutlar/domenler boýunça pul geçirimleriniň çankalary; ýygy-ýygydan ýüklemek.
Кеш CDN с `ETag`/`Cache-Control`.
Lokal çalşylanda rerenderlerden gaça duruň - memoizasiýa bilen i18n konteksti.


12) iGaming aýratynlyklary

Diskleýmerler we jogapkär oýun: sözlemler ýurda baglydyr (18 +/21 +, kadalaşdyryş edaralary, kömek liniýalary).
KYC/AML: kanuny taýdan dogry adalgalar (mysal üçin, "Serişde çeşmesi", "Benefisiar eýesi"), halatlaryň/dogluşlaryň görnüşleri.
Töleg usullary: ýerli atlar (PIX, Papara, SEPA) we şertler (ETA/komissiýalar) - sebit boýunça berk.
Koeffisiýentler we format: 'decimal/fractional/american' - ýerli düşündirişler we mysal.
Hukuk tekstleri: üýtgemedik sebit görnüşleri; folbekiň başga ýurisdiksiýa gadagan edilmegi.


13) Dizaýn-ulgamyň bellikleri (mysal)

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) Snippetler

React + i18next (ýaltalyk ýüklemek, 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 pluralization (rus/ukrain):
json
{
"notifications": "{count, plural, one {# уведомление} few {# уведомления} many {# уведомлений} other {# уведомления}}"
}
Walýuta/seneler üçin 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 synpy:
js const rtl = new Set(['ar','he','fa']);
document.documentElement.dir = rtl.has(locale.split('-')[0])? 'rtl': 'ltr';
Pseudolokal (dev):
js const pseudo = s => s.replace(/[aAeEiIoOuU]/g, m => ({a:'à',e:'ê',i:'ï',o:'ô',u:'û'}[m.toLowerCase()]        m)).replace(/([^\s])/g,'$1\u0301');

15) Boş/ýalňyşlyklar/degradasiýa greýsfuly

Açar terjimesi ýok: Iňlis dilini görkezýäris + Logo 'missing _ key'.
Lokal faýl ýok: folbek we "Iňlis dilinde interfeýsiň bir bölegi" banneri.
Gaty uzyn tekst: köp hatly, 'line-clamp', doly tekst bilen tooltip.


16) Metrikler we hil gözegçiligi

Açarlar/lokallar boýunça% coverage (maksat ≥ 98%).
Täze neşirler üçin Time-to-Translate (TTT).
Bug rate L10n: wizual kesmeler, RTL kemçilikleri, nädogry formatlar.
Reading ease (subýektiw anket) we NPS per locale.
Sebitler boýunça kanuny tassyklama (komplensiň barlag sanawy).


17) Antipatternler

Koddaky satrlaryň konkatenasiýasy ("Siz" + amount "!") - grammatikany bozýar.
Ýerli wersiýalary bolmadyk şekillerdäki/nyşanlardaky tekst.
Iňlisçe gaty giňlik.
Ýurduň hukugyny dil bilen çalyşmak (Meksika üçin 'es-ES' ulanmak).
CMS-den sanitizasyz HTML arkaly terjime.
Dürli ýerlerde dürli manyly şol bir açar.


18) QA-çek-sanawy

Setirler we açarlar

  • Atlandyrylan pleýsholderler; konkatenasiýa ýok.
  • ICU-pluralization/gerek ýerinde.
  • Folbek zynjyry işleýär.

Giriş we elýeterlilik

  • Giňligi 30-40%; 'line-clamp', sözleriň göçürilmegi.
  • Alt/aria-bellikler lokallaşdyryldy.
  • RTL nyşanlary/nawigasiýany görkezýär; sanlar okalýar.

Formatlar

  • Seneler/walýutalar 'Intl.' arkaly; minor birliklerinden jemi.
  • Salgysy/telefon/ady - ýurt boýunça çeýe düzgünler.

Howpsuzlyk/Çykyş

  • Terjimeler HTML-ni ýerine ýetirmeýär; XSS aýryldy.
  • Ýalta çeňňekler, CDN kesh, gereksiz rerenderlersiz.

iGaming aýratynlygy

  • Diskleýmerler/18 +/kömek liniýalary - ýurisdiksiýa boýunça.
  • KYC/AML tekstleri kanuny taýdan tassyklandy.
  • Töleg atlary/ETA/komissiýalar - ýerli.

19) Dizaýn-ulgamdaky resminamalar

Разделы: i18n Tokens, Guides (ICU/Plural/RTL), Patterns (Emails/SMS/Toasts), Legal Strings per Region.
Gurallar: psevdolokal, ekranlaryň skrinshoteri, coverage hasabaty, açar linteri.
Proses: sözlük, Translation Memory, kontekstli skrinshotlar, dil göterijiniň gykylygy.


Gysgaça gysgaça

Köp dilli UI - binagärlik, dizaýn, mazmun we hukuk derejesinde ulgamlaýyn iş. Açarlary we folbekleri gurnaň, ICU we 'Intl' ulanyň, RTL-i goldaýarsyňyz, pseudo-lokallary öňünden kowuň we sebitleýin formulalaryň kanuny dogrulygyny üpjün ediň. Şonda önüm her ýurtda we her bir ulanyjy üçin koeffisiýentlerden we töleglerden başlap hatlara we şahadatnamalara çenli duýular.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.