Localization (مقامی کرنا، l10n) — موبائل ایپ کے مواد کو ہدف سامعین کی زبان، علاقے اور ثقافتی خصوصیات کے مطابق چھنانا۔ بین الاقوامیکرنا (i18n) کے برعکس، جہاں کوڈ ترجمے کے لیے تیار کیا جاتا ہے، مقامی کرنا سترینگز کا ترجمہ، تاریخوں، عددوں اور کرنسیوں کی فارمیٹنگ، تصویروں کا انتخاب اور مقامی معیاروں پر غور کرنے کا حقیقی عمل ہے۔ iOS پر، تراجم Localizable.strings (ہر زبان کے لیے .lproj فایلرز) میں محفوظ ہیں، Android پر — values-ru، values-de اور دیگر وسائل کے کرندین میں۔ مزید جانیے Android مقامی کرنے کی گائڈ میں۔
اہم نکات
مقامی کرنا (مخفف l10n — “l” اور “n” کے درمیان 10 حروف) کسی اپلیکیشن کو کسی مختصص زبان اور علاقے کے مطابق چھنانے کا عمل ہے۔ اگر i18n تعمیراتی بنیاد ہے، تو l10n مواد ہے۔ i18n ترجمے کو ممکن بناتا ہے، l10n اسے انجام دیتا ہے۔ مقامی کرنے میں شامل ہے: تمام انٹرفیس متون کا ترجمہ، تاریخ اور عدد کے فارمیٹ کی موافقت، ثقافتی اعتبار سے حاس تصویروں کو بدلنا، قانونی متون (رازداری کی پالیسی، EULA) کو ایڈجسٹ کرنا، علاقے کے لیے ادائگی کے نظام ترتیب دینا اور ہدف آلات پر جانچنا۔
کاروباری ROI — مقامی کرنا براہرست تبدیلی کو متاثر کرتا ہے۔ CSA Research (2023) کے مطابق، 76% صارفین اپنی مادری زبان میں ایپس میں خریداری کو ترجیح دیتے ہیں، اور 40% کبھی بھی کسی غیر ملکی زبان میں نہیں خریدتے۔ ایک خردہ فروشی ایپ کا جاپانی میں مقامی کرنا استحصال میں اوسط 150% اضافہ کرتا ہے (Google, 2022)۔ مقامی کردہ ایپس علاقائی ASO (ہدف زبان میں میاب الفاظ) کی بدولت علاقائی App Store اور Google Play پر 2–3 گنا زیادہ نامیاتی انسٹال حاصل کرتے ہیں۔
i18n بنام l10n — ایک ہی عمل کے دو رخ ہیں۔ i18n: سترینگز کو وسائل میں نکالنا، RTL کی مدد، عدد کی فارمیٹنگ۔ ڈیولپرز ایک بار کرتے ہیں۔ l10n: سترینگز کا ترجمہ، مواد کی موافقت، مقامی جانچنا۔ ہر مقامی زبان کے لیے مترجموں اور QA کے ذریعے بار بار کیا جاتا ہے۔ IT Sectr میں، ہم ہر نئی زبان کے مقامی کرنے کے لیے سپرنٹ کا 20–30% وقت مختص کرتے ہیں — اس میں ترجمہ، جائزہ، آلے پر جانچنا اور باگ کی درستی شامل ہے۔
Localizable.strings — iOS میں تراجم کو ذخیرہ کرنے کی مرکزی فائل ہے۔ ہر مقامی زبان کا اپنا .lproj فایلر ہے: en.lproj/Localizable.strings، ru.lproj/Localizable.strings، de.lproj/Localizable.strings۔ فارمیٹ: “کلیڈ” = “قیمت”; (نقطے وار کوما کے ساتھ)۔ Apple Base Internationalization استعمال کرتا ہے: Storyboard اور XIB ایک بار بنائے جاتے ہیں (Base.lproj)، اور انٹرفیس کی سترینگز ہر زبان کے لیے Localizable.strings میں برآمد کی جاتی ہیں۔ اس سے ہر مقامی زبان کے لیے XIB کی کپیاں بنانے کی ضرورت ختم ہوجاتی ہے۔
// en.lproj/Localizable.strings
// "settings.title" = "ترتیبات";
// "profile.greeting" = "السلام علیکم، %@!";
// "items.count" = "%d آئٹم";
// ru.lproj/Localizable.strings
// "settings.title" = "ترتیبات";
// "profile.greeting" = "السلام علیکم، %@!";
// "items.count" = "%d آئٹم";
// کلیڈ سے سٹرنگ لوڈ کرنا
navigationItem.title = NSLocalizedString(
"settings.title",
comment: "ترتیبات سکرین کا عنوان"
)
// پیرامیٹر کے ساتھ سٹرنگ
let name = "آنا"
greetingLabel.text = String.localizedStringWithFormat(
NSLocalizedString("profile.greeting", comment: ""), name
)
// XLIFF ایکسپورٹ (Xcode → Editor → Import Localizations)
// مترجم کے کام کے بعد خودبخود .lproj فائلوں کو اپڈیٹ کرتا ہے
Base Internationalization — Apple کا نظریہ جس میں انٹرفیس (Storyboard، XIB) Base.lproj میں ایک بار بنایا جاتا ہے۔ زبان شامل کرتے وقت، Xcode Base سے XLIFF فائل میں سترینگز برآمد کرتا ہے۔ مترجم XLIFF کا ترجمہ کرتا ہے۔ درآمد کے بعد، Xcode ترجمہ شدہ سترینگز کے ساتھ .lproj بناتا ہے۔ فائدہ: ہر زبان کے لیے XIB کو دوگونا کرنے کی ضرورت نہیں۔ حد: RTL زبانوں (عربی، عبرانی) کے لیے، آئینہ لی آؤٹ کے ساتھ علیحدہ XIB کی ضرورت پڑ سکتی ہے۔
InfoPlist.strings — ایپ کا نام (CFBundleDisplayName)، کیمرہ/مائکروفون اجازتیں (NSCameraUsageDescription) اور Info.plist کی دیگر قیمتوں کو مقامی کرنے کی فائل ہے۔ .lproj میں بنائی جاتی ہے: ru.lproj/InfoPlist.strings۔ فارمیٹ: CFBundleDisplayName = “میرا ایپ”; NSCameraUsageDescription = “تصویریں لےنے کے لیے ایپ کو کیمرہ تک رسائی کی ضرورت ہے”;۔ InfoPlist.strings مقامی کرنے کے بغیر، سیسٹم ڈائے لاگ انگریزی میں ہونگے۔
Android وسائل مقامی کرنے کے لیے کرندین کے ناموں میں کوالیفائرز کے ذریعے منتظم کیے جاتے ہیں۔ روسی کے لیے — res/values-ru/، جرمن کے لیے — res/values-de/، برازیلی پرتگالی کے لیے — res/values-pt-rBR/۔ Android 160 سے زائد مقامی زبانوں کی حمایت کرتا ہے۔ سیسٹم آلے کی زبان (Locale.getDefault()) کے بنیاد پر خودبخود وسائل کا انتخاب کرتا ہے۔ اگر کوئی عین مقامی زبان نہ ملتی ہے، تو values/ (بنیادی مقامی زبان، عموماً en) کے وسائل استعمال ہوتے ہیں۔
// res/values/strings.xml (بنیادی — انگریزی)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>
// res/values-ru/strings.xml (روسی)
<string name="settings_title">ترتیبات</string>
<string name="greeting">السلام علیکم، %s!</string>
// res/values-de/strings.xml (جرمن)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>
// Kotlin — تمام زبانوں کے لیے یکسان کوڈ
textView.text = getString(R.string.settings_title)
// پیرامیٹر کے ساتھ سٹرنگ
val greeting = getString(R.string.greeting, userName)
// مقامی کردہ تصاویر
// res/drawable-ru/flag.png — روسی ورژن کا جهنڈا
// res/drawable/flag.png — پھلی سے مطلق جهنڈا
// لی آؤٹ کا مقامی کرنا (RTL زبانوں کے لیے)
// res/layout-ar/activity_main.xml — عربی ورژن
سترینگز کے علاوہ مقامی کرنا — Android تصویروں (res/drawable-ru/)، رنگوں (res/values-ru/colors.xml)، ایکائیم (جسامتیں) (res/values-ru/dimens.xml)، اینیمیشنز، مینیو اور پورے لی آؤٹ کو مقامی کرنے کی اجازت دیتا ہے۔ مختلف لفظی اوڡائی والی زبانوں (جرمن انگریزی سے 30–40% لمبا ہے) کے لیے، بڑھی ہوئی بٹن چوڑائی کے ساتھ مقامی کردہ dimens.xml استعمال کریں۔ مختلف رنگی نشانیات والے علاقوں (چین میں سفید سوگ ہے) کے لیے، مقامی کردہ colors.xml استعمال کریں۔
جانچنا — ترتیبات → سیسٹم → زبان کے ذریعے آلے کی زبان کو ہدف زبان میں بدلیں۔ چیک کریں: تمام سترینگز کا ترجمہ ہو چکا ہے، تاریخیں صحیح فارمیٹ میں ہیں، عدد مناسب جدا کرنے والے کے ساتھ دکھائے جاتے ہیں، تصویریں علاقے سے مطابقت کرتی ہیں، لمبی سترینگز سے لی آؤٹ نہیں ٹوٹتا۔ خودکاری کے لیے، LocaleTestRule (Android Testing Library) کے ساتھ Espresso استعمال کریں — یہ دستی طور پر زبان بدلے بغیر مختلف مقامی زبانوں کے ساتھ ٹیسٹ چلانے کی اجازت دیتا ہے۔
ثقافتی خصوصیات — مقامی کرنا صرف سترینگز کے ترجمے تک محدود نہیں ہے۔ رنگی نشانیات مختلف ہوتی ہیں: سرخ چین میں قسمت، امریکا میں خطرہ، جنوبی افریقہ میں سوگ۔ سفید یورپ میں پاکیزگی، چین میں سوگ۔ اشاروں کے آئکن: انگوٹھا اوپر امریکا میں مثبت، مشرق وسط میں توہین ہے۔ لوگوں کی تصویریں: عرب ملکوں میں، تیرنی پہنہ عورتوں کی تصویریں ناقابل قبول ہیں۔ مذہبی نشانیات: صلیب، ہلال، داود کا ستارہ صرف مناسب سیاق میں استعمال کیے جانے چاہیے۔
قانونی تقاضے — ہر ملک کے ڈیجٹل مصانع کے بارے میں اپنے قوانین ہین۔ GDPR (یورپی یونین) — کیکز اور ڈیٹا پروسیسنگ کے لیے لازمی رضامندی۔ CCPA (کیلیفورنیا) — ڈیٹا حذف کرنے کا حق۔ ذاتی ڈیٹا قانون (روس، 152-FZ) — روسی سروروں پر ڈیٹا کا ذیبہ شدہ۔ LGPD (برازیل) — GDPR کے مساوی۔ ادائگیں: چین میں Alipay/WeChat Pay، ہند میں UPI، برازیل میں Boleto اور PIX کی ضرورت ہے۔ مقامی کرنے سے پہلے علاقے کے لیے ادائگی کا گیٹوے ترتیب دیں۔
| پہلو | امریکا | چین | متحدہ عرب امارات | جرمنی |
|---|---|---|---|---|
| ادائگی کا نظام | Apple Pay، کارڈ | Alipay، WeChat Pay | کارڈ، Apple Pay | PayPal، Giropay |
| برانڈ کے رنگ | کوئی بھی | سرخ — قسمت | سبز — اسلام | سیاہ/پیلا |
| سماجی نیٹ ورک | Instagram, X | WeChat, Douyin | WhatsApp, X | WhatsApp, X |
| تاریخ | MM/dd/yyyy | yyyy/MM/dd | dd/MM/yyyy | dd.MM.yyyy |
| ڈیٹا قانون | CCPA | PIPL | PDPL | GDPR |
مثال اور مواد — مثالوں کو علاقے کے مطابق چھنیں۔ جرمن مقامی کرنے کے لیے میٹرک سیسٹم (kg، km)، امریکی کے لیے ایمپیریال (lb، mi) استعمال کریں۔ فون نمبر، پین کوڈ، پتے — سب مختلف فارمیٹ کیے جاتے ہیں۔ کرنسی کی مثالیں: جاپان میں ¥1000، امریکا میں $9.99، روس میں 999 ₽۔ کھانے، کپڑوں اور اندرونی سجاوٹ کی تصویریں علاقائی معیاروں کے مطابق ہونی چاہیے۔ IT Sectr میں، ہم ثقافتی موافقت کی تصدیق کے لیے مقامی مشاوروں کی خدمات حاصل کرنے کی سفارش کرتے ہیں۔
مقامی کرنے کے اوزار — پریفشنل پلیٹ فارمز عمل کو خودکار بناتے ہیں: Lokalise، Crowdin، POEditor، Smartling، Phrase۔ یہ ریپوزیٹری سے مضمون ہوتے ہیں، خودبخود نئی سترینگز درآمد کرتے ہیں، تبدیلیات کا سراغ رکھتے ہیں (ڈیلٹا اپڈیٹ — صرف بدلی ہوئی سترینگز کا ترجمہ ہوتا ہے)، ترجمہ میمری (TM — پہلے سے ترجمہ شدہ فے کا ذیبہ شدہ) اور گلوسری فراہم کرتے ہین۔ پریفشنل ترجمے کی اوسط لاگت: $0.08–0.15 فی لفظ (زبان کے مطابق)۔
عمل — (1) ڈیولپر کوڈ میں i18n کلیڈز شامل کرتا ہے، ریپوزیٹری میں پش کرتا ہے۔ (2) CI/CD (GitHub Actions / GitLab CI) خودبخود نئی کلیڈز کو مقامی کرنے کے پلیٹ فارم پر بھیجتا ہے۔ (3) مترجموں کو مطلع کیا جاتا ہے، وہ ترجمہ کرتے ہیں اور محفوظ کرتے ہیں۔ (4) ترجمہ شدہ فائلیں خودبخود ریپوزیٹری میں PR بناتی ہیں۔ (5) QA آلوں پر مقامی کرنے کی جانچ کرتا ہے۔ (6) جاری کرنا۔ ایک مقامی زبان کا چکر: 2–5 کاروباری دن (حجم کے مطابق)۔ 10 مقامی زبانوں کے لیے: مترجموں کے متوازی کام کے ساتھ 5–15 دن۔
مشین ترجمہ + انسانی جائزہ — جدید معیار۔ نیورل نیٹ ورک ترجمہ (DeepL، Google Translate، GPT-4) مقبول زبان کے جوڑوں کے لیے 80–90% معیار فراہم کرتا ہے۔ انسان مترجم جانچتا ہے: مخصوصات، سیاق (الفاظ کے مختلف سکرینز پر مختلف معنی ہو سکتے ہیں)، ثقافتی موافقت۔ IT Sectr میں، ہم ایک هائبرڈ نظریہ استعمال کرتے ہیں: ML ترجمہ + مقامی زبان کے مقروض کا جائزہ۔ تنقیدی سترینگز (قانونی، ادائگی) کے لیے — صرف پریفشنل ترجمہ۔ بچت: معیار برقرار رکھتے ہوئے 60% تک لاگت میں بچت۔
اکثر پوچے جانے والے سوالات
بین الاقوامیکرنا — ترجمے کے لیے کوڈ تیار کرنا (سترینگز کو نکالنا، RTL، فارمیٹنگ)۔ مقامی کرنا — حقیقی ترجمہ اور ثقافتی موافقت۔ i18n ڈیولپر ایک بار کرتا ہے، l10n — مترجم ہر زبان کے لیے کرتا ہے۔ i18n کے بغیر l10n — ایپ ترجمے کے لیے تیار ہے لیکن ترجمہ نہیں ہوا۔ l10n کے بغیر i18n — ہر زبان کے لیے کوڈ دوبارہ لکھنا پڑے گا۔
.lproj فایلرز کے اندر Localizable.strings فائلوں میں۔ ہر زبان کے لیے: en.lproj (انگریزی)، ru.lproj (روسی)، de.lproj (جرمن)۔ فارمیٹ: “کلیڈ” = “قیمت”;۔ جمع کے لیے — Localizable.stringsdict۔ ایپ کی ترتیبات (CFBundleDisplayName) — InfoPlist.strings میں۔ Xcode Base Internationalization کے ذریعے .lproj کا انتظام کرتا ہے۔
values-ru — روسی زبان کے لیے Android وسائل کا کرندین ہے۔ اس میں تراجم کے ساتھ strings.xml ہوتا ہے۔ دیگر زبانوں کے لیے بھی ایسا ہی: values-de (جرمن)، values-fr (فرانسیسی)۔ Android سیسٹم کی زبان کے بنیاد پر وسائل کا انتخاب کرتا ہے۔ اگر values-ru نہ ملتا، تو یہ values/ (بنیادی زبان، عموماً انگریزی) استعمال کرتا ہے۔
ہمیشہ Locale API استعمال کریں۔ iOS: DateFormatter.locale = Locale(identifier: locale)۔ Android: DateFormat.getDateInstance(DateFormat.SHORT, locale)۔ روس: 31.12.2024۔ امریکا: 12/31/2024۔ جاپان: 2024/12/31۔ کبھی مقررہ فارمیٹ متعین نہ کریں — ہر ملک کے اپنے معیار ہیں۔ تاریخ درج کرنے کے لیے UIDatePicker / DatePicker استعمال کریں۔
عالمی رسائی کے لیے 10–15 زبانیں کافی ہیں: انگریزی، ہسپانوی، فرانسیسی، جرمن، جاپانی، چینی، کوریائی، پرتگالی، روسی، اطالوی، عربی۔ علاقائی کے لیے — 1–2 زبانیں۔ ہر اضافی مقامی زبان متعلقہ علاقے میں نامیاتی انسٹال میں 5–15% کا اضافہ کرتی ہے۔ App Store کو کم سے کم انگریزی مقامی کرنے کی ضرورت ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں