Localization (mahalliylashtirish, l10n) — mobil ilova kontentining maqsadli auditoriya tili, mintaqasi va madaniy xususiyatlariga moslashtirilishi. Xalqarolashtirishdan (i18n) farqli o'laroq, bu yerda kod tarjimaga tayyorlanadi, lokalizatsiya esa satrlarning tarjimasi, sanalar, raqamlar va valyutalarni formatlash, tasvirlarni tanlash va mahalliy me'yorlarni hisobga olish jarayonidir. iOS-da tarjimalar Localizable.strings (har bir til uchun .lproj papkalari), Android-da esa values-ru, values-de va boshqa resurs kataloglarida saqlanadi. Batafsil — Android lokalizatsiya qo'llanmasida.
Asosiy ma'lumotlar
Localization (qisqacha l10n — "l" va "n" orasida 10 ta harf) — ilovani aniq til va mintaqaga moslashtirish jarayonidir. Agar i18n arxitektura poydevori bo'lsa, l10n uning mazmunidir. i18n tarjimani mumkin qiladi, l10n uni amalga oshiradi. Lokalizatsiya o'z ichiga oladi: interfeysning barcha matnlarini tarjima qilish, sana va raqam formatlarini moslashtirish, madaniy jihatdan sezuvchan tasvirlarni almashtirish, huquqiy matnlarni (maxfiylik siyosati, EULA) tuzatish, to'lov tizimlarini mintaqaga sozlash va maqsadli qurilmalarda sinovdan o'tkazish.
Biznes rentabelligi — lokalizatsiya konversiyaga bevosita ta'sir qiladi. CSA Research (2023) ma'lumotlariga ko'ra, foydalanuvchilarning 76% ona tilidagi ilovalarda xarid qilishni afzal ko'radi, 40% esa hech qachon xorijiy tilda xarid qilmaydi. Chakana savdo ilovasi uchun yapon tiliga lokalizatsiya konversiyani o'rtacha 150% ga oshiradi (Google, 2022). Mahalliylashtirilgan ilovalar mintaqaviy App Store va Google Play-da mintaqaviy ASO (maqsadli tildagi kalit so'zlar) tufayli 2–3 marta ko'proq organik o'rnatish oladi.
i18n vs l10n — bir jarayonning ikki tomoni. i18n: satrlarni resurslarga chiqarish, RTL qo'llab-quvvatlash, raqamlarni formatlash. Dasturchilar tomonidan bir marta bajariladi. l10n: satrlarni tarjima qilish, kontentni moslashtirish, mahalliy sinov. Har bir lokalizatsiya uchun tarjimonlar va QA tomonidan bir necha marta bajariladi. IT Sectr-da har bir yangi til uchun sprint vaqtining 20–30% lokalizatsiyaga ajratamiz — bu tarjima, ko'rib chiqish, qurilmalarda sinov va xatolarni tuzatishni o'z ichiga oladi.
Localizable.strings — iOS-da tarjimalarni saqlash uchun asosiy fayl. Har bir lokalizatsiyaning o'z .lproj papkasi bor: en.lproj/Localizable.strings, ru.lproj/Localizable.strings, de.lproj/Localizable.strings. Format: "kalit" = "qiymat"; (nuqtali vergul bilan). Apple Base Internationalization-dan foydalanadi: Storyboard va XIB bir marta yaratiladi (Base.lproj), interfeys satrlari esa har bir til uchun Localizable.strings-ga eksport qilinadi. Bu har bir lokalizatsiya uchun XIB nusxalarini yaratish zaruratini bartaraf qiladi.
// en.lproj/Localizable.strings
// "settings.title" = "Settings";
// "profile.greeting" = "Hello, %@!";
// "items.count" = "%d item(s)";
// ru.lproj/Localizable.strings
// "settings.title" = "Sozlamalar";
// "profile.greeting" = "Assalomu alaykum, %@!";
// "items.count" = "%d dona.";
// Satrni kalit bo'yicha yuklash
navigationItem.title = NSLocalizedString(
"settings.title",
comment: "Sozlamalar ekrani sarlavhasi"
)
// Parametrli satr
let name = "Anna"
greetingLabel.text = String.localizedStringWithFormat(
NSLocalizedString("profile.greeting", comment: ""), name
)
// XLIFF importi (Xcode → Editor → Import Localizations)
// Tarjimon ishidan so'ng .lproj fayllarini avtomatik yangilaydi
Base Internationalization — Apple-ning yondashuvi, bunda interfeys (Storyboard, XIB) Base.lproj-da bir marta yaratiladi. Til qo'shilganda Xcode Base-dan satrlarni XLIFF fayliga eksport qiladi. Tarjimon XLIFFni tarjima qiladi. Importdan so'ng Xcode tarjima qilingan satrlar bilan .lproj yaratadi. Afzallik: har bir til uchun XIBni takrorlash shart emas. Cheklov: RTL tillari (arab, ivrit) uchun oyna ko'rinishidagi layout bilan alohida XIB talab qilinishi mumkin.
InfoPlist.strings — ilova nomini (CFBundleDisplayName), kamera/mikrofon ruxsatnomalarini (NSCameraUsageDescription) va Info.plist-dagi boshqa qiymatlarni lokalizatsiya qilish uchun fayl. .lproj-da yaratiladi: ru.lproj/InfoPlist.strings. Format: CFBundleDisplayName = "Mening ilovam"; NSCameraUsageDescription = "Ilovaga suratga olish uchun kameraga kirish kerak";. InfoPlist.strings lokalizatsiya qilinmasa, tizim dialog oynalari ingliz tilida bo'ladi.
Android resurslari lokalizatsiya uchun katalog nomlarida kvalifikatorlar (qualifiers) orqali tashkil etiladi. Rus tili uchun — res/values-ru/, nemis tili uchun — res/values-de/, braziliya portugal tili uchun — res/values-pt-rBR/. Android 160 dan ortiq lokalizatsiyani qo'llab-quvvatlaydi. Tizim qurilma tiliga qarab resurslarni avtomatik tanlaydi (Locale.getDefault()). Agar aniq lokalizatsiya topilmasa — values/ (asosiy lokalizatsiya, odatda en) resurslari ishlatiladi.
// res/values/strings.xml (asosiy — ingliz)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>
// res/values-ru/strings.xml (rus)
<string name="settings_title">Sozlamalar</string>
<string name="greeting">Salom, %s!</string>
// res/values-de/strings.xml (nemis)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>
// Kotlin — barcha tillar uchun yagona kod
textView.text = getString(R.string.settings_title)
// Parametrli satr
val greeting = getString(R.string.greeting, userName)
// Mahalliylashtirilgan tasvirlar
// res/drawable-ru/flag.png — rus versiyasi uchun bayroq
// res/drawable/flag.png — standart bayroq
// Layoutlarni lokalizatsiya qilish (RTL tillari uchun)
// res/layout-ar/activity_main.xml — arab versiyasi
Faqat satrlarni emas, balki boshqa resurslarni ham lokalizatsiya qilish — Android tasvirlarni (res/drawable-ru/), ranglarni (res/values-ru/colors.xml), o'lchamlarni (res/values-ru/dimens.xml), animatsiyalarni, menyularni va hatto butun layoutlarni lokalizatsiya qilish imkonini beradi. Turli so'z uzunligiga ega tillar uchun (nemis tili ingliz tilidan 30–40% uzun) kengaytirilgan tugma kengligi bilan mahalliylashtirilgan dimens.xml dan foydalaning. Turli rang simvolikasiga ega mintaqalar uchun (oq — Xitoyda motam) — mahalliylashtirilgan colors.xml.
Sinov — qurilma tilini Sozlamalar → Tizim → Til orqali maqsadli tilga o'zgartiring. Tekshiring: barcha satrlar tarjima qilingan, sanalar to'g'ri formatlangan, raqamlar to'g'ri ajratkich bilan ko'rsatilgan, tasvirlar mintaqaga mos, layout uzun satrlarda "buzilmaydi". Avtomatlashtirish uchun Espresso bilan LocaleTestRule (Android Testing Library) dan foydalaning — bu tilni qo'lda o'zgartirmasdan turli lokalizatsiyalar bilan testlarni ishga tushirish imkonini beradi.
Madaniy xususiyatlar — lokalizatsiya faqat satrlarni tarjima qilish bilan cheklanmaydi. Rang simvolikasi farqlanadi: qizil — Xitoyda omad, AQShda xavf, Janubiy Afrikada motam. Oq — Yevropada poklik, Xitoyda motam. Imo-ishorali piktogrammalar: bosh barmoq yuqoriga — AQShda ijobiy, Yaqin Sharqda haqorat. Odam tasvirlari: arab mamlakatlarida cho'milish kostyumidagi ayol tasvirlari qabul qilinishi mumkin emas. Diniy ramzlar: xoch, yarim oy, Dovud yulduzi faqat tegishli kontekstda ishlatilishi kerak.
Huquqiy talablar — har bir mamlakatning raqamli mahsulotlar haqida o'z qonunlari bor. GDPR (Yevropa Ittifoqi) — cookies va ma'lumotlarni qayta ishlash uchun majburiy rozilik. CCPA (Kaliforniya) — ma'lumotlarni o'chirish huquqi. Shaxsiy ma'lumotlar to'g'risidagi qonun (Rossiya, 152-FZ) — ma'lumotlarni RF serverlarida saqlash. LGPD (Braziliya) — GDPR analogi. To'lovlar: Xitoyda Alipay/WeChat Pay, Hindistonda — UPI, Braziliyada — Boleto va PIX kerak. Lokalizatsiyani boshlashdan oldin mintaqa uchun to'lov shlyuzini sozlang.
| Aspekt | AQSh | Xitoy | BAA | Germaniya |
|---|---|---|---|---|
| To'lov tizimi | Apple Pay, kartalar | Alipay, WeChat Pay | Kartalar, Apple Pay | PayPal, Giropay |
| Brend ranglari | Istalgan | Qizil — omad | Yashil — islom | Qora/sariq |
| Ijtimoiy tarmoqlar | Instagram, X | WeChat, Douyin | WhatsApp, X | WhatsApp, X |
| Sana | MM/dd/yyyy | yyyy/MM/dd | dd/MM/yyyy | dd.MM.yyyy |
| Ma'lumot qonuni | CCPA | PIPL | PDPL | GDPR |
Misollar va kontent — misollarni mintaqaga moslashtiring. Nemis lokalizatsiyasi uchun metrik tizimdan (kg, km), Amerika uchun — imperial tizimdan (lb, mi) foydalaning. Telefon raqamlari, pochta indekslari, manzillar — turlicha formatlanadi. Valyuta misollari: Yaponiyada ¥1000, AQShda $9.99, Rossiyada 999 ₽. Ovqat, kiyim-kechak, interyer tasvirlari mintaqaviy standartlarga mos kelishi kerak. IT Sectr-da madaniy moslashtirishni tekshirish uchun mahalliy maslahatchilarni yollashni tavsiya qilamiz.
Lokalizatsiya vositalari — professional platformalar jarayonni avtomatlashtiradi: Lokalise, Crowdin, POEditor, Smartling, Phrase. Ular repozitoriy bilan integratsiyalanadi, avtomatik yangi satrlarni import qiladi, o'zgarishlarni kuzatadi (Delta updates — faqat o'zgartirilgan satrlar tarjima qilinadi), Translation Memory (TM — avval tarjima qilingan iboralarni saqlash) va Glossary (atamalar lug'ati) taqdim etadi. Professional tarjimaning o'rtacha narxi: so'z boshiga $0.08–0.15 (tilga qarab).
Jarayon — (1) Dasturchi i18n kalitlarini kodga qo'shadi, repozitoriyga yuboradi. (2) CI/CD (GitHub Actions / GitLab CI) avtomatik yangi kalitlarni lokalizatsiya platformasiga yuboradi. (3) Tarjimonlar bildirishnoma oladi, tarjima qiladi, saqlaydi. (4) Tarjima qilingan fayllar avtomatik repozitoriyda PR yaratadi. (5) QA qurilmalarda lokalizatsiyani tekshiradi. (6) Reliz. Bitta lokalizatsiya uchun sikl: 2–5 ish kuni (hajmga qarab). 10 lokalizatsiya uchun: tarjimonlarning parallel ishi bilan 5–15 kun.
Machine Translation + Human Review — zamonaviy standart. Neyron tarmoq tarjimasi (DeepL, Google Translate, GPT-4) mashhur til juftlari uchun 80–90% sifat beradi. Inson-tarjimon tekshiradi: terminologiya, kontekst (so'zlar turli ekranlarda turlicha ma'noga ega bo'lishi mumkin), madaniy moslashtirish. IT Sectr-da gibrid yondashuvdan foydalanamiz: ML tarjima + ona tilida so'zlovchining ko'rib chiqishi. Kritik satrlar (huquqiy, to'lov) uchun — faqat professional tarjimon. Tejamkorlik: sifatni saqlagan holda xarajatlarning 60% gacha.
Ko'p beriladigan savollar
Xalqarolashtirish — kodni tarjimaga tayyorlash (satrlarni chiqarish, RTL, formatlash). Lokalizatsiya — tarjima va madaniy moslashtirish. i18n dasturchi tomonidan bir marta, l10n esa tarjimon tomonidan har bir til uchun amalga oshiriladi. i18n l10n holda — ilova tarjimaga tayyor, ammo tarjima qilinmagan. l10n i18n holda — har bir til uchun kodni qayta yozish kerak.
Localizable.strings fayllarida .lproj papkalari ichida. Har bir til uchun: en.lproj (ingliz), ru.lproj (rus), de.lproj (nemis). Format: "kalit" = "qiymat";. Ko'plik uchun — Localizable.stringsdict. Ilova sozlamalari (CFBundleDisplayName) — InfoPlist.strings-da. Xcode .lproj-ni Base Internationalization orqali boshqaradi.
values-ru — Rus tili uchun Android resurs katalogi. Tarjimalar bilan strings.xml ni o'z ichiga oladi. Boshqa tillar uchun ham xuddi shunday: values-de (nemis), values-fr (fransuz). Android tizim tiliga qarab resurslarni tanlaydi. Agar values-ru topilmasa — values/ (asosiy til, odatda ingliz) ishlatiladi.
Har doim Locale API dan foydalaning. iOS: DateFormatter.locale = Locale(identifier: locale). Android: DateFormat.getDateInstance(DateFormat.SHORT, locale). Rossiya: 31.12.2024. AQSh: 12/31/2024. Yaponiya: 2024/12/31. Hech qachon qattiq formatni o'rnatmang — har bir mamlakatning o'z standartlari bor. Sanalarni kiritish uchun UIDatePicker / DatePicker dan foydalaning.
Global qamrov uchun 10–15 til yetarli: ingliz, ispan, fransuz, nemis, yapon, xitoy, koreys, portugal, rus, italyan, arab. Mintaqaviy uchun — 1–2 til. Har bir qo'shimcha lokalizatsiya tegishli mintaqada organik o'rnatishlarni 5–15% ga oshiradi. App Store kamida ingliz lokalizatsiyasini talab qiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.