Bosh sahifa Wiki i18n

i18n

i18n — dasturiy mahsulotni turli til, yozuv tizimi, hudud, sana, son va madaniy qoidalarga moslashtirishga tayyorlash jarayoni. Atama internationalization so‘zining birinchi va oxirgi harfi orasidagi 18 ta harf sabab qisqartirilgan.

i18n dastur arxitekturasi va source code’da bajariladi. Tarjimaning o‘zi esa localization — l10n jarayoniga kiradi.

Asosiy maqsad

Internationalization bir xil codebase’dan turli locale uchun mahsulot chiqarish imkonini beradi.

U quyidagilarni ajratadi:

  • foydalanuvchi matni;
  • sana va vaqt formati;
  • son va valyuta;
  • plural;
  • text yo‘nalishi;
  • input method;
  • font;
  • sorting;
  • translated asset.

Kod ichida bitta tilga qattiq bog‘langan qiymatlar kamaytiriladi.

Externalized string

UI matni source code ichida tarqoq literal bo‘lib qolmaydi.

O‘rniga message key ishlatiladi:

order.created

Translation katalog:

order.created = Buyurtma yaratildi

ko‘rinishida qiymat beradi.

Key barqaror va ma’noli bo‘lishi kerak.

Message va fragment

Gapni bir nechta kichik tarjima fragmentidan yig‘ish noto‘g‘ri bo‘lishi mumkin.

Masalan:

"Hello " + name + ", you have " + count + " messages"

Turli tilda so‘z tartibi o‘zgaradi.

To‘liq message va named placeholder ishlatiladi:

Hello {name}, you have {count} messages.

Translator gap tartibini erkin o‘zgartiradi.

Placeholder

Placeholder nomi ma’noli bo‘ladi:

{userName}
{itemCount}
{createdAt}

{0}, {1} kabi positional placeholder tarjimada adashishga moyil.

Type va format contexti translation vositasida ko‘rsatiladi.

Plural

Plural logic code’dagi count == 1 sharti bilan cheklanmaydi.

Turli tillar ko‘p plural categoryga ega.

Message format:

{count, plural,
  one {...}
  other {...}
}

kabi qoidalar bilan ishlashi mumkin.

Zero har doim alohida grammatical category emas.

Gender va select

Ayrim tilda message grammatical gender yoki boshqa kategoriyaga bog‘liq.

Select expression kerakli variantni tanlaydi.

Bu foydalanuvchining shaxsiy atributlarini keraksiz yig‘ish degani emas; faqat mahsulot talab qilgan lingvistik context asosida ishlatiladi.

Sana va vaqt

Date format qo‘lda string concatenation bilan yaratilmaydi.

Locale-aware formatter:

  • oy nomi;
  • tartib;
  • 12/24 soat;
  • weekday;
  • calendar;
  • digit

qoidalarini qo‘llaydi.

Time zone locale’dan alohida parameter.

Son va valyuta

Number formatter:

  • decimal separator;
  • grouping;
  • percent;
  • currency;
  • compact notation

ni boshqaradi.

Backend protocol uchun invariant numeric format, UI uchun localized ko‘rinish ishlatiladi.

RTL

Arab va ibroniy kabi tillar o‘ngdan chapga yoziladi.

i18n dizayni:

  • layout mirror;
  • text alignment;
  • icon yo‘nalishi;
  • navigation;
  • bidirectional text;
  • input caret

ni qo‘llashi kerak.

Barcha ikonlar mirror qilinmaydi; masalan, media play belgisi kontekstga bog‘liq.

Text kengayishi

Tarjima asl matndan uzunroq bo‘lishi mumkin.

UI:

  • fixed widthga qattiq bog‘lanmaydi;
  • text wrap;
  • dynamic height;
  • truncation policy;
  • tooltip;
  • responsive layout

bilan ishlaydi.

Pseudo-localization textni sun’iy uzaytirib muammoni oldindan ko‘rsatadi.

Unicode

Internationalized dastur Unicode textni end-to-end qo‘llaydi.

Tekshiriladi:

Faqat UI tarjimasi yetarli emas, data storage ham to‘liq belgilarni saqlashi kerak.

Font

Font kerakli script glyphlarini qamrashi kerak.

Fallback font:

  • style farqi;
  • line height;
  • missing glyph;
  • emoji;
  • shaping

muammosiga ega bo‘lishi mumkin.

Complex script uchun shaping engine zarur.

Input

User faqat lotin keyboard bilan ishlamasligi mumkin.

Form:

  • IME composition;
  • dead key;
  • combining character;
  • copy-paste;
  • mobile keyboard;
  • RTL selection

ni qo‘llashi kerak.

Har keypressda validation IME compositionni buzmasligi kerak.

Locale-aware collation user listini tabiiy tartibda ko‘rsatadi.

Search:

siyosatiga ega.

Database collation va application search engine bir xil natija bermasligi mumkin.

Message context

Bir xil source so‘z turli ma’noga ega bo‘lishi mumkin.

Masalan, “Open”:

  • file ochish;
  • ochiq holat;
  • biznes ishlayapti.

Translation key yoki context bu ma’nolarni ajratadi.

Pseudo-localization

Test locale matnni:

  • uzaytiradi;
  • accent qo‘shadi;
  • bracket bilan o‘raydi;
  • RTLga o‘xshatadi.

Bu hardcoded string, clipping va concatenationni haqiqiy tarjimadan oldin aniqlaydi.

Resource loading

Translation resource:

dan yuklanishi mumkin.

Locale almashtirilganda cache va fallback to‘g‘ri yangilanadi.

i18n test

Testlar:

ni qamrab oladi.

Faqat default tilda test qilish internationalization xatolarini yashiradi.

Translation key barqarorligi

Key source gapning o‘zi bo‘lsa, matndagi kichik tahrir barcha tarjimalarni yangi keyga aylantiradi. Semantic key esa barqaror, lekin contextni nomda yoki metadata’da saqlashi kerak.

Server va client

Server-rendered matn, mobil client va email bir xil translation catalog versiyasidan foydalanmasligi mumkin. Message qayerda render qilinishi va locale qayerda tanlanishi architecture’da aniq belgilanadi.

Log va diagnostika

Machine loglar ko‘pincha barqaror inglizcha yoki structured code bilan yoziladi, UI esa localized message ko‘rsatadi. Faqat tarjima qilingan log orqali alert va qidiruv qurish qiyin.

Accessibility

Screen reader uchun label va error message ham translation katalogiga kiradi. Vizual text yashirilgan bo‘lsa ham accessibility matni locale va plural qoidalariga mos bo‘lishi kerak.

Bog‘liq tushunchalar

Internationalization, Localization, Locale, Unicode, CLDR, Plural rules, RTL, Message format, Translation catalog, Pseudo-localization