यूनिकोड और अंतरराष्ट्रीय स्तर पर काम करने वाली सुविधाएं

Android, लंबे समय तक चलने वाले आईसीयू लाइब्रेरी और सीएलडीआर प्रोजेक्ट, ताकि यूनिकोड और अंतरराष्ट्रीय स्तर पर अन्य सुविधाएं उपलब्ध कराई जा सकें सहायता. यूनिकोड और अंतरराष्ट्रीय स्तर पर सहायता के बारे में इस पेज पर दी गई चर्चा को दो हिस्सों में बांटा गया है सेक्शन: Android 6.0 (एपीआई लेवल 23) और उससे पहले के वर्शन, और Android 7.0 (एपीआई लेवल 24) और उसके बाद के वर्शन.

Android 6.0 (एपीआई लेवल 23) पर, यूनिकोड और अंतरराष्ट्रीय स्तर पर काम करने की सुविधा

Android प्लैटफ़ॉर्म, ICU और CLDR का इस्तेमाल कई तरह के लैटिन और गैर-लैटिन, दोनों तरह की आकृतियों को संभालने के लिए कक्षाएं जैसे, Locale, Character, और इसकी कई सब-क्लास java.text. ऐसा ऐप्लिकेशन जिसके लिए अंतरराष्ट्रीय स्तर पर काम करने के अलावा, अन्य सुविधाओं की ज़रूरत है और Android 6.0 के ज़रिए प्लैटफ़ॉर्म के वर्शन को टारगेट करता है. (एपीआई लेवल 23), इसमें आईसीयू लाइब्रेरी शामिल होनी चाहिए.

वर्शन

Android प्लैटफ़ॉर्म को लगातार रिलीज़ किए जाने की जानकारी, आईसीयू के नए वर्शन से जुड़ी है और संबंधित CLDR और यूनिकोड वर्शन. टेबल 1 में यह मैसेज दिखता है Android 6.0 (एपीआई लेवल 23) से.

टेबल 1. इस्तेमाल किए गए ICU और CLDR वर्शन Android 6.0 (एपीआई लेवल 23) से.

प्लैटफ़ॉर्म (एपीआई लेवल) आईसीयू सीएलडीआर यूनिकोड
Android 1.5–2.0 (एपीआई लेवल 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
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.0

Android फ़्रेमवर्क, यूनिकोड और अंतरराष्ट्रीय स्तर पर, बेहतर तरीके से काम करने में मदद करता है. Android 7.0 (एपीआई लेवल 24) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए. इस पेज का अगला सेक्शन उस सहायता के बारे में जानकारी देता है.

Android 7.0 (एपीआई लेवल 24) और इसके बाद के वर्शन में यूनिकोड और अंतरराष्ट्रीय स्तर पर काम करता है

Android 7.0 (एपीआई लेवल 24) और उसके बाद वाले वर्शन के लिए, Android प्लैटफ़ॉर्म ऐप्लिकेशन डेवलपर के लिए, ICU4J API का सबसेट सार्वजनिक करता है android.icu पैकेज में इस्तेमाल करने के लिए. ICU4J एक ओपन सोर्स है, जो यूनिकोड उपलब्ध कराने वाली Java लाइब्रेरी का बड़े पैमाने पर इस्तेमाल किया जाता है और अंतरराष्ट्रीय स्तर पर सॉफ़्टवेयर ऐप्लिकेशन के लिए सहायता उपलब्ध कराती है.

ICU4J एपीआई इनका इस्तेमाल करते हैं डिवाइस में मौजूद स्थानीय भाषा के मुताबिक डेटा. नतीजतन, आप अपने ऐप्लिकेशन के फ़ुटप्रिंट का इस्तेमाल किया जा सकता है. इसके बजाय, आप यह कर सकते है: उन्हें फ़्रेमवर्क में शामिल किया जा सकता है. ऐसा करने पर, कई वर्शन का डेटा है, इसलिए उपयोगकर्ता Android के वर्शन से पहले के वर्शन का इस्तेमाल कर रहे हैं Android 7.0 (एपीआई लेवल 24) ऐप्लिकेशन का वह वर्शन डाउनलोड कर सकता है जिसमें ICU4J लाइब्रेरी मौजूद हैं.

यह सेक्शन कुछ ऐसी बुनियादी जानकारी देने से शुरू होता है जो इन लाइब्रेरी के साथ काम करने के लिए, Android के एपीआई लेवल ज़रूरी हैं. इसके बाद, यह जानकारी मिलती है कि तो आपको ICU4J के Android-विशिष्ट कार्यान्वयन के बारे में जानने की ज़रूरत है. आख़िर में, यह आपको Android फ़्रेमवर्क में ICU4J API इस्तेमाल करने का तरीका बताता है.

Android पर ICU4J

Android, ICU4J एपीआई का सबसेट दिखाता है. इसके लिए, com.ibm.icu के बजाय, android.icu पैकेज. कुछ सूचनाएं मिल रही हैं Android फ़्रेमवर्क, ICU4J एपीआई के संपर्क में नहीं आते हैं. एपीआई के बंद या बंद होने जैसी वजहों से या उसे स्थिर न बताया गया हो. आने वाले समय में आईसीयू टीम, एपीआई के इस्तेमाल को बंद कर देगी. Android इन्हें 'अब काम नहीं करता' के तौर पर भी मार्क कर देता है. हालांकि, इसे लगातार शामिल कर रहा है.

यहां कुछ रिमाइंडर दिए गए हैं:

  • ICU4J Android फ़्रेमवर्क एपीआई में सभी ICU4J एपीआई शामिल नहीं हैं.
  • Android फ़्रेमवर्क के एपीआई, इनसे स्थानीय भाषा में लिखना संसाधन शामिल हैं.
  • कुछ मामलों में, Android फ़्रेमवर्क में तो ICU लाइब्रेरी ऐसा करती हैं. उदाहरण के लिए, यह android.text क्लास की इमोजी का भी इस्तेमाल किया जा सकता है.

com.ibm.icu से android.icu पैकेज पर माइग्रेट करें

अगर आपके ऐप्लिकेशन में ICU4J API पहले से इस्तेमाल किया जा रहा है और android.icu API आपकी ज़रूरी शर्तों को पूरा करता है. इसके बाद, इस पर माइग्रेट हो रहा है फ़्रेमवर्क API का इस्तेमाल करने के लिए, आपको Java इंपोर्ट बदलना होगा com.ibm.icu से android.icu तक. इसके बाद आप ऐप्लिकेशन से ICU4J फ़ाइलों की अपनी कॉपी हटानी होगी.

ध्यान दें: ICU4J फ़्रेमवर्क API, android.icu का इस्तेमाल करते हैं com.ibm.icu के बजाय नेमस्पेस का इस्तेमाल करें. ऐसा नेमस्पेस से बचने के लिए किया जाता है उन ऐप्लिकेशन में कॉन्फ़्लिक्ट खत्म होते हैं जिनकी अपनी com.ibm.icu लाइब्रेरी होती है.

अन्य Android SDK एपीआई से, android.icu एपीआई पर माइग्रेट करें

java और android पैकेज की कुछ क्लास में जो ICU4J में पाए जाते हैं. हालांकि, ICU4J अक्सर का इस्तेमाल कर सकते हैं.

शुरू करने के लिए, टेबल 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

Android पर ICU4C

Android, libicu.so लाइब्रेरी की मदद से ICU4C एपीआई का सबसेट उपलब्ध कराता है, libicuuc.so या libicui18n.so के बजाय है. एपीआई उपलब्ध हैं Android 12 (एपीआई लेवल 31) से शुरू करना होगा. एनडीके (NDK) हेडर, इसकी शुरुआत में उपलब्ध होते हैं एनडीके रिलीज़ r22b. Android एनडीके से किसी भी C++ एपीआई को सार्वजनिक नहीं किया जाता है. कुछ C API उपलब्ध नहीं हैं.

वर्शन

Android प्लैटफ़ॉर्म को लगातार रिलीज़ किए जाने की जानकारी, आईसीयू के नए वर्शन से जुड़ी है और संबंधित CLDR और यूनिकोड वर्शन. तीसरी टेबल में यह जानकारी दिखती है और Android 7.0 (एपीआई लेवल 24) से शुरू किया जा सकता है. इसका इस्तेमाल करें ICU पाने के लिए VersionInfo.ICU_VERSION API (Android 7.0 के बाद से उपलब्ध) रनटाइम के दौरान वर्शन की जानकारी देखें.

तीसरी टेबल. Android के वर्शन में इस्तेमाल किए जाने वाले ICU और CLDR वर्शन Android 7.0 (एपीआई लेवल 24) से लेकर Android 15 (एपीआई लेवल 35) तक के वर्शन के साथ काम करता है.

प्लैटफ़ॉर्म (एपीआई लेवल) आईसीयू सीएलडीआर यूनिकोड
Android 7.0 - 7.1 (एपीआई लेवल 24 - 25) 56 28 8.0
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
Android 11 (एपीआई लेवल 30) 66.1 36 13.0
Android 12 (एपीआई लेवल 31 - 32) 68.2 38.1 13.0
Android 13 (एपीआई लेवल 33) 70.1 40 14.0
Android 14 (एपीआई लेवल 34) 72.1 42 15.0
Android 15 (एपीआई लेवल 35) 75.1 45 15.1

24 घंटे/12 घंटे के फ़ॉर्मैट में टाइम फ़ॉर्मैट की सेटिंग

Android पर ICU, उपयोगकर्ता की 24 घंटे/12 घंटे के समय के फ़ॉर्मैट की सेटिंग को नहीं समझ पाता, जो यहां से ली गई है DateFormat.is24HourFormat(). इस सेटिंग की निगरानी करने के लिए, इनमें से किसी एक का इस्तेमाल करें DateFormat या DateUtils टाइम फ़ॉर्मैटिंग के तरीके या घंटे के सही पैटर्न के साथ ICU टाइम फ़ॉर्मैटिंग पैटर्न का इस्तेमाल करें अलग-अलग is24HourFormat() के लिए चिह्न (12 घंटे के लिए 'h', 24 घंटे के लिए 'H') दिखाते हैं. उदाहरण के लिए, यह कोड मौजूदा समय के साथ एक स्ट्रिंग जनरेट करता है, जो उपयोगकर्ता की 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 को आईसीयू लाइसेंस के तहत रिलीज़ किया गया है. ज़्यादा जानकारी के लिए, आईसीयू में जाएं इस्तेमाल के लिए गाइड.