يستفيد نظام التشغيل Android من مكتبة ICU و مشروع CLDR لتوفير دعم ملف Unicode وغيرها من ملفّات الترجمة والنشر. تنقسم مناقشة هذه الصفحة حول دعم Unicode والتعرّف على اللغات إلى بدورين: Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأقدم، وAndroid 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث.
إتاحة ترميز Unicode والنشر على مستوى العالم حتى الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات)
يستخدم نظام Android الأساسي ICU وCLDR لتنفيذ klassen مختلفة لمعالجة كل من القواعد الإملائية اللاتينية وغير اللاتينية، وعرض klassen مثل Locale
وCharacter
والعديد من الفئات الفرعية لjava.text
. يجب أن يتضمّن التطبيق مكتبة ICU إذا كان يتطلّب وظائف تدويل تتجاوز
الفئات المكشوفة ويستهدف إصدارات من النظام الأساسي حتى الإصدار 6.0 من Android
(المستوى 23 من واجهة برمجة التطبيقات).
تحديد الإصدارات
تتوافق الإصدارات المتتالية من نظام Android الأساسي مع الإصدارات الأحدث من ICU وإصدارات CLDR وUnicode المقابلة. يعرض الجدول 1 هذه المراسلات حتى Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات).
النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (ICU) | CLDR | يونيكود |
---|---|---|---|
الإصدار 1.5 إلى 2.0 من نظام التشغيل Android (المستويات 3 إلى 7 من واجهة برمجة التطبيقات) | 3.8 | 1.5 | 5.0 |
الإصدار 2.2 من نظام التشغيل Android (المستوى 8 لواجهة برمجة التطبيقات) | 4.2 | 1.7 | 5.1 |
الإصدار 2.3 إلى 3.0 من نظام التشغيل Android (المستويات 9 إلى 13 من واجهة برمجة التطبيقات) | 4.4 | 1.8 | 5.2 |
الإصدار 4.0 من نظام التشغيل Android (المستويات 14 و15 لواجهة برمجة التطبيقات) | 4.6 | 1.9 | 6.0 |
الإصدار 4.1 من نظام التشغيل Android (المستويات 16 و17 لواجهة برمجة التطبيقات) | 4.8 | 2.0 | 6.0 |
Android 4.3 (المستوى 18 لواجهة برمجة التطبيقات) | 50 | 22.1 | 6.2 |
الإصدار 4.4 من نظام التشغيل Android (المستويات 19 و20 لواجهة برمجة التطبيقات) | 51 | 23 | 6.2 |
الإصدار 5.0 من نظام التشغيل Android (المستويات 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 Android (المستوى 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 بعض الأمثلة على هذه المعادلات لمساعدتك في البدء:
الفئة | الحلول البديلة |
---|---|
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 اعتبارًا من
إصدار NDK r22b.
لا يتم عرض أي واجهة برمجة تطبيقات C++ من خلال حزمة تطوير البرامج (NDK) لنظام التشغيل Android. بعض واجهات برمجة تطبيقات C غير متوفرة.
تحديد الإصدار
تتوافق الإصدارات المتتالية من نظام Android الأساسي مع الإصدارات الأحدث من ICU وإصدارات CLDR وUnicode المقابلة. يوضح الجدول 3 هذه المراسلات بدءًا من Android 7.0 (مستوى واجهة برمجة التطبيقات 24). استخدِم واجهة برمجة التطبيقات
VersionInfo.ICU_VERSION
(متوفّرة منذ Android 7.0) للحصول على معلومات إصدار ICU
أثناء التشغيل.
النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (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" للإشارة إلى 12h، و"H" لمدة 24 ساعة) لقيم عرض مختلفة للسمة is24HourFormat()
.
على سبيل المثال، تُنشئ هذه التعليمة البرمجية سلسلة بالوقت الحالي وفقًا لإعدادات المستخدم وهي 12h/24h:
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.