دعم يونيكود ونشر المحتوى على نطاق عالمي

يستفيد Android من وحدة المعالجة المركزية (ICU) المكتبة و مشروع CLDR لتوفير يونيكود وغيره من التنسيقات العالمية والدعم. يتم تقسيم مناقشة هذه الصفحة حول دعم يونيكود وإضفاء الطابع الدولي إلى قسمين الأقسام: الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأقدم، والإصدار 7.0 من Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث.

إتاحة استخدام يونيكود وإضفاء الطابع الدولي على واجهة برمجة التطبيقات من خلال الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات)

يستخدم نظام Android الأساسي وحدة ICU وCLDR لتنفيذ العديد من للتعامل مع منهجيات الهجاء اللاتيني وغير اللاتيني، والكشف عن فئات مثل Locale وCharacter والعديد من الفئات الفرعية java.text تطبيق يتطلب وظائف للتدويل يتجاوز والفئات التي تمت إتاحتها، واستهداف إصدارات النظام الأساسي من خلال Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات)، يجب أن يتضمن مكتبة ICU.

تحديد الإصدارات

تتوافق الإصدارات المتتالية من نظام Android الأساسي مع الإصدارات الأحدث من ICU وإصدارات CLDR وUnicode المقابلة. يوضح الجدول 1 هذه المراسلة حتى الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات).

الجدول 1. نُسخا ICU وCLDR المستخدمة حتى الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات).

النظام الأساسي (مستوى واجهة برمجة التطبيقات) وحدة عناية مركزة (ICU) CLDR يونيكود
Android 1.5–2.0 (مستويات واجهة برمجة التطبيقات من 3 إلى 7) 3.8 1.5 5
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 دعمًا أكثر شمولاً لترميز يونيكود ونطاق عالمي. للتطبيقات التي تستهدف الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث. القسم التالي من هذه الصفحة تفاصيل حول هذا الدعم

إتاحة استخدام يونيكود وإضفاء الطابع الدولي على الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث

بالنسبة إلى Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يجب استخدام نظام Android الأساسي مجموعة فرعية من واجهات برمجة تطبيقات ICU4J لمطوّري التطبيقات للاستخدام ضمن حزمة android.icu. ICU4J هي مجموعة مفتوحة المصدر ومستخدمة على نطاق واسع من مكتبات Java توفر يونيكود ودعم التدويل للتطبيقات البرمجية.

تستخدم واجهات برمجة التطبيقات 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 عددًا أكبر من الأحرف ما تفعله مكتبات وحدة العناية المركّزة. وهذا صحيح، على سبيل المثال، للفئة 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++ من خلال Android NDK. بعض واجهات برمجة تطبيقات 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
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" للإشارة إلى 24h) لقيم إرجاع مختلفة للسمة 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 دليل المستخدم.