-
Enhancement
-
Resolution: Fixed
-
P4
-
1.3.0
-
beta
-
x86
-
windows_nt
Name: mc57594 Date: 01/08/2000
This bug is related to Sun bug#4193744
Through the fix for bug#4193744 we are able to support 13 of the new
23 locales for Windows 2000. An examination of the JDK 1.3R source
code shows that 12 Windows 2000 locales still require VM support.
As a side note the 13 LCID just happened to have been defined (but not
enabled) in the Windows NT 4.0 product.
As part of this bug, I'm including a fix to the
\src\win32\native\common\locale_str.h file to provide proper support
for the Windows 2000 locales. See the fix at the bottom of this bug
report.
The remaining 12 locales that require support are:
Armenian
Azeri (Cyrillic)
Azeri (Latin)
Georgian
Kazakh
Konkani
Marathi
Sanskrit
Tamil
Tatar
Uzbek (Cyrillic)
Uzbek (Latin)
An up-to-date list of the Microsoft locales can be found at:
http://www.microsoft.com/globaldev/FAQs/Locales.asp
This list has been confirmed to match the locales available using the
production release of Windows 2000 (just received from Microsoft).
Beware that some searches on 'locale' or 'LCID' on the Microsoft web
site may reveal outdated or incorrect lists of locales/LCIDs.
Note that the fix below does not include Azeri or Uzbek. Microsoft
NLSAPI code indicates that the Cyrillic forms of these locales have
the same country return as the Latin forms. Most likely a variant will
be required to differentiate these. I leave the implementation of
support for these four locales to Sun.
Also, I'm inlcuding a fix for the Urdu locale which is still missing
a country. The Microsoft NLSAPI code indicates that the country for
the 0x0420 Urdu LCID is Pakistan (ISO-3166 abbreviation PK).
Confusingly enough, the Microsoft SDK documents sublanguages for
Urdu-India as well as Urdu-Pakistan. As I was unable to find the
correct LCID for Urdu-India, it is not included in this fix.
The following code should be replaced in the file \src\win32\native\common\locale_str.h:
/* mappings for real Windows LCID values */
0x0401, "ar_SA",
0x0402, "bg_BG",
0x0403, "ca_ES",
0x0404, "zh_TW",
0x0405, "cs_CZ",
0x0406, "da_DK",
0x0407, "de_DE",
0x0408, "el_GR",
0x0409, "en_US",
0x040a, "es_ES", /* (traditional sort) */
0x040b, "fi_FI",
0x040c, "fr_FR",
0x040d, "iw_IL",
0x040e, "hu_HU",
0x040f, "is_IS",
0x0410, "it_IT",
0x0411, "ja_JP",
0x0412, "ko_KR",
0x0413, "nl_NL",
0x0414, "no_NO",
0x0415, "pl_PL",
0x0416, "pt_BR",
0x0417, "rm_CH",
0x0418, "ro_RO",
0x0419, "ru_RU",
0x041a, "hr_HR",
0x041b, "sk_SK",
0x041c, "sq_AL",
0x041d, "sv_SE",
0x041e, "th_TH",
0x041f, "tr_TR",
0x0420, "ur_PK", /* The country for this Urdu LCID is Pakistan */
0x0421, "in_ID",
0x0422, "uk_UA",
0x0423, "be_BY",
0x0424, "sl_SI",
0x0425, "et_EE",
0x0426, "lv_LV",
0x0427, "lt_LT",
0x0429, "fa_IR",
0x042a, "vi_VN",
0x042b, "hy_AM", /* added for Windows 2000 Armenian locale */
/* 0x042c, "az_AZ", may need a variant for Windows 2000 Azeri (Cyrillic) locale */
0x042d, "eu_ES",
/* 0x042e, "??", no ISO-639 abbreviation for Sorbian */
0x042f, "mk_MK",
/* 0x0430, "??", no ISO-639 abbreviation for Sutu */
0x0431, "ts", /* (country?) */
0x0432, "tn_BW",
/* 0x0433, "??", no ISO-639 abbreviation for Venda */
0x0434, "xh", /* (country?) */
0x0435, "zu", /* (country?) */
0x0436, "af_ZA",
0x0437, "ka_GE", /* added for Windows 2000 Georgian locale */
0x0438, "fo_FO",
0x0439, "hi_IN",
0x043a, "mt_MT",
/* 0x043b, "??", no ISO-639 abbreviation for Sami */
0x043c, "gd_GB",
0x043d, "yi", /* (country?) */
0x043e, "ms_MY",
0x043f, "kk_KZ", /* added for Windows 2000 Kazakh locale */
0x0441, "sw_KE",
/* 0x0443, "uz_UZ", may need a variant for Windows 2000 Uzbek (Cyrillic) locale */
0x0444, "tt", /* no ISO 3166 abbreviation exists for Windows 2000 Tatar (Tatarstan) locale */
0x0449, "ta_IN", /* added for Windows 2000 Tamil locale */
0x044e, "mr_IN", /* added for Windows 2000 Marathi locale */
0x044f, "sa_IN", /* added for Windows 2000 Sanskrit locale */
/* 0x0457, "??_IN", no ISO-639 abbreviation for Windows 2000 Konkani locale */
0x0801, "ar_IQ",
0x0804, "zh_CN",
0x0807, "de_CH",
0x0809, "en_GB",
0x080a, "es_MX",
0x080c, "fr_BE",
0x0810, "it_CH",
0x0812, "ko_KR",
0x0813, "nl_BE",
0x0814, "no_NO_NY",
0x0816, "pt_PT",
0x0818, "ro_MD",
0x0819, "ru_MD",
0x081a, "sh_YU",
0x081d, "sv_FI",
/* 0x082c, "az_AZ", may need a variant for Windows 2000 Azeri (Latin) locale */
0x083c, "ga_IE",
0x083e, "ms_BN",
/* 0x0843, "uz_UZ", may need a variant for Windows 2000 Uzbek (Latin) locale */
0x0c01, "ar_EG",
0x0c04, "zh_HK",
0x0c07, "de_AT",
0x0c09, "en_AU",
0x0c0a, "es_ES", /* (modern sort) */
0x0c0c, "fr_CA",
0x0c1a, "sr_YU",
0x1001, "ar_LY",
0x1004, "zh_SG",
0x1007, "de_LU",
0x1009, "en_CA",
0x100a, "es_GT",
0x100c, "fr_CH",
0x1401, "ar_DZ",
0x1404, "zh_MO",
0x1407, "de_LI",
0x1409, "en_NZ",
0x140a, "es_CR",
0x140c, "fr_LU",
0x1801, "ar_MA",
0x1809, "en_IE",
0x180a, "es_PA",
0x180c, "fr_MC",
0x1c01, "ar_TN",
0x1c09, "en_ZA",
0x1c0a, "es_DO",
0x2001, "ar_OM",
0x2009, "en_JM",
0x200a, "es_VE",
0x2401, "ar_YE",
0x2409, "en", /* ("Caribbean", which could be any of many countries) */
0x240a, "es_CO",
0x2801, "ar_SY",
0x2809, "en_BZ",
0x280a, "es_PE",
0x2c01, "ar_JO",
0x2c09, "en_TT",
0x2c0a, "es_AR",
0x3001, "ar_LB",
0x3009, "en_ZW",
0x300a, "es_EC",
0x3401, "ar_KW",
0x3409, "en_PH",
0x340a, "es_CL",
0x3801, "ar_AE",
0x380a, "es_UY",
0x3c01, "ar_BH",
0x3c0a, "es_PY",
0x4001, "ar_QA",
0x400a, "es_BO",
0x440a, "es_SV",
0x480a, "es_HN",
0x4c0a, "es_NI",
0x500a, "es_PR"
};
(Review ID: 99681)
======================================================================