يستفيد نظام التشغيل 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 إذا كان يتطلّب وظائف تدويل تتجاوز
الفئات المكشوفة ويستهدف إصدارات من النظام الأساسي حتى الإصدار 6.0 من Android
(المستوى 23 من واجهة برمجة التطبيقات).
تحديد الإصدارات
تتوافق الإصدارات المتتالية من نظام Android الأساسي مع الإصدارات الأحدث من ICU وإصدارات CLDR وUnicode المقابلة. يعرض الجدول 1 هذه المراسلات حتى Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات).
الجدول 1. إصدارات ICU وCLDR المستخدَمة حتى Android 6.0 (المستوى 23 لواجهة برمجة التطبيقات)
النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (ICU) | CLDR | يونيكود |
---|---|---|---|
الإصدار 1.5 إلى 2.0 من نظام التشغيل Android (المستويات 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 |
الإصدار 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 دعمًا أكثر شمولاً لترميز يونيكود وإضفاء الطابع الدولي. للتطبيقات التي تستهدف الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث. يقدّم القسم التالي من هذه الصفحة تفاصيل حول هذا الدعم.
إتاحة استخدام يونيكود وإضفاء الطابع الدولي على الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث
بالنسبة إلى Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يجب استخدام نظام Android الأساسي
مجموعة فرعية من واجهات برمجة تطبيقات ICU4J لمطوّري التطبيقات
للاستخدام ضمن حزمة android.icu
.
ICU4J هي مجموعة مفتوحة المصدر من مكتبات Java تُستخدم على نطاق واسع وتوفّر دعمًا لـ Unicode
والتعرّف على اللغات المختلفة لتطبيقات البرامج.
تستخدِم واجهات برمجة تطبيقات ICU4J بيانات الترجمة والشرح المتوفّرة على الجهاز. ونتيجةً لذلك، يمكنك تقليل أثر تطبيقك من خلال عدم تجميع مكتبات ICU4J في تطبيقك. بدلاً من ذلك، يمكنك استدعاؤها في إطار العمل. في حال اتّباع هذه الطريقة، ننصحك بتوفير إصدارات متعددة من حزمة APK، حتى يتمكّن المستخدمون الذين يستخدمون إصدارات Android أقل من 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
واجهات برمجة التطبيقات لمتطلباتك، ثم يتم نقلها إلى
فإن إطار عمل واجهات برمجة التطبيقات (APIs) يتطلب منك تغيير عمليات استيراد 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 بدءًا من
إصدار NDK r22b.
لا يتم عرض أي واجهة برمجة تطبيقات C++ من خلال حزمة تطوير البرامج (NDK) لنظام التشغيل Android. بعض واجهات برمجة تطبيقات C غير متوفرة.
تحديد الإصدار
تتوافق الإصدارات المتتالية من نظام Android الأساسي مع الإصدارات الأحدث من ICU
وإصدارات CLDR وUnicode المقابلة. يوضح الجدول 3 هذه المراسلة
بدءًا من الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات). يمكنك استخدام
VersionInfo.ICU_VERSION
API (المتوفّرة في الإصدار 7.0 من نظام التشغيل Android) للحصول على وحدة العناية المركّزة (ICU)
معلومات الإصدار في وقت التشغيل.
الجدول 3. إصدارات ICU وCLDR المستخدَمة في إصدارات Android بدءًا من Android 7.0 (المستوى 24 لواجهة برمجة التطبيقات) وحتى Android 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 |
الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) | 72.1 | 42 | 15 |
Android 15 (المستوى 35) | 75.1 | 45 | 15.1 |
إعدادات تنسيق الوقت على مدار 24 ساعة/12 ساعة
لا تتّبِع وحدة العناية المركّزة (ICU) على نظام التشغيل Android إعدادات المستخدم الخاصة بتنسيق الوقت على مدار 24 ساعة و12 ساعة، والتي تم الحصول عليها منDateFormat.is24HourFormat()
ولتفعيل هذا الإعداد، استخدِم إما methods methods
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 .