/* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * * * (C) Copyright IBM Corp. 1998 - All Rights Reserved * * Portions copyright (c) 2007 Sun Microsystems, Inc. * All Rights Reserved. * * The original version of this source code and documentation * is copyrighted and owned by Taligent, Inc., a wholly-owned * subsidiary of IBM. These materials are provided under terms * of a License Agreement between Taligent and Sun. This technology * is protected by multiple US and International patents. * * This notice and attribution to Taligent may not be removed. * Taligent is a registered trademark of Taligent, Inc. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. Please refer to the file "copyright.html" * for further important copyright and licensing information. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. * */ /* @bug 4123370 4091969 4118731 4182108 4778440 The "at-test" tag was removed from this file, because there's no way to run this test in an automated test harness. It depends on having various different locales installed on the machine, and on Windows it depends on the user going to the "Regional Settings" control panel and changing the settings before running the test for each bug. We can run this test manually from time to time to ensure that there has been no regression, but it's not automated. -- lwerner, 7/6/98 INSTRUCTIONS FOR RUNNING THIS TEST ================================== This test is designed to check for problems in the JVM code that initializes the default Java locale (the locale returned by Locale.getDefault()) from the system locale settings (or from command-line arguments). Since detecting a regression usually requires setting the environment up in some way prior to running the test, this is a manual test. The test simply prints out the internal ID and display name of the default Java locale, and the name of the default Java character encoding. It passes if these are what you expect them to be, and fails if they're not. Bug #4091969: To test for bug #4091969, run this test on a Korean-localized version of Windows, with the default locale set to Korean. You should get "ko_KR" as the default locale. Bug #4123370: One part of bug #4123370 duplicates bug #4091969, which is covered by the instructions above. To test the unique part of bug #4123370, use the "Regional Settings" control panel to set the currect locale to each of the different Spanish-language locales. Run this test once for each Spanish-language locale. You should see the appropriate locale ID and name for each locale. Both "Spanish - Traditional Sort" and "Spanish - Modern Sort" should produce "es_ES" and "Spanish (Spain)". Bug #4118731: The basic issue here was that we had changed so that calling getDisplayName() on a locale that didn't include a country code no longer included a country name (instead of picking a default country name, as before), which is the right answer. The problem is we weren't always getting back a system default locale from Solaris that includes a country code, even though we should. To test this, set the system default locale to a locale that doesn't include a country code, such as "fr" or "de", using (in the C shell) "setenv LC_ALL fr" (or whatever the locale ID you want is). Running PrintDefaultLocale should still produce a locale ID, and a locale display name, that include a country code (and country name). [Remember to make sure the locale is actually installed first.] To test the specific complaint in the bug, use "setenv LC_ALL ja". Also pay special attention to Solaris locale IDs that don't match the corresponding java locales, such as "su" (which should turn into "fi_FI"), "cz" (which should turn into "cs_CZ"), and "en_UK" (which should turn into "en_GB"). Bug #4079167: Test this bug the same way you test bug #4118731. Set the locale to each of the specified locale IDs (e.g., "setenv LC_ALL japanese"), and then run PrintDefaultLocale. You should get the following results: Solaris ID Java ID Java display name Encoding ========== ======= ==================== ======== japanese ja_JP Japanese (Japan) -- korean ko_KR Korean (South Korea) -- tchinese zh_TW Chinese (Taiwan) -- big5 zh_TW Chinese (Taiwan) Big5 (Where "--" is marked for "encoding," the result isn't important-- it's the default encoding for that locale, which we don't test. It should be something plausible. Also note that this test presupposed you actually have locales with these names installed on your system.) Bug #4154559, 4778440: Set the locale to Norwegian (Bokmal) and Norwegian (Nynorsk) using the Regional Settings control panel on Windows. For each setting, run this program. You should see no_NO and no_NO_NY, respectively. Bug #4182108: Test this bug the same way you test bug #4118731. Set the locale to each of the specified locale IDs (e.g., "setenv LC_ALL japanese"), and then run PrintDefaultLocale. You should get the following results: Solaris ID Java ID Encoding ========== ======= ======== cz cs_CZ -- su fi_FI -- fr.ISO8859-15 fr_FR ISO8859-15 fr.ISO8859-15@euro fr_FR ISO8859-15 Where "--" is marked for "encoding," the result isn't important-- it's the default encoding for that locale, which we don't test. It should be something plausible. Also note that this test presupposed you actually have locales with these names installed on your system. As of this writing, there is a bug in Solaris or in the 8859-15/euro patch for 2.6 (Solaris patch 106842-01) which causes nl_langinfo() to return the wrong value for 8859-15 locales. As a result, the encoding returned by this test is currency ISO8859-1 for 8859-15 locales. Bug #4778440, 5005601, 5074060, 5107154: Run the "deflocale" tool found in "data" directory (deflocale.sh on Unix, deflocale.exe on Windows), and check the following: 4778440: Check that iw_IL is the default locale if the OS's locale is Hebrew, and in_ID for Indonesian. 5005601: For Norwegian locales, no_NO is selected for Bokmal, and no_NO_NY is selected for Nynorsk. 5074060, 5107154: On Windows XP ServicePack 2, check the default locales for the following Windows locales. Compare with the golden data (deflocale.win): Bengali - India Croatian - Bosnia and Herzegovina Bosnian - Bosnia and Herzegovina Serbian (Latin) - Bosnia and Herzegovina Serbian (Cyrillic) - Bosnia and Herzegovina Welsh - United Kingdom Maori - New Zealand Malayalam - India Maltese - Malta Quechua - Bolivia Quechua - Ecuador Quechua - Peru Setswana (Tswana) - South Africa isiXhosa (Xhosa) - South Africa isiZulu ( Zulu) - South Africa Sesotho sa Leboa (Northern Sotho) - South Africa Sami, Northern - Norway Sami, Northern - Sweden Sami, Northern - Finland Sami, Lule - Norway Sami, Lule - Sweden Sami, Southern - Norway Sami, Southern - Sweden Sami, Skolt - Finland Sami, Inari - Finland Bug # 6409997: Run the "deflocale.exe" tool found in "data" directory on Windows Vista. It contains the following new locales: Tajik (Cyrillic) (Tajikistan) - 1251 Upper Sorbian (Germany) - 1252 Turkmen (Turkmenistan) - 1250 Oriya (India) - 0 Assamese (India) - 0 Tibetan (People's Republic of China) - 0 Khmer (Cambodia) - 0 Lao (Lao P.D.R.) - 0 Sinhala (Sri Lanka) - 0 Inuktitut (Canada) - 0 Amharic (Ethiopia) - 0 Hausa (Latin) (Nigeria) - 1252 Yoruba (Nigeria) - 1252 Bashkir (Russia) - 1251 Greenlandic (Greenland) - 1252 Igbo (Nigeria) - 1252 Yi (People's Republic of China) - 0 Breton (France) - 1252 Uighur (People's Republic of China) - 1256 Occitan (France) - 1252 Corsican (France) - 1252 Alsatian (France) - 1252 Yakut (Russia) - 1251 K'iche (Guatemala) - 1252 Kinyarwanda (Rwanda) - 1252 Wolof (Senegal) - 1252 Dari (Afghanistan) - 1256 Lower Sorbian (Germany) - 1252 Bengali (Bangladesh) - 0 Mongolian (Traditional Mongolian) (People's Republic of China) - 0 Tamazight (Latin) (Algeria) - 1252 English (India) - 1252 English (Malaysia) - 1252 English (Singapore) - 1252 Spanish (United States) - 1252 */ import java.nio.charset.Charset; import java.util.Locale; public class PrintDefaultLocale { public static void main(String[] args) { System.out.printf("default locale: ID: %s, Name: %s\n", Locale.getDefault().toString(), Locale.getDefault().getDisplayName(Locale.US)); System.out.printf("display locale: ID: %s, Name: %s\n", Locale.getDefault(Locale.Category.DISPLAY).toString(), Locale.getDefault(Locale.Category.DISPLAY).getDisplayName(Locale.US)); System.out.printf("format locale: ID: %s, Name: %s\n", Locale.getDefault(Locale.Category.FORMAT).toString(), Locale.getDefault(Locale.Category.FORMAT).getDisplayName(Locale.US)); System.out.printf("default charset: %s\n", Charset.defaultCharset()); } }