Locale — dastur matn, son, sana, vaqt, valyuta, saralash va boshqa madaniy formatlarni qaysi til va hudud qoidalari asosida qayta ishlashini belgilaydigan sozlamalar to‘plami.
Locale faqat tarjima tilini anglatmaydi. Bir xil til turli hududlarda boshqa sana, decimal separator, valyuta va alifbo tartibiga ega bo‘lishi mumkin.
Misollar:
uz-UZ
en-US
en-GB
ru-RU
Locale identifikatori
Locale odatda quyidagi qismlardan tuziladi:
- language;
- script;
- region;
- variant;
- extension.
Misol:
sr-Latn-RS
bu serb tili, lotin yozuvi va Serbiya hududini bildiradi.
Barcha qismlar majburiy emas.
BCP 47
Web va ko‘p platformada language taglar BCP 47 formatiga yaqin ishlatiladi.
language-Script-REGION
Case ko‘rinishi convention:
- language — kichik;
- script — bosh harf bilan;
- region — katta.
Parser tagni case-insensitive qabul qilishi mumkin.
POSIX locale
Unix tizimlarda locale categorylarga bo‘linadi:
LC_CTYPE;LC_NUMERIC;LC_TIME;LC_COLLATE;LC_MONETARY;LC_MESSAGES;LC_ALL.
LANG default locale’ni belgilaydi.
LC_ALL boshqa categorylarni vaqtincha bosib ketishi mumkin.
Son formati
Bir xil son hududga qarab turlicha yoziladi.
1,234.56
1 234,56
1.234,56
Comma qaysi joyda decimal yoki grouping ekanini locale belgilaydi.
User inputni parse qilishda display locale bilan machine format aralashtirilmaydi.
Sana formati
Sana tartibi:
- yil-oy-kun;
- kun-oy-yil;
- oy-kun-yil
bo‘lishi mumkin.
03/04/2026
locale bo‘lmasa 3-aprel yoki 4-mart ekanligi noaniq.
Machine data uchun ISO 8601ga o‘xshash aniq format, UI uchun localized format ishlatiladi.
Vaqt formati
Locale 12 yoki 24 soatlik ko‘rinishga ta’sir qiladi.
14:30
2:30 PM
Time zone locale’dan alohida tushuncha.
Locale formatni, time zone esa vaqtning qaysi hududga nisbatan hisoblanishini belgilaydi.
Valyuta
Valyuta formati:
- symbol joyi;
- spacing;
- decimal digit;
- negative format;
- grouping
bilan farq qiladi.
$1,200.00
1 200,00 €
Locale default valyutani ko‘rsatishi mumkin, ammo transaction currency explicit bo‘lishi kerak.
Plural qoidasi
Ko‘plik faqat 1 va boshqa sonlarga bo‘linmaydi.
Turli tillar:
- zero;
- one;
- two;
- few;
- many;
- other
kategoriyalariga ega.
Localization tizimi son asosida to‘g‘ri message variantini tanlaydi.
Collation
Textni alifbo bo‘yicha saralash code point tartibidan farq qiladi.
Locale-aware collation:
- harf;
- accent;
- case;
- digraph;
- numeric segment
qoidalarini hisobga oladi.
Database va UI bir xil collation ishlatmasa tartib farq qilishi mumkin.
Case conversion
Katta-kichik harf o‘zgartirish ayrim tilda locale-sensitive.
Turk tilidagi I, i, İ, ı mashhur misol.
Identifier, protocol token va security key uchun locale-independent case folding kerak bo‘lishi mumkin.
UI text uchun user locale ishlatiladi.
Number parsing
User kiritgan 1,5 qiymatni invariant parser 15 yoki xato deb talqin qilishi mumkin.
Form input locale bilan parse qilinadi, ichki model esa numeric type’da saqlanadi.
Databasega localized string emas, aniq numeric qiymat yoziladi.
Invariant locale
Machine-to-machine formatlar uchun barqaror, hududdan mustaqil locale ishlatiladi.
Misollar:
- log timestamp;
- config number;
- protocol;
- serialization;
- source code;
- checksum input.
Server OS locale’i o‘zgarsa protocol output o‘zgarmasligi kerak.
Locale negotiation
Web application foydalanuvchi locale’ini quyidagilardan tanlashi mumkin:
- user profile;
- explicit URL yoki setting;
- browser language header;
- organization default;
- application fallback.
IP manzilga qarab locale tanlash taxminiy va foydalanuvchi tanlovini almashtirmaydi.
Fallback
To‘liq locale translation mavjud bo‘lmasa fallback zanjiri ishlaydi.
uz-Cyrl-UZ
→ uz-Cyrl
→ uz
→ default
Fallback text topishga yordam beradi, ammo regionga xos date va currency qoidasi alohida bo‘lishi mumkin.
Runtime locale
Ba’zi eski APIlar process-global locale ishlatadi.
Bir thread locale’ni o‘zgartirsa boshqa thread natijasiga ta’sir qilishi mumkin.
Zamonaviy API explicit locale object qabul qiladi.
Bu concurrent serverda xavfsizroq.
Locale ma’lumoti
Runtime locale data’ni CLDR yoki platforma database’dan olishi mumkin.
Versiya yangilanganda:
- format;
- timezone nomi;
- plural;
- currency symbol;
- collation
o‘zgarishi mumkin.
Outputni exact snapshot bilan test qilganda data versiyasi hisobga olinadi.
Diagnostika
Locale muammosida:
- language tag;
- region;
- script;
- environment variable;
- runtime locale;
- time zone;
- number parser;
- collation;
- fallback;
- locale data versiyasi
tekshiriladi.
“Til to‘g‘ri, format noto‘g‘ri” holati language va region alohida tanlanganini ko‘rsatishi mumkin.
Measurement unit
Locale va region temperature, masofa, og‘irlik va qog‘oz o‘lchami kabi birliklarga ta’sir qilishi mumkin. Ammo user preference yoki domain talabi region defaultidan ustun bo‘lishi mumkin.
Calendar
Barcha foydalanuvchi faqat Gregorian calendar ishlatmaydi. Locale framework alternativ calendar va era nomlarini qo‘llashi mumkin. Backend canonical timestampni saqlab, UI kerakli calendar ko‘rinishini beradi.
Address va ism
Manzil fieldlari, postal code va ism tartibi hududga qarab farq qiladi. first name va last nameni barcha madaniyat uchun majburiy qilish noto‘g‘ri model bo‘lishi mumkin.
Locale cache
Formatter obyektini qayta ishlatish performance’ni oshiradi, lekin locale almashtirilganda eski formatter cache’i yangilanadi. Process-global cache multi-tenant serverda userlar orasida aralashmasligi kerak.
Bog‘liq tushunchalar
Localization, Internationalization, BCP 47, CLDR, Collation, Time zone, Number formatting, Plural rules, Language tag