المكونات الدولية لليونيكود
المكونات الدولية لليونيكود ( ICU ) مشروع مفتوح المصدر يضم مكتبات C / C++ وجافا متطورة لدعم اليونيكود ، وتدويل البرمجيات ، وعولمتها. يتميز ICU بسهولة نقله إلى العديد من أنظمة التشغيل والبيئات، حيث يوفر للتطبيقات نتائج متطابقة على جميع المنصات وبين برامج C وC++ وجافا. مشروع ICU هو لجنة فنية تابعة لاتحاد اليونيكود ، وترعاه وتدعمه وتستخدمه شركة IBM والعديد من الشركات الأخرى. [ 2 ] تم تضمين ICU كمكون قياسي في نظام التشغيل مايكروسوفت ويندوز منذ إصدار ويندوز 10 رقم 1703. [ 3 ]
يُقدّم برنامج ICU الخدمات التالية: معالجة نصوص يونيكود ، وخصائص الأحرف الكاملة، وتحويلات مجموعات الأحرف ؛ والتعبيرات النمطية ليونيكود ؛ ومجموعات يونيكود الكاملة؛ وحدود الأحرف والكلمات والأسطر؛ والترتيب والبحث المُراعي للغة؛ والتطبيع ، وتحويل الأحرف الكبيرة والصغيرة، وترجمة النصوص ؛ وبنية شاملة لبيانات اللغة وحزم الموارد عبر مستودع بيانات اللغة المشتركة (CLDR)؛ وتقاويم ومناطق زمنية متعددة ؛ وتنسيق وتحليل التواريخ والأوقات والأرقام والعملات والرسائل وفقًا للقواعد. وقد وفّر برنامج ICU في السابق خدمة تخطيط نصوص معقدة للغات العربية والعبرية والهندية والتايلاندية، ولكن تم إيقاف هذه الخدمة في الإصدار 54، وأُزيلت تمامًا في الإصدار 58 لصالح برنامج HarfBuzz . [ 4 ]
توفر مكتبة ICU إمكانيات تدويل أكثر شمولاً من المكتبات القياسية للغتين C وC++. سيتطلب الإصدار المستقبلي ICU 75، المقرر إصداره في أبريل 2024، استخدام C++17 (بدلاً من C++11 ) أو C11 (بدلاً من C99)، وذلك حسب اللغة المستخدمة. تاريخيًا، استخدمت ICU ترميز UTF-16 ، ولا تزال تستخدمه فقط مع Java؛ بينما تدعم C/C++ ترميز UTF-8 ، [ 5 ] [ 6 ] بما في ذلك المعالجة الصحيحة لترميز UTF-8 غير المسموح به. [ 7 ]
أدخلت النسخة 73.2 من برنامج ICU تحسينات كبيرة لدعم التوافق مع معيار GB18030-2022 ، أي للغة الصينية (حيث أن معيار GB18030 Unicode Transformation Format الصيني المحدث غير متوافق بشكل طفيف)؛ وتحتوي على "جدول تحويل أحرف مُعدّل، يربط بعض أحرف GB18030 بأحرف Unicode التي تم ترميزها بعد GB18030-2005" بالإضافة إلى عدد من التغييرات الأخرى مثل تحسين تقسيم الأسطر في النصوص القصيرة باللغتين اليابانية والكورية، وفي اللغة الإنجليزية، يُستخدم الآن اسم "Türkiye" للدلالة على الدولة بدلاً من "Turkey" (التهجئة البديلة متوفرة أيضًا في البيانات)." [ 8 ]
يتضمن التحديث ICU 74 تحديثات إلى Unicode 15.1، بما في ذلك أحرف جديدة، ورموز تعبيرية، وآليات أمان، وواجهات برمجة تطبيقات وتطبيقات ذات صلة. [...] يُعدّ كل من ICU 74 وCLDR 44 إصدارين رئيسيين، يتضمنان نسخة جديدة من Unicode وتحسينات كبيرة على بيانات اللغات. [ 9 ] من بين التغييرات العديدة، بعضها يتعلق بتنسيق أسماء الأشخاص، أو بتحسين دعم اللغات، مثل اللغة الألمانية الدنيا ، وهناك أيضًا واجهة برمجة تطبيقات جديدة للتحقق من انتحال الهوية، وفقًا لأحدث إصدار من Unicode 15.1.0 UTS #39: آلية أمان Unicode.
تفاصيل الإصدار الأقدم
تم تحديث ICU 72 إلى Unicode 15 (و73.2 إلى أحدث إصدار 15.1). "في العديد من أنماط التنسيق، يتم استبدال مسافات ASCII بمسافات Unicode (مثل " مسافة رفيعة ")." يتطلب ICU (ICU4J) الآن Java 8، ولكن "يجب أن يعمل معظم كود مكتبة ICU 72 مع Java 7 / Android API المستوى 21، لكننا لم نعد نختبره مع Java 7." [ 10 ] أضاف ICU 71، على سبيل المثال، تقسيم الأسطر بناءً على العبارات للغة اليابانية (لم تكن الطرق السابقة تعمل بشكل جيد مع النصوص اليابانية القصيرة، مثل العناوين الرئيسية والفرعية) ودعمًا للغة الهندية المكتوبة بأحرف لاتينية (hi_Latn)، والتي يشار إليها أيضًا باسم " Hinglish ". أضافت ICU 70 دعمًا لخصائص الرموز التعبيرية في السلاسل النصية، ويمكن الآن بناؤها واستخدامها مع مُجمِّعات C++20 (وتُعيد دالتا ICU operator==() و operator!=() الآن قيمة منطقية بدلاً من UBool، كتعديل للتغييرات غير المتوافقة في C++20)، [ 11 ] ، واعتبارًا من هذا الإصدار، فإن الحد الأدنى لإصدار Windows المطلوب هو Windows 7. وتتناول ICU 67 إزالة بريطانيا العظمى من الاتحاد الأوروبي . وأضافت ICU 64.2 دعمًا لـ Unicode 12.1، أي الرمز الجديد الوحيد لعصر ريوا الياباني الحالي (ولكن تم أيضًا نقل الدعم له إلى إصدارات ICU الأقدم وصولاً إلى ICU 4.8.2). وتُعد ICU 58 (مع دعم Unicode 9.0) آخر إصدار يدعم المنصات القديمة مثل Windows XP و Windows Vista . وقد يكون دعم AIX و Solaris و z/OS محدودًا في الإصدارات اللاحقة (أي أن البناء يعتمد على دعم المُجمِّع). [ 12 ]
الأصل والتطور
بعد انضمام شركة تاليجنت إلى شركة آي بي إم في أوائل عام ١٩٩٦، قررت شركة صن مايكروسيستمز تحسين دعم التدويل في لغة جافا الجديدة. ونظرًا لخبرة تاليجنت في هذه التقنيات وقربها الجغرافي، طُلب من فريقها المختص بالنصوص والتدويل المساهمة في إضافة فئات التدويل إلى حزمة تطوير جافا (JDK ) كجزء من واجهات برمجة تطبيقات التدويل في JDK 1.1 . [ ١٣ ] ولا يزال جزء كبير من هذا الكود موجودًا في الحزم . وقد أُضيفت المزيد من ميزات التدويل مع كل إصدار لاحق من جافا.java.textjava.util
ثم نُقلت فئات التدويل في جافا إلى لغتي C++ وC [ 14 ] كجزء من مكتبة تُعرف باسم ICU4C ("ICU للغة C"). كما يوفر مشروع ICU مكتبة ICU4J ("ICU لجافا")، التي تُضيف ميزات غير موجودة في مكتبات جافا القياسية. تتشابه ICU4C وICU4J إلى حد كبير، وإن لم تكونا متطابقتين تمامًا؛ فعلى سبيل المثال، تتضمن ICU4C واجهة برمجة تطبيقات للتعبيرات النمطية، بينما لا تتضمنها ICU4J. وقد جرى تحسين كلا الإطارين بمرور الوقت لدعم إمكانيات وميزات جديدة في Unicode ومستودع بيانات اللغة المشتركة (CLDR).
أُصدر مشروع ICU كمصدر مفتوح عام 1999 تحت اسم IBM Classes for Unicode، ثم أُعيدت تسميته لاحقًا إلى International Components For Unicode. [ 15 ] في مايو 2016، انضم مشروع ICU إلى اتحاد Unicode كلجنة فنية ICU-TC ، وتُوزّع مصادر المكتبة الآن بموجب ترخيص Unicode. [ 16 ]
تنسيق الرسالة
يُعدّ صنف MessageFormat جزءًا من مكتبة ICU ، وهو نظام تنسيق يسمح باستخدام أي عدد من الوسائط للتحكم في صيغة الجمع ( plural، selectordinal) أو اختيار صيغة أكثر عمومية على غرار switch-caseselect ( ) لأمور مثل الجنس النحوي . يمكن تداخل هذه العبارات. [ 17 ] تم إنشاء ICU MessageFormat بإضافة نظام الجمع والاختيار إلى نظام يحمل الاسم نفسه في Java SE .
البدائل
يُعدّ استخدام Boost.Locale بديلاً لاستخدام ICU مع لغة C++ ، أو لاستخدامه مباشرةً، فهو عبارة عن غلاف C++ لـ ICU (مع إمكانية استخدام واجهات خلفية أخرى [ 18 ] ). ويُزعم أن استخدام ICU بدلاً من ICU مباشرةً "غير مناسب لمطوري C++، إذ يتجاهل أساليب C++ الشائعة (مثل STL وRTTI والاستثناءات، إلخ)، ويُحاكي في الغالب واجهة برمجة تطبيقات Java." [ 19 ] [ 20 ] كما أن الادعاء بأن ICU يدعم UTF-16 فقط (وبالتالي سبب لتجنب استخدامه) لم يعد صحيحًا، حيث يدعم ICU الآن UTF-8 للغتين C وC++. [ 5 ]
انظر أيضاً
مراجع
- ↑ unicode-org. "إصدار ICU 78.3 · unicode-org/icu" . تم الاطلاع عليه بتاريخ 18 مارس 2026 .
- ↑ "ICU - المكونات الدولية لليونيكود" . site.icu-project.org . مؤرشف من الأصل بتاريخ 27-08-2021 . تم الاطلاع عليه بتاريخ 14-11-2011 .
- ↑ تشين، ريموند (27 مايو 2021). "كيف يمكنني التحويل بين المناطق الزمنية لهيئة IANA والمناطق الزمنية المستندة إلى سجل نظام ويندوز؟" . الشيء القديم الجديد . مايكروسوفت .
- ↑ "دليل مستخدم محرك التخطيط - وحدة العناية المركزة" . userguide.icu-project.org .
- 1 2 "UTF-8" . وثائق وحدة العناية المركزة . تم الاسترجاع بتاريخ 24-05-2022 .
- ↑ "دليل مستخدم UTF-8 - ICU" . userguide.icu-project.org . تم الاطلاع عليه بتاريخ 3 أبريل 2018 .
- ↑ "#13311 (تغيير معالجة UTF-8 غير القانونية إلى "أفضل الممارسات" في Unicode")" . bugs.icu-project.org . تم الاطلاع عليه بتاريخ 2018-04-03 .
- ↑ "ICU - المكونات الدولية لليونيكود - ICU 73" . icu.unicode.org . تم الاطلاع عليه بتاريخ 24-09-2023 .
- ↑ "ICU - المكونات الدولية لليونيكود - ICU 74" . icu.unicode.org . تم الاطلاع عليه بتاريخ 29-11-2023 .
- ↑ "ICU - المكونات الدولية لليونيكود - ICU 72" . icu.unicode.org . تم الاطلاع عليه بتاريخ 24 يناير 2023 .
- ↑ "ICU - المكونات الدولية لليونيكود - ICU 70" . icu.unicode.org . تم الاطلاع عليه بتاريخ 24 يناير 2023 .
- ↑ "تنزيل ICU 64 - ICU - المكونات الدولية لليونيكود" . site.icu-project.org . تم الاطلاع عليه بتاريخ 20 أكتوبر 2019 .
- ↑ لورا ويرنر (1999). "تجهيز جافا للعالم: تاريخ موجز لجهود شركتي آي بي إم وسن في مجال التدويل" . مؤرشف من الأصل بتاريخ 17 نوفمبر 2021. تم الاطلاع عليه بتاريخ 23 مايو 2007 .
- ↑ "دليل مستخدم وحدة العناية المركزة" . userguide.icu-project.org .
- ↑ "لجنة إدارة مشروع وحدة العناية المركزة" . مؤرشف من الأصل بتاريخ 28-08-2021 . تم الاطلاع عليه بتاريخ 17-08-2012 .
- ↑ "انضمام وحدة العناية المركزة إلى اتحاد يونيكود" . يونيكود، المحدودة . 16 مايو 2016. تم الاطلاع عليه بتاريخ 1 أغسطس 2016 .
- ↑ "تنسيق الرسائل" . دليل مستخدم وحدة العناية المركزة .
- ↑ "Boost.Locale: استخدام واجهات برمجة تطبيقات الترجمة" . www.boost.org . تم الاطلاع عليه بتاريخ 24-05-2022 .
- ↑ "Boost.Locale: Design Rationale" . www.boost.org . تم الاطلاع عليه بتاريخ 24-05-2022 .
- ↑ "مقارنة بين ICU و Boost Locale في لغة C++" . موقع Stack Overflow . تم الاطلاع عليه بتاريخ 24-05-2022 .
روابط خارجية
- يونيكود
- هندسة البرمجيات القائمة على المكونات
- الطباعة الرقمية
- مطابقة الأنماط
- التدويل والتوطين
- مكتبات حاسوب مجانية
