برنامه‌نویسی اندروید

پشتیبانی از چند زبانه ای و محلی سازی Localization در اندروید

پشتیبانی از چند زبانه ای و محلی سازی 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 این قابلیت به‌صورت کامل پشتیبانی می‌شود و با رعایت چند اصل ساده می‌توانید اپ خود را چندزبانه کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *