जावा इनराइजेशन - क्विक गाइड

internalization

आंतरिककरण या I18N एक एप्लिकेशन की क्षमता को कई और अलग-अलग भाषाओं में उपयोगकर्ताओं की सेवा करने में सक्षम होने के लिए संदर्भित करता है। जावा को इंटरनलाइजेशन के लिए इन-बिल्ट सपोर्ट है। जावा संख्या, मुद्राओं और तारीख और समय के समायोजन के अनुसार प्रारूपण भी प्रदान करता है।

जावा अंतर्राष्ट्रीयकरण एक जावा एप्लिकेशन को विभिन्न भाषाओं, संख्या स्वरूपों, मुद्राओं, क्षेत्र विशिष्ट समय स्वरूपण को संभालने में मदद करता है।

स्थानीयकरण

स्थानीयकरण या L10N एक आवेदन की अनुकूलनशीलता है कि कैसे एक आवेदन एक विशिष्ट भाषा, संख्या प्रारूप, दिनांक और समय सेटिंग्स आदि के साथ खुद को ढालता है।

स्वयं को स्थानीय बनाने में सक्षम होने के लिए एक जावा एप्लिकेशन का अंतर्राष्ट्रीयकरण किया जाना चाहिए।

सांस्कृतिक रूप से निर्भर जानकारी

निम्नलिखित सूचना आइटम अक्सर अलग-अलग समय क्षेत्रों या संस्कृतियों के साथ भिन्न होते हैं।

  • Messages

  • Date

  • Time

  • Number

  • Currency

  • Measurements

  • फोन नंबर

  • डाक पते

  • जीयूआई लेबल

अंतर्राष्ट्रीयकरण कक्षाएं

जावा में अंतर्निहित कक्षाओं का एक सेट है जो किसी एप्लिकेशन के अंतर्राष्ट्रीयकरण में मदद करता है। ये वर्ग निम्नलिखित हैं:

अनु क्रमांक। कक्षा और विवरण
1

Locale

देश / क्षेत्र के साथ एक भाषा का प्रतिनिधित्व करता है।

2

ResourceBundle

स्थानीय पाठ या ऑब्जेक्ट्स शामिल हैं।

3

NumberFormat

स्थान के अनुसार प्रारूप संख्या / मुद्राओं का उपयोग करें।

4

DecimalFormat

अनुकूलित प्रारूप के अनुसार और स्थान के अनुसार प्रारूप संख्या का उपयोग करें।

5

DateFormat

स्थान के अनुसार तिथियों को प्रारूपित करने के लिए उपयोग करें।

6

SimpleDateFormat

अनुकूलित प्रारूप के अनुसार और स्थान के अनुसार तिथियों को प्रारूपित करने के लिए उपयोग करें।

जावा इंटर्नाइजेशन - पर्यावरण सेटअप

इस अध्याय में, हम जावा के लिए जन्मजात वातावरण स्थापित करने के विभिन्न पहलुओं पर चर्चा करेंगे।

स्थानीय पर्यावरण सेटअप

यदि आप अभी भी जावा प्रोग्रामिंग भाषा के लिए अपना वातावरण सेट करने के लिए तैयार हैं, तो यह अनुभाग आपको गाइड करता है कि कैसे जावा को अपनी मशीन पर डाउनलोड और सेट किया जाए। पर्यावरण को स्थापित करने के लिए निम्नलिखित कदम हैं।

जावा एसई डाउनलोड जावा से लिंक से स्वतंत्र रूप से उपलब्ध है । आप अपने ऑपरेटिंग सिस्टम के आधार पर एक संस्करण डाउनलोड कर सकते हैं।

जावा डाउनलोड करने और चलाने के लिए निर्देशों का पालन करें .exeअपनी मशीन पर जावा स्थापित करने के लिए। एक बार जब आप अपनी मशीन पर जावा स्थापित करते हैं, तो आपको इंस्टॉलेशन निर्देशिकाओं को सही करने के लिए पर्यावरण चर सेट करना होगा -

विंडोज के लिए पथ की स्थापना

मान लें कि आपने c: \ Program Files \ java \ jdk निर्देशिका में Java स्थापित किया है -

  • 'मेरा कंप्यूटर' पर राइट-क्लिक करें और 'गुण' चुनें।

  • 'उन्नत' टैब के अंतर्गत 'पर्यावरण चर' बटन पर क्लिक करें।

  • अब, 'Path' वैरिएबल को बदल दें ताकि इसमें जावा एक्जीक्यूटेबल का भी पथ शामिल हो। उदाहरण के लिए, यदि पथ वर्तमान में 'C: \ WINDOWS \ SYSTEM32' पर सेट है, तो 'C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin' पढ़ने के लिए अपना पथ परिवर्तित करें।

लिनक्स, यूनिक्स, सोलारिस, फ्रीबीएसडी के लिए पथ की स्थापना

जावा चर को स्थापित करने के लिए पर्यावरण चर पथ को निर्धारित किया जाना चाहिए। यदि आपको ऐसा करने में परेशानी होती है, तो अपने शेल दस्तावेज़ देखें।

उदाहरण, यदि आप अपने शेल के रूप में बैश का उपयोग करते हैं, तो आप निम्नलिखित लाइन को अपने '.Bashrc: PATH = / path / to / java: $ PATH' के अंत में जोड़ देंगे।

लोकप्रिय जावा संपादक

अपने जावा प्रोग्राम लिखने के लिए, आपको एक टेक्स्ट एडिटर की आवश्यकता होगी। बाजार में और भी अधिक परिष्कृत IDE उपलब्ध हैं। लेकिन अभी के लिए, आप निम्नलिखित में से एक पर विचार कर सकते हैं -

  • Notepad - विंडोज मशीन पर, आप किसी भी साधारण पाठ संपादक जैसे नोटपैड (इस ट्यूटोरियल के लिए अनुशंसित), टेक्स्टपैड का उपयोग कर सकते हैं।

  • Netbeans - एक जावा आईडीई जो ओपन-सोर्स और फ्री है जिसे डाउनलोड किया जा सकता है https://www.netbeans.org/index.html।

  • Eclipse - ग्रहण खुले स्रोत समुदाय द्वारा विकसित एक जावा आईडीई और से डाउनलोड किया जा सकता है https://www.eclipse.org/।

आगे क्या है?

अगला अध्याय आपको सिखाएगा कि अपने पहले जावा प्रोग्राम को कैसे लिखना और चलाना है और विकासशील अनुप्रयोगों के लिए जावा में कुछ महत्वपूर्ण बुनियादी सिंटैक्स की आवश्यकता है।

जावा इंटर्नाइजेशन - लोकेल क्लास

एक लोकेल ऑब्जेक्ट एक विशिष्ट भौगोलिक / राजनीतिक / सांस्कृतिक क्षेत्र का प्रतिनिधित्व करता है। किसी भी ऑपरेशन को अपने कार्य को करने के लिए लोकेल की आवश्यकता होती है, जिसे लोकेल-सेंसिटिव ऑपरेशन कहा जाता है और उपयोगकर्ता के सापेक्ष लोकेल का उपयोग करता है। उदाहरण के लिए, एक संख्या प्रदर्शित करना एक स्थानीय-संवेदनशील ऑपरेशन है। उपयोगकर्ता के मूल देश, क्षेत्र, या संस्कृति के रीति-रिवाजों और परंपराओं के अनुसार संख्या को प्रारूपित किया जाना चाहिए।

लोकल कंटेंट

एक लोकेल ऑब्जेक्ट में निम्नलिखित शामिल हैं:

  • Language- आईएसओ 639 अल्फा -2 या अल्फा -3 भाषा कोड, या पंजीकृत भाषा 8 अल्फा अक्षरों तक उपटैब करती है। यदि अल्फा -2 और अल्फा -3 कोड मौजूद हैं तो अल्फा -2 कोड का उपयोग किया जाना चाहिए। भाषा क्षेत्र केस असंवेदनशील है, लेकिन लोकेले हमेशा लोअर केस में canonicalizes।

  • Script- आईएसओ 15924 अल्फा -4 स्क्रिप्ट कोड। स्क्रिप्ट फ़ील्ड केस असंवेदनशील है, लेकिन लोकेल हमेशा केस दर्ज करने के लिए canonicalizes।

  • Country (region)- आईएसओ 3166 अल्फा -2 देश कोड या UN M.49 संख्यात्मक -3 क्षेत्र कोड। देश का क्षेत्र असंवेदनशील है, लेकिन लोकेल हमेशा ऊपरी मामले के लिए canonicalizes।

  • Variant- किसी भी मनमाने मूल्य का उपयोग एक लोकेल की भिन्नता को इंगित करने के लिए किया जाता है। जहाँ दो या अधिक प्रकार के मान होते हैं, जिनमें से प्रत्येक अपने स्वयं के शब्दार्थों को दर्शाता है, इन मूल्यों को महत्व दिया जाना चाहिए, सबसे महत्वपूर्ण पहले, अंडरस्कोर ('_') द्वारा अलग किया गया। वेरिएंट फ़ील्ड केस सेंसिटिव है।

  • Extensions- सिंगल कैरेक्टर कीज़ से लेकर स्ट्रिंग वैल्यू तक का मैप, भाषा पहचान के अलावा एक्सटेंशन दर्शाता है। लोकेल में एक्सटेंशन BCP 47 एक्सटेंशन सबटैग और निजी उपयोग सबटैग के सिमेंटिक्स और सिंटैक्स को लागू करते हैं। एक्सटेंशन केस असंवेदनशील होते हैं, लेकिन लोले केस में सभी एक्सटेंशन कीज़ और वैल्यूज़ को लोकेल कैनोनिकलाइज़ कर देता है।

जावा आंतरिककरण - उदाहरण - स्थानीय विवरण

इस उदाहरण में, हम डिफ़ॉल्ट लोकेल प्राप्त करेंगे और उसका विवरण प्रिंट करेंगे। फिर "fr" के लिए एक लोकेल बनाएं और उसके विवरण प्रिंट करें।

I18NTester.java

import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale locale =Locale.getDefault();  

      System.out.println("Default Locale Properties:\n");

      System.out.println(locale.getDisplayCountry());  
      System.out.println(locale.getDisplayLanguage());  
      System.out.println(locale.getDisplayName());  
      System.out.println(locale.getISO3Country());  
      System.out.println(locale.getISO3Language());  
      System.out.println(locale.getLanguage());  
      System.out.println(locale.getCountry());  

      Locale frenchLocale = new Locale("fr","fr");

      System.out.println("\nfr Locale Properties:\n");
      System.out.println(frenchLocale.getDisplayCountry());  
      System.out.println(frenchLocale.getDisplayLanguage());  
      System.out.println(frenchLocale.getDisplayName());  
      System.out.println(frenchLocale.getISO3Country());  
      System.out.println(frenchLocale.getISO3Language());  
      System.out.println(frenchLocale.getLanguage());  
      System.out.println(frenchLocale.getCountry());  
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Default Locale Properties:

United States
English
English (United States)
USA
eng
en
US

fr Locale Properties:

France
French
French (France)
FRA
fra
fr
FR

जावा आंतरिककरण - उदाहरण - प्रदर्शन भाषा

इस उदाहरण में, हम एक तर्क के रूप में प्रति स्थानीय भाषा प्रदर्शित करेंगे।

I18NTester.java

import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale defaultLocale = Locale.getDefault();
      Locale enLocale = new Locale("en", "US");  
      Locale frLocale = new Locale("fr", "FR");  
      Locale esLocale = new Locale("es", "ES");

      System.out.println(defaultLocale.getDisplayLanguage(enLocale));
      System.out.println(defaultLocale.getDisplayLanguage(frLocale));
      System.out.println(defaultLocale.getDisplayLanguage(esLocale));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

English
anglais
inglés

जावा इंटर्नाइजेशन - रिसोर्सबंडल क्लास

रिसोर्सबंडल क्लास का उपयोग टेक्स्ट और ऑब्जेक्ट्स को स्टोर करने के लिए किया जाता है जो लोकल संवेदनशील होते हैं। आम तौर पर हम लोकेल विशिष्ट पाठ को संग्रहीत करने के लिए संपत्ति फ़ाइलों का उपयोग करते हैं और फिर रिसोर्सबंडल ऑब्जेक्ट का उपयोग करके उनका प्रतिनिधित्व करते हैं। एक जावा आधारित अनुप्रयोग में स्थानीय विशिष्ट गुण फ़ाइल का उपयोग करने के चरण निम्नलिखित हैं।

चरण 1: गुण फ़ाइलें बनाएँ।

मान लीजिए हमें अंग्रेजी लोकेल के लिए प्रॉपर्टी फाइल की जरूरत है। फिर एक गुण फ़ाइल नाम XXX_en_US.properties बनाएं जहां XXX फ़ाइल का नाम है और en_US अंग्रेजी (यूएस) के लिए स्थान का प्रतिनिधित्व करता है।

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

चलिए अब फ्रेंच लोकेल के लिए गुण फ़ाइल बनाते हैं। फिर एक गुण फ़ाइल नाम XXX_fr_FR.properties बनाएं जहां XXX फ़ाइल का नाम है और fr_FR फ्रेंच (फ्रांस) के लिए स्थान का प्रतिनिधित्व करता है।

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

यहां आप यह पता लगा सकते हैं कि कुंजी समान है लेकिन दोनों गुणों फ़ाइल में मान विशिष्ट है।

चरण 2: संसाधनबंडल ऑब्जेक्ट बनाएँ

सिंटैक्स का उपयोग करके गुण फ़ाइल नाम और लोकेल के साथ रिसोर्सबंड ऑब्जेक्ट बनाएं।

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

चरण 3: रिसोर्सबंडल ऑब्जेक्ट से मान प्राप्त करें।

कुंजी पास करके रिसोर्सबंडल ऑब्जेक्ट से मान प्राप्त करें।

String value = bundle.getString("message");

उदाहरण

उदाहरण के बाद संसाधन फ़ाइलों से स्थानीय विशिष्ट मान प्रदर्शित करने के लिए ResourceBundle ऑब्जेक्ट के उपयोग का वर्णन करें।

IOTester.java

import java.util.Locale;
import java.util.ResourceBundle;

public class I18NTester {
   public static void main(String[] args) {
      ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);  
      System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));  

      bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);  
      System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!

नामकरण सम्मेलनों के लिए नोट्स

निम्नलिखित गुण फ़ाइल के लिए नामकरण परंपराएँ हैं।

  • डिफ़ॉल्ट लोकेल में मैप की गई संपत्तियों के लिए, कोई भी उपसर्ग अनिवार्य नहीं है। message_en_US.properties message.properties के बराबर है।

  • लोकेल में मैप की गई प्रॉपर्टी के लिए, उपसर्ग को दो तरीकों से जोड़ा जा सकता है। message_fr.properties message_fr_FR.properties के बराबर है।

जावा आंतरिककरण - नंबरफ़ॉर्मैट क्लास

Java.text.NumberFormat वर्ग एक विशिष्ट स्थान के अनुसार संख्या और मुद्राओं को प्रारूपित करने के लिए उपयोग किया जाता है। संख्या प्रारूप देश से दूसरे देश में भिन्न होते हैं। उदाहरण के लिए, डेनमार्क में एक नंबर के अंशों को अल्पविराम का उपयोग करके पूर्णांक भाग से अलग किया जाता है जबकि इंग्लैंड में वे विभाजक के रूप में एक डॉट का उपयोग करते हैं।

उदाहरण - प्रारूप संख्या

इस उदाहरण में, हम US लोकेल और डेनिश लोकेल के आधार पर संख्याओं का प्रारूपण कर रहे हैं।

IOTester.java

import java.text.NumberFormat;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale enLocale = new Locale("en", "US");  
      Locale daLocale = new Locale("da", "DK");

      NumberFormat numberFormat = NumberFormat.getInstance(daLocale);

      System.out.println(numberFormat.format(100.76));

      numberFormat = NumberFormat.getInstance(enLocale);

      System.out.println(numberFormat.format(100.76));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

100,76
100.76

जावा इनरलाइज़ेशन - प्रारूप मुद्राएँ

इस उदाहरण में, हम यूएस लोकेल और डेनिश लोकेल के आधार पर मुद्राओं को प्रारूपित कर रहे हैं।

IOTester.java

import java.text.NumberFormat;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale enLocale = new Locale("en", "US");  
      Locale daLocale = new Locale("da", "DK");

      NumberFormat numberFormat = NumberFormat.getCurrencyInstance(daLocale);

      System.out.println(numberFormat.format(100.76));

      numberFormat = NumberFormat.getCurrencyInstance(enLocale);

      System.out.println(numberFormat.format(100.76));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

kr 100,76
$100.76

जावा इंटर्नाइजेशन - प्रारूप प्रतिशत

इस उदाहरण में, हम प्रतिशत प्रारूप में संख्याओं का प्रारूपण कर रहे हैं।

IOTester.java

import java.text.NumberFormat;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale enLocale = new Locale("en", "US");        

      NumberFormat numberFormat = NumberFormat.getPercentInstance(enLocale);

      System.out.println(numberFormat.format(0.76));    
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

76%

जावा इंटर्नाइजेशन - सेट मिन / मैक्स प्रिसिजन

इस उदाहरण में, हम पूर्णांक और साथ ही किसी संख्या के आंशिक भाग के लिए न्यूनतम और अधिकतम अंक निर्धारित कर रहे हैं।

IOTester.java

import java.text.NumberFormat;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale enLocale = new Locale("en", "US");  

      NumberFormat numberFormat = NumberFormat.getInstance(enLocale);
      numberFormat.setMinimumIntegerDigits(2);
      numberFormat.setMaximumIntegerDigits(3);

      numberFormat.setMinimumFractionDigits(2);
      numberFormat.setMaximumFractionDigits(3);

      System.out.println(numberFormat.format(12234.763443));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

234.763

जावा इंटर्नाइजेशन - सेट राउंडिंग मोड

इस उदाहरण में, हम राउंडिंग मोड दिखा रहे हैं।

IOTester.java

import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale enLocale = new Locale("en", "US");  
 
      NumberFormat numberFormat = NumberFormat.getInstance(enLocale);

      numberFormat.setMinimumFractionDigits(0);
      numberFormat.setMaximumFractionDigits(0);

      System.out.println(numberFormat.format(99.50));

      numberFormat.setRoundingMode(RoundingMode.HALF_DOWN);

      System.out.println(numberFormat.format(99.50));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

100
99

जावा आंतरिककरण - पार्सिंग नंबर

इस उदाहरण में, हम अलग-अलग लोकेल में मौजूद संख्या के बारे में बता रहे हैं।

IOTester.java

import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) throws ParseException {
      Locale enLocale = new Locale("en", "US");  
      Locale daLocale = new Locale("da", "DK");

      NumberFormat numberFormat = NumberFormat.getInstance(daLocale);

      System.out.println(numberFormat.parse("100,76"));

      numberFormat = NumberFormat.getInstance(enLocale);

      System.out.println(numberFormat.parse("100,76"));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

100.76
10076

जावा इंटर्नाइजेशन - डेसीमलफार्मेट क्लास

Java.text.DecimalFormat वर्ग का उपयोग स्वनिर्धारित प्रारूप के अनुसार संख्याओं के लिए और लोकेल के अनुसार किया जाता है।

उदाहरण - प्रारूप संख्या

इस उदाहरण में, हम दिए गए पैटर्न के आधार पर संख्याओं को प्रारूपित कर रहे हैं।

IOTester.java

import java.text.DecimalFormat;

public class I18NTester {
   public static void main(String[] args) {
      String pattern = "####,####.##";
      double number = 123456789.123;
      
      DecimalFormat numberFormat = new DecimalFormat(pattern);

      System.out.println(number);
      
      System.out.println(numberFormat.format(number));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

1.23456789123E8
1,2345,6789.12

जावा आंतरिककरण - प्रारूप पैटर्न

अनुसरण स्वरूपण पैटर्न में वर्णों का उपयोग है।

अनु क्रमांक। कक्षा और विवरण
1

0

0 प्रदर्शित करने के लिए यदि कम अंक मौजूद हैं।

2

#

अंकीय अग्रणी शून्य अंक प्रदर्शित करने के लिए।

3

.

दशमलव विभाजक।

4

,

ग्रुपिंग सेपरेटर।

5

E

घातीय स्वरूपों के लिए मंटिसा और एक्सपोनेंट सेपरेटर।

6

;

प्रारूप विभाजक।

7

-

ऋणात्मक संख्या उपसर्ग।

8

%

100 के साथ गुणा करने के बाद प्रतिशत के रूप में संख्या दिखाता है।

9

?

1000 के साथ गुणा करने के बाद मिल के रूप में संख्या दिखाता है।

10

X

वर्ण को संख्या उपसर्ग / प्रत्यय के रूप में चिह्नित करना।

1 1

'

विशेष वर्णों के आसपास उद्धरण चिन्हित करने के लिए।

इस उदाहरण में, हम विभिन्न पैटर्न के आधार पर संख्याओं का प्रारूपण कर रहे हैं।

IOTester.java

import java.text.DecimalFormat;

public class I18NTester {
   public static void main(String[] args) {
      String pattern = "###.###";
      double number = 123456789.123;

      DecimalFormat numberFormat = new DecimalFormat(pattern);

      System.out.println(number);

      //pattern ###.###
      System.out.println(numberFormat.format(number));

      //pattern ###.#
      numberFormat.applyPattern("###.#");
      System.out.println(numberFormat.format(number));

      //pattern ###,###.##
      numberFormat.applyPattern("###,###.##");
      System.out.println(numberFormat.format(number));

      number = 9.34;

      //pattern 000.###
      numberFormat.applyPattern("000.##");
      System.out.println(numberFormat.format(number));           
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

1.23456789123E8
1,2345,6789.12

जावा आंतरिककरण - स्थानीय विशिष्ट दशमलव

डिफ़ॉल्ट रूप से, DecimalFormat ऑब्जेक्ट JVM के लोकेल का उपयोग कर रहा है। हम DecFFormat ऑब्जेक्ट का उपयोग करते हुए NumberFormat क्लास बनाते समय डिफ़ॉल्ट लोकेल को बदल सकते हैं। नीचे दिए गए उदाहरण में, हम दो अलग-अलग लोकेल के लिए एक ही पैटर्न का उपयोग करेंगे और आप आउटपुट में अंतर देख सकते हैं।

IOTester.java

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      String pattern = "###.##";
      double number = 123.45;

      Locale enlocale  = new Locale("en", "US");
      Locale dalocale  = new Locale("da", "DK");

      DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(enlocale);
      decimalFormat.applyPattern(pattern);

      System.out.println(decimalFormat.format(number));
   

      decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(dalocale);
      decimalFormat.applyPattern(pattern);

      System.out.println(decimalFormat.format(number));     
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

123.45
123,45

जावा इंटरलाइज़ेशन - डेसिफ़लफॉर्मटॉम्बल्स क्लास

DecimalFormatSymbols वर्ग का उपयोग करके, डिफ़ॉल्ट विभाजक प्रतीकों, समूहन विभाजक प्रतीकों आदि को बदला जा सकता है। निम्नलिखित उदाहरण उसी का चित्रण है।

IOTester.java

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class I18NTester {
   public static void main(String[] args) {
      String pattern = "#,###.###";
      double number = 126473.4567;

      DecimalFormat decimalFormat = new DecimalFormat(pattern);

      System.out.println(decimalFormat.format(number));
   

      DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
      decimalFormatSymbols.setDecimalSeparator(';');
      decimalFormatSymbols.setGroupingSeparator(':');

      decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);

      System.out.println(decimalFormat.format(number));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

126,473.457
126:473;457

जावा इंटर्नाइजेशन - ग्रुपिंग अंक

DecimalFormat की setGroupingSize () पद्धति का उपयोग करके, संख्याओं के डिफ़ॉल्ट समूहन को बदला जा सकता है। निम्नलिखित उदाहरण उसी का चित्रण है।

IOTester.java

import java.text.DecimalFormat;

public class I18NTester {
   public static void main(String[] args) {
      double number = 121223232473.4567;

      DecimalFormat decimalFormat = new DecimalFormat();

      System.out.println(number);
      System.out.println(decimalFormat.format(number));
   

      decimalFormat.setGroupingSize(4);
      System.out.println(decimalFormat.format(number));
   
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

1.212232324734567E11
121,223,232,473.457
1212,2323,2473.457

जावा आंतरिककरण - DateFormat वर्ग

स्थान के अनुसार java.text.DateFormat वर्ग प्रारूप दिनांक। जैसे कि अलग-अलग कॉटेज तिथियों को प्रदर्शित करने के लिए विभिन्न स्वरूपों का उपयोग करते हैं। आवेदन के आंतरिककरण में तारीखों से निपटने में यह वर्ग बेहद उपयोगी है। निम्न उदाहरण दिखाते हैं कि DateFormat Class कैसे बनाएँ और उसका उपयोग करें।

IOTester.java

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) {
      Locale locale = new Locale("da","DK");

      DateFormat dateFormat = DateFormat.getDateInstance();

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);

      System.out.println(dateFormat.format(new Date()));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Nov 29, 2017
29-11-2017

जावा आंतरिककरण - प्रारूपण तिथियाँ

DateFormat वर्ग दिनांक को प्रारूपित करने के लिए विभिन्न प्रारूप प्रदान करता है। निम्नलिखित कुछ प्रारूपों की सूची है।

  • DateFormat.DEFAULT

  • DateFormat.SHORT

  • DateFormat.MEDIUM

  • DateFormat.LONG

  • DateFormat.FULL

निम्नलिखित उदाहरण में हम बताएंगे कि विभिन्न स्वरूपों का उपयोग कैसे करें।

IOTester.java

import java.text.DateFormat;
import java.util.Date;

public class I18NTester {
   public static void main(String[] args) {
   
      DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateInstance(DateFormat.LONG);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateInstance(DateFormat.FULL);

      System.out.println(dateFormat.format(new Date()));
  
  
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Nov 29, 2017
11/29/17
Nov 29, 2017
November 29, 2017
Wednesday, November 29, 2017

जावा आंतरिककरण - स्वरूपण समय

DateFormat वर्ग समय को प्रारूपित करने के लिए विभिन्न प्रारूप प्रदान करता है। DateFormat.getTimeInstance () विधि का उपयोग किया जाना है। नीचे दिए गए उदाहरण देखें।

निम्नलिखित उदाहरण में हम यह दिखाएंगे कि प्रारूप समय के लिए विभिन्न स्वरूपों का उपयोग कैसे करें।

IOTester.java

import java.text.DateFormat;
import java.util.Date;

public class I18NTester {
   public static void main(String[] args) {
   
      DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getTimeInstance(DateFormat.LONG);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getTimeInstance(DateFormat.FULL);

      System.out.println(dateFormat.format(new Date()));
  
  
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

4:11:21 PM
4:11 PM
4:11:21 PM
4:11:21 PM IST
4:11:21 PM IST

जावा इंटर्नाइजेशन - प्रारूपण तिथि और समय

DateFormat वर्ग दिनांक और समय को एक साथ प्रारूपित करने के लिए विभिन्न प्रारूप प्रदान करता है। DateFormat.getDateTimeInstance () विधि का उपयोग किया जाना है। नीचे दिए गए उदाहरण देखें।

निम्नलिखित उदाहरण में हम दिखाएंगे कि दिनांक और समय को प्रारूपित करने के लिए विभिन्न स्वरूपों का उपयोग कैसे करें।

IOTester.java

import java.text.DateFormat;
import java.util.Date;

public class I18NTester {
   public static void main(String[] args) {

      DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);

      System.out.println(dateFormat.format(new Date()));

      dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);

      System.out.println(dateFormat.format(new Date()));
  

   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Nov 29, 2017 4:16:13 PM
11/29/17 4:16 PM
Nov 29, 2017 4:16:13 PM
November 29, 2017 4:16:13 PM IST
Wednesday, November 29, 2017 4:16:13 PM IST

जावा इंटर्नाइजेशन - सिंपलडेटफार्म क्लास

java.text.SimpleDateFormat वर्ग प्रारूप दिए गए पैटर्न के अनुसार है। यह स्ट्रिंग से तारीखों को पार्स करने के लिए भी उपयोग किया जाता है जहां स्ट्रिंग में उल्लेखित प्रारूप में तारीख होती है। SimpleDateFormat वर्ग का उपयोग करने के निम्नलिखित उदाहरण देखें।

IOTester.java

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class I18NTester {
   public static void main(String[] args) throws ParseException {
   
      String pattern = "dd-MM-yyyy";

      SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

      Date date = new Date();

      System.out.println(date);
      System.out.println(simpleDateFormat.format(date));

      String dateText = "29-11-2017";

      date = simpleDateFormat.parse(dateText);

      System.out.println(simpleDateFormat.format(date));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Wed Nov 29 17:01:22 IST 2017
29-11-2017
29-11-2017

जावा आंतरिककरण - लोकेल विशिष्ट SimpleDateFormat

लोकल को SimpleDateFormat वर्ग में एक पैटर्न पर स्थानीय विशिष्ट स्वरूपण बनाने के लिए उपयोग किया जा सकता है। स्थानीय विशिष्ट SimpleDateFormat वर्ग का उपयोग करने के निम्नलिखित उदाहरण देखें।

IOTester.java

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class I18NTester {
   public static void main(String[] args) throws ParseException {

      Locale locale = new Locale("da", "DK");
      String pattern = "EEEEE MMMMM yyyy";

      SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

      Date date = new Date();

      System.out.println(date);
      System.out.println(simpleDateFormat.format(date));

      simpleDateFormat = new SimpleDateFormat(pattern,locale);

      System.out.println(simpleDateFormat.format(date));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Wed Nov 29 17:48:14 IST 2017
Wednesday November 2017
onsdag november 2017

जावा इंटरलाइज़ेशन - डेसिफ़लफॉर्मटॉम्बल्स क्लास

DecimalFormatSymbols वर्ग का उपयोग करके, डिफ़ॉल्ट विभाजक प्रतीकों, समूहन विभाजक प्रतीकों आदि को बदला जा सकता है। निम्नलिखित उदाहरण उसी का चित्रण है।

IOTester.java

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class I18NTester {
   public static void main(String[] args) {
      String pattern = "#,###.###";
      double number = 126473.4567;

      DecimalFormat decimalFormat = new DecimalFormat(pattern);

      System.out.println(decimalFormat.format(number));
   

      DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
      decimalFormatSymbols.setDecimalSeparator(';');
      decimalFormatSymbols.setGroupingSeparator(':');

      decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);

      System.out.println(decimalFormat.format(number));
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

126,473.457
126:473;457

जावा इंटर्नाइजेशन - तिथि प्रारूप पैटर्न

अनुगमन दिनांक स्वरूपण पैटर्न में वर्णों का उपयोग है।

अनु क्रमांक। कक्षा और विवरण
1

G

युग प्रदर्शित करने के लिए।

2

y

वर्ष प्रदर्शित करने के लिए। मान्य मूल्य yy, yyyy।

3

M

महीना प्रदर्शित करने के लिए। मान्य मूल्य MM, MMM या MMMMM।

4

d

महीने का दिन प्रदर्शित करने के लिए। मान्य मान d, dd।

5

h

दिन के घंटे को प्रदर्शित करने के लिए (1-12 बजे / पीएम)। मान्य मान hh।

6

H

दिन के घंटे (0-23) को प्रदर्शित करने के लिए। मान्य मान HH।

7

m

प्रति मिनट (0-59) प्रदर्शित करने के लिए। मान्य मूल्य मिमी।

8

s

दूसरा मिनट (0-59) प्रदर्शित करने के लिए। मान्य मूल्य एस.एस.

9

S

मिनट (0-999) के मिलीसेकंड प्रदर्शित करने के लिए। वैध मान एस.एस.एस.

10

E

सप्ताह में दिन प्रदर्शित करने के लिए (जैसे सोमवार, मंगलवार आदि)

1 1

D

वर्ष में दिन प्रदर्शित करने के लिए (1-366)।

12

F

महीने में सप्ताह का दिन प्रदर्शित करने के लिए (जैसे दिसंबर का पहला गुरुवार)।

13

w

सप्ताह में प्रदर्शित करने के लिए (1-53)।

14

W

महीने में सप्ताह प्रदर्शित करने के लिए (0-5)

15

a

एएम / पीएम प्रदर्शित करने के लिए

16

k

घंटे को दिन में प्रदर्शित करने के लिए (1-24)।

17

K

दिन में घंटे प्रदर्शित करने के लिए, AM / PM (0-11)।

18

z

समय क्षेत्र प्रदर्शित करने के लिए।

इस उदाहरण में, हम विभिन्न पैटर्नों के आधार पर तिथियों का प्रारूपण कर रहे हैं।

IOTester.java

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class I18NTester {
   public static void main(String[] args) throws ParseException {

      String pattern = "dd-MM-yy";
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
      Date date = new Date();
      System.out.println(simpleDateFormat.format(date));

      pattern = "MM-dd-yyyy";
      simpleDateFormat = new SimpleDateFormat(pattern);
      System.out.println(simpleDateFormat.format(date));

      pattern = "yyyy-MM-dd HH:mm:ss";
      simpleDateFormat = new SimpleDateFormat(pattern);
      System.out.println(simpleDateFormat.format(date));

      pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
      simpleDateFormat = new SimpleDateFormat(pattern);
      System.out.println(simpleDateFormat.format(date));
}
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

29-11-17
11-29-2017
2017-11-29 18:47:42
Wednesday November 2017 18:47:42.787+0530

जावा आंतरिककरण - यूटीसी

UTC का लक्ष्य समन्वित सार्वभौमिक समय है। यह समय मानक है और आमतौर पर दुनिया भर में उपयोग किया जाता है। सभी समय क्षेत्रों को ऑफसेट के रूप में यूटीसी के साथ तुलनात्मक रूप से गणना की जाती है। उदाहरण के लिए, कोपेनहेगन में समय, UTC + 1 का अर्थ है UTC समय और एक घंटे। यह डे लाइट बचत से स्वतंत्र है और इसका उपयोग डेटाबेस में दिनांक और समय को संग्रहीत करने के लिए किया जाना चाहिए।

समय क्षेत्र का रूपांतरण

निम्नलिखित उदाहरण विभिन्न समय क्षेत्रों के रूपांतरण का प्रदर्शन करेंगे। हम दिन का समय और मिलीसेकंड में समय प्रिंट करेंगे। पहला अलग-अलग होगा और दूसरा भी वही रहेगा।

IOTester.java

import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class I18NTester {
   public static void main(String[] args) throws ParseException {
   
      Calendar date = new GregorianCalendar();

      date.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
      date.set(Calendar.HOUR_OF_DAY, 12);

      System.out.println("UTC: " + date.get(Calendar.HOUR_OF_DAY));
      System.out.println("UTC: " + date.getTimeInMillis());

      date.setTimeZone(TimeZone.getTimeZone("Europe/Copenhagen"));
      System.out.println("CPH: " + date.get(Calendar.HOUR_OF_DAY));
      System.out.println("CPH: " + date.getTimeInMillis());

      date.setTimeZone(TimeZone.getTimeZone("America/New_York"));
      System.out.println("NYC: " + date.get(Calendar.HOUR_OF_DAY));
      System.out.println("NYC: " + date.getTimeInMillis());
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

UTC: 12
UTC: 1511956997540
CPH: 13
CPH: 1511956997540
NYC: 7
NYC: 1511956997540

उपलब्ध समय क्षेत्र

निम्नलिखित उदाहरण प्रणाली के साथ उपलब्ध समय क्षेत्रों का प्रदर्शन करेंगे।

IOTester.java

import java.text.ParseException;
import java.util.TimeZone;

public class I18NTester {
   public static void main(String[] args) throws ParseException {
      String[] availableIDs = TimeZone.getAvailableIDs();

      for(String id : availableIDs) {
         System.out.println("Timezone = " + id);
      }
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

Timezone = Africa/Abidjan
Timezone = Africa/Accra
...
Timezone = VST

जावा इंटररलाइजेशन - यूनिकोड रूपांतरण से / स्ट्रिंग तक

जावा में, पाठ आंतरिक रूप से यूनिकोड प्रारूप में संग्रहीत किया जाता है। यदि इनपुट / आउटपुट अलग प्रारूप में है तो रूपांतरण आवश्यक है।

परिवर्तन

उदाहरण के बाद यूनिकोड स्ट्रिंग का यूटीएफ 8 बाइट [] और यूटीएफ 8 बाइट [] यूनिकोड बाइट [] में रूपांतरण दिखाया जाएगा।

IOTester.java

import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.text.ParseException;

public class I18NTester {
   public static void main(String[] args) throws ParseException, UnsupportedEncodingException {

      String unicodeString = "\u00C6\u00D8\u00C5" ;

      //convert Unicode to UTF8 format
      byte[] utf8Bytes = unicodeString.getBytes(Charset.forName("UTF-8"));
      printBytes(utf8Bytes, "UTF 8 Bytes");

      //convert UTF8 format to Unicode
      String converted = new String(utf8Bytes, "UTF8");
      byte[] unicodeBytes = converted.getBytes();
      printBytes(unicodeBytes, "Unicode Bytes");
   }

   public static void printBytes(byte[] array, String name) {
      for (int k = 0; k < array.length; k++) {
         System.out.println(name + "[" + k + "] = " + array[k]);
          
      }
   }
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

UTF 8 Bytes[0] = -61
UTF 8 Bytes[1] = -122
UTF 8 Bytes[2] = -61
UTF 8 Bytes[3] = -104
UTF 8 Bytes[4] = -61
UTF 8 Bytes[5] = -123
Unicode Bytes[0] = -58
Unicode Bytes[1] = -40
Unicode Bytes[2] = -59

जावा इंटररलाइजेशन - यूनिकोड रूपांतरण / से रीडर / राइटर के लिए

रीडर और राइटर क्लास कैरेक्टर ओरिएंटेड स्ट्रीम क्लास हैं। इनका उपयोग यूनिकोड वर्णों को पढ़ने और परिवर्तित करने के लिए किया जा सकता है।

परिवर्तन

उदाहरण के बाद यूनिकोड स्ट्रिंग का यूटीएफ 8 बाइट [] और यूटीएफ 8 बाइट [] यूनिकोड बाइट [] में रीडर और राइटर कक्षाओं का उपयोग करके रूपांतरण दिखाया जाएगा।

IOTester.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;
import java.text.ParseException;

public class I18NTester {
   public static void main(String[] args) throws ParseException, IOException {

      String input = "This is a sample text" ;

      InputStream inputStream = new ByteArrayInputStream(input.getBytes());

      //get the UTF-8 data
      Reader reader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));

      //convert UTF-8 to Unicode
      int data = reader.read();
      while(data != -1){
         char theChar = (char) data;
         System.out.print(theChar);
         data = reader.read();
      }
      reader.close();

      System.out.println();

      //Convert Unicode to UTF-8 Bytes
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
      Writer writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));

      writer.write(input);
      writer.close();

      String out = new String(outputStream.toByteArray());
   
      System.out.println(out);
   }  
}

उत्पादन

यह निम्नलिखित परिणाम को प्रिंट करेगा।

This is a sample text
This is a sample text
छाप