Documente Academic
Documente Profesional
Documente Cultură
Clasa Locale
Text
Numar si valuta
1. Clasa Locale
Crearea obiectelor java.util.Locale se face prin invocarea constructorului clasei
Locale si transmitand acestuia codul limbii si codul tarii. Aceste coduri se gasesc la
adresele:
ISO Language Code: http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt
ISO Country Code: http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
Locale l1 = new Locale("en","US");
Locale l2 = new Locale("en","GB");
Obiectul de tip Locale este doar un identificator care se transmite altor obiecte pentru
a realiza o afisare conform specificatiilor tarii. Putem afisa aceste specificatii pentru
un anumit tip de obiect, de exemplu pentru data calendaristica vom afisa toate
formatele cunoscute de catre acesta. Lista formatelor se obtine de la
clasa DateFormat cu metoda getAvailableLocales().:
import java.util.*;
import java.text.*;
public class Available {
static public void main(String[] args) {
Locale list[] = DateFormat.getAvailableLocales();
for (int i = 0; i < list.length; i++) {
System.out.println(list[i].getLanguage() + " " +
list[i].getCountry());
}
}
}
In cadrul unei aplicatii putem seta aceste proprietati pentru fiecare obiect al aplicatiei.
2. Text
Sa presupunem va dorim sa scriem un program care afiseaza diferite tipuri de mesaje
in limba materna a utilizatorului. La inceput sa presupunem ca avem trei tipuri de
mesaje: salutare de bun-venit, intrebare de politete, salutare de ramas bun. Un
program prntru engleza ar arata in modul urmator:
System.out.println("Hello.");
System.out.println("How are you?");
System.out.println("Goodbye.");
if (args.length != 2) {
language = new String("en");
country = new String("US");
} else {
language = new String(args[0]);
country = new String(args[1]);
}
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale(language, country);
messages =
ResourceBundle.getBundle("MessagesBundle",currentLocale);
System.out.println(messages.getString("greetings"));
System.out.println(messages.getString("inquiry"));
System.out.println(messages.getString("farewell"));
}
}
MessagesBundle_de_DE.properties
greetings = Hallo.
farewell = Tsch.
inquiry = Wie geht's?
MessagesBundle_en_US.properties
greetings = Hello.
farewell = Goodbye.
inquiry = How are you?
MessagesBundle_fr_FR.properties
greetings = Bonjour.
farewell = Au revoir.
inquiry = Comment allez-vous?
3. Numar si valuta
Pentru afisarea numerelor si a valutei se utilizeaza clasa NumberFormat. Aceasta
clasa are metode pentru obtinerea unor obiecte care se utilizeaza la formatarea
numerelor respectiv a valutei. De exemplu formatarea unui numar real conform
specificatiilor locale se realizeaza in modul urmator:
Presupunem ca dorim sa afisam numarul double d = new Double( 123456.789
1. Se construieste un obiect Locale: Locale l = new Locale("en","GB");
2. Se obtine obiectul de formatare: NumberFormat formatter =
NumberFormat.getNumberInstance( l );
3. Se formateaza numarul:
formatter.format( numar );
import java.util.*;
import java.text.*;
public class NumberFormatDemo {
static public void displayNumber(Locale currentLocale) {
Integer quantity = new Integer(123456);
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String quantityOut;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
quantityOut = numberFormatter.format(quantity);
amountOut = numberFormatter.format(amount);
System.out.println(quantityOut + "
System.out.println(amountOut + "
" + currentLocale.toString());
" + currentLocale.toString());
}
static public void displayCurrency(Locale currentLocale) {
System.out.println(currencyOut + "
" + currentLocale.toString());
" + currentLocale.toString());
}
static public void main(String[] args) {
Locale[] locales = {
new Locale("fr","FR"),
new Locale("de","DE"),
new Locale("en","US")
};
for (int i = 0; i < locales.length; i++) {
System.out.println();
displayNumber(locales[i]);
displayCurrency(locales[i]);
displayPercent(locales[i]);
}
}