أقلمة تطبيقك

يعمل نظام التشغيل Android على عدّة أجهزة في مناطق متعدّدة. للوصول إلى أكبر عدد من المستخدمين، تأكد من يعالج التطبيق النصوص والملفات الصوتية والأرقام والعملات والرسومات المناسبة للّغات التي يُستخدم فيها تطبيقك.

توضّح هذه الصفحة أفضل الممارسات لأقلمة محتوى Android. التطبيقات.

يجب أن يكون لديك معرفة عملية ببرمجة Kotlin أو Java. اللغة وأن تكون على دراية تحميل موارد Android الإعلان عن عناصر واجهة المستخدم في XML، اعتبارات التطوير مثل دورة حياة النشاط والمبادئ العامة للتدويل والأقلمة.

من الأفضل استخدام إطار عمل موارد Android لفصل الجوانب المترجَمة في تطبيقك قدر الإمكان من خلال وظائف التطبيق الأساسية.

  • ضَع معظم أو كل محتويات واجهة المستخدم الخاصة بتطبيقك في ملفات المصدر، كما هو موضح في هذه الصفحة وفي نظرة عامة على موارد التطبيقات
  • من ناحية أخرى، يستند سلوك واجهة المستخدم إلى باستخدام رمزك المستند إلى لغة Kotlin أو Java. على سبيل المثال، إذا أدخل المستخدمون بيانات تحتاج إلى أو فرزها بشكل مختلف اعتمادًا على اللغة، فإنك تستخدم لغة Kotlin أو لغة برمجة Java لمعالجة البيانات آليًا. هذه الصفحة لا تناول كيفية أقلمة التعليمات البرمجية المستندة إلى Kotlin أو المستندة إلى Java.

للحصول على دليل قصير حول أقلمة السلاسل في تطبيقك، يُرجى الاطّلاع على دعم لغات مختلفة الثقافات.

نظرة عامة: تبديل الموارد في Android

الموارد عبارة عن سلاسل نصية وتخطيطات وأصوات ورسومات وأي محتوى ثابت آخر التي يحتاجها تطبيق Android. يمكن أن يتضمن التطبيق عدة مجموعة من الموارد، يتم تخصيص كل منها وفقًا لإعدادات الجهاز المختلفة. عندما إذا كان المستخدم يشغّل التطبيق، يختار Android الموارد ويحمّلها تلقائيًا التي تناسب الجهاز على أفضل نحو.

تركز هذه الصفحة على الأقلمة واللغة. للحصول على وصف كامل تبديل الموارد وجميع أنواع التهيئات التي يمكنك مثل اتجاه الشاشة أو نوع الشاشة التي تعمل باللمس، راجع تقديم والموارد البديلة.

عند كتابة تطبيقك، يمكنك إنشاء موارد تلقائية وبديلة. لكي يستخدمه التطبيق. عندما يشغّل المستخدمون تطبيقك، لا يعمل نظام Android تحدد الموارد المطلوب تحميلها بناءً على لغة الجهاز. لإنشاء موارد، يمكنك وضع الملفات داخل الأدلّة الفرعية التي لها أسماء خاصة لدليل res/ الخاص بالمشروع.

سبب أهمية الموارد التلقائية

عند تشغيل التطبيق بأي لغة لم تقدمها لنصوص محلية، فإن Android يحمّل السلاسل الافتراضية من res/values/strings.xml إذا كان هذا الملف التلقائي غير متوفّر أو إذا كان ينقصه سلسلة يحتاجها تطبيقك، فإن تطبيقك لا يعمل. وتعرض خطأً. يوضح المثال التالي ما يمكن أن يحدث عندما الملف النصي الافتراضي غير مكتمل.

مثال:

ويشير رمز التطبيق المستنِد إلى Kotlin أو Java إلى سلسلتَين فقط، وهما 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/layout/: دليل مطلوب يحتوي على XML ملف يحدد التنسيق التلقائي
  • res/anim/: مطلوب إذا كان لديك أي مجلدان (res/anim-<qualifiers>)
  • res/xml/: مطلوب إذا كان لديك أي مجلدان (res/xml-<qualifiers>)
  • res/raw/: مطلوب إذا كان لديك أي مجلدان (res/raw-<qualifiers>)

نصيحة: في التعليمة البرمجية، افحص كل مرجع إلى مورد Android. تأكَّد من تحديد مورد تلقائي لكل مصدر. تأكد أيضًا من أن ملف السلسلة الافتراضي مكتمل: localized فيمكن أن يحتوي ملف السلسلة على مجموعة فرعية من السلاسل، ولكن السلسلة default أن يحتوي عليها الملف جميعًا.

إنشاء مراجع بديلة

يتمثل جزء كبير من ترجمة التطبيق في توفير نص بديل بلغات مختلفة. في بعض الحالات، تقوم أيضًا بتوفير رسومات بديلة، والأصوات والتخطيطات والموارد الأخرى الخاصة بالمنطقة.

يمكن أن يحدد التطبيق العديد من 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 أو Java يشير إلى 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 منخفض الكثافة الشاشة في الاتجاه الأفقي.

استثناء: المؤهلات الوحيدة التي تقبل في عملية التحديد، تكون الأولوية على اللغة في عملية الاختيار هي رمز البلد المخصّص للأجهزة الجوّالة (مركز عملائي) وشبكة الجوّال. كود (MNC).

مثال:

افترض أن لديك الموقف التالي:

  • يستدعي رمز التطبيق الوصول إلى "R.string.text_a"
  • .
  • يتوفر ملفا موردان ذوا صلة:
    • res/values-mcc404/strings.xml، بما في ذلك text_a باللغة التلقائية للتطبيق، وهي في هذه الحالة الإنجليزية.
    • res/values-hi/strings.xml، بما في ذلك text_a باللغة الهندية.
  • يعمل التطبيق على جهاز يتضمّن ما يلي: التكوين:
    • ترتبط شريحة SIM بشبكة جوّال في الهند (مركز عملائي 404).
    • تم ضبط اللغة على الهندية (hi).

يحمّل نظام Android text_a من res/values-mcc404/strings.xml (باللغة الإنجليزية)، حتى إذا كان الجهاز باللغة الهندية. وذلك لأنه أثناء عملية اختيار الموارد، يفضل مطابقة مركز عملائي على مطابقة اللغة.

لا تكون عملية الاختيار دائمًا مباشرة مثل هذه الأمثلة اقتراحنا. للحصول على وصف أكثر دقة لهذه العملية، يمكنك الاطّلاع على كيفية عثور Android على المورد الأفضل مطابقةً. يتم وصف جميع المؤهلات وإدراجها بترتيب الأولوية في نظرة عامة على موارد التطبيقات

الرجوع إلى الموارد في التعليمة البرمجية

في رمز تطبيقك المستنِد إلى Kotlin أو Java، يمكنك الرجوع إلى الموارد باستخدام بنية R.resource_type.resource_name أو android.R.resource_type.resource_name لمزيد من المعلومات، يُرجى مراجعة الوصول إلى موارد تطبيقك

إدارة السلاسل الخاصة بالترجمة

يصف هذا القسم أفضل الممارسات لإدارة السلاسل ذات الصلة بالأقلمة.

نقل كل السلاسل إلى items.xml

أثناء إنشاء تطبيقاتك، لا تستخدم الترميز الثابت لأي سلاسل. بدلاً من ذلك، أفصح عن جميع سلاسل كموارد في ملف strings.xml تلقائي، ما يسهّل عملية التعديل وأقلمها. يمكن بسهولة استخراج السلاسل في ملف strings.xml وترجمته ودمجه مرة أخرى في تطبيقك مع المؤهلات المناسبة، وبدون أي التغييرات على التعليمة البرمجية المجمّعة.

في حال إنشاء صور تحتوي على نص، ضَع هذه السلاسل في "strings.xml" أيضًا، إعادة إنشاء الصور بعد الترجمة.

اتّباع إرشادات Android لسلاسل واجهة المستخدم

أثناء تصميمك وتطوير واجهات المستخدم الخاصة بك، انتبه جيدًا لكيفية تتحدث إلى المستخدم. بشكل عام، استخدم أسلوبًا موجزًا ودية وموجزة، وتستخدم أسلوبًا ثابتًا في جميع أنحاء واجهات المستخدم الخاصة بك.

تأكد من قراءة ومتابعة توصيات Material Design الكتابة والأسلوب واختيار الكلمات. ويساعد ذلك في جعل تطبيقاتك تبدو أكثر تنقيحًا للمستخدم، كما تساعد المستخدمين على فهم واجهة المستخدم بشكل أسرع

عليك أيضًا دائمًا استخدام مصطلحات 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/layout-de/main.xml للحصول على تنسيق باللغة الألمانية. ومع ذلك، فإن القيام بذلك يمكن أن تجعل صيانة تطبيقك أكثر صعوبة. من الأفضل إنشاء قائمة تصميم أكثر مرونة.

هناك وضع نموذجي آخر وهو لغة تتطلب شيئًا مختلفًا في تخطيطه. على سبيل المثال، قد يكون لديك نموذج اتصال يتضمن اثنين حقول الأسماء عند تشغيل التطبيق باللغة اليابانية، ولكن عند تشغيل التطبيق على ثلاثة حقول أسماء تشغيل التطبيق ببعض اللغات الأخرى. يمكنك التعامل مع هذا في أي من بطريقتين:

  • أنشئ تنسيقًا واحدًا يحتوي على حقل يمكنك تفعيله آليًا أو إيقاف بناءً على اللغة.
  • تضمين تخطيط آخر يتضمن التخطيط الرئيسي . قد يكون للتنسيق الثاني تهيئات مختلفة اللغات.

تجنُّب إنشاء المزيد من ملفات الموارد والسلاسل النصية التي تحتاج إليها

ربما لا تحتاج إلى إنشاء بديل خاص باللغة لكل المستخدم في تطبيقك. على سبيل المثال، قد يتم تحديد التخطيط في يمكن أن يعمل ملف res/layout/main.xml بأي لغة، وفي هذه الحالة فلا داعي لإنشاء أي ملفات تخطيط بديلة.

أيضًا، قد لا تحتاج إلى إنشاء نص بديل لكل سلسلة. بالنسبة لنفترض ما يلي:

  • اللغة التلقائية لتطبيقك هي الإنجليزية الأمريكية. كل سلسلة التي يستخدمها التطبيق، باستخدام التهجئة الإنجليزية الأمريكية، في res/values/strings.xml
  • لنفترض أنك تريد إدخال بعض العبارات المهمة باستخدام تهجئة إنجليزية بريطانية. أنت تريد استخدام هذه السلاسل البديلة عند تشغيل تطبيقك على في المملكة المتحدة.

للقيام بذلك، قم بإنشاء ملف صغير يسمى res/values-en-rGB/strings.xml التي تتضمن فقط السلاسل التي تختلف عند تشغيل التطبيق في المملكة المتحدة. وبالنسبة إلى بقية السلاسل، يعود التطبيق إلى القيم الافتراضية ويستخدم محددة في res/values/strings.xml.

استخدام كائن سياق Android للبحث عن اللغة اليدوية

يمكنك البحث عن اللغة باستخدام الكائن Context. يوفّره Android، كما هو موضّح في المثال التالي:

Kotlin

val primaryLocale: Locale = context.resources.configuration.locales[0]
val locale: String = primaryLocale.displayName

Java

Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0);
String locale = primaryLocale.getDisplayName();

استخدم خدمة ترجمة التطبيقات

ترجمة التطبيق الخدمة مدمجة في Play Console: إنه يتيح لك الحصول على عرض أسعار فوري وتقديم طلب باستخدام شركة الترجمة. يمكنك ترتيب الترجمات إلى لغة واحدة أو أكثر. لسلاسل واجهة مستخدم التطبيق، ونص بطاقة بيانات متجر Play، وأسماء عمليات الشراء داخل التطبيق، ونص الحملة الإعلانية.

اختبار التطبيقات المترجَمة

اختبِر تطبيقك المترجَم على أحد الأجهزة أو باستخدام محاكي Android. وعلى وجه الخصوص، اختبار تطبيقك للتأكّد من تضمين جميع الموارد التلقائية اللازمة.

الاختبار على جهاز

يُرجى الأخذ في الاعتبار أنّ الجهاز الذي تختبره قد يكون مختلفًا بشكل كبير عن الأجهزة المتاحة للمستهلكين في أماكن أخرى. اللغات المتاحة على جهازك عن تلك المتوفرة على الأجهزة الأخرى. كما أن ورقة العمل قد تختلف درجة الدقة وكثافة شاشة الجهاز، مما قد يؤثر على عرض السلاسل والعناصر القابلة للرسم في واجهة المستخدم.

لتغيير اللغة أو اللغة على أحد الأجهزة، استخدم تطبيق الإعدادات.

الاختبار على محاكي

للحصول على تفاصيل عن استخدام المحاكي، يمكنك الاطّلاع على تشغيل التطبيقات على محاكي 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
    استبدال الأقسام الموضوعة بين قوسين برموز مناسبة من الخطوة 1.

    على سبيل المثال، لإجراء الاختبار باللغة الفرنسية الكندية:
    setprop persist.sys.locale fr-CA;stop;sleep 5;start

ويؤدي ذلك إلى إعادة تشغيل المحاكي. بمجرد ظهور الشاشة الرئيسية مرة أخرى، أعِد تشغيل التطبيق ويتم إطلاق التطبيق باللغة الجديدة.

اختبار الموارد التلقائية

لاختبار ما إذا كان التطبيق يتضمّن كل مورد سلسلة يحتاج إليه، اتّبِع الخطوات التالية:

  1. اضبط المحاكي أو الجهاز على لغة غير متاحة في تطبيقك. والدعم. على سبيل المثال، إذا كان التطبيق يحتوي على سلاسل فرنسية في res/values-fr/ ولكن لا يحتوي على أي سلاسل باللغة الإسبانية res/values-es/، ثم اضبط لغة المحاكي على الإسبانية. يمكنك استخدام تطبيق اللغة المخصصة لضبط المحاكي على لغة غير متاحة.
  2. شغِّل التطبيق.
  3. إذا كان التطبيق يعرض رسالة خطأ وزر فرض الإغلاق، فقد يؤدي البحث عن سلسلة غير متوفرة. تأكَّد من أنّ سمات يتضمن ملف res/values/strings.xml تعريفًا لـ كل سلسلة يستخدمها التطبيق.

وإذا كان الاختبار ناجحًا، كرِّره لأنواع أخرى من الإعدادات. بالنسبة على سبيل المثال، إذا كان التطبيق يحتوي على ملف تخطيط يسمى res/layout-land/main.xml ولكنه لا يحتوي على ملف باسم res/layout-port/main.xml، ثم ضبط المحاكي أو الجهاز على الاتجاه الرأسي ومعرفة ما إذا كان التطبيق يعمل أم لا.