يستفيد نظام التشغيل Android من مكتبة ICU و مشروع CLDR لتوفير دعم Unicode وغيره من ميزات التوافق مع اللغات المختلفة. تم تقسيم مناقشة هذه الصفحة حول إتاحة Unicode والتوافق مع اللغات المختلفة إلى قسمَين: Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأقدم، وAndroid 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث.
إتاحة استخدام Unicode والتدويل من خلال الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات)
يستخدم نظام Android الأساسي كلاً من ICU وCLDR لتنفيذ فئات مختلفة للتعامل مع الكتابة اللاتينية وغير اللاتينية، مع عرض فئات مثل Locale وCharacter والعديد من الفئات الفرعية من java.text. يجب أن يتضمّن التطبيق مكتبة ICU إذا كان يتطلّب وظائف تدويل تتجاوز الفئات المعروضة، ويستهدف إصدارات النظام الأساسي من خلال Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات).
تحديد الإصدار
تتضمّن الإصدارات المتتالية من نظام Android الأساسي إصدارات أحدث من ICU وإصدارات CLDR وUnicode المتوافقة. يوضِّح الجدول 1 هذا التطابق من خلال الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات).
الجدول 1. إصدارات ICU وCLDR المستخدَمة حتى الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات).
| النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (ICU) | CLDR | يونيكود |
|---|---|---|---|
| Android 1.5–2.0 (المستويات 3–7 من واجهة برمجة التطبيقات) | 3.8 | 1.5 | 5.0 |
| Android 2.2 (مستوى واجهة برمجة التطبيقات 8) | 4.2 | 1.7 | 5.1 |
| Android 2.3–3.0 (المستويات 9–13 من واجهة برمجة التطبيقات) | 4.4 | 1.8 | 5.2 |
| Android 4.0 (المستويان 14 و15 لواجهة برمجة التطبيقات) | 4.6 | 1.9 | 6.0 |
| Android 4.1 (المستويان 16 و17 لواجهة برمجة التطبيقات) | 4.8 | 2.0 | 6.0 |
| Android 4.3 (مستوى واجهة برمجة التطبيقات 18) | 50 | 22.1 | 6.2 |
| Android 4.4 (المستويان 19 و20 لواجهة برمجة التطبيقات) | 51 | 23 | 6.2 |
| Android 5.0 (المستويان 21 و22 لواجهة برمجة التطبيقات) | 53 | 25 | 6.3 |
| Android 6.0 (مستوى واجهة برمجة التطبيقات 23) | 55.1 | 27.0.1 | 7 |
يوفّر إطار عمل Android دعمًا أكثر شمولاً للترميز الموحّد (Unicode) والتوافق مع اللغات المختلفة للتطبيقات التي تستهدف الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث. يقدّم القسم التالي من هذه الصفحة تفاصيل حول هذا الدعم.
إتاحة Unicode والتوافق مع اللغات المختلفة في الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث
في نظام التشغيل Android 7.0 (مستوى واجهة برمجة التطبيقات 24) والإصدارات الأحدث، يتيح نظام Android الأساسي مجموعة فرعية من واجهات برمجة التطبيقات ICU4J ليستخدمها مطوّرو التطبيقات ضمن الحزمة android.icu.
ICU4J هي مجموعة مفتوحة المصدر ومستخدَمة على نطاق واسع من مكتبات Java التي توفّر دعمًا لترميز Unicode والتوافق مع اللغات المختلفة في تطبيقات البرامج.
تستخدِم واجهات برمجة التطبيقات ICU4J بيانات تحديد الموقع الجغرافي المتوفّرة على الجهاز. نتيجةً لذلك، يمكنك تقليل حجم تطبيقك من خلال عدم تجميع مكتبات ICU4J في تطبيقك، بل يمكنك بدلاً من ذلك استدعاؤها في إطار العمل. وفي حال إجراء ذلك، ننصحك بتوفير إصدارات متعددة من حزمة APK، حتى يتمكّن المستخدمون الذين يعملون بإصدارات Android أقدم من الإصدار 7.0 (مستوى واجهة برمجة التطبيقات 24) من تنزيل إصدار من التطبيق يتضمّن مكتبات ICU4J.
يبدأ هذا القسم بتقديم بعض المعلومات الأساسية حول الحد الأدنى لمستويات واجهة برمجة تطبيقات Android المطلوبة لتوفير الدعم لهذه المكتبات. ويشرح بعد ذلك المعلومات التي يجب معرفتها حول تنفيذ ICU4J على Android. أخيرًا، توضّح لك هذه الصفحة كيفية استخدام واجهات برمجة التطبيقات ICU4J في إطار عمل Android.
ICU4J على Android
يعرض Android مجموعة فرعية من واجهات برمجة التطبيقات ICU4J من خلال حزمة
android.icu بدلاً من com.ibm.icu. لا يعرض إطار عمل Android بعض واجهات برمجة التطبيقات ICU4J، وذلك لأسباب مثل إيقاف هذه الواجهات نهائيًا أو عدم تعريفها على أنّها مستقرة. عندما يوقف فريق ICU واجهات برمجة التطبيقات نهائيًا في المستقبل، سيضع Android أيضًا علامة على أنّها متوقّفة نهائيًا، ولكن سيواصل تضمينها.
إليك بعض التذكيرات:
- لا تتضمّن واجهات برمجة التطبيقات لإطار عمل ICU4J Android جميع واجهات برمجة تطبيقات ICU4J.
- لا تحلّ واجهات برمجة التطبيقات في إطار عمل Android محل ميزة Android التي تتيح توفير محتوى مترجَم باستخدام الموارد.
- في بعض الحالات، يتيح إطار عمل Android استخدام عدد أكبر من الرموز مقارنةً بمكتبات ICU، وينطبق ذلك مثلاً على إتاحة الفئة
android.textللرموز التعبيرية.
نقل البيانات إلى حزمة android.icu من com.ibm.icu
إذا كنت تستخدم حاليًا واجهات برمجة التطبيقات ICU4J في تطبيقك، وكانت واجهات برمجة التطبيقات android.icu تستوفي متطلباتك، فإنّ نقل البيانات إلى واجهات برمجة التطبيقات الخاصة بإطار العمل يتطلّب منك تغيير عمليات استيراد Java من com.ibm.icu إلى android.icu. يمكنك بعد ذلك إزالة نسختك من ملفات ICU4J من التطبيق.
ملاحظة: تستخدم واجهات برمجة التطبيقات لإطار عمل ICU4J مساحة الاسم android.icu
بدلاً من com.ibm.icu. ويتم ذلك لتجنُّب تعارضات مساحة الاسم في التطبيقات التي تحتوي على مكتبات com.ibm.icu خاصة بها.
نقل البيانات إلى واجهات برمجة تطبيقات android.icu من واجهات برمجة تطبيقات أخرى في حزمة تطوير البرامج (SDK) لنظام التشغيل Android
تحتوي بعض الفئات في حزمتَي java وandroid على فئات مكافئة لتلك المتوفّرة في ICU4J. ومع ذلك، غالبًا ما توفّر ICU4J دعمًا أوسع للمعايير واللغات.
يعرض الجدول 2 بعض الأمثلة على هذه المعادلات لمساعدتك على البدء:
الجدول 2.فئات Android وJava ICU4J
| الفئة | الحلول البديلة |
|---|---|
java.lang.Character |
android.icu.lang.UCharacter |
java.text.BreakIterator |
android.icu.text.BreakIterator |
java.text.DecimalFormat |
android.icu.text.DecimalFormat |
java.util.Calendar |
android.icu.util.Calendar |
android.text.BidiFormatter
|
android.icu.text.Bidi
|
android.text.format.DateFormat
|
android.icu.text.DateFormat
|
android.text.format.DateUtils |
android.icu.text.DateFormat
android.icu.text.RelativeDateTimeFormatter
|
ICU4C على Android
يعرض نظام التشغيل Android مجموعة فرعية من واجهات برمجة التطبيقات ICU4C من خلال مكتبة libicu.so، وليس من خلال libicuuc.so أو libicui18n.so. تتوفّر واجهات برمجة التطبيقات هذه بدءًا من الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات). تتوفّر عناوين NDK بدءًا من الإصدار r22b من NDK.
لا يتم عرض أي واجهة برمجة تطبيقات C++ من خلال Android NDK. بعض واجهات برمجة التطبيقات C غير متاحة.
تحديد الإصدار
تتضمّن الإصدارات المتتالية من نظام Android الأساسي إصدارات أحدث من ICU وإصدارات CLDR وUnicode المتوافقة. يعرض الجدول 3 هذا التطابق بدءًا من الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات). استخدِم واجهة برمجة التطبيقات
VersionInfo.ICU_VERSION (المتاحة منذ الإصدار 7.0 من نظام التشغيل Android) للحصول على معلومات إصدار ICU في وقت التشغيل.
الجدول 3. إصدارات ICU وCLDR المستخدَمة في إصدارات Android من الإصدار 7.0 (المستوى 24 لواجهة برمجة التطبيقات) إلى الإصدار 15 (المستوى 35 لواجهة برمجة التطبيقات)
| النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (ICU) | CLDR | يونيكود |
|---|---|---|---|
| Android 7.0 - 7.1 (المستويان 24 و25 لواجهة برمجة التطبيقات) | 56 | 28 | من نظام التشغيل Android |
| Android 8.0 - 8.1 (المستويان 26 و27 لواجهة برمجة التطبيقات) | 58.2 | 30.0.3 | 9.0 |
| Android 9 (مستوى واجهة برمجة التطبيقات 28) | 60.2 | 32.0.1 | 10.0 |
| Android 10 (المستوى 29 لواجهة برمجة التطبيقات) | 63.2 | 34 | 11.0 |
| Android 11 (المستوى 30 لواجهة برمجة التطبيقات) | 66.1 | 36 | 13.0 |
| Android 12 (مستوى واجهة برمجة التطبيقات 31 - 32) | 68.2 | 38.1 | 13.0 |
| الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) | 70.1 | 40 | 14 |
| Android 14 (المستوى 34 لواجهة برمجة التطبيقات) | 72.1 | 42 | 15 |
| Android 15 (المستوى 35 لواجهة برمجة التطبيقات) | 75.1 | 45 | 15.1 |
إعداد تنسيق الوقت 24 ساعة/12 ساعة
لا يلتزم ICU على Android بإعداد تنسيق الوقت 24 ساعة/12 ساعة الذي يتم الحصول عليه منDateFormat.is24HourFormat().
لمراقبة هذا الإعداد، استخدِم إما
DateFormat أو
DateUtils
لطرق تنسيق الوقت أو استخدِم أنماط تنسيق الوقت في ICU مع رموز نمط الساعات المناسبة ('h' لـ 12 ساعة، و'H' لـ 24 ساعة) لقيم الإرجاع المختلفة is24HourFormat().
على سبيل المثال، ينشئ هذا الرمز سلسلة تتضمّن الوقت الحالي الذي يراعي إعدادات المستخدم المتعلقة بنظام 12 ساعة/24 ساعة:
Kotlin
val skeleton: String = if (DateFormat.is24HourFormat(context)) "Hm" else "hm" val formattedTime: String = android.icu.text.DateFormat.getInstanceForSkeleton( skeleton, Locale.getDefault()).format(Date() )
Java
String skeleton = DateFormat.is24HourFormat(context) ? "Hm" : "hm"; String formattedTime = android.icu.text.DateFormat.getInstanceForSkeleton(skeleton, Locale.getDefault()).format(new Date());
ثبات أداء أداة التحويل الصوتي
بدءًا من Android 10 (المستوى 29 من واجهة برمجة التطبيقات)،Transliterator
يتم توفيرها لنقل النص من تنسيق إلى آخر. تتغيّر مجموعة معرّفات الكتابة الصوتية المتاحة باختلاف إصدارات Android والأجهزة. قد يضيف مصنّعو الأجهزة معرّفات إضافية للترجمة الصوتية. على المطوّرين التحقّق من المعرّفات المتاحة التي تم الحصول عليها من
Transliterator.getAvailableIDs()،
قبل نقل النص.
الترخيص
يتم إصدار ICU4J بموجب رخصة ICU. لمزيد من التفاصيل، يُرجى الاطّلاع على دليل مستخدمي ICU.