Localization — ماهیت، تطبیق محتوا با زبان و منطقه

نویسنده: IT Sectr منتشر شده: 2026-02-26 زمان مطالعه: 7 دقیقه

Localization (بومی‌سازی، l10n) — تطبیق محتوای برنامه موبایل با زبان، منطقه و ویژگی‌های فرهنگی مخاطبان هدف. برخلاف بین‌المللی‌سازی (i18n) که در آن کد برای ترجمه آماده می‌شود، بومی‌سازی خود فرآیند ترجمه رشته‌ها، قالب‌بندی تاریخ‌ها، اعداد و ارزها، انتخاب تصاویر و در نظر گرفتن هنجارهای محلی است. در iOS ترجمه‌ها در Localizable.strings (پوشه‌های .lproj برای هر زبان)، در Android در values-ru، values-de و سایر دایرکتوری‌های منابع ذخیره می‌شوند. بیشتر — در راهنمای Android برای بومی‌سازی.

موارد اصلی

  • Localization (l10n) — ترجمه و تطبیق محتوای برنامه با زبان و منطقه خاص
  • Localizable.strings — فایل iOS حاوی جفت‌های «کلید» = «ترجمه» برای هر زبان
  • values-ru — دایرکتوری Android با منابع برای زبان روسی (strings.xml)
  • تطبیق منطقه‌ای — تاریخ‌ها، اعداد، تصاویر، رنگ‌ها، الزامات قانونی در کشورها متفاوت است
  • ویژگی‌های فرهنگی — رنگ‌ها، آیکون‌ها، حرکات و مثال‌ها باید با هنجارهای محلی مطابقت داشته باشند

Localization (l10n) چیست و چه تفاوتی با i18n دارد؟

Localization (به اختصار l10n — 10 حرف بین «l» و «n») — فرآیند تطبیق برنامه با زبان و منطقه خاص است. اگر i18n بنیاد معماری است، l10n پرکننده آن است. i18n ترجمه را ممکن می‌سازد، l10n آن را اجرا می‌کند. بومی‌سازی شامل: ترجمه تمام متون رابط کاربری، تطبیق قالب‌های تاریخ و اعداد، جایگزینی تصاویر با محتوای حساس فرهنگی، تصحیح متون قانونی (سیاست حفظ حریم خصوصی، EULA)، تنظیم سیستم‌های پرداخت برای منطقه و آزمایش روی دستگاه‌های هدف است.

سودآوری تجاری — بومی‌سازی مستقیماً بر تبدیل تأثیر می‌گذارد. طبق داده‌های CSA Research (2023)، 76% کاربران ترجیح می‌دهند در برنامه‌های به زبان مادری خود خرید کنند و 40% هرگز به زبان خارجی خرید نمی‌کنند. بومی‌سازی به ژاپنی برای برنامه خرده‌فروشی تبدیل را به طور متوسط 150% افزایش می‌دهد (Google, 2022). برنامه‌های بومی‌سازی شده 2–3 برابر نصب‌های ارگانیک بیشتری در App Store و Google Play منطقه‌ای دریافت می‌کنند به لطف ASO منطقه‌ای (کلمات کلیدی به زبان هدف).

i18n در مقابل l10n — دو روی یک سکه. i18n: استخراج رشته‌ها به منابع، پشتیبانی RTL، قالب‌بندی اعداد. یک بار توسط توسعه‌دهندگان انجام می‌شود. l10n: ترجمه رشته‌ها، تطبیق محتوا، آزمایش محلی. چندین بار توسط مترجمان و QA برای هر بومی‌سازی انجام می‌شود. در IT Sectr ما 20–30% زمان اسپرینت را برای بومی‌سازی هر زبان جدید اختصاص می‌دهیم — این شامل ترجمه، بررسی، آزمایش روی دستگاه‌ها و رفع اشکالات است.

بومی‌سازی در iOS: Localizable.strings و Base Internationalization

Localizable.strings — فایل اصلی برای ذخیره ترجمه‌ها در iOS. هر بومی‌سازی پوشه .lproj خود را دارد: en.lproj/Localizable.strings، ru.lproj/Localizable.strings، de.lproj/Localizable.strings. قالب: «key» = «value»; (با نقطه ویرگول). Apple از Base Internationalization استفاده می‌کند: Storyboard و XIB یک بار ایجاد می‌شوند (Base.lproj)، و رشته‌های رابط کاربری برای هر زبان به Localizable.strings صادر می‌شوند. این کار نیاز به ایجاد کپی XIB برای هر بومی‌سازی را از بین می‌برد.

swift
// en.lproj/Localizable.strings
// "settings.title" = "Settings";
// "profile.greeting" = "Hello, %@!";
// "items.count" = "%d item(s)";

// 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 و بومی‌سازی فراداده‌ها

InfoPlist.strings — فایل برای بومی‌سازی نام برنامه (CFBundleDisplayName)، مجوزهای دوربین/میکروفون (NSCameraUsageDescription) و سایر مقادیر Info.plist. در .lproj ایجاد می‌شود: ru.lproj/InfoPlist.strings. قالب: CFBundleDisplayName = «برنامه من»; NSCameraUsageDescription = «برنامه برای گرفتن عکس به دوربین نیاز دارد»;. بدون بومی‌سازی InfoPlist.strings، دیالوگ‌های سیستمی به انگلیسی خواهند بود.

بومی‌سازی در Android: values-ru، منابع بومی‌سازی شده

منابع Android برای بومی‌سازی از طریق کیفی‌سازها (qualifiers) در نام دایرکتوری‌ها سازماندهی می‌شوند. برای زبان روسی — res/values-ru/، برای آلمانی — res/values-de/، برای پرتغالی برزیل — res/values-pt-rBR/. Android بیش از 160 بومی‌سازی را پشتیبانی می‌کند. سیستم به طور خودکار منابع را بر اساس زبان دستگاه انتخاب می‌کند (Locale.getDefault()). اگر بومی‌سازی دقیق وجود نداشته باشد — منابع از values/ (بومی‌سازی پایه، معمولاً en) استفاده می‌شوند.

kotlin
// 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)، انیمیشن‌ها، منوها و حتی کل layoutها را فراهم می‌کند. برای زبان‌هایی با طول کلمه متفاوت (آلمانی 30–40% از انگلیسی بلندتر است) از dimens.xml بومی‌سازی شده با عرض دکمه افزایش یافته استفاده کنید. برای مناطق با نمادشناسی رنگی متفاوت (سفید — عزاداری در چین) — colors.xml بومی‌سازی شده.

بررسی بومی‌سازی روی دستگاه

آزمایش — زبان دستگاه را به زبان هدف از طریق تنظیمات → سیستم → زبان تغییر دهید. بررسی کنید: همه رشته‌ها ترجمه شده‌اند، تاریخ‌ها به درستی قالب‌بندی شده‌اند، اعداد با جداکننده صحیح نمایش داده می‌شوند، تصاویر با منطقه مطابقت دارند، layout با رشته‌های طولانی «نمی‌شکند». برای خودکارسازی از Espresso با LocaleTestRule (Android Testing Library) استفاده کنید — این امکان اجرای تست‌ها با بومی‌سازی‌های مختلف بدون تغییر دستی زبان را فراهم می‌کند.

تطبیق فرهنگی: چه چیزی غیر از متن باید ترجمه شود

ویژگی‌های فرهنگی — بومی‌سازی فقط به ترجمه رشته‌ها محدود نمی‌شود. نمادشناسی رنگ‌ها متفاوت است: قرمز — خوش‌شانسی در چین، خطر در آمریکا، عزاداری در آفریقای جنوبی. سفید — پاکی در اروپا، عزاداری در چین. آیکون‌های حرکتی: شست بالا — مثبت در آمریکا، توهین در خاورمیانه. تصاویر افراد: در کشورهای عربی تصاویر زنان با لباس شنا غیرقابل قبول است. نمادهای مذهبی: صلیب، هلال، ستاره داوود فقط در زمینه مناسب باید استفاده شوند.

الزامات قانونی — هر کشور قوانین خود را در مورد محصولات دیجیتال دارد. GDPR (اتحادیه اروپا) — رضایت اجباری برای کوکی‌ها و پردازش داده‌ها. CCPA (کالیفرنیا) — حق حذف داده‌ها. قانون داده‌های شخصی (روسیه، 152-FZ) — ذخیره داده‌ها روی سرورهای روسیه. LGPD (برزیل) — مشابه GDPR. پرداخت‌ها: در چین Alipay/WeChat Pay، در هند — UPI، در برزیل — Boleto و PIX نیاز است. قبل از شروع بومی‌سازی، درگاه پرداخت را برای منطقه تنظیم کنید.

جنبهآمریکاچیناماراتآلمان
سیستم پرداختApple Pay، کارت‌هاAlipay، WeChat Payکارت‌ها، Apple PayPayPal، Giropay
رنگ‌های برندهر رنگیقرمز — خوش‌شانسیسبز — اسلامسیاه/زرد
شبکه‌های اجتماعیInstagram، XWeChat، DouyinWhatsApp، XWhatsApp، X
تاریخMM/dd/yyyyyyyy/MM/dddd/MM/yyyydd.MM.yyyy
قانون داده‌هاCCPAPIPLPDPLGDPR

مثال‌ها و محتوا — مثال‌ها را با منطقه تطبیق دهید. برای بومی‌سازی آلمانی از سیستم متریک (کیلوگرم، کیلومتر)، برای آمریکایی — از سیستم امپریال (lb، mi) استفاده کنید. شماره تلفن‌ها، کدهای پستی، آدرس‌ها — متفاوت قالب‌بندی می‌شوند. مثال‌های ارزی: ¥1000 در ژاپن، $9.99 در آمریکا، 999 ₽ در روسیه. تصاویر غذا، لباس، داخلی باید با استانداردهای منطقه‌ای مطابقت داشته باشند. در IT Sectr توصیه می‌کنیم برای بررسی تطبیق فرهنگی، مشاوران محلی استخدام کنید.

فرآیند بومی‌سازی: ابزارها، مترجمان، CI/CD

ابزارهای بومی‌سازی — پلتفرم‌های حرفه‌ای فرآیند را خودکار می‌کنند: Lokalise، Crowdin، POEditor، Smartling، Phrase. آنها با مخزن یکپارچه می‌شوند، به طور خودکار رشته‌های جدید را وارد می‌کنند، تغییرات را پیگیری می‌کنند (Delta updates — فقط رشته‌های تغییر یافته ترجمه می‌شوند)، Translation Memory (TM — ذخیره عبارات ترجمه شده قبلی) و Glossary (واژه‌نامه اصطلاحات) ارائه می‌دهند. هزینه متوسط ترجمه حرفه‌ای: 0.08–0.15 دلار به ازای هر کلمه (بسته به زبان).

فرآیند — (1) توسعه‌دهنده کلیدهای i18n را به کد اضافه می‌کند، به مخزن ارسال می‌کند. (2) CI/CD (GitHub Actions / GitLab CI) به طور خودکار کلیدهای جدید را به پلتفرم بومی‌سازی ارسال می‌کند. (3) مترجمان اعلان دریافت می‌کنند، ترجمه می‌کنند، ذخیره می‌کنند. (4) فایل‌های ترجمه شده به طور خودکار PR در مخزن ایجاد می‌کنند. (5) QA بومی‌سازی را روی دستگاه‌ها بررسی می‌کند. (6) انتشار. چرخه برای یک بومی‌سازی: 2–5 روز کاری (بسته به حجم). برای 10 بومی‌سازی: 5–15 روز با کار موازی مترجمان.

Machine Translation + Human Review — استاندارد مدرن. ترجمه شبکه عصبی (DeepL، Google Translate، GPT-4) کیفیت 80–90% برای جفت‌های زبانی محبوب ارائه می‌دهد. مترجم انسانی بررسی می‌کند: اصطلاحات، زمینه (کلمات ممکن است معانی مختلفی در صفحات مختلف داشته باشند)، تطبیق فرهنگی. در IT Sectr از رویکرد ترکیبی استفاده می‌کنیم: ترجمه ML + بررسی توسط سخنور بومی. برای رشته‌های حیاتی (حقوقی، پرداخت) — فقط مترجم حرفه‌ای. صرفه‌جویی: تا 60% هزینه با حفظ کیفیت.

سوالات متداول

تفاوت بومی‌سازی با بین‌المللی‌سازی چیست؟

بین‌المللی‌سازی — آماده‌سازی کد برای ترجمه (استخراج رشته‌ها، RTL، قالب‌بندی). بومی‌سازی — خود ترجمه و تطبیق فرهنگی. i18n توسط توسعه‌دهنده یک بار انجام می‌شود، l10n — توسط مترجم برای هر زبان. i18n بدون l10n — برنامه آماده ترجمه است اما ترجمه نشده است. l10n بدون i18n — باید کد را برای هر زبان بازنویسی کرد.

ترجمه‌ها در iOS کجا ذخیره می‌شوند؟

در فایل‌های Localizable.strings داخل پوشه‌های .lproj. برای هر زبان: en.lproj (انگلیسی)، ru.lproj (روسی)، de.lproj (آلمانی). قالب: «key» = «value»;. برای جمع — Localizable.stringsdict. تنظیمات برنامه (CFBundleDisplayName) — در InfoPlist.strings. Xcode .lproj را از طریق Base Internationalization مدیریت می‌کند.

values-ru در Android چیست؟

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). روسیه: ۳۱.۱۲.۲۰۲۴. آمریکا: ۱۲/۳۱/۲۰۲۴. ژاپن: ۲۰۲۴/۱۲/۳۱. هرگز قالب ثابت تعیین نکنید — هر کشور استانداردهای خود را دارد. برای وارد کردن تاریخ از UIDatePicker / DatePicker استفاده کنید.

چند بومی‌سازی برای برنامه جهانی لازم است؟

برای پوشش جهانی ۱۰–۱۵ زبان کافی است: انگلیسی، اسپانیایی، فرانسوی، آلمانی، ژاپنی، چینی، کره‌ای، پرتغالی، روسی، ایتالیایی، عربی. برای منطقه‌ای — ۱–۲ زبان. هر بومی‌سازی اضافی نصب‌های ارگانیک را ۵–۱۵% در منطقه مربوطه افزایش می‌دهد. App Store حداقل بومی‌سازی انگلیسی را الزامی می‌کند.

خلاصه

  • Localization (l10n) — ترجمه و تطبیق فرهنگی محتوا با زبان و منطقه خاص
  • iOS — Localizable.strings در پوشه‌های .lproj، Base Internationalization، InfoPlist.strings
  • Android — values-ru/strings.xml، drawable و layout بومی‌سازی شده از طریق qualifiers
  • تطبیق فرهنگی — رنگ‌ها، آیکون‌ها، حرکات، سیستم‌های پرداخت، الزامات قانونی
  • فرآیند — CI/CD → پلتفرم بومی‌سازی → مترجم → QA → انتشار (۲–۵ روز برای هر زبان)
  • رویکرد ترکیبی — ترجمه ML (DeepL, GPT) + بررسی سخنور بومی برای صرفه‌جویی ۶۰%
  • سودآوری — ۷۶% کاربران فقط به زبان مادری خرید می‌کنند (CSA Research, 2023)

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید