وبلاگ توسعه دهندگان اندروید: تنظیمات زبان در هر برنامه



ارسال شده توسط Neelansh Sahai Developer Relations Engineer Android (در توییتر و لینکدین)اگر مجموعه‌ای از کاربران دارید که به زبان‌های ،یسی، هندی و اسپ،ایی کاملاً مسلط هستند و یک برنامه خبری در تلفن خود دارند و ترجیح می‌دهند اخبار را به زبان هندی بخوانند، چه؟ برای برنامه پیامک خود، آنها اسپ،ایی را ترجیح می دهند زیرا دوستان و خانواده ای دارند که با آنها به زبان اسپ،ایی پیامک ارسال می کنند. اما برای سهولت دسترسی، آنها همچنان ترجیح می دهند دستگاهشان به زبان ،یسی باشد. اکنون موارد استفاده زیادی وجود دارد که کاربران ممکن است بخواهند زبان برنامه آنها با زبان سیستم آنها متفاوت باشد. جالب هست!

شروع با اندروید 13، ما یکی از ویژگی های پر درخواست کاربران را قرار داده ایم، تنظیمات زبان در هر برنامه. این به کاربران امکان می دهد زبان برنامه را از تنظیمات سیستم تغییر دهند و به کاربران کنترل بهتری بر انتخاب زبان خود برای برنامه های مختلف، صرف نظر از زبان سیستم ارائه می دهد..

یک صفحه تلفن همراه که تنظیمات برگزیده زبان برنامه را در تنظیمات سیستم برای برنامه YouTube نشان می دهد

برای کاربران چند زبانه خود بسازید

این وبلاگ بر نحوه ادغام API ترجیحات زبان برای هر برنامه در برنامه شما تمرکز دارد تا به کاربران شما انعطاف پذیری برای انتخاب زبان های مختلف برای برنامه های مختلف ارائه دهد.

1. کاربران می توانند تنظیمات زبان را از تنظیمات سیستم با انتخاب زیر تغییر دهند:

تنظیمات → سیستم → زبان ها و ورودی → زبان های برنامه → [Select the desired App] → [Select the desired Language]

توجه داشته باشید: فقط آن دسته از برنامه‌هایی که با مشخص ، این ویژگی را انتخاب کرده‌اند locale_configxml فایل (در مورد این در زیر)، در تنظیمات سیستم ظاهر می شود.

یک صفحه تلفن همراه که با انتخاب تنظیمات → سیستم → زبان ها و ورودی → زبان های برنامه → یافتن تنظیمات زبان از تنظیمات سیستم را نشان می دهد. [Select the desired App] → [Select the desired Language]

2. اگر برنامه شما قبلاً یک انتخابگر زبان درون برنامه ای دارد، می تو،د API ترجیحات زبان در هر برنامه را ادغام کنید تا از پشتیب، کامل پلت فرم استفاده کنید. برای کاربران پیش از اندروید 13، تنظیمات سیستم قابل مشاهده نخواهد بود، اما توسعه دهندگان همچنان می توانند آن را ارائه دهند انتخابگر زبان درون برنامه ای.

صفحه نمایش تلفن همراه که یکپارچه سازی API ترجیحات زبان در هر برنامه را برای برنامه ای که قبلاً یک انتخابگر زبان درون برنامه دارد را نشان می دهد.

چگونه این ویژگی را در اپلیکیشن خود ادغام کنیم؟

5 مرحله وجود دارد که باید هنگام کار بر روی ویژگی ترجیحات زبان در هر برنامه دنبال شود، در اینجا فهرست شده است →

1. ایجاد کنید locale_config.xml فایل

یک فایل جدید در فهرست values/xml/ ایجاد کنید و آن را به ،وان نامگذاری کنید locale_config.xml. این فایل باید حاوی لیستی از تمام مناطقی باشد که توسط برنامه پشتیب، می‌شوند. ،صر لیست باید یک رشته حاوی یک بر،ب محلی باشد.

توجه داشته باشید: تگ های محلی باید از نحو BCP47 پیروی کنند که معمولاً همینطور است {زبان فرعی}–{بر،ب فرعی اسکریپت}–{بر،ب فرعی کشور}. هر چیزی غیر از آن توسط سیستم فیلتر می شود و در تنظیمات سیستم قابل مشاهده نخواهد بود.

locale_config.xml

نسخه xml=“1.0” رمزگذاری =“utf-8”?>
xmlns:اندروید=“http://schemas.android.com/apk/res/android”>


<محلی android:name=“که در”/>


<محلی android:name=“من-جی پی”/>


<محلی android:name=“zh-Hans-MO”/>


<محلی android:name=“zh-Hant-TW”/>

2. locale_config را در AndroidManifest.xml اضافه کنید

این را مشخص کنید locale_config.xml فایل در برنامه AndroidManifest.xml

AndroidManifest.xml

<منظور>

<برنامه

android:localeConfig=“@xml/locale_config”>


پس از مراحل 1 و 2، کاربران شما می‌توانند از تنظیمات سیستم در دستگاه‌های دارای Android نسخه 13 یا بالاتر، اولویت زبان خود را برای برنامه شما پیدا کرده و تنظیم کنند. اگر کاربران شما از دستگاه‌هایی استفاده می‌کنند که نسخه‌های پایین‌تر از Android 13 را اجرا می‌کنند، می‌تو،د انتخابگر زبان درون برنامه‌ای ارائه کنید. به صورت اختیاری، می‌تو،د برای دستگاه‌های دارای Android نسخه 13 یا بالاتر، همان انتخابگر زبان را نیز در برنامه خود قرار دهید. وقتی برنامه شما دارای یک انتخابگر زبان درون برنامه ای است، مهم است که تنظیمات برگزیده کاربر بین سیستم و برنامه همگام باشد. اینجاست که API های AndroidX به تصویر کشیده می شوند. برای یادگیری نحوه ایجاد انتخابگر زبان درون برنامه ای به ادامه مطلب مراجعه کنید.

از آ،ین نسخه کتابخانه AppCompat استفاده کنید

دف آ،ینAppCompatVersion = “1.6.0-rc01”

وابستگی ها {

پیاده سازی “androidx.appcompat:appcompat:$latestAppCompatVersion
پیاده سازی “androidx.appcompat:appcompat-resources:$latestAppCompatVersion

}

4. از API های AndroidX استفاده کنید

از APIهای موجود در کد خود برای تنظیم و دریافت مناطق برنامه استفاده کنید.

MainActivity.kt

val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags(“،-YY”)

// این را در رشته اصلی فراخو، کنید زیرا ممکن است به Activity.res،() نیاز داشته باشد.
AppCompatDelegate.setApplicationLocales(appLocale)

// برای دریافت محلی انتخاب شده و نمایش آن در برنامه خود با این تماس بگیرید
val SelectLocale = AppCompatDelegate.getApplicationLocales()[0]

توجه داشته باشید: این API ها نیز هستند سازگار با عقب، بنابراین حتی اگر برنامه در Android 12 یا پایین‌تر استفاده شود، APIها همچنان ی،ان عمل می‌کنند و هیچ بررسی اضافی برای نسخه‌های سیستم عامل در کد شما لازم نیست.

5. فضای ذخیره سازی را به AndroidX واگذار کنید

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

AndroidManifest.xml

<برنامه

<خدمات
android:name=“androidx.appcompat.app.AppLocalesMetadataHolderService”
android:enabled=“کاذب”
android:exported=“کاذب”>
<متا داده
android:name=“autoStoreLocales”
android:value=“درست است، واقعی” />



مراحل 3، 4، و 5 در بالا حداقل مؤلفه‌های مورد نیاز برای ایجاد انتخابگر زبان درون برنامه را نشان می‌دهند.

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

موارد دیگری که هنگام مهاجرت به API باید از آنها مراقبت کنید

پیش از این، توسعه دهندگان مجبور بودند ترجیحات کاربر را به تنهایی کنترل کنند، یا با استفاده از آن SharedPreferences، ذخیره داده ها در سرور یا منطق برنامه دیگر. با API های جدید، نیازی به رسیدگی جداگانه به این موضوع نیست. بنابراین وقتی از این APIها استفاده می‌کنید، AndroidX قبلاً از ،مت ذخیره‌سازی مراقبت می‌کند، اما چه اتفاقی می‌افتد وقتی برنامه برای اولین بار پس از اینکه کاربر دستگاه خود را به Android 13 یا بالاتر به‌روزرس، می‌کند، باز شود؟

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

// ثابت هایی را که باید در قطعه کد زیر استفاده شوند را مشخص کنید

همراه و همدم هدف – شی {

// ثابت برای فایل SharedPreference
پایان val PREFERENCE_NAME = “share_preference”
پایان val PREFERENCE_MODE = متن نوشته.MODE_PRIVATE

// ثابت برای کلیدهای SharedPreference
پایان val FIRST_TIME_MIGRATION = “first_time_migration”
پایان val SELECTED_LANGUAGE = “selected_language”

// ثابت برای مقادیر SharedPreference
پایان val STATUS_DONE = “وضعیت_انجام شد”
}

// روش کاربردی برای قرار دادن یک رشته در یک SharedPreference
خصوصی سرگرم کننده putString(کلید: رشته، ارزش: رشته) {
val ویرایشگر = getSharedPreferences(PREFERENCE_NAME، PREFERENCE_MODEویرایش ()
editor.putString (کلید، مقدار)
editor.apply()
}

// روش Utility برای دریافت رشته از SharedPreference
خصوصی سرگرم کننده getString(کلید: رشته): رشته? {
val ترجیح = getSharedPreferences(PREFERENCE_NAME، PREFERENCE_MODE)
برگشت preference.getString(کلید، خالی)
}

// بررسی کنید که آیا انتقال قبلا انجام شده است یا خیر
اگر (getString(FIRST_TIME_MIGRATION) != STATUS_DONE) {

// زبان انتخاب شده را از هر کجا که ذخیره شده است واکشی کنید. در این مورد SharedPref است

// در این مورد، فرض کنیم در کلیدی به نام SELECTED_LANGUAGE ذخیره شده است.
getString(SELECTED_LANGUAGE)؟.اجازه دهید { آی تی

// با استفاده از کتابخانه AndroidX که خود فضای ذخیره سازی را مدیریت می کند، این منطقه را تنظیم کنید
val localeList = LocaleListCompat.forLanguageTags(آی تی)
AppCompatDelegate.setApplicationLocales(localeList)

// پرچم مهاجرت را تنظیم کنید تا مطمئن شوید که این فقط یک بار اجرا می شود
putString(FIRST_TIME_MIGRATION، STATUS_DONE)
}
}

این ویژگی چه انعطافی را در اختیار کاربران و توسعه دهندگان قرار می دهد؟

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

  1. همه دستگاه‌هایی که اندروید 13 یا بالاتر دارند، یک مکان مش، برای کاربران خواهند داشت تا بتوانند زبان برنامه‌های خود را پیدا کنند و تغییر دهند.
  2. اگرچه تنظیمات سیستم محدود به دستگاه‌های دارای اندروید 13 یا بالاتر است، API های AndroidX با عقب سازگار هستند. بنابراین، در هنگام ساختن برای کاربران چند زبانه خود، هیچ نیازی به اضافه ، بررسی نسخه سیستم عامل در کد شما وجود ندارد.
  3. توسعه دهندگان نیازی ندارند که تغییرات پیکربندی را جداگانه انجام دهند یا هر بار نگران ذخیره زبان انتخابی کاربر باشند. API تغییرات پیکربندی را کنترل می کند و ترجیحات زبان را برای شما ذخیره می کند.
  4. با سایر ویژگی های اندروید مانند پشتیبان گیری و بازیابی کار می کند. اگر کاربر به دستگاه جدیدی تغییر مکان دهد و داده‌های پشتیبان‌گیری شده قبلی را بازیابی کند، برنامه شما آ،ین زبان ترجیحی کاربر را حفظ می‌کند، بنابراین تجربه بهتر و یکپارچه‌تری را برای کاربران شما فراهم می‌کند.

خلاصه

با آن، بیشتر ،مت های این ویژگی پوشش داده می شود. بنابراین بیایید خلاصه ای از آنچه را که در مطالعه امروز مورد بحث قرار دادیم، مرور کنیم.

  1. یک مطالعه سریع در مورد آنچه که تنظیمات زبان برای هر برنامه به کاربران چند زبانه و توسعه دهندگان برنامه ارائه می دهد.
  2. آنچه کاربران نهایی در دستگاه های خود خواهند دید.
  3. چگونه برنامه خود را به APIهای ترجیحی زبان برای هر برنامه منتقل کنید.
  4. چند نکته که باید هنگام مهاجرت به API ها رعایت شود تا تجربه کاربری بهتری را تضمین کند.
  5. در نهایت، مزایایی که کاربران نهایی و توسعه دهندگان می توانند از این ویژگی بهره ببرند.

منابع

  1. تنظیمات زبان در هر برنامه
  2. نمونه برنامه (نوشتن)
  3. نمونه برنامه ( بازدیدها )
  4. تنظیمات برگزیده زبان برای هر برنامه (ویدیو یوتیوب)




منبع: http://android-developers.googleblog.com/2022/11/per-app-language-preferences-part-1.html