أقلمة تطبيقك (طرق العرض)

المفاهيم وتنفيذ Jetpack Compose

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

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

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

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

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

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

استخدام الموارد للتوطين

يناقش هذا القسم كيفية إنشاء الموارد التلقائية والموارد البديلة. ويشرح أيضًا كيفية تحديد أولوية الموارد وكيفية الإشارة إلى مواردك في الرمز البرمجي.

إنشاء الموارد التلقائية

ضَع النص التلقائي للتطبيق في 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. تأكَّد من تحديد مورد تلقائي لكل مرجع. تأكَّد أيضًا من أنّ ملف السلسلة التلقائي كامل: يمكن أن يحتوي ملف السلسلة الموطَّن على مجموعة فرعية من السلاسل، ولكن يجب أن يحتوي ملف السلسلة التلقائي string على جميع السلاسل.

نصائح حول التوطين

اتّبِع هذه النصائح أثناء توطين تطبيقك.

تصميم مخطط مرن

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

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

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

استخدام عنصر `Context` في Android للبحث عن اللغة يدويًا

يمكنك البحث عن اللغة باستخدام عنصر Context object الذي يوفّره 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();