مفاهیم و پیادهسازی Jetpack Compose
Android در دستگاههای زیادی در مناطق زیادی اجرا میشود. برای دسترسی به بیشترین تعداد کاربران، مطمئن شوید که برنامهتان نوشتار، فایلهای صوتی، اعداد، واحد پول، و گرافیک را بهشیوهای مناسب با منطقههایی که برنامهتان در آنها استفاده میشود مدیریت میکند.
این صفحه برخیاز روالهای مطلوب برای بومیسازی برنامههای Android را شرح میدهد.
باید دانش کاربردی از زبان برنامهنویسی Kotlin یا Java داشته باشید و با بار کردن منابع Android، اعلام عناصر میانای کاربر در XML، ملاحظات توسعه مانند چرخه حیات فعالیت، و اصول کلی بینالمللیسازی و بومیسازی آشنا باشید.
استفاده از چارچوب منبع Android برای جدا کردن جنبههای بومیسازیشده برنامه از عملکرد اصلی برنامه تا حد امکان، روش خوبی است.
- بیشتر یا همه محتوای میانای کاربر برنامهتان را در فایلهای منبع قرار دهید، همانطور که در این صفحه و در نمای کلی منابع برنامه شرح داده شده است.
- ازسوی دیگر، رفتار میانای کاربر توسط کد مبتنی بر Kotlin یا مبتنی بر Java شما هدایت میشود. برای مثال، اگر کاربران دادههایی را وارد کنند که باید بسته به منطقه زبانی بهطور متفاوتی قالببندی یا مرتب شوند، از Kotlin یا زبان برنامهنویسی Java برای مدیریت دادهها بهصورت برنامهنویسیشده استفاده میکنید. این صفحه نحوه بومیسازی کد مبتنی بر Kotlin یا Java را پوشش نمیدهد.
برای راهنمای کوتاهی درباره بومیسازی رشتهها در برنامهتان، پشتیبانی از زبانها و فرهنگهای مختلف را ببینید.
استفاده از منابع برای بومیسازی
این بخش نحوه ایجاد منابع پیشفرض و همچنین منابع جایگزین را توضیح میدهد. همچنین توضیح میدهد که چگونه منابع اولویتبندی میشوند و چگونه در کد به منابع خود ارجاع میدهید.
ایجاد منابع پیشفرض
نوشتار پیشفرض برنامه را در res/values/strings.xml قرار دهید. برای این رشتهها، از زبان پیشفرض استفاده کنید—زبانی که انتظار دارید اکثر کاربران برنامهتان به آن صحبت کنند.
مجموعه منابع پیشفرض همچنین شامل هرگونه طرحبندی و ترسیمپذیر پیشفرض است و میتواند شامل انواع دیگری از منابع مانند پویانماییها باشد. این منابع در دایرکتوریهای زیر قرار میگیرند:
res/drawable/: دایرکتوری الزامی که حداقل یک فایل گرافیکی برای نماد برنامه در Google Play داردres/layout/: دایرکتوری الزامی که فایل XML را نگه میدارد و چیدمان پیشفرض را تعریف میکندres/anim/: اگر پوشهres/anim-<qualifiers>دارید، الزامی استres/xml/: اگر پوشهres/xml-<qualifiers>دارید، الزامی استres/raw/: اگر پوشهres/raw-<qualifiers>دارید، الزامی است
نکته: در کدتان، هر ارجاع به منبع Android را بررسی کنید. مطمئن شوید که برای هرکدام یک منبع پیشفرض تعریف شده باشد. همچنین مطمئن شوید که فایل رشته پیشفرض کامل است: فایل رشته بومیسازیشده میتواند حاوی زیرمجموعهای از رشتهها باشد، اما فایل رشته پیشفرض باید حاوی همه آنها باشد.
نکاتی درباره بومیسازی
هنگام بومیسازی برنامهتان، این نکتهها را دنبال کنید.
طراحی کردن چیدمان انعطافپذیر
اگر لازم است چیدمانتان را برای مطابقت با زبان خاصی بازآرایی کنید،
میتوانید چیدمان جایگزینی برای آن زبان ایجاد کنید، مثلاً
res/layout-de/main.xml برای چیدمان زبان آلمانی. اما انجام این کار
میتواند نگهداری از برنامهتان را دشوارتر کند. بهتر است یک چیدمان واحد ایجاد کنید که انعطافپذیرتر باشد.
موقعیت معمول دیگر زبانی است که به چیز متفاوتی در چیدمانش نیاز دارد. برای مثال، ممکن است فرم تماسی داشته باشید که وقتی برنامه به زبان ژاپنی اجرا میشود، دو فیلد نام داشته باشد، اما وقتی برنامه به زبان دیگری اجرا میشود، سه فیلد نام داشته باشد. میتوانید این مشکل را به یکی از دو روش زیر حل کنید:
- یک چیدمان با فیلدی ایجاد کنید که بتوانید آن را بهصورت برنامهنویسیشده براساس زبان فعال یا غیرفعال کنید.
- چیدمان اصلی شامل چیدمان دیگری باشد که فیلد قابلتغییر را دربرمیگیرد. چیدمان دوم میتواند پیکربندیهای متفاوتی برای زبانهای مختلف داشته باشد.
استفاده از شیء Android Context برای جستجوی دستی منطقه زبانی
میتوانید بااستفاده از شیء Context که Android دردسترس قرار میدهد، منطقه زبانی را جستجو کنید، همانطور که در مثال زیر نشان داده شده است:
کاتلین
val primaryLocale: Locale = context.resources.configuration.locales[0] val locale: String = primaryLocale.displayName
جاوا
Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0); String locale = primaryLocale.getDisplayName();