|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Text_bel_BY.properties
В файлах свойств информация должна быть организована по принципу: key1 = value1 key2 = value2 … Например: str1 = To be or not to be? Перечисление всех ключей в виде Enumeration<String> можно получить вызовом метода getKeys(). Конкретное значение по ключу извлекается методом String getString(String key). В следующем примере в зависимости от выбора пользователя известная фраза будет выведена на одном из трех языков. // пример # 16: поддержка различных языков: HamletInternational.java package chapt8; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Locale; import java.util.ResourceBundle;
public class HamletInternational { public static void main(String[] args) { String country = "", language = ""; System. out. println("1 - Английский"); System. out. println("2 - Белорусский"); System. out. println("Любой символ - Русский"); char i = 0; try { i = (char) System. in. read(); } catch (IOException e1) { e1.printStackTrace(); } switch (i) { case '1': country = "US"; language = "EN"; break; case '2': country = "BY"; language = "BEL"; } Locale current = new Locale(language, country); ResourceBundle rb = ResourceBundle. getBundle ("text", current); try { String st = rb.getString("str1"); String s1 = new String(st.getBytes("ISO-8859-1"), "UTF-8"); System. out. println(s1);
st = rb.getString("str2"); String s2 = new String(st.getBytes("ISO-8859-1"), "UTF-8"); System. out. println(s2); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } Файл text_en_US.properties содержит следующую информацию: str1 = To be or not to be? str2 = This is a question. Файл text_bel_BY.properties: str1 = Быць або не быць? str2 = Вось у чым пытанне. Файл text.properties: str1 = Быть или не быть? str2 = Вот в чём вопрос. Интернационализация чисел Стандарты представления дат и чисел в различных странах могут существенно отличаться. Например, в Германии строка "1.234,567" воспринимается как «одна тысяча двести тридцать четыре целых пятьсот шестьдесят семь тысячных», для русских и французов данная строка просто непонятна и не может представлять число. Чтобы сделать такую информацию конвертируемой в различные региональные стандарты, применяются возможности класса java.text.NumberFormat. Первым делом следует задать или получить текущий объект Locale с шаблонами регионального стандарта и создать с его помощью объект форматирования NumberFormat. Например: NumberFormat nf = NumberFormat.getInstance(new Locale("RU")); с конкретными региональными установками или с установленными по умолчанию для приложения: NumberFormat.getInstance(); Далее для преобразования строки в число и обратно используются методы Number parse(String source) и String format(double number) соответственно. В предлагаемом примере производится преобразование строки, содержащей число, в три различных региональных стандарта, а затем одно из чисел преобразуется из одного стандарта в два других. // пример # 17: региональные представления чисел: DemoNumberFormat.java package chapt07; import java.text.*; import java.util.Locale;
public class DemoNumberFormat { public static void main(String args[]) { NumberFormat nfGe = NumberFormat. getInstance (Locale.GERMAN); NumberFormat nfUs = NumberFormat. getInstance (Locale.US); NumberFormat nfFr = NumberFormat. getInstance (Locale.FRANCE);
double iGe=0, iUs=0, iFr =0; String str = "1.234,567"; //строка, представляющая число try { //преобразование строки в германский стандарт iGe = nfGe.parse(str).doubleValue(); //преобразование строки в американский стандарт iUs = nfUs.parse(str).doubleValue(); //преобразование строки во французский стандарт iFr = nfFr.parse(str).doubleValue(); } catch (ParseException e) { e.printStackTrace(); } System. out. printf("iGe = %f\niUs = %f\niFr = %f", iGe, iUs, iFr);
//преобразование числа из германского в американский стандарт String sUs = nfUs.format(iGe); //преобразование числа из германского во французский стандарт String sFr = nfFr.format(iGe); System. out. println("\n" + sUs + "\n" + sFr); } } Результат работы программы: iGe = 1234,567000 iUs = 1,234000 iFr = 1,000000 1,234.567 1 234,567 Аналогично выполняются переходы от одного регионального стандарта Интернационализация дат Учитывая исторически сложившиеся способы отображения даты и времени в различных странах и регионах мира, в языке создан механизм поддержки всех национальных особенностей. Эту задачу решает класс java.text.DateFormat. С его помощью учтены: необходимость представления месяцев и дней недели на национальном языке; специфические последовательности в записи даты и часовых поясов; возможности использования различных календарей. Процесс получения объекта, отвечающего за обработку регионального стандарта даты, похож на создание объекта, отвечающего за национальные представления чисел, а именно: DateFormat df = DateFormat.getDateInstance( DateFormat.MEDIUM, new Locale("BY")); или по умолчанию: DateFormat.getDateInstance(); Константа DateFormat.MEDIUM указывает на то, что будут представлены только дата и время без указания часового пояса. Для указания часового пояса используются константы класса DateFormat со значением LONG и FULL. Константа SHORT применяется для сокращенной записи даты, где месяц представлен в виде своего порядкового номера. Для получения даты в виде строки для заданного региона используется метод String format(Date date) в виде: String dat = df.format(new Date()); С помощью метода Date parse(String source) можно преобразовать переданную в виде строки дату в объектное представление конкретного регионального формата, например: String str = "April 3, 2006"; Date d = df.parse(str); Класс содержит большое количество методов, позволяющих выполнять разнообразные манипуляции с датой и временем. В качестве примера рассмотрено преобразование заданной даты в различные региональные форматы. // пример # 18: региональные представления дат: DemoDateFormat.java package chapt07; import java.text.DateFormat; import java.text.ParseException; import java.util.*;
public class DemoDateFormat { public static void main(String[] args) { DateFormat df = DateFormat. getDateInstance (DateFormat.MEDIUM, Locale.US); Date d = null; String str = "April 3, 2006"; try { d = df.parse(str); System. out. println(d); } catch (ParseException e) { e.printStackTrace(); } df = DateFormat.getDateInstance(DateFormat.FULL, new Locale("ru","RU")); System. out. println(df.format(d));
df = DateFormat.getDateInstance(DateFormat.FULL,Locale.GERMAN); System. out. println(df.format(d));
d = new Date(); //загрузка в объект df текущего времени df = DateFormat. getTimeInstance (); //представление и вывод времени в текущем формате дат System. out. println(df.format(d)); } } Результат работы программы: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.) |