O'zbek

JavaScript Intl API bilan global qamrovni oching. Sana, raqam, valyuta formatlash bo‘yicha xalqarolashtirishning eng yaxshi amaliyotlarini o‘rganing va butun dunyo bo‘ylab mukammal foydalanuvchi tajribasini ta’minlang.

JavaScript Intl API: Global Auditoriya uchun Xalqarolashtirishning Eng Yaxshi Amaliyotlari

Bugungi o‘zaro bog‘langan dunyoda global auditoriyaga xizmat ko‘rsatadigan veb-ilovalar yaratish juda muhim. JavaScript Intl API xalqarolashtirish (i18n) uchun kuchli vositalarni taqdim etadi, bu sizga sanalar, raqamlar, valyutalar va boshqalarni turli lokallar qoidalariga muvofiq formatlash imkonini beradi. Ushbu maqolada haqiqatan ham global ilovalar yaratish uchun Intl API'dan foydalanishning eng yaxshi amaliyotlari ko‘rib chiqiladi.

Xalqarolashtirish (i18n) va Mahalliylashtirishni (l10n) Tushunish

Intl API'ning o‘ziga xos xususiyatlariga sho‘ng‘ishdan oldin, xalqarolashtirish (i18n) va mahalliylashtirish (l10n) o‘rtasidagi farqni tushunish muhim. I18n – bu ilovalarni muhandislik o‘zgarishlarini talab qilmasdan turli tillar va mintaqalar uchun osongina moslashtiriladigan tarzda loyihalash va ishlab chiqish jarayonidir. L10n esa, aksincha, xalqarolashtirilgan ilovani matnni tarjima qilish va boshqa lokalga xos elementlarni moslashtirish orqali ma’lum bir lokal uchun moslashtirish jarayonidir.

Intl API i18n jihatiga e’tibor qaratadi va lokalga sezgir ma’lumotlar bilan ishlash mexanizmlarini taqdim etadi, mahalliylashtirish esa odatda tarjimalar va lokalga xos konfiguratsiyalarni taqdim etishni o‘z ichiga oladi.

Intl API'ning Asosiy Komponentlari

Intl API bir nechta asosiy obyektlardan iborat bo‘lib, ularning har biri xalqarolashtirishning muayyan jihatlari bilan ishlash uchun mas’uldir:

Intl API'dan Foydalanishning Eng Yaxshi Amaliyotlari

Intl API'dan samarali foydalanish va global auditoriyangiz uchun ijobiy foydalanuvchi tajribasini ta’minlash uchun quyidagi eng yaxshi amaliyotlarni inobatga oling:

1. To‘g‘ri Lokalni Ko‘rsatish

Xalqarolashtirishning asosi to‘g‘ri lokalni ko‘rsatishdir. Lokal formatlash uchun ishlatiladigan til, mintaqa va har qanday maxsus variantlarni belgilaydi. Siz foydalanuvchining afzal ko‘rgan lokalini navigator.language xususiyatidan yoki Accept-Language HTTP sarlavhasidan olishingiz mumkin.

Intl obyektlarini yaratishda siz lokalni satr yoki satrlar massivi sifatida ko‘rsatishingiz mumkin. Agar siz massiv taqdim etsangiz, API mavjud variantlardan eng mos keladigan lokalni topishga harakat qiladi.

Misol:

const locale = navigator.language || 'en-US';
const numberFormat = new Intl.NumberFormat(locale);

Agar foydalanuvchining afzal ko‘rgan lokali mavjud bo‘lmasa, siz zaxira lokalni taqdim etishingiz mumkin. Masalan, agar foydalanuvchi brauzeri qo‘llab-quvvatlanmaydigan lokal haqida xabar bersa, standart sifatida 'en-US' dan foydalanishingiz mumkin.

2. Sana va Vaqtni Formatlash uchun Intl.DateTimeFormat'dan Foydalaning

Sana va vaqtni to‘g‘ri formatlash mahalliylashtirilgan tajribani taqdim etish uchun juda muhimdir. Intl.DateTimeFormat obyekti sizga sana va vaqtni ma’lum bir lokalning qoidalariga muvofiq formatlash imkonini beradi.

Siz formatlashni yil, oy, kun, soat, daqiqa va soniya formati kabi turli xil variantlarni ko‘rsatish orqali sozlashingiz mumkin. Shuningdek, sana va vaqtning dunyoning turli burchaklaridagi foydalanuvchilar uchun to‘g‘ri ko‘rsatilishini ta’minlash uchun vaqt mintaqasini belgilashingiz mumkin.

Misol:

const locale = 'de-DE'; // Nemis (Germaniya)
const date = new Date();
const options = {
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  timeZone: 'Europe/Berlin'
};

const dateTimeFormat = new Intl.DateTimeFormat(locale, options);
const formattedDate = dateTimeFormat.format(date); // Natija: masalan, "22. Mai 2024, 14:30"
console.log(formattedDate);

Ushbu misol joriy sana va vaqtni Nemis (Germaniya) lokaliga muvofiq formatlaydi, shu jumladan yil, oy, kun, soat va daqiqani. Shuningdek, 'Europe/Berlin' vaqt mintaqasi ko‘rsatilgan.

Dunyo bo‘ylab qo‘llaniladigan turli sana va vaqt formatlarini hisobga olishni unutmang. Masalan, AQSh MM/DD/YYYY dan foydalanadi, ko‘plab boshqa mamlakatlar esa DD/MM/YYYY dan foydalanadi.

3. Raqam, Valyuta va Foizlarni Formatlash uchun Intl.NumberFormat'dan Foydalaning

Intl.NumberFormat obyekti raqamlar, valyutalar va foizlarni lokalga xos qoidalarga muvofiq formatlashning moslashuvchan usulini taqdim etadi. Siz formatlashni valyuta, uslub (o‘nli, valyuta yoki foiz), minimal va maksimal kasr raqamlari va boshqalar kabi variantlarni ko‘rsatish orqali sozlashingiz mumkin.

Misol (Valyutani Formatlash):

const locale = 'ja-JP'; // Yapon (Yaponiya)
const amount = 12345.67;
const options = {
  style: 'currency',
  currency: 'JPY'
};

const numberFormat = new Intl.NumberFormat(locale, options);
const formattedAmount = numberFormat.format(amount); // Natija: masalan, "¥12,346"
console.log(formattedAmount);

Ushbu misol 12345.67 raqamini Yapon Iyenasi (JPY) sifatida formatlaydi. Valyuta belgisi (¥) va guruhlash ajratuvchisi (,) yapon lokaliga muvofiq avtomatik ravishda sozlanishiga e'tibor bering.

Misol (Foizlarni Formatlash):

const locale = 'ar-EG'; // Arab (Misr)
const percentage = 0.75;
const options = {
  style: 'percent',
  minimumFractionDigits: 2
};

const numberFormat = new Intl.NumberFormat(locale, options);
const formattedPercentage = numberFormat.format(percentage); // Natija: masalan, "٧٥٫٠٠٪"
console.log(formattedPercentage);

Ushbu misol 0.75 raqamini Arab (Misr) tilida foiz sifatida formatlaydi. Natija arabcha foiz belgisini (٪) va ikkita o‘nli kasrni o‘z ichiga oladi.

Valyutani Formatlash uchun Muhim Jihatlar:

4. Intl.PluralRules yordamida Ko‘plik Shakllarini To‘g‘ri Boshqaring

Ko‘plik qoidalari tillar bo‘yicha sezilarli darajada farq qiladi. Masalan, ingliz tilida birlik va ko‘plik shakllari bilan oddiy qoidalar mavjud, boshqa tillarda esa raqamning qiymatiga asoslangan murakkabroq qoidalar bor. Intl.PluralRules obyekti berilgan raqam va lokal uchun to‘g‘ri ko‘plik shaklini aniqlashga yordam beradi.

Misol:

const locale = 'ru-RU'; // Rus (Rossiya)
const pluralRules = new Intl.PluralRules(locale);

function getPluralForm(count) {
  const rule = pluralRules.select(count);
  switch (rule) {
    case 'one': return 'товар'; // tovar (birlik)
    case 'few': return 'товара'; // tovara (bir necha)
    case 'many': return 'товаров'; // tovarov (ko'p)
    default: return 'товаров'; // Standart holatda ko'p
  }
}

const count = 5;
const pluralForm = getPluralForm(count);
console.log(`${count} ${pluralForm}`); // Natija: "5 товаров"

Ushbu misol rus tilida "товар" (mahsulot) so‘zi uchun to‘g‘ri ko‘plik shaklini olish uchun Intl.PluralRules'dan qanday foydalanishni ko‘rsatadi. Rus tilida raqamning 1, 2-4 yoki 5-9 bilan tugashiga qarab turli xil ko‘plik shakllari mavjud.

5. Intl.ListFormat yordamida Ro‘yxatlarni Formatlang

Elementlar ro‘yxatini taqdim etishda formatlash lokallar bo‘yicha farq qilishi mumkin. Intl.ListFormat obyekti sizga ro‘yxatlarni lokalga xos qoidalarga muvofiq formatlash imkonini beradi, shu jumladan turli bog‘lovchilardan (masalan, "va", "yoki") va ro‘yxat ajratuvchilaridan (masalan, vergul, nuqtali vergul) foydalanishni.

Misol:

const locale = 'es-ES'; // Ispan (Ispaniya)
const list = ['manzanas', 'naranjas', 'plátanos'];
const listFormat = new Intl.ListFormat(locale, { style: 'long', type: 'conjunction' });

const formattedList = listFormat.format(list); // Natija: "manzanas, naranjas y plátanos"
console.log(formattedList);

Ushbu misol Ispan (Ispaniya) tilida mevalar ro‘yxatini formatlaydi, oxirgi ikkita elementni bog‘lash uchun "y" (va) bog‘lovchisidan foydalanadi.

6. Intl.RelativeTimeFormat yordamida Nisbiy Vaqtni Formatlang

Nisbiy vaqtni ko‘rsatish (masalan, "kecha", "2 soatdan keyin") vaqt ma’lumotlarini taqdim etishning foydalanuvchiga qulay usulidir. Intl.RelativeTimeFormat obyekti sizga nisbiy vaqtni lokalga xos qoidalarga muvofiq formatlash imkonini beradi.

Misol:

const locale = 'fr-CA'; // Fransuz (Kanada)
const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });

console.log(rtf.format(-1, 'day')); // Natija: "hier"
console.log(rtf.format(2, 'day')); // Natija: "dans 2 jours"

Ushbu misol Fransuz (Kanada) tilida nisbiy vaqtni formatlaydi. Natija "hier" (kecha) va "dans 2 jours" (2 kundan keyin) ni ko‘rsatadi.

numeric opsiyasi raqamlarning qanday ko‘rsatilishini boshqaradi. 'auto' mavjud bo‘lganda nisbiy so‘zlarni (masalan, "kecha") va aks holda raqamlarni ko‘rsatadi. 'always' har doim raqamlarni ko‘rsatadi.

7. Intl.Collator yordamida Satrlarni Saralang

Satrlarni taqqoslash lokalga sezgir. Satrlarning saralanish usuli tilga qarab farq qiladi. Masalan, nemis tilida "ä" belgisi odatda "a" kabi saralanadi, shved tilida esa "z" dan keyin saralanadi. Intl.Collator obyekti sizga satrlarni ma’lum bir lokalning qoidalariga muvofiq taqqoslash imkonini beradi.

Misol:

const locale = 'de-DE';
const collator = new Intl.Collator(locale);

const strings = ['äpfel', 'birnen', 'bananen', 'aprikosen'];
strings.sort(collator.compare);

console.log(strings); // Natija: ["äpfel", "aprikosen", "bananen", "birnen"]

Ushbu misol Intl.Collator yordamida nemischa so‘zlar massivini saralaydi. "äpfel" so‘zi "aprikosen" dan oldin saralanganiga e'tibor bering, garchi "ä" alifboda keyinroq kelsa ham.

8. Istisno Holatlar va Yetishmayotgan Ma’lumotlar Bilan Ishlash

Har bir brauzer yoki muhit barcha lokallarni qo‘llab-quvvatlamaydi. Lokal mavjud bo‘lmagan yoki ma’lumotlar yetishmayotgan istisno holatlarni boshqarish muhimdir. Quyidagi strategiyalarni ko‘rib chiqing:

9. Turli Lokallar Bilan Puxta Sinovdan O‘tkazing

Xalqarolashtirilgan ilovangiz barcha qo‘llab-quvvatlanadigan lokallar uchun to‘g‘ri ishlashini ta’minlash uchun puxta sinovdan o‘tkazish juda muhimdir. Ilovangizni turli xil belgilar to‘plamlari, sana va vaqt formatlari, raqam formatlari va ko‘plik qoidalaridan foydalanadigan turli lokallar bilan sinab ko‘ring.

Ilovangiz turli lokallarda kutilganidek ishlashini tekshirish uchun avtomatlashtirilgan sinov vositalaridan foydalanishni ko‘rib chiqing.

10. Ishlash Samaradorligi Oqibatlarini Inobatga Oling

Intl API odatda samarali bo‘lsa-da, Intl obyektlarini yaratish nisbatan qimmat bo‘lishi mumkin. Ishlash samaradorligini optimallashtirish uchun quyidagilarni ko‘rib chiqing:

Intl API'dan Tashqari: Xalqarolashtirish uchun Qo‘shimcha Mulohazalar

Intl API ma’lumotlarni formatlash uchun kuchli vositalarni taqdim etsa-da, xalqarolashtirish faqat formatlashdan iborat emas. Quyidagi qo‘shimcha jihatlarni ko‘rib chiqing:

Xulosa

JavaScript Intl API global auditoriyaga xizmat ko‘rsatadigan veb-ilovalar yaratish uchun bebaho vositadir. Ushbu maqolada keltirilgan eng yaxshi amaliyotlarga rioya qilish orqali siz nafaqat funksional, balki madaniy jihatdan sezgir va butun dunyodagi foydalanuvchilar uchun qulay bo‘lgan ilovalar yaratishingiz mumkin. Intl API kuchini qabul qiling va ilovangizning global sahnadagi salohiyatini oching. Intl API'ni o‘zlashtirish, joylashuvi yoki tilidan qat’i nazar, barcha foydalanuvchilaringiz uchun yanada inklyuziv va qulay tajribaga olib keladi.