بهترین روش ساختن اپلیکیشن‌های چند زبانه در اندروید

بهترین روش ساختن اپلیکیشن‌های چند زبانه در اندروید
اندروید

بهترین روش ساختن اپلیکیشن‌های چند زبانه در اندروید

چند زبانه کردن اپلیکیشن یکی از قابلیت‌های جذابی هستش که می‌تونید به برنامه اندرویدی خودتون اضافه کنید.

چرا باید اپلیکیشن ما چند زبانه باشه؟

با اینکار خیلی راحت می‌تونید اپلیکیشن خودتون رو برای زبان‌های مختلف و کشورهای مختلف عرضه کنید.

طبیعتا هرچقدر اپلیکیشن شما از زبان‌های بومی بیشتری پشتیبانی کنه، کاربران خیلی بیشتری هم خواهید داشت.

با اینکار می‌تونید به کاربرانتون کمک کنید که راحت‌تر از اپلیکیشن شما استفاده کنند.

حتی باعث میشه که شما بتونید اپلیکیشن خودتون رو توی مارکت‌های جهانی منتشر کنید و درآمد دلاری داشته باشید.

نحوه اضافه کردن قابلیت چند زبانه به اپلیکیشن

توی اندروید برای اینکار چندین روش وجود داره.

البته بعضی هاشون هم خیلی روش‌های کثیف و واقعا بدی هستن.

توی این پست میخوام 2 تا از بهترین و استانداردترین روش‌ها رو توضیح بدم.

این روش‌ها هردو کاملا dynamic (داینامیک) یا به فارسی پویا (خودکار یا هرچیزی که این معنی رو بده😀) هستن.

روش اول

توی روش اول سیستم عامل اندروید خودش میاد متوجه میشه که زبان دستگاه چیه؟!

نسبت به اون زبان اگه شما فایل اون زبان رو اضافه کرده باشین میاد اطلاعات رو از همون فایل مربوطه دریافت می‌کنه.

مثلا شما 4 تا زبان رو به برنامه خودتون اضافه کردین.

زبان‌هایی مثل : فارسی – انگلیسی – فرانسوی – آلمانی

اگه زبان گوشی کاربر فارسی باشه به طور خودکار فایل مربوط به زبان فارسی رو نشون میده.

اگه انگلیسی باشه به طور خودکار فایل مربوط به زبان انگلیسی رو نشون میده.

و همینطور تا آخر هر چندتا زبانی که داشته باشید.

منظور از این فایل‌ها کدام‌ها هستن؟

اگه وارد پوشه res بشید یک پوشه دیگه با عنوان values وجود داره.

اگه از قبل زبانی رو اضافه نکردید باشید (که تقریبا 99% مواقع همینطور هست) پس باید یک فایل با نام string.xml توی این پوشه داشته باشه.

این فایل (strings.xml) در واقع همون فایلی هست که نسبت به زبان‌های متخلف به کاربر نشون میده.

کار کرد این فایل چیه؟

این فایل دقیقا همون چیزیه که برای چند زبانه کردن اپلیکیشن مورد استفاده قرار میگیره.

توی این فایل موارد مربوط به نوشته ها رو ذخیره می‌کنیم.

درواقع بخوام خیلی ساده‌تر بگم، هر چیزی که توی برنامه به صورت متن می‌نویسید و به کاربر نشون میدین رو باید توی این فایل قرار بدین.

به صورت پیشفرض توی پروژه‌ها ما یک فایل string.xml داریم که هرچیزی که توش قرار بدیم به کاربر نشون میده.

که زبان دستگاه مهم نیست.

ولی اگه فایل‌های متفاوتی رو ایجاد کنیم، اون موقع نسبت به زبان دستگاه میاد از اون فایل استفاده می‌کنه و اطلاعات رو نشون میده.

اضافه کردن زبان‌های بیشتر

برای پشتیبانی از چند زبانه بودن اپلیکیشن باید این موارد رو اضافه کنید.

برای اینکار وارد پوشه res سپس values بشید و روی این پوشه کلیک راست کنید.

از منو باز شده روی New رفته و گزینه Values Resource File رو انتخاب کنید.

مثل تصویر زیر : 

چند زبانه کردن برنامه - منو اندرویداستدیو - بخش اول
منو مربوط به انتخاب زبان

توی پنجره باز شده اول باید اسم فایل رو بنویسی.

برای اینکار باید توی بخش File name این عبارت رو بنویسی : strings.xml

حواست باشه که حتما اسم فایلت باید اونی باشه که گفتم، مهم نیست چندتا زبان داری و چه زبانی رو می‌خوای اضافه کنی اسم فایلت باید چیزی باشه که بالا گفتم.

بعد از اینکار باید نوع اون فایل رو مشخص کنی، برای اینکار از بخش Available qualifiers گزینه Local رو باید انخاب کنی.

مثل تصویر زیر : 

چند زبانه کردن اپلیکیشن - بخش دوم
انتخاب نوع فایل

بعد از اینکه این گزینه رو انتخاب کردی حالا باید روی دکمه << که وسط صفحه قرارداره کلیک کنی.

با منویی مثل تصویر زیر روبرو میشی:

چند زبانه کردن اپلیکیشن - بخش سوم
منو مربوط به انتخاب نوع زبان

توی این منو باید زبان مورد نظرت رو اضافه کنی.

برای اینکار از بخش Language باید اون زبان رو انتخاب کنی.

واسه اضافه کردن زبان باید به 2 حرف اول اون توجه کنی، مثلا Farsi دو حرف اول fa هستش پس باید زبان‌ها رو اسکرول کنی رو به پایین تا بتونی فارسی رو پیدا کنی.

توی شماره 2 می‌بینید که من fa: Persian رو انتخاب کردم.

سپس از بخش Specific Region Only می‌تونید بگید که اون زبان روی کدوم منطقه خاص نمایش داده بشه.

فرضا هم ایرانی ها و هم افغانستانی ها به فارسی میکنن.

پس میتونید بگید برای ایرانی‌ها یا افغانستانی‌ها این زبان رو نشون بده.

یا اگه Any Region رو انتخاب کنی دیگه برای منطقه خاصی مهم نمیشه و برای تمامی مناطقی که از اون زبان استفاده میکنن نشون میده.

الان اگه این موارد رو اضافه کرده باشید توی پوشه res و زیرپوشه values بجای اینکه یک فایل string.xml داشته باشی یک پوشه به نام string داری.

این یعنی اینکه چند زبانه بودن به اپلیکیشن شما اضافه شده.

اضافه کردن موارد مختلف برای زبان‌ها

حالا که چندتا فایل string ایجاد شده، می‌تونی موارد مربوط به اون زبان رو داخل فایل string مربوط به اون زبان اضافه کنی.

تقریبا مثل موارد زیر

برای فایل strings.xml (نسخه اصلی) : 

<string name="titleMessage">Welcome to nouri.in :)</string>
<string name="descriptionMessage">Hello everyone! I am learning how to change the App locale</string>

برای فایل strings.xml (نسخه فارسی) : 

<string name="titleMessage">به nouri.in خوش اومدی</string>
<string name="descriptionMessage">سلام به همه! من در حال یادگیری تغییر زبان برنامه هستم</string>

راستی این موارد یکسری نکات خیلی مهمی دارن، اگه دوست داری کامل به این نکات تسلط پیدا کنی توضیه میکنم که ویدیو آموزش این بخش رو از پایین پست کامل تماشا کنی.

نکته : اگه می‌خوای موردی هم ترجمه نشه باید از translatable=”false” استفاده کنی.

مثل کد زیر : 

<string name="app_name" translatable="false">My Instagram Tutorials</string>

این یعنی اینکه این مورد رو ترجمه نکن.

 

روش دوم

توی روش اول همه کارهای مربوط به تشخیص زبان توسط خود اندروید صورت میگرفت، حالا فرضا ما میخوایم کاری کنیم که کاربر از صفحه تنظیمات بگه که میخواد از زبان فارسی استفاده کنه یا انگلیسی یا هر زبان دیگه‌ای.

برای پشتیبانی از این نوع حالت چند زبانه هم باید دقیقا مثل مراحل قبل پیش برید و فایل‌ها رو اضافه کنید.

با این تفاوت که با کد زیر کاربر می‌تونه انتخاب کنه از کدوم زبان می‌خواد استفاده کنه.

برای اینکار می‌تونید از کد زیر استفاده کنید:

private fun setAppLocale(context: Context, lang: String) {
    val locale = Locale(lang)
    Locale.setDefault(locale)
    val config = context.resources.configuration
    config.setLocale(locale)
    context.createConfigurationContext(config)
    context.resources.updateConfiguration(config, context.resources.displayMetrics)
}

با اینکار فایل‌های resource رو مطابق با اون زبان می‌تونید تغییر بدید.

برای استفاده از این کد هم می‌تونید به روش زیر عمل کنید

برای حالت انگلیسی : 

setAppLocale(this, "en")

برای حالت فارسی :

setAppLocale(this, "fa")

حتما توصیه میکنم ویدیو زیر رو کامل ببینید، نکات خیلی مهمی توش گفته شده

نمایش ویدیو آموزشی

نظرات (1)

  1. علی

    دمت گرم داداش گل کاشتی، فقط همینو میتونم بگم

دیدگاه خود را اینجا قرار دهید

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

فیلدهای نمایش داده شده را انتخاب کنید. دیگران مخفی خواهند شد. برای تنظیم مجدد سفارش ، بکشید و رها کنید.
  • عکس
  • شناسه محصول
  • امتیاز
  • قیمت
  • در انبار
  • موجودی
  • افزودن به سبد خرید
  • توضیحات
  • محتوا
  • عرض
  • اندازه
  • تنظیمات بیشتر
  • ویژگی ها
  • Custom attributes
  • زمینه های دلخواه
مقایسه
لیست علاقه مندی ها 0