پشتیبانی از چند زبانه ای و محلی سازی Localization در اندروید
در دنیای اپلیکیشنهای موبایل، ارائه تجربه کاربری مناسب برای کاربران از کشورهای مختلف یک مزیت رقابتی مهم محسوب میشود. چندزبانه کردن (Internationalization) و محلیسازی (Localization) به شما کمک میکند اپلیکیشن خود را برای زبانها و فرهنگهای مختلف آماده کنید.
در این مقاله، بهصورت کامل و عملی نحوه پیادهسازی Localization در اندروید را بررسی میکنیم.
🎯 Localization چیست؟
Localization (محلیسازی) فرآیند تطبیق اپلیکیشن با:
- زبانهای مختلف
- فرمت تاریخ و زمان
- واحد پول
- جهت متن (RTL / LTR)
در اکوسیستم Android، این کار بهصورت built-in پشتیبانی میشود.
🌐 تفاوت Internationalization و Localization
| مفهوم | توضیح |
|---|---|
| Internationalization (i18n) | آمادهسازی اپ برای چند زبان |
| Localization (l10n) | ترجمه و تطبیق برای یک زبان خاص |
🧩 ساختار فایلهای ترجمه در اندروید
اندروید از پوشه res/values برای مدیریت رشتهها استفاده میکند.
📁 زبان پیشفرض (مثلاً انگلیسی)
<!-- res/values/strings.xml -->
<resources>
<string name="app_name">My App</string>
<string name="welcome">Welcome</string>
</resources>
📁 زبان فارسی
<!-- res/values-fa/strings.xml -->
<resources>
<string name="app_name">اپ من</string>
<string name="welcome">خوش آمدید</string>
</resources>
⚙️ نحوه انتخاب زبان توسط سیستم
اندروید بهصورت خودکار زبان مناسب را بر اساس تنظیمات دستگاه انتخاب میکند.
اگر زبان کاربر فارسی باشد → values-fa استفاده میشود.
🧠 استفاده از رشتهها در کد
در XML:
<TextView
android:text="@string/welcome"/>
در Kotlin:
val text = getString(R.string.welcome)
🌍 پشتیبانی از RTL (راست به چپ)
برای زبانهایی مثل فارسی و عربی:
1. فعالسازی در Manifest:
<application
android:supportsRtl="true">
</application>
2. استفاده از start/end به جای left/right:
android:paddingStart="16dp"
android:paddingEnd="16dp"
🔤 فرمتهای چندزبانه
📅 تاریخ:
val dateFormat = DateFormat.getDateInstance()
💰 ارز:
val format = NumberFormat.getCurrencyInstance()
🌐 تغییر زبان بهصورت دستی در اپ
گاهی لازم است کاربر داخل اپ زبان را تغییر دهد:
val locale = Locale("fa")
Locale.setDefault(locale)
val config = resources.configuration
config.setLocale(locale)
createConfigurationContext(config)
⚠️ در نسخههای جدید اندروید (Android 13+) بهتر است از API رسمی زبان اپ استفاده کنید.
🆕 پشتیبانی از زبان در Android 13+
اندروید جدید قابلیت انتخاب زبان جداگانه برای هر اپ را فراهم کرده است:
<application
android:localeConfig="@xml/locales_config">
</application>
📦 فایل locales_config
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en"/>
<locale android:name="fa"/>
</locale-config>
🔥 نکات حرفهای
❗ متن را Hardcode نکنید
❌ اشتباه:
textView.text = "Hello"
✅ درست:
textView.text = getString(R.string.hello)
❗ از plurals استفاده کنید
<plurals name="item_count">
<item quantity="one">1 item</item>
<item quantity="other">%d items</item>
</plurals>
❗ ترجمه حرفهای
از ابزارهای ترجمه یا مترجم انسانی استفاده کنید.
🧪 تست Localization
برای تست:
- تغییر زبان دستگاه
- استفاده از Emulator
- بررسی RTL
⚖️ چالشها
- مدیریت RTL
- تفاوت طول متنها
- فونتهای مختلف
- هماهنگی طراحی
🏁 جمعبندی
محلیسازی یکی از مهمترین مراحل توسعه اپلیکیشن است که میتواند تأثیر زیادی در موفقیت جهانی اپ داشته باشد. در Android این قابلیت بهصورت کامل پشتیبانی میشود و با رعایت چند اصل ساده میتوانید اپ خود را چندزبانه کنید.