اندروید روی دستگاههای زیادی در مناطق مختلف اجرا میشود. برای دسترسی به بیشترین تعداد کاربران، مطمئن شوید که برنامه شما متن، فایلهای صوتی، اعداد، ارز و گرافیک را به روشهایی متناسب با منطقهای که برنامه شما در آن استفاده میشود، مدیریت میکند.
این صفحه بهترین شیوهها برای بومیسازی برنامههای اندروید را شرح میدهد.
شما باید دانش عملی کاتلین داشته باشید و با بارگذاری منابع اندروید ، ملاحظات توسعه مانند چرخه حیات اکتیویتی و اصول کلی بینالمللیسازی و محلیسازی آشنا باشید.
استفاده از چارچوب منابع اندروید برای جدا کردن جنبههای محلیشدهی برنامهتان تا حد امکان از قابلیتهای اصلی برنامه، روش خوبی است.
- همانطور که در این صفحه و در نمای کلی منابع برنامه توضیح داده شده است، بیشتر یا تمام محتوای رابط کاربری برنامه خود را در فایلهای منبع قرار دهید.
- از سوی دیگر، رفتار رابط کاربری توسط کد مبتنی بر کاتلین شما هدایت میشود. برای مثال، اگر کاربران دادههایی را وارد کنند که نیاز به قالببندی یا مرتبسازی متفاوت بسته به زبان محلی داشته باشند، از کاتلین برای مدیریت دادهها به صورت برنامهنویسی استفاده میکنید. این صفحه نحوه محلیسازی کد مبتنی بر کاتلین شما را پوشش نمیدهد.
این راهنما سیستم اصلی محلیسازی اندروید که در تمام برنامههای اندروید استفاده میشود را پوشش میدهد. برای یادگیری نحوه بارگذاری این منابع محلیسازی شده در رابط کاربری Jetpack Compose خود، به منابع در Compose مراجعه کنید.
برای راهنمای مختصری در مورد بومیسازی رشتهها در برنامهتان، به بخش «پشتیبانی از زبانها و فرهنگهای مختلف» مراجعه کنید.
مرور کلی: تغییر منابع در اندروید
منابع شامل رشتههای متنی، صداها، گرافیکها و هر داده استاتیک دیگری هستند که برنامه اندروید شما به آنها نیاز دارد. یک برنامه میتواند شامل چندین مجموعه از منابع باشد که هر کدام برای پیکربندی دستگاه متفاوتی سفارشی شدهاند. وقتی کاربر برنامه را اجرا میکند، اندروید به طور خودکار منابعی را که به بهترین وجه با دستگاه مطابقت دارند انتخاب و بارگذاری میکند.
این صفحه بر محلیسازی و زبان متمرکز است. برای شرح کاملی از تغییر منابع و انواع پیکربندیهایی که میتوانید مشخص کنید، مانند جهت صفحه نمایش یا نوع صفحه لمسی، به بخش «ارائه منابع جایگزین» مراجعه کنید.
وقتی برنامه خود را مینویسید، منابع پیشفرض و جایگزین را برای استفاده برنامه خود ایجاد میکنید. وقتی کاربران برنامه شما را اجرا میکنند، سیستم اندروید بر اساس زبان دستگاه، منابعی را که باید بارگذاری شوند، انتخاب میکند. برای ایجاد منابع، فایلها را در زیرشاخههای با نامهای خاص از پوشه res/ پروژه قرار میدهید.
چرا منابع پیشفرض مهم هستند؟
وقتی برنامه در هر زبانی اجرا میشود که متن مخصوص آن زبان را ارائه نکردهاید، اندروید رشتههای پیشفرض را از res/values/strings.xml بارگذاری میکند. اگر این فایل پیشفرض وجود نداشته باشد، یا اگر رشتهای که برنامه شما به آن نیاز دارد را نداشته باشد، برنامه شما اجرا نمیشود و خطا نشان میدهد. مثال زیر نشان میدهد که وقتی فایل متنی پیشفرض ناقص باشد، چه اتفاقی میافتد.
مثال:
کد مبتنی بر کاتلین یک برنامه فقط به دو رشته 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 وجود دارد و هر رشته مورد نیاز را تعریف میکند. این وضعیت برای همه انواع منابع، نه فقط رشتهها، صدق میکند: شما باید مجموعهای از فایلهای منبع پیشفرض ایجاد کنید که شامل تمام منابعی باشد که برنامه شما از آنها استفاده میکند، مانند drawableها، فونتها یا رنگها. برای اطلاعات مربوط به آزمایش، به بخش «آزمایش برای منابع پیشفرض» مراجعه کنید.
استفاده از منابع برای محلیسازی
این بخش نحوه ایجاد منابع پیشفرض و همچنین منابع جایگزین را مورد بحث قرار میدهد. همچنین توضیح میدهد که چگونه به منابع اولویت داده میشود و چگونه میتوانید در کد به منابع خود ارجاع دهید.
ایجاد منابع پیشفرض
متن پیشفرض برنامه را در res/values/strings.xml قرار دهید. برای این رشتهها، از زبان پیشفرض استفاده کنید - زبانی که انتظار دارید اکثر کاربران برنامه شما به آن صحبت کنند.
مجموعه منابع پیشفرض همچنین شامل هرگونه فایل قابل ترسیم پیشفرض میشود و میتواند شامل انواع دیگری از منابع مانند آیکونها یا رشتهها باشد. این منابع در دایرکتوریهای زیر قرار میگیرند:
-
res/drawable/: دایرکتوری مورد نیاز که حداقل یک فایل گرافیکی برای آیکون برنامه در گوگل پلی دارد. -
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باشد.
اگر کد مبتنی بر کاتلین شما به R.string.title اشاره کند، در زمان اجرا این اتفاق میافتد:
- اگر دستگاه روی هر زبانی غیر از فرانسوی تنظیم شده باشد، اندروید
titleاز فایلres/values/strings.xmlبارگذاری میکند. - اگر دستگاه روی زبان فرانسوی تنظیم شده باشد، اندروید
titleاز فایلres/values-fr/strings.xmlبارگذاری میکند.
اگر دستگاه روی زبان ژاپنی تنظیم شده باشد، اندروید در فایل res/values-ja/strings.xml به دنبال title میگردد. اما از آنجایی که چنین رشتهای در آن فایل وجود ندارد، اندروید به حالت پیشفرض برمیگردد و title به زبان انگلیسی از فایل res/values/strings.xml بارگذاری میکند.
کدام منابع اولویت دارند؟
اگر چندین فایل منبع با پیکربندی یک دستگاه مطابقت داشته باشند، اندروید از مجموعهای از قوانین برای تصمیمگیری در مورد استفاده از کدام فایل پیروی میکند. در میان توصیفگرهایی که میتوانند در نام دایرکتوری منبع مشخص شوند، زبان محلی تقریباً همیشه اولویت دارد.
مثال:
فرض کنید یک برنامه شامل یک مجموعه گرافیک پیشفرض و دو مجموعه گرافیک دیگر است که هر کدام برای تنظیمات دستگاه متفاوتی بهینه شدهاند:
-
res/drawable/
شامل گرافیکهای پیشفرض است. -
res/drawable-small-land-stylus/
شامل گرافیکهایی است که برای استفاده با دستگاهی که ورودی از قلم را انتظار دارد و دارای صفحه نمایش QVGA با تراکم کم در جهت افقی است، بهینه شده است. -
res/drawable-ja/
شامل گرافیکهایی است که برای استفاده با زبان ژاپنی بهینه شدهاند.
اگر برنامه روی دستگاهی اجرا شود که برای استفاده از زبان ژاپنی پیکربندی شده باشد، اندروید گرافیک را از 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) تنظیم شده است.
اندروید text_a از res/values-mcc404/strings.xml (به زبان انگلیسی) بارگذاری میکند، حتی اگر دستگاه برای زبان هندی پیکربندی شده باشد. دلیل این امر این است که در فرآیند انتخاب منابع، اندروید تطابق MCC را به تطابق زبان ترجیح میدهد.
فرآیند انتخاب همیشه به آن سادگی که این مثالها نشان میدهند، نیست. برای توضیحات دقیقتر این فرآیند، به «چگونه اندروید بهترین منبع منطبق را پیدا میکند» مراجعه کنید. تمام توصیفکنندهها به ترتیب اولویت در نمای کلی منابع برنامه شرح داده شده و فهرست شدهاند.
به منابع موجود در کد مراجعه کنید
در کد مبتنی بر کاتلین برنامهتان، برای ارجاع به منابع از سینتکس R. resource_type . resource_name یا android.R. resource_type . resource_name استفاده میکنید . برای اطلاعات بیشتر، به Access your app resources مراجعه کنید.
مدیریت رشتهها برای محلیسازی
این بخش بهترین شیوهها برای مدیریت رشتههای شما در رابطه با محلیسازی را شرح میدهد.
تمام رشتهها را به strings.xml منتقل کنید.
هنگام ساخت برنامههای خود، هیچ رشتهای را به صورت hardcode وارد نکنید. در عوض، تمام رشتههای خود را به عنوان منابع در یک فایل پیشفرض 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 قرار دهید و پس از ترجمه، تصاویر را دوباره تولید کنید.
دستورالعملهای اندروید را برای رشتههای رابط کاربری دنبال کنید
هنگام طراحی و توسعه رابطهای کاربری خود، به نحوه صحبت با کاربر خود توجه زیادی داشته باشید. به طور کلی، از یک سبک مختصر و مفید، دوستانه اما مختصر استفاده کنید و از یک سبک ثابت در سراسر رابطهای کاربری خود استفاده کنید.
مطمئن شوید که توصیههای طراحی متریال را برای سبک نوشتاری و انتخاب کلمات مطالعه و دنبال میکنید. انجام این کار باعث میشود برنامههای شما برای کاربر مرتبتر به نظر برسند و به کاربران کمک میکند تا رابط کاربری شما را سریعتر درک کنند.
همچنین، همیشه در هر کجا که ممکن است از اصطلاحات استاندارد اندروید استفاده کنید، مانند عناصر رابط کاربری مانند نوار برنامه، منوی گزینهها، نوار سیستم و اعلانها. استفاده صحیح و مداوم از اصطلاحات اندروید، ترجمه را آسانتر میکند و منجر به محصول نهایی بهتری برای کاربران میشود.
زمینه کافی برای رشتههای اعلانشده فراهم کنید
همانطور که رشتهها را در فایل 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>
وقتی یک تگ placeholder تعریف میکنید، یک ویژگی ID اضافه کنید که توضیح دهد placeholder برای چیست. اگر برنامه شما بعداً مقدار placeholder را جایگزین کرد، حتماً یک ویژگی مثالی برای روشن شدن کاربرد مورد انتظار ارائه دهید.
در اینجا چند نمونه دیگر از برچسبهای placeholder آورده شده است:
<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>
چک لیست محلی سازی
برای مرور کامل فرآیند بومیسازی و توزیع یک برنامه اندروید، به بخش ترجمه و بومیسازی برنامه خود مراجعه کنید.
نکات محلی سازی
هنگام بومیسازی برنامه خود، این نکات را دنبال کنید.
برنامه خود را طوری طراحی کنید که در هر محلی کار کند
در مورد دستگاهی که کاربر برنامه شما را روی آن اجرا میکند، هیچ فرضی نکنید. ممکن است دستگاه سختافزاری داشته باشد که شما پیشبینی نکرده بودید، یا ممکن است روی محلی تنظیم شده باشد که برای آن برنامهریزی نکرده بودید یا نمیتوانید آن را آزمایش کنید. برنامه خود را طوری طراحی کنید که صرف نظر از دستگاهی که روی آن اجرا میشود، به طور عادی کار کند یا به راحتی از کار بیفتد.
مهم: مطمئن شوید که برنامه شما شامل مجموعهای کامل از منابع پیشفرض است: پوشههای 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 که اندروید در اختیار قرار میدهد، همانطور که در مثال زیر نشان داده شده است، زبان را جستجو کنید:
val locale = LocalConfiguration.current.locales[0]
از سرویس ترجمه برنامه استفاده کنید
سرویس ترجمه اپلیکیشن در کنسول پلی ادغام شده است. این سرویس به شما امکان میدهد فوراً قیمت بگیرید و از یک شرکت ترجمه سفارش دهید. میتوانید ترجمهها را به یک یا چند زبان برای رشتههای رابط کاربری اپلیکیشن، متن فهرست فروشگاه پلی، نامهای IAP و متن کمپین تبلیغاتی سفارش دهید.
استفاده از Gemini برای ترجمه رشتههای برنامه
شما میتوانید از Gemini در اندروید استودیو برای ترجمه مستقیم منابع رشتهای برنامه خود در پروژهتان استفاده کنید. برای اطلاعات بیشتر، به بخش «ترجمه و بومیسازی برنامه» مراجعه کنید.
تست برنامههای محلیشده
برنامه محلیسازی شده خود را روی یک دستگاه یا با استفاده از شبیهساز اندروید آزمایش کنید. به طور خاص، برنامه خود را آزمایش کنید تا مطمئن شوید که تمام منابع پیشفرض لازم گنجانده شده است.
روی یک دستگاه تست کنید
به خاطر داشته باشید که دستگاهی که روی آن آزمایش میکنید ممکن است با دستگاههای موجود برای مصرفکنندگان در جاهای دیگر تفاوت قابل توجهی داشته باشد. زبانهای محلی موجود در دستگاه شما میتواند با زبانهای موجود در دستگاههای دیگر متفاوت باشد. همچنین، وضوح و تراکم صفحه نمایش دستگاه ممکن است متفاوت باشد، که میتواند بر نمایش رشتهها و ترسیمپذیرها در رابط کاربری شما تأثیر بگذارد.
برای تغییر زبان یا منطقهی جغرافیایی در دستگاه، از برنامهی تنظیمات (Settings) استفاده کنید.
با پیشنمایشهای قابل ترکیب تست کنید
قبل از آزمایش روی یک دستگاه، میتوانید از پیشنمایشهای ترکیبی در اندروید استودیو برای آزمایش رابطهای کاربری محلیشده بدون استقرار در یک شبیهساز استفاده کنید. برای پیشنمایش رابط کاربری خود در زبانهای مختلف، از حاشیهنویسی @Preview استفاده کنید (مانند @Preview(locale = "fr") ). همچنین میتوانید طرحبندیهای راست به چپ (RTL) را با مشخص کردن یک زبان RTL مانند @Preview(locale = "ar") آزمایش کنید.
روی شبیهساز تست کنید
برای جزئیات بیشتر در مورد استفاده از شبیهساز، به بخش اجرای برنامهها در شبیهساز اندروید مراجعه کنید.
ایجاد و استفاده از زبان سفارشی
زبان "سفارشی" ترکیبی از زبان یا منطقهای است که تصویر سیستم اندروید به صراحت از آن پشتیبانی نمیکند. میتوانید با ایجاد یک زبان سفارشی در شبیهساز، نحوه اجرای برنامه خود را در یک زبان سفارشی آزمایش کنید. دو راه برای انجام این کار وجود دارد:
- از برنامهی «زبانهی سفارشی» که از تب «برنامه» قابل دسترسی است، استفاده کنید. پس از ایجاد زبان سفارشی، با لمس کردن و نگه داشتن نام زبان، به آن تغییر دهید.
- همانطور که در بخش بعدی توضیح داده شده است، از طریق پوسته
adbبه یک زبان دلخواه تغییر دهید.
وقتی شما شبیهساز را روی زبانی تنظیم میکنید که در تصویر سیستم اندروید موجود نیست، خود سیستم به زبان پیشفرض خود نمایش داده میشود. با این حال، برنامه شما به درستی بومیسازی میشود.
تغییر زبان شبیهساز از طریق پوسته 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 نیست، آنگاه شبیهساز یا دستگاه را روی جهت عمودی تنظیم کنید و ببینید آیا برنامه اجرا میشود یا خیر.
منابع اضافی
برای اطلاعات بیشتر در مورد محلیسازی، به منابع اضافی زیر مراجعه کنید: