أقلمة تطبيقك

يعمل نظام التشغيل 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 على مجموعة فرعية من السلاسل، ولكن يجب أن يحتوي ملف السلسلة التلقائي على كل هذه السلاسل.

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

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

يمكن لأي تطبيق تحديد العديد من أدلة 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 أو إلى JavaScript يشير إلى 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 مطابقة "مركز عملائي" على مطابقة اللغة.

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

الرجوع إلى الموارد في الرمز

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

إدارة السلاسل المراد ترجمتها

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

نقل جميع السلاسل إلى shortcuts.xml

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

إذا أنشأت صورًا تحتوي على نص، ضَع هذه السلاسل في 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/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/، يجب ضبط لغة المحاكي على الإسبانية. يمكنك استخدام تطبيق Custom Locale لضبط المحاكي على لغة غير متاحة.
  2. شغِّل التطبيق.
  3. إذا عرض التطبيق رسالة خطأ وزر "فرض الإغلاق"، قد يبحث التطبيق عن سلسلة غير متوفّرة. تأكَّد من أنّ ملف res/values/strings.xml يتضمّن تعريفًا لكل سلسلة يستخدمها التطبيق.

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