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