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 قرار دهید. برای این رشتهها، از زبان پیشفرض استفاده کنید—زبانی که انتظار دارید اکثر کاربران برنامهتان به آن صحبت کنند.
مجموعه منابع پیشفرض همچنین شامل هرگونه drawable پیشفرض است و میتواند شامل انواع دیگر منابع مانند نمادها یا رشتهها باشد. این منابع در دایرکتوریهای زیر قرار میگیرند:
res/drawable/: دایرکتوری الزامی که حداقل یک فایل گرافیکی برای نماد برنامه در Google Play داردres/xml/: اگر پوشهres/xml-<qualifiers>دارید، الزامی استres/raw/: اگر پوشهres/raw-<qualifiers>دارید، الزامی است
ساختن منابع جایگزین
بخش بزرگی از بومیسازی برنامه ارائه نوشتار جایگزین برای زبانهای مختلف است. در برخی موارد، گرافیک، صدا، و منابع خاص منطقه دیگری نیز ارائه میدهید.
برنامه میتواند چندین دایرکتوری res/<qualifiers>/ را مشخص کند که هرکدام واجدشرایطهای متفاوتی دارند. برای ایجاد منبع جایگزین
برای منطقه زبانی متفاوت، از شناسه استفاده میکنید که زبان یا
ترکیب زبان-منطقه را مشخص میکند. نام فهرست راهنمای منبع باید با طرح نامگذاری شرحدادهشده در ارائه منابع جایگزین مطابقت داشته باشد،
درغیراینصورت برنامهتان نمیتواند کامپایل شود.
مثال:
فرض کنید زبان پیشفرض برنامهتان انگلیسی است و میخواهید همه نوشتار برنامهتان را به فرانسوی و همه نوشتار بهجز عنوان برنامه را به ژاپنی بومیسازی کنید. در این حالت، سه فایل strings.xml ایجاد میکنید که هرکدام
در فهرست راهنمای منبع مختص منطقه ذخیره میشود:
res/values/strings.xml
حاوی نوشتار انگلیسی برای همه رشتههایی است که برنامه استفاده میکند، ازجمله نوشتار برای رشتهای بهنامtitle.res/values-fr/strings.xml
حاوی نوشتار فرانسوی برای همه رشتهها، ازجملهtitleباشد.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به زبان هندی است.
- برنامه در دستگاهی اجرا میشود که پیکربندی زیر را دارد:
- سیمکارت به شبکه تلفن همراه در هند (MCC 404) متصل باشد.
- زبان روی هندی (
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 را میتوان بهراحتی
استخراج، ترجمه، و با شناسانندههای مناسب دوباره در برنامه ادغام کرد،
بدون اینکه تغییری در کد کامپایلشده ایجاد شود.
برای مثال، با Compose میتوانید رشتهای مانند این را بار کنید:
// 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")) استفاده کنید. همچنین میتوانید با مشخص کردن یک زبان راستبهچپ مثل @Preview(locale = "ar")، چیدمانهای راستبهچپ را آزمایش کنید.
آزمایش در شبیهساز
برای جزئیات بیشتر درباره استفاده از شبیهساز، به اجرای برنامهها در شبیهساز Android مراجعه کنید.
ایجاد و استفاده از منطقه زبانی سفارشی
منطقه زبانی «سفارشی» ترکیبی از زبان یا منطقه است که تصویر سیستم Android بهطور صریح از آن پشتیبانی نمیکند. با ایجاد منطقه زبانی سفارشی در شبیهساز، میتوانید نحوه اجرای برنامهتان را در منطقه زبانی سفارشی آزمایش کنید. دو روش برای انجام این کار وجود دارد:
- از برنامه Custom Locale (منطقه زبانی سفارشی) استفاده کنید که از برگه برنامه قابلدسترسی است. پساز ایجاد منطقه زبانی سفارشی، با لمس کردن و نگه داشتن نام منطقه زبانی، به آن بروید.
- همانطور که در بخش زیر شرح داده شده است، از پوسته
adbبه منطقه زبانی سفارشی تغییر دهید.
وقتی شبیهساز را روی منطقهای تنظیم میکنید که در تصویر سیستم Android دردسترس نیست، خود سیستم به زبان پیشفرضش نمایش داده میشود. بااینحال، برنامه شما بهدرستی بومیسازی میشود.
تغییر دادن منطقه زبانی شبیهساز از پوسته adb
برای تغییر دادن منطقه در شبیهساز بااستفاده از پوسته adb، کارهای زیر را انجام دهید:
- منطقه زبانی موردنظرتان را برای آزمایش انتخاب کنید و برچسب زبان BCP-47 آن را تعیین کنید،
مثلاً
fr-CAبرای فرانسوی کانادایی. - شبیهسازی را راهاندازی کنید.
- از پوسته خط فرمان در رایانه میزبان، فرمان زیر را اجرا کنید:
adb shell
یا اگر دستگاهی متصل دارید، با افزودن گزینه-eمشخص کنید که شبیهساز را میخواهید:
adb -e shell - در پیامواره پوسته
adb(#)، این فرمان را اجرا کنید:
setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start
بخشهای داخل کروشه را با کدهای مناسب از «مرحله ۱» جایگزین کنید.
برای مثال، برای آزمایش به زبان فرانسوی کانادایی:
setprop persist.sys.locale fr-CA;stop;sleep 5;start
این کار باعث بازراهاندازی شبیهساز میشود. وقتی «صفحه اصلی» دوباره ظاهر شد، برنامه را مجدداً راهاندازی کنید تا برنامه با منطقه زبانی جدید راهاندازی شود.
آزمایش برای منابع پیشفرض
برای آزمایش اینکه آیا برنامه شامل همه منابع رشتهای موردنیازش است یا نه، کارهای زیر را انجام دهید:
- شبیهساز یا دستگاه را روی زبانی تنظیم کنید که برنامهتان از آن پشتیبانی نمیکند. برای مثال، اگر برنامه رشتههای فرانسوی در
res/values-fr/دارد اما هیچ رشته اسپانیایی درres/values-es/ندارد، منطقه زبانی شبیهساز را روی اسپانیایی تنظیم کنید. میتوانید از برنامه Custom Locale برای تنظیم شبیهساز روی یک منطقه زبانی پشتیبانینشده استفاده کنید. - برنامه را اجرا کنید.
- اگر برنامه پیام خطا و دکمه «توقف اجباری» را نشان میدهد، ممکن است
بهدنبال رشتهای باشد که دردسترس نیست. مطمئن شوید که فایل
res/values/strings.xmlشما شامل تعریفی برای هر رشتهای باشد که برنامه استفاده میکند.
اگر آزمایش موفقیتآمیز بود، آن را برای انواع دیگر پیکربندیها تکرار کنید. برای
مثال، اگر برنامه فایل رشتهای بهنام res/values-land/strings.xml دارد اما
فایلی بهنام res/values-port/strings.xml ندارد، شبیهساز یا دستگاه را روی جهت عمودی تنظیم کنید و ببینید آیا برنامه اجرا میشود یا نه.
منابع بیشتر
برای اطلاعات بیشتر درباره بومیسازی، منابع اضافی زیر را ببینید: