Java İçselleştirme - Hızlı Kılavuz

İçselleştirme

İçselleştirme veya I18N, bir Uygulamanın kullanıcılara birden çok ve farklı dilde hizmet verebilme yeteneğini ifade eder. Java, İçselleştirme için yerleşik desteğe sahiptir. Java ayrıca sayıların, para birimlerinin biçimlendirilmesini ve buna göre tarih ve saatin ayarlanmasını sağlar.

Java Internationalization, bir java uygulamasının farklı dilleri, sayı biçimlerini, para birimlerini, bölgeye özel saat biçimlendirmesini işlemesine yardımcı olur.

Yerelleştirme

Yerelleştirme veya L10N, bir uygulamanın kendisini belirli bir dile, sayı formatlarına, tarih ve saat ayarlarına vb. Uyum sağlama şekli olan bir uygulamanın uyarlanabilirliğidir.

Bir java uygulamasının kendisini yerelleştirebilmesi için uluslararasılaştırılması gerekir.

Kültüre Bağlı Bilgi

Aşağıdaki bilgi öğeleri genellikle farklı zaman dilimlerine veya kültürlere göre değişir.

  • Messages

  • Date

  • Time

  • Number

  • Currency

  • Measurements

  • Telefon numaraları

  • Posta Adresleri

  • GUI etiketleri

Uluslararasılaştırma Sınıfları

Java, bir uygulamanın uluslararasılaşmasına yardımcı olan bir dizi yerleşik sınıfa sahiptir. Bu sınıflar aşağıdaki gibidir:

Sr.No. Sınıf ve Açıklama
1

Locale

Ülke / bölge ile birlikte bir dili temsil eder.

2

ResourceBundle

Yerelleştirilmiş metin veya nesneler içerir.

3

NumberFormat

Yerel ayara göre sayıları / para birimlerini biçimlendirmek için kullanın.

4

DecimalFormat

Numaraları özelleştirilmiş biçime ve yerel ayara göre biçimlendirmek için kullanın.

5

DateFormat

Tarihleri ​​yerel ayara göre biçimlendirmek için kullanın.

6

SimpleDateFormat

Tarihleri ​​özelleştirilmiş biçime ve yerel ayara göre biçimlendirmek için kullanın.

Java İçselleştirme - Ortam Kurulumu

Bu bölümde, Java için uygun bir ortam kurmanın farklı yönlerini tartışacağız.

Yerel Ortam Kurulumu

Hala ortamınızı Java programlama dili için kurmaya istekliyseniz, bu bölüm Java'yı makinenize nasıl indirip kuracağınız konusunda size yol gösterir. Ortamı kurma adımları aşağıdadır.

Java SE, Java İndirme bağlantısından ücretsiz olarak edinilebilir . İşletim sisteminize göre bir sürümü indirebilirsiniz.

Java'yı indirmek için talimatları izleyin ve .exeMakinenize Java yüklemek için. Java'yı makinenize yükledikten sonra, ortam değişkenlerini doğru yükleme dizinlerini gösterecek şekilde ayarlamanız gerekecektir -

Windows için Yolu Ayarlama

Java'yı c: \ Program Files \ java \ jdk dizinine kurduğunuzu varsayarsak -

  • "Bilgisayarım" ı sağ tıklayın ve "Özellikler" i seçin.

  • "Gelişmiş" sekmesinin altındaki "Ortam değişkenleri" düğmesini tıklayın.

  • Şimdi, 'Yol' değişkenini, Java yürütülebilir dosyasının yolunu da içerecek şekilde değiştirin. Örneğin, yol şu anda 'C: \ WINDOWS \ SYSTEM32' olarak ayarlanmışsa, yolunuzu 'C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin' olarak değiştirin.

Linux, UNIX, Solaris, FreeBSD için Yolu Ayarlama

PATH ortam değişkeni, Java ikili dosyalarının kurulu olduğu yeri gösterecek şekilde ayarlanmalıdır. Bunu yapmakta sorun yaşıyorsanız, kabuk belgelerinize bakın.

Örneğin, kabuğunuz olarak bash kullanırsanız , aşağıdaki satırı '.bashrc: export PATH = / path / to / java: $ PATH' satırınızın sonuna eklersiniz.

Popüler Java Editörleri

Java programlarınızı yazmak için bir metin düzenleyiciye ihtiyacınız olacak. Piyasada daha da sofistike IDE'ler mevcuttur. Ancak şimdilik aşağıdakilerden birini düşünebilirsiniz -

  • Notepad - Windows makinesinde, Not Defteri (Bu eğitim için önerilir), TextPad gibi herhangi bir basit metin düzenleyiciyi kullanabilirsiniz.

  • Netbeans - Açık kaynaklı ve ücretsiz bir Java IDE, buradan indirilebilir https://www.netbeans.org/index.html.

  • Eclipse - Eclipse açık kaynak topluluğu tarafından geliştirilen ve şu adresten indirilebilen bir Java IDE https://www.eclipse.org/.

Sırada ne var?

Sonraki bölüm size ilk Java programınızı nasıl yazacağınızı ve çalıştıracağınızı ve uygulama geliştirmek için gerekli Java'daki bazı önemli temel sözdizimlerini öğretecek.

Java İçselleştirme - Yerel Sınıf

Locale nesnesi, belirli bir coğrafi / politik / kültürel bölgeyi temsil eder. Bir Yerel Ayarın görevini yerine getirmesini gerektiren herhangi bir işlem yerel ayara duyarlı işlem olarak adlandırılır ve kullanıcıya göre bilgileri yönetmek için Yerel Ayarı kullanır. Örneğin, bir sayının görüntülenmesi yerel ayarlara duyarlı bir işlemdir. Numara, kullanıcının kendi ülkesinin, bölgesinin veya kültürünün geleneklerine ve kurallarına göre biçimlendirilmelidir.

Yerel İçerik

Bir Locale nesnesi şunları içerir:

  • Language- ISO 639 alfa-2 veya alfa-3 dil kodu veya 8 alfa harfe kadar kayıtlı dil alt etiketleri. Hem alfa-2 hem de alfa-3 kodu mevcutsa alfa-2 kodu kullanılmalıdır. Dil alanı büyük / küçük harfe duyarlı değildir, ancak Yerel Ayar her zaman küçük harfe göre standartlaştırılır.

  • Script- ISO 15924 alfa-4 komut dosyası kodu. Komut dosyası alanı büyük / küçük harfe duyarlı değildir, ancak Locale her zaman ilk harfleri büyük olacak şekilde standartlaştırır.

  • Country (region)- ISO 3166 alfa-2 ülke kodu veya UN M.49 sayısal-3 alan kodu. Ülke alanı büyük / küçük harfe duyarlı değildir, ancak Yerel Ayar her zaman büyük harfe göre standartlaştırılır.

  • Variant- Bir Yerel Ayarın bir varyasyonunu belirtmek için kullanılan herhangi bir rastgele değer. Her biri kendi anlamını gösteren iki veya daha fazla varyant değeri olduğunda, bu değerler önem sırasına göre sıralanmalı ve en önemlisi önce alt çizgi ('_') ile ayrılmalıdır. Varyant alanı büyük / küçük harfe duyarlıdır.

  • Extensions- Dil tanımlamasından ayrı uzantıları gösteren, tek karakter anahtarlarından dize değerlerine bir harita. Locale'deki uzantılar, BCP 47 uzantı alt etiketlerinin ve özel kullanım alt etiketlerinin anlamlarını ve sözdizimini uygular. Uzantılar büyük / küçük harfe duyarlı değildir, ancak Yerel Ayar, tüm uzantı anahtarlarını ve değerlerini küçük harfe göre standartlaştırır.

Java İçselleştirme - Örnek - Yerel Ayar Ayrıntıları

Bu örnekte, varsayılan yerel ayarı alacağız ve ayrıntılarını yazdıracağız. Sonra "fr" için bir yerel ayar oluşturun ve ayrıntılarını yazdırın.

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());  
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Default Locale Properties:

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

fr Locale Properties:

France
French
French (France)
FRA
fra
fr
FR

Java İçselleştirme - Örnek - Görüntü Dili

Bu örnekte, argüman olarak aktarılan her yerel ayar için görüntüleme dilini alacağız.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

English
anglais
inglés

Java İçselleştirme - ResourceBundle Sınıfı

ResourceBundle sınıfı, yerel ayara duyarlı metin ve nesneleri depolamak için kullanılır. Genellikle yerel ayara özgü metni depolamak için özellik dosyalarını kullanırız ve ardından bunları ResourceBundle nesnesini kullanarak temsil ederiz. Aşağıda, java tabanlı bir uygulamada yerel ayara özgü özellikler dosyasını kullanma adımları verilmiştir.

1. Adım: Özellikler dosyalarını oluşturun.

İngilizce yerel ayarı için özellikler dosyasına ihtiyacımız olduğunu varsayalım. Ardından, XXX_en_US.properties adlı bir özellikler dosyası oluşturun; burada XXX dosyanın adıdır ve en_US, İngilizce (ABD) için yerel ayarı temsil eder.

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Şimdi Fransız yerel ayarı için özellikler dosyası oluşturalım. Ardından, XXX_fr_FR.properties adlı bir özellikler dosyası oluşturun; burada, XXX dosyanın adıdır ve fr_FR, Fransızca (Fransa) için yerel ayarı temsil eder.

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Burada, anahtarın aynı olduğunu ancak değerin her iki özellikler dosyasında da yerel ayara özgü olduğunu anlayabilirsiniz.

Adım 2: ResourceBundle nesnesi oluşturun

Aşağıdaki sözdizimini kullanarak özellikler dosya adı ve yerel ayar ile ResourceBundle nesnesi oluşturun.

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

Adım 3: ResourceBundle nesnesinden değeri alın.

Anahtarı geçirerek ResourceBundle nesnesinden değeri alın.

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

Misal

Aşağıdaki örnek, özellikler dosyalarından yerel ayara özgü değerleri görüntülemek için ResourceBundle nesnelerinin kullanımını göstermektedir.

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"));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Adlandırma Kuralları için Notlar

Özellikler dosyası için adlandırma kuralları aşağıdadır.

  • Varsayılan yerel ayara eşlenen özellikler dosyası için ön ek zorunlu değildir. message_en_US.properties, message.properties'e eşdeğerdir.

  • Yerel ayara eşlenen özellikler dosyası için önek iki şekilde eklenebilir. message_fr.properties, message_fr_FR.properties'e eşdeğerdir.

Java İçselleştirme - NumberFormat Sınıfı

Java.text.NumberFormat sınıfı, sayıları ve para birimlerini belirli bir Yerel Ayara göre biçimlendirmek için kullanılır. Sayı biçimleri ülkeden ülkeye değişir. Örneğin, Danimarka'da bir sayının kesirleri tam sayı bölümünden virgül kullanılarak ayrılırken İngiltere'de ayırıcı olarak nokta kullanırlar.

Örnek - Sayıları Biçimlendir

Bu örnekte, numaraları ABD yerel ayarına ve Danimarka Yerel Ayarına göre biçimlendiriyoruz.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

100,76
100.76

Java İçselleştirme - Para Birimlerini Biçimlendir

Bu örnekte, para birimlerini ABD yerel ayarı ve Danimarka Yerel Ayarına göre biçimlendiriyoruz.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

kr 100,76
$100.76

Java İçselleştirme - Biçim Yüzdeleri

Bu örnekte, sayıları yüzde biçiminde biçimlendiriyoruz.

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));    
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

76%

Java İçselleştirme - Min / Maks Hassasiyeti Ayarlayın

Bu örnekte, bir sayının hem tamsayı hem de kesirli kısmı için minimum ve maksimum basamakları ayarlıyoruz.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

234.763

Java Internalization - Yuvarlama Modunu Ayarla

Bu örnekte, Yuvarlama Modunu sergiliyoruz.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

100
99

Java İçselleştirme - Sayıları Ayrıştırma

Bu örnekte, farklı yerel ayarda bulunan sayının ayrıştırılmasını gösteriyoruz.

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"));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

100.76
10076

Java Internalization - DecimalFormat Sınıfı

Java.text.DecimalFormat sınıfı, sayıları özelleştirilmiş biçime ve yerel ayara göre biçimlendirmek için kullanılır.

Örnek - Sayıları Biçimlendir

Bu örnekte, sayıları belirli bir kalıba göre biçimlendiriyoruz.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

1.23456789123E8
1,2345,6789.12

Java İçselleştirme - Biçim Kalıpları

Formatlama desenlerinde karakterlerin kullanımı aşağıdaki gibidir.

Sr.No. Sınıf ve Açıklama
1

0

Daha az basamak varsa 0'ı görüntülemek için.

2

#

Baştaki sıfırları göstermeyen rakamları görüntülemek için.

3

.

Ondalık ayırıcı.

4

,

Gruplama ayırıcı.

5

E

Üstel biçimler için Mantis ve Üs ayırıcı.

6

;

Biçim ayırıcı.

7

-

Negatif sayı öneki.

8

%

100 ile çarpıldıktan sonra sayıyı yüzde olarak gösterir.

9

?

1000 ile çarpıldıktan sonra sayıyı mille olarak gösterir.

10

X

Karakteri sayı öneki / sonek olarak işaretlemek için.

11

'

Özel karakterlerin etrafındaki alıntı işaretlemek için.

Bu örnekte, sayıları farklı modellere göre biçimlendiriyoruz.

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));           
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

1.23456789123E8
1,2345,6789.12

Java İçselleştirme - Yerel Ayara Özel DecimalFormat

Varsayılan olarak, DecimalFormat nesnesi JVM'nin yerel ayarını kullanıyor. NumberFormat sınıfını kullanarak DecimalFormat nesnesini oluştururken varsayılan yerel ayarı değiştirebiliriz. Aşağıdaki örnekte, iki farklı yerel ayar için aynı kalıbı kullanacağız ve çıktıdaki farkı görebilirsiniz.

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));     
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

123.45
123,45

Java Internalization - DecimalFormatSymbols Sınıfı

DecimalFormatSymbols sınıfını kullanarak, varsayılan ayırıcı sembolleri, gruplama ayırıcı sembolleri vb. Değiştirilebilir. Aşağıdaki örnek aynı şeyi göstermektedir.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

126,473.457
126:473;457

Java İçselleştirme - Basamakları Gruplama

DecimalFormat'ın setGroupingSize () yöntemini kullanarak, varsayılan sayı gruplaması değiştirilebilir. Aşağıdaki örnek aynı şeyi göstermektedir.

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));
   
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - DateFormat Sınıfı

java.text.DateFormat sınıfı biçimleri yerel ayara göre tarihler. Farklı ülkeler tarihleri ​​görüntülemek için farklı formatlar kullandığından. Bu sınıf, uygulamanın içselleştirilmesinde tarihlerle başa çıkmada son derece yararlıdır. Aşağıdaki örnek, DateFormat Sınıfının nasıl oluşturulacağını ve kullanılacağını gösterir.

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()));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

Nov 29, 2017
29-11-2017

Java İçselleştirme - Tarihleri ​​Biçimlendirme

DateFormat sınıfı, tarihi biçimlendirmek için çeşitli biçimler sağlar. Aşağıda bazı formatların listesi verilmiştir.

  • DateFormat.DEFAULT

  • DateFormat.SHORT

  • DateFormat.MEDIUM

  • DateFormat.LONG

  • DateFormat.FULL

Aşağıdaki örnekte, farklı formatların nasıl kullanılacağını göstereceğiz.

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()));
  
  
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - Biçimlendirme Zamanı

DateFormat sınıfı, saati biçimlendirmek için çeşitli biçimler sağlar. DateFormat.getTimeInstance () yöntemi kullanılacak. Aşağıdaki örneğe bakın.

Aşağıdaki örnekte, zamanı biçimlendirmek için farklı biçimleri nasıl kullanacağımızı göstereceğiz.

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()));
  
  
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - Tarih ve Saati Biçimlendirme

DateFormat sınıfı, tarih ve saati birlikte biçimlendirmek için çeşitli biçimler sağlar. DateFormat.getDateTimeInstance () yöntemi kullanılacak. Aşağıdaki örneğe bakın.

Aşağıdaki örnekte, tarih ve saati biçimlendirmek için farklı biçimlerin nasıl kullanılacağını göstereceğiz.

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()));
  

   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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 İçselleştirme - SimpleDateFormat Sınıfı

java.text.SimpleDateFormat sınıfı, tarihleri ​​verilen modele göre biçimlendirir. Ayrıca, dizenin belirtilen biçimde tarihi içerdiği dizeden tarihleri ​​ayrıştırmak için kullanılır. SimpleDateFormat sınıfının kullanımına ilişkin aşağıdaki örneğe bakın.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - Yerel ayara özgü SimpleDateFormat

Yerel ayar, SimpleDateFormat sınıfındaki bir desen üzerinde yerel ayara özgü formatlama oluşturmak için kullanılabilir. Yerel ayara özgü SimpleDateFormat sınıfının kullanımına ilişkin aşağıdaki örneğe bakın.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java Internalization - DecimalFormatSymbols Sınıfı

DecimalFormatSymbols sınıfını kullanarak, varsayılan ayırıcı sembolleri, gruplama ayırıcı sembolleri vb. Değiştirilebilir. Aşağıdaki örnek aynı şeyi göstermektedir.

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));
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

126,473.457
126:473;457

Java İçselleştirme - Tarih Biçimi Kalıpları

Tarih biçimlendirme kalıplarında karakterlerin kullanımı aşağıdakilerdir.

Sr.No. Sınıf ve Açıklama
1

G

Era'yı görüntülemek için.

2

y

Yılı görüntülemek için. Geçerli değerler yy, yyyy.

3

M

Ayı görüntülemek için. Geçerli değerler MM, MMM veya MMMMM.

4

d

Ayın gününü görüntülemek için. Geçerli değerler d, dd.

5

h

Günün saatini görüntülemek için (1-12 AM / PM). Geçerli değer hh.

6

H

Günün saatini görüntülemek için (0-23). Geçerli değer HH.

7

m

Saatin dakikasını (0-59) görüntülemek için. Geçerli değer mm.

8

s

Dakikanın saniyesini (0-59) görüntülemek için. Geçerli değer ss.

9

S

Dakika milisaniyesini (0-999) görüntülemek için. Geçerli değer SSS.

10

E

Günü hafta olarak görüntülemek için (örn. Pazartesi, Salı vb.)

11

D

Günü yıl olarak görüntülemek için (1-366).

12

F

Haftanın gününü ay olarak görüntülemek için (örn. Aralık'ın 1 Perşembesi).

13

w

Haftayı yıl içinde görüntülemek için (1-53).

14

W

Haftayı ay olarak görüntülemek için (0-5)

15

a

AM / PM görüntülemek için

16

k

Gün içindeki saati (1-24) görüntülemek için.

17

K

Saati gün içinde görüntülemek için, AM / PM (0-11).

18

z

Saat Dilimini görüntülemek için.

Bu örnekte, tarihleri ​​farklı modellere göre biçimlendiriyoruz.

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));
}
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - UTC

UTC, Koordineli Evrensel Saat anlamına gelir. Zaman standardıdır ve dünya genelinde yaygın olarak kullanılmaktadır. Tüm zaman dilimleri, uzaklık olarak UTC ile karşılaştırmalı olarak hesaplanır. Örneğin, Kopenhag'da saat UTC + 1, UTC saati artı bir saat anlamına gelir. Gün ışığı tasarrufundan bağımsızdır ve veri tabanlarında tarih ve saati saklamak için kullanılmalıdır.

Saat dilimlerinin dönüşümü

Aşağıdaki örnek, çeşitli saat dilimlerinin dönüşümünü gösterecektir. Milisaniye cinsinden günün saatini ve saatini yazdıracağız. Birincisi değişecek ve ikincisi aynı kalacaktır.

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());
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Kullanılabilir Saat Dilimleri

Aşağıdaki örnek, sistemde mevcut olan zaman dilimlerini gösterecektir.

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);
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - Dizeden / Dizeye Unicode Dönüşümü

Java'da metin dahili olarak Unicode formatında saklanır. Giriş / çıkış farklı formattaysa, dönüştürme gereklidir.

Dönüştürmek

Aşağıdaki örnek, bir Unicode Dizesinin UTF8 baytına [] ve UTF8 baytına [] Unicode bayta [] dönüşümünü gösterecektir.

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]);
          
      }
   }
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

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

Java İçselleştirme - Okuyucu / Yazıcıdan / Okuyucuya / Yazıcıya Unicode Dönüştürme

Okuyucu ve Yazar sınıfları, karakter odaklı akış sınıflarıdır. Bunlar, Unicode karakterlerini okumak ve dönüştürmek için kullanılabilir.

Dönüştürmek

Aşağıdaki örnek, Reader ve Writer sınıfları kullanılarak bir Unicode Dizesinin UTF8 baytına [] ve UTF8 baytına [] Unicode bayta [] dönüştürülmesini gösterecektir.

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);
   }  
}

Çıktı

Aşağıdaki sonucu yazdıracaktır.

This is a sample text
This is a sample text
Yazdır