يستفيد 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 من واجهة برمجة التطبيقات).
النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (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 بعض الأمثلة على هذه المعادلات لمساعدتك على البدء:
الفئة | الحلول البديلة |
---|---|
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)
معلومات الإصدار في وقت التشغيل.
النظام الأساسي (مستوى واجهة برمجة التطبيقات) | وحدة عناية مركزة (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 دليل المستخدم.