/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.text.DateFormat; import java.text.DateFormatSymbols; import java.text.Normalizer; import java.util.Arrays; import java.util.Calendar; import java.util.Currency; import java.util.Date; import java.util.Locale; import java.util.MissingResourceException; import java.util.TimeZone; /** * Exercise some locale-table-driven stuff. */ public class Main { public static void main(String[] args) { try { testCalendar(); } catch (Exception ex) { ex.printStackTrace(); } try { testDateFormatSymbols(); } catch (Exception ex) { ex.printStackTrace(); } try { testCurrency(); } catch (Exception ex) { ex.printStackTrace(); } try { testNormalizer(); } catch (Exception ex) { ex.printStackTrace(); } try { testIso3(); } catch (Exception ex) { ex.printStackTrace(); } } static void testCalendar() { TimeZone tz = TimeZone.getTimeZone("GMT"); Locale usa = new Locale("en", "US"); Calendar usaCal = Calendar.getInstance(tz, usa); usaCal.clear(); // don't want current date/time usaCal.set(2012, Calendar.JANUARY, 1); Date when = usaCal.getTime(); DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL, usa); fmt.setTimeZone(tz); // defaults to local TZ; force GMT System.out.println("USA(" + fmt.getTimeZone().getID() + "): " + fmt.format(when)); System.out.println("USA: first=" + usaCal.getFirstDayOfWeek() + ", name=" + usaCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, usa)); Locale france = new Locale("fr", "FR"); Calendar franceCal = Calendar.getInstance(tz, france); franceCal.clear(); franceCal.set(2012, Calendar.JANUARY, 2); when = franceCal.getTime(); fmt = DateFormat.getDateInstance(DateFormat.FULL, usa); fmt.setTimeZone(tz); // defaults to local TZ; force GMT System.out.println("France(" + fmt.getTimeZone().getID() + "): " + fmt.format(when)); System.out.println("France: first=" + franceCal.getFirstDayOfWeek() + ", name=" + franceCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, france)); } static void testDateFormatSymbols() { Locale usa = new Locale("en", "US"); DateFormatSymbols syms = DateFormatSymbols.getInstance(usa); String[] list = syms.getAmPmStrings(); System.out.println("USA dfs: " + Arrays.deepToString(list)); } static void testCurrency() { Locale usa = new Locale("en", "US"); Currency dollars = Currency.getInstance(usa); System.out.println(usa.toString() + ": " + dollars.toString() + " " + dollars.getSymbol() + dollars.getDefaultFractionDigits()); Locale japan = new Locale("jp", "JP"); Currency yen = Currency.getInstance(japan); System.out.println(japan.toString() + ": " + yen.toString() + " " + yen.getSymbol() + yen.getDefaultFractionDigits()); } static void testNormalizer() { String composed = "Bl\u00c1ah"; String decomposed = "Bl\u0041\u0301ah"; String res; res = Normalizer.normalize(composed, Normalizer.Form.NFD); if (!decomposed.equals(res)) { System.err.println("Bad decompose: '" + composed + "' --> '" + res + "'"); } res = Normalizer.normalize(decomposed, Normalizer.Form.NFC); if (!composed.equals(res)) { System.err.println("Bad compose: '" + decomposed + "' --> '" + res + "'"); } System.out.println("Normalizer passed"); } /* * Test that we can set and get an ISO3 language code. Support for this * is expected by the Android framework. */ static void testIso3() { Locale loc; loc = new Locale("en", "US"); System.out.println("loc: " + loc); System.out.println(" iso3=" + loc.getISO3Language()); loc = new Locale("eng", "USA"); System.out.println("loc: " + loc); try { System.out.println(" iso3=" + loc.getISO3Language()); } catch (MissingResourceException mre) { System.err.println("couldn't get iso3 language"); } } }