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

‫Android در بسیاری از دستگاه‌ها در بسیاری از مناطق اجرا می‌شود. برای دسترسی به بیشترین تعداد کاربر، مطمئن شوید که برنامه شما نوشتار، فایل‌های صوتی، اعداد، واحد پول، و گرافیک را به روش‌های مناسب با مناطق زبانی که برنامه شما در آن‌ها استفاده می‌شود مدیریت می‌کند.

این صفحه روال‌های مطلوب برای بومی‌سازی برنامه‌های Android را شرح می‌دهد.

باید با Kotlin آشنایی عملی داشته باشید و با بار کردن منبع Android، ملاحظات توسعه مثل چرخه حیات فعالیت، و اصول کلی بین‌المللی‌سازی و بومی‌سازی آشنا باشید.

بهتر است از چارچوب منابع Android استفاده کنید تا جنبه‌های بومی‌سازی‌شده برنامه‌تان را تا حد امکان از عملکرد اصلی برنامه جدا کنید.

  • بیشتر یا همه محتوای میانای کاربر برنامه‌تان را در فایل‌های منبع قرار دهید، همان‌طور که در این صفحه و در نمای کلی منابع برنامه توضیح داده شده است.
  • از سوی دیگر، رفتار واسط کاربر توسط کد مبتنی بر Kotlin شما هدایت می‌شود. برای مثال، اگر کاربران داده‌هایی را وارد کنند که باید بسته به زبان محلی، به‌شکل دیگری قالب‌بندی یا مرتب شود، از Kotlin برای مدیریت برنامه‌نویسی داده‌ها استفاده می‌کنید. این صفحه نحوه بومی‌سازی کد مبتنی بر Kotlin را پوشش نمی‌دهد.

این راهنما سیستم اصلی بومی‌سازی Android را که در همه برنامه‌های Android استفاده می‌شود پوشش می‌دهد. برای آشنایی با نحوه بار کردن این منابع بومی‌سازی‌شده در «میانای کاربر Jetpack Compose»، به منابع در Compose مراجعه کنید.

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

نمای کلی: تعویض منبع در Android

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

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

وقتی برنامه‌تان را می‌نویسید، منابع پیش‌فرض و جایگزینی برای استفاده برنامه‌تان ایجاد می‌کنید. وقتی کاربران برنامه شما را اجرا می‌کنند، سیستم Android براساس بوم دستگاه انتخاب می‌کند کدام منابع بار شود. برای ایجاد منابع، فایل‌ها را در زیرشاخه‌های با نام ویژه در فهرست راهنمای res/ پروژه قرار می‌دهید.

چرا منابع پیش‌فرض مهم هستند

وقتی برنامه در هر منطقه‌ای که برای آن نوشتار منطقه زمانی خاص ارائه نکرده‌اید اجرا می‌شود، Android رشته‌های پیش‌فرض را از res/values/strings.xml بار می‌کند. اگر این فایل پیش‌فرض وجود نداشته باشد، یا اگر رشته‌ای که برنامه‌تان به آن نیاز دارد در آن وجود نداشته باشد، برنامه‌تان اجرا نمی‌شود و خطا نشان می‌دهد. مثال زیر نشان می‌دهد که وقتی فایل نوشتاری پیش‌فرض ناقص باشد چه اتفاقی می‌افتد.

مثال:

کد مبتنی بر Kotlin یک برنامه فقط به دو رشته، text_a و text_b، اشاره می‌کند. برنامه شامل فایل منبع بومی‌سازی‌شده‌ای (res/values-en/strings.xml) است که text_a و text_b را به زبان انگلیسی تعریف می‌کند. برنامه همچنین شامل فایل منبع پیش‌فرضی (res/values/strings.xml) است که تعریفی برای text_a دارد، اما تعریفی برای text_b ندارد.

  • وقتی این برنامه در دستگاهی با منطقه زبانی تنظیم‌شده روی انگلیسی راه‌اندازی می‌شود، برنامه ممکن است بدون مشکل اجرا شود، زیرا res/values-en/strings.xml حاوی هر دو رشته نوشتاری موردنیاز است.
  • بااین‌حال، وقتی این برنامه در دستگاهی که به زبانی غیراز انگلیسی تنظیم شده است راه‌اندازی می‌شود، کاربر پیام خطا و دکمه «بستن اجباری» را می‌بیند. برنامه بار نمی‌شود.

برای جلوگیری از این وضعیت، مطمئن شوید که فایل res/values/strings.xml وجود داشته باشد و همه رشته‌های موردنیاز را تعریف کند. این وضعیت برای همه انواع منابع، نه فقط رشته‌ها، اعمال می‌شود: باید مجموعه‌ای از فایل‌های منبع پیش‌فرض ایجاد کنید که حاوی همه منابعی باشد که برنامه‌تان فرا می‌خواند، مثل عناصر طراحی، قلم‌ها، یا رنگ‌ها. برای کسب اطلاعات درباره آزمایش کردن، به بخش آزمایش کردن منابع پیش‌فرض مراجعه کنید.

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

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

ایجاد منابع پیش‌فرض

نوشتار پیش‌فرض برنامه را به res/values/strings.xml برگردانید. برای این رشته‌ها، از زبان پیش‌فرض—زبانی که انتظار دارید اکثر کاربران برنامه‌تان به آن صحبت کنند—استفاده کنید.

مجموعه منابع پیش‌فرض همچنین شامل هر عنصر طراحی پیش‌فرضی می‌شود و می‌تواند شامل انواع دیگر منابع مثل نمادها یا رشته‌ها باشد. این منابع در پوشه‌های زیر قرار می‌گیرند:

  • ‫res/drawable/: دایرکتوری الزامی که حداقل یک فایل گرافیکی برای نماد برنامه در Google Play در آن وجود داشته باشد
  • ‫res/xml/: درصورت داشتن هرگونه res/xml-<qualifiers> پوشه الزامی است
  • ‫res/raw/: درصورت داشتن هرگونه res/raw-<qualifiers> پوشه الزامی است

ایجاد منابع جایگزین

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

برنامه می‌تواند res/<qualifiers>/ دایرکتوری‌های زیادی را مشخص کند که هرکدام دارای مشخص‌کننده‌های مختلفی هستند. برای ایجاد منبع جایگزین برای منطقه زبانی دیگر، از یک مشخص‌کننده استفاده می‌کنید که زبان یا ترکیب زبان-منطقه را مشخص می‌کند. نام فهرست منبع باید با طرح نام‌گذاری که در ارائه منابع جایگزین توضیح داده شده است مطابقت داشته باشد، درغیراین‌صورت برنامه شما نمی‌تواند ترجمه شود.

مثال:

فرض کنید زبان پیش‌فرض برنامه شما انگلیسی است و می‌خواهید همه نوشتار برنامه را به فرانسوی و همه نوشتار به‌جز عنوان برنامه را به ژاپنی محلی‌سازی کنید. در این مورد، سه فایل strings.xml ایجاد می‌کنید که هرکدام در یک فهرست منبع مختص زبان ذخیره می‌شوند:

  1. res/values/strings.xml
    شامل نوشتار انگلیسی برای همه رشته‌هایی است که برنامه استفاده می‌کند، ازجمله نوشتار برای رشته‌ای به‌نام title.
  2. res/values-fr/strings.xml
    برای همه رشته‌ها، ازجمله title، نوشتار فرانسوی داشته باشد.
  3. res/values-ja/strings.xml
    برای همه رشته‌ها، نوشتار ژاپنی به‌جز title ارائه دهید.

اگر کد مبتنی بر Kotlin شما به R.string.title ارجاع می‌دهد، در زمان اجرا این اتفاق می‌افتد:

  • اگر دستگاه روی زبانی غیراز فرانسوی تنظیم شده باشد، Android title را از فایل res/values/strings.xml بار می‌کند.
  • اگر زبان دستگاه روی فرانسوی تنظیم شده باشد، Android title را از فایل res/values-fr/strings.xml بار می‌کند.

اگر دستگاه روی زبان ژاپنی تنظیم شده باشد، Android به‌دنبال title در فایل res/values-ja/strings.xml می‌گردد. اما چون چنین رشته‌ای در آن فایل وجود ندارد، Android به پیش‌فرض برمی‌گردد و title را به زبان انگلیسی از فایل res/values/strings.xml بار می‌کند.

کدام منابع اولویت دارند؟

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

مثال:

فرض کنید برنامه‌ای شامل مجموعه پیش‌فرض گرافیک و دو مجموعه گرافیک دیگر باشد که هرکدام برای تنظیمات دستگاه متفاوتی بهینه‌سازی شده‌اند:

  • res/drawable/
    حاوی گرافیک‌های پیش‌فرض است.
  • res/drawable-small-land-stylus/
    دارای گرافیک‌های بهینه‌شده برای استفاده با دستگاهی است که از قلم انتظار ورودی دارد و صفحه‌نمایش کم‌تراکم QVGA در جهت افقی دارد.
  • res/drawable-ja/
    شامل گرافیک بهینه‌سازی‌شده برای استفاده با زبان ژاپنی است.

اگر برنامه در دستگاهی اجرا شود که برای استفاده از زبان ژاپنی پیکربندی شده است، ‫Android گرافیک‌ها را از res/drawable-ja/ بار می‌کند، حتی اگر دستگاه ازجمله دستگاه‌هایی باشد که انتظار دارد ورودی از قلم داشته باشد و صفحه نمایش کم‌تراکم QVGA در جهت افقی داشته باشد.

استثنا: تنها مشخصه‌هایی که در فرایند انتخاب بر بوم اولویت دارند، کد کشور تلفن همراه (MCC) و کد شبکه تلفن همراه (MNC) هستند.

مثال:

فرض کنید وضعیت زیر را دارید:

  • کد برنامه برای R.string.text_a فراخوانی می‌کند.
  • دو فایل منبع مرتبط دردسترس است:
    • ‫res/values-mcc404/strings.xml، که شامل text_a به زبان پیش‌فرض برنامه، در این مورد انگلیسی، می‌شود.
    • ‫res/values-hi/strings.xml که شامل text_a به زبان هندی می‌شود.
  • برنامه در دستگاهی با پیکربندی زیر اجرا می‌شود:
    • سیم‌کارت به شبکه تلفن همراه در هند (کد کشور تلفن همراه ۴۰۴) متصل باشد.
    • زبان روی هندی (hi) تنظیم شده است.

‫Android text_a را از res/values-mcc404/strings.xml (به زبان انگلیسی) بار می‌کند، حتی اگر دستگاه برای زبان هندی پیکربندی شده باشد. دلیل آن این است که در فرایند انتخاب منبع، Android مطابقت MCC را بر مطابقت زبان ترجیح می‌دهد.

فرایند انتخاب همیشه به سادگی این مثال‌ها نیست. برای شرح دقیق‌تر این فرایند، به نحوه پیدا کردن بهترین منبع منطبق توسط Android مراجعه کنید. همه مشخص‌کننده‌ها در نمای کلی منابع برنامه شرح داده شده‌اند و به ترتیب اولویت فهرست شده‌اند.

ارجاع دادن به منابع در کد

در کد مبتنی بر Kotlin برنامه، بااستفاده از دستورگان R.resource_type.resource_name یا android.R.resource_type.resource_name. به منابع ارجاع می‌دهید. برای اطلاعات بیشتر، دسترسی به منابع برنامه را ببینید.

مدیریت رشته‌ها برای بومی‌سازی

این بخش روال‌های مطلوب را برای مدیریت رشته‌های مربوط به بومی‌سازی شرح می‌دهد.

انتقال همه رشته‌ها به strings.xml

هنگام ساختن برنامه‌هایتان، هیچ رشته‌ای را کدبندی سخت نکنید. به‌جای آن، همه رشته‌هایتان را به‌عنوان منابع در فایل strings.xml پیش‌فرض تعریف کنید، که به‌روزرسانی و بومی‌سازی آن‌ها را آسان می‌کند. رشته‌های موجود در فایل strings.xml را می‌توان به‌راحتی استخراج، ترجمه، و دوباره در برنامه‌تان ادغام کرد، با کیفیت مناسب، بدون هیچ تغییری در کد کامپایل‌شده.

برای مثال، با «نوشتن»، می‌توانید رشته‌ای مانند این را بار کنید:

// In the res/values/strings.xml file
// <string name="compose">Jetpack Compose</string>

// In your Compose code
Text(
    text = stringResource(R.string.compose)
)

اگر تصاویری با نوشتار تولید می‌کنید، آن رشته‌ها را نیز در strings.xml قرار دهید، و تصاویر را پس‌از ترجمه بازتولید کنید.

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

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

مطمئن شوید که توصیه‌های «طراحی مواد» را برای سبک نوشتاری و انتخاب کلمه خوانده و دنبال می‌کنید. انجام این کار باعث می‌شود برنامه‌هایتان برای کاربر صیقلی‌تر به‌نظر برسد و به کاربران کمک می‌کند میانای کاربری شما را سریع‌تر درک کنند.

همچنین، درصورت امکان همیشه از اصطلاحات استاندارد Android استفاده کنید، مثلاً برای عناصر واسط کاربر مانند نوار برنامه، منو گزینه‌ها، نوار سیستم، و اعلان‌ها. استفاده صحیح و یکنواخت از اصطلاحات Android باعث می‌شود ترجمه آسان‌تر شود و محصول نهایی بهتری برای کاربران ایجاد شود.

بافتار کافی برای رشته‌های اعلام‌شده ارائه دهید

هنگام تعریف رشته‌ها در فایل strings.xml، حتماً زمینه‌ای را که رشته در آن استفاده می‌شود شرح دهید. این اطلاعات برای مترجم بسیار ارزشمند است و منجر به ترجمه با کیفیت بهتر می‌شود. همچنین به شما کمک می‌کند تا رشته‌هایتان را به‌طور مؤثرتری مدیریت کنید.

به‌عنوان مثال:

<!-- The action for submitting a form. This text is on a button that can fit 30 chars -->
<string name="login_submit_button">Sign in</string>

اطلاعات زمینه‌ای مانند موارد زیر را ارائه دهید:

  • این رشته برای چه کاری است؟ چه زمانی و کجا به کاربر ارائه می‌شود؟
  • این مورد در میانای کاربری کجا است؟ برای مثال، ترجمه‌ها در دکمه‌ها نسبت به چارگوش‌های نوشتاری انعطاف‌پذیری کمتری دارند.

بخش‌های پیامی را که نباید ترجمه شود علامت‌گذاری کنید

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

برای علامت‌گذاری نوشتاری که نباید ترجمه شود، از برچسب جای‌بان <xliff:g> استفاده کنید. در اینجا نمونه برچسبی آورده شده است که نشان می‌دهد نوشتار "%1$s" نباید درطول ترجمه تغییر کند تا پیام خراب نشود:

<string name="countdown">
  <xliff:g id="time" example="5 days">%1$s</xliff:g> until holiday
</string>

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

در اینجا چند نمونه دیگر از برچسب‌های جای‌بان آورده شده است:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Example placeholder for a special Unicode symbol -->
<string name="star_rating">Check out our 5
    <xliff:g id="star">\u2605</xliff:g>
</string>
<!-- Example placeholder for a URL -->
<string name="app_homeurl">
    Visit us at <xliff:g
    id="application_homepage">http://my/app/home.html</xliff:g>
</string>
<!-- Example placeholder for a name -->
<string name="prod_name">
    Learn more at <xliff:g id="prod_gamegroup">Game Group</xliff:g>
</string>
<!-- Example placeholder for a literal -->
<string name="promo_message">
    Please use the "<xliff:g id="promotion_code">ABCDEFG</xliff:g>" to get a discount.
</string>
...
</resources>

بازبینه بومی‌سازی

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

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

هنگام بومی‌سازی برنامه، این نکته‌ها را دنبال کنید.

برنامه‌تان را به‌گونه‌ای طراحی کنید که در هر منطقه‌ای کار کند

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

مهم: مطمئن شوید که برنامه‌تان شامل مجموعه کاملی از منابع پیش‌فرض باشد: شامل res/drawable/ و res/values/ پوشه بدون هیچ اصلاح‌کننده اضافی در نام پوشه، که حاوی همه تصاویر و نوشتاری است که برنامه‌تان به آن‌ها نیاز دارد.

اگر برنامه‌ای حتی یک منبع پیش‌فرض نداشته باشد، در دستگاهی که روی منطقه زبانی پشتیبانی‌نشده تنظیم شده است اجرا نمی‌شود. برای مثال، اگر فایل پیش‌فرض res/values/strings.xml فاقد رشته‌ای باشد که برنامه به آن نیاز دارد، وقتی برنامه در منطقه زبانی پشتیبانی‌نشده اجرا می‌شود و تلاش می‌کند res/values/strings.xml را بار کند، کاربر پیام خطا و دکمه «بستن اجباری» را می‌بیند.

برای اطلاعات بیشتر، بخش آزمایش برای منابع پیش‌فرض را ببینید.

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

احتمالاً لازم نیست برای هر منبع در برنامه‌تان جایگزین مختص منطقه زبانی ایجاد کنید. برای مثال، نشان‌واره برنامه که در دایرکتوری res/drawable/ تعریف شده است ممکن است در هر منطقه زبانی کار کند، در این صورت نیازی به ایجاد فایل‌های گرافیکی جایگزین نیست.

همچنین، ممکن است نیازی به ایجاد نوشتار جایگزین برای هر رشته نداشته باشید. برای مثال، فرض کنید موارد زیر را دارید:

  • زبان پیش‌فرض برنامه شما انگلیسی امریکایی است. هر رشته‌ای که برنامه استفاده می‌کند با املای انگلیسی امریکایی در res/values/strings.xml تعریف شده است.
  • برای چند عبارت مهم، می‌خواهید املای انگلیسی بریتانیایی ارائه دهید. می‌خواهید وقتی برنامه‌تان در دستگاهی در پادشاهی متحد اجرا می‌شود، از این رشته‌های جایگزین استفاده شود.

برای انجام این کار، فایل کوچکی به‌نام res/values-en-rGB/strings.xml ایجاد کنید که فقط شامل رشته‌هایی باشد که وقتی برنامه در پادشاهی متحد اجرا می‌شود متفاوت هستند. برای بقیه رشته‌ها، برنامه به پیش‌فرض‌ها برمی‌گردد و از آنچه در res/values/strings.xml تعریف شده است استفاده می‌کند.

استفاده از LocalConfiguration برای جستجوی دستی مکان

می‌توانید بااستفاده از LocalConfiguration که Android دردسترس قرار می‌دهد، همان‌طور که در مثال زیر نشان داده شده است، بومی‌سازی را جستجو کنید:

val locale = LocalConfiguration.current.locales[0]

استفاده از سرویس ترجمه برنامه

خدمات ترجمه برنامه در کنسول Play یکپارچه شده است. این ویژگی به شما امکان می‌دهد قیمت فوری دریافت کنید و با شرکت ترجمه سفارش دهید. می‌توانید ترجمه‌ها را به یک یا چند زبان برای رشته‌های میانای کاربری برنامه، نوشتار «فهرستگان فروشگاه Play»، نام‌های «پرداخت درون‌برنامه»، و نوشتار پویش آگهی سفارش دهید.

استفاده از Gemini برای ترجمه رشته‌های برنامه

می‌توانید از Gemini در «استودیو Android» برای ترجمه کردن منابع رشته‌ای برنامه‌تان مستقیماً در پروژه‌تان استفاده کنید. برای اطلاعات بیشتر، به ترجمه و بومی‌سازی برنامه مراجعه کنید.

آزمایش برنامه‌های بومی‌سازی‌شده

برنامه بومی‌سازی‌شده‌تان را در دستگاه یا بااستفاده از «شبیه‌ساز Android» آزمایش کنید. به‌طور ویژه، برنامه‌تان را آزمایش کنید تا مطمئن شوید همه منابع پیش‌فرض لازم در آن گنجانده شده است.

آزمایش در دستگاه

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

برای تغییر دادن زبان یا منطقه در دستگاه، از برنامه «تنظیمات» استفاده کنید.

با پیش‌نمایش‌های ترکیب‌شدنی آزمایش کنید

قبل‌از آزمایش در دستگاه، می‌توانید از پیش‌نمایش‌های ترکیب‌پذیر در Android Studio برای آزمایش کردن واسط‌های کاربر بومی‌سازی‌شده بدون استقرار در شبیه‌ساز استفاده کنید. برای پیش‌نمایش کردن واسط کاربر به زبان‌های مختلف، از گزارمان @Preview (مثل @Preview(locale = "fr")) استفاده کنید. همچنین می‌توانید چیدمان‌های راست‌به‌چپ (RTL) را با مشخص کردن منطقه‌ای راست‌به‌چپ مثل @Preview(locale = "ar") آزمایش کنید.

آزمایش در شبیه‌ساز

برای جزئیات مربوط به استفاده از شبیه‌ساز، به اجرای برنامه‌ها در «شبیه‌ساز Android» مراجعه کنید.

ایجاد و استفاده از محلی سفارشی

منطقه زمانی «سفارشی» ترکیبی از زبان یا منطقه‌ای است که تصویر سیستم Android به‌طور صریح از آن پشتیبانی نمی‌کند. با ایجاد یک بوم‌گرد سفارشی در شبیه‌ساز، می‌توانید نحوه اجرای برنامه‌تان در یک بوم‌گرد سفارشی را آزمایش کنید. دو راه برای انجام این کار وجود دارد:

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

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

تغییر دادن منطقه زبانی شبیه‌ساز از پوسته adb

برای تغییر دادن محل در شبیه‌ساز بااستفاده از پوسته adb، مراحل زیر را انجام دهید:

  1. مکان موردنظرتان را برای آزمایش انتخاب کنید و برچسب زبان BCP-47 آن را مشخص کنید، مثلاً fr-CA برای فرانسوی کانادایی.
  2. شبیه‌ساز را راه‌اندازی کنید.
  3. از پوسته خط فرمان در رایانه میزبان، فرمان زیر را اجرا کنید:
    adb shell
    یا، اگر دستگاهی متصل دارید، با افزودن گزینه -e مشخص کنید که شبیه‌ساز را می‌خواهید:
    adb -e shell
  4. در پیام‌واره پوسته adb (#)، این فرمان را اجرا کنید:
    setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start
    بخش‌های داخل قلاب را با کدهای مناسب از «مرحله ۱» جایگزین کنید.

    برای مثال، برای آزمایش به زبان فرانسوی کانادایی:
    setprop persist.sys.locale fr-CA;stop;sleep 5;start

این کار باعث بازراه‌اندازی شبیه‌ساز می‌شود. وقتی «صفحه اصلی» دوباره ظاهر شد، برنامه‌تان را دوباره راه‌اندازی کنید، و برنامه با بوم جدید راه‌اندازی می‌شود.

آزمایش منابع پیش‌فرض

برای آزمایش اینکه آیا برنامه‌ای همه منابع رشته‌ای موردنیاز خود را دارد، کارهای زیر را انجام دهید:

  1. شبیه‌ساز یا دستگاه را روی زبانی تنظیم کنید که برنامه‌تان پشتیبانی نمی‌کند. برای مثال، اگر برنامه رشته‌های فرانسوی در res/values-fr/ داشته باشد اما رشته‌های اسپانیایی در res/values-es/ نداشته باشد، منطقه زبانی شبیه‌ساز را روی اسپانیایی تنظیم کنید. می‌توانید از برنامه «مکان سفارشی» برای تنظیم شبیه‌ساز روی مکان پشتیبانی‌نشده استفاده کنید.
  2. برنامه را اجرا کنید.
  3. اگر برنامه پیام خطا و دکمه «بستن اجباری» را نشان می‌دهد، ممکن است به‌دنبال رشته‌ای باشد که دردسترس نیست. مطمئن شوید که فایل res/values/strings.xml شما برای هر رشته‌ای که برنامه استفاده می‌کند تعریفی داشته باشد.

اگر آزمایش موفقیت‌آمیز بود، آن را برای انواع دیگر پیکربندی‌ها تکرار کنید. برای مثال، اگر برنامه فایل رشته‌ای به‌نام res/values-land/strings.xml داشته باشد اما فایلی به‌نام res/values-port/strings.xml نداشته باشد، شبیه‌ساز یا دستگاه را روی جهت عمودی تنظیم کنید و ببینید برنامه اجرا می‌شود یا نه.

منابع بیشتر

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

اسناد

محتوا را می‌بیند