availableRegions = new ArrayList<Set<Region>>(RegionType.values().length);
- UResourceBundle regionCodes = null;
UResourceBundle metadataAlias = null;
UResourceBundle territoryAlias = null;
UResourceBundle codeMappings = null;
+ UResourceBundle idValidity = null;
+ UResourceBundle regionList = null;
+ UResourceBundle regionRegular = null;
+ UResourceBundle regionMacro = null;
+ UResourceBundle regionUnknown = null;
UResourceBundle worldContainment = null;
UResourceBundle territoryContainment = null;
UResourceBundle groupingContainment = null;
UResourceBundle metadata = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"metadata",ICUResourceBundle.ICU_DATA_CLASS_LOADER);
- regionCodes = metadata.get("regionCodes");
metadataAlias = metadata.get("alias");
territoryAlias = metadataAlias.get("territory");
UResourceBundle supplementalData = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
codeMappings = supplementalData.get("codeMappings");
+ idValidity = supplementalData.get("idValidity");
+ regionList = idValidity.get("region");
+ regionRegular = regionList.get("regular");
+ regionMacro = regionList.get("macroregion");
+ regionUnknown = regionList.get("unknown");
territoryContainment = supplementalData.get("territoryContainment");
worldContainment = territoryContainment.get("001");
List<String> continents = Arrays.asList(continentsArr);
String[] groupingArr = groupingContainment.getStringArray();
List<String> groupings = Arrays.asList(groupingArr);
+ List<String> regionCodes = new ArrayList<String>();
+
+ List<String> allRegions = new ArrayList<String>();
+ allRegions.addAll(Arrays.asList(regionRegular.getStringArray()));
+ allRegions.addAll(Arrays.asList(regionMacro.getStringArray()));
+ allRegions.add(regionUnknown.getString());
+
+ for ( String r : allRegions ) {
+ int rangeMarkerLocation = r.indexOf("~");
+ if ( rangeMarkerLocation > 0 ) {
+ StringBuilder regionName = new StringBuilder(r);
+ char endRange = regionName.charAt(rangeMarkerLocation+1);
+ regionName.setLength(rangeMarkerLocation);
+ char lastChar = regionName.charAt(rangeMarkerLocation-1);
+ while ( lastChar <= endRange ) {
+ String newRegion = regionName.toString();
+ regionCodes.add(newRegion);
+ lastChar++;
+ regionName.setCharAt(rangeMarkerLocation-1,lastChar);
+ }
+ } else {
+ regionCodes.add(r);
+ }
+ }
+
+ regions = new ArrayList<Region>(regionCodes.size());
// First process the region codes and create the master array of regions.
- int regionCodeSize = regionCodes.getSize();
- regions = new ArrayList<Region>(regionCodeSize);
- for ( int i = 0 ; i < regionCodeSize ; i++ ) {
+ for ( String id : regionCodes) {
Region r = new Region();
- String id = regionCodes.getString(i);
r.id = id;
r.type = RegionType.TERRITORY; // Only temporary - figure out the real type later once the aliases are known.
regionIDMap.put(id, r);
version https://git-lfs.github.com/spec/v1
-oid sha256:ef58b4d03abe9975e6edb9990ce439d8e3345ad4740a7cfc871e1c5045438f59
-size 11299928
+oid sha256:07f7c95a1453a22602e169b5d16ce285225bd5067b0759c133c3fb309238bc72
+size 11633190
version https://git-lfs.github.com/spec/v1
-oid sha256:1889854278bb9b526156ed79f109aa33f11081a0e2631fdda3345a82dcc27aea
+oid sha256:4fd48501a8a484fee5f8644d688bb758e94e422de926cae0b939fa69eaefebeb
size 90027
version https://git-lfs.github.com/spec/v1
-oid sha256:9fdfa662068712422ee7612f2b56b41b7248ad647b36fa074b91fe2e73024cf8
-size 810159
+oid sha256:52c9ceed6daf4f37d174ef340e1fbf1d4aac64e2d8e78bcc916811e4e4876e65
+size 811232
{{"iw", "iw-US", "no", "no-Cyrl", "in", "in-YU"},
{"Hébreu (États-Unis)", "עברית (ארצות הברית)", "iw_US", "iw_US"},
{"Hébreu (Israël)", "עברית (ישראל)", "iw", "iw_IL"},
- {"Indonésien (Indonésie)", "Bahasa Indonesia (Indonesia)", "in", "in_ID"},
- {"Indonésien (Serbie)", "Bahasa Indonesia (Serbia)", "in_YU", "in_YU"},
+ {"Indonésien (Indonésie)", "Indonesia (Indonesia)", "in", "in_ID"},
+ {"Indonésien (Serbie)", "Indonesia (Serbia)", "in_YU", "in_YU"},
{"Norvégien (cyrillique)", "Norsk (kyrillisk)", "no_Cyrl", "no_Cyrl"},
{"Norvégien (latin)", "Norsk (latinsk)", "no", "no_Latn"},
},
/*
*******************************************************************************
- * Copyright (C) 1996-2014, Google, International Business Machines Corporation and
+ * Copyright (C) 1996-2015, Google, International Business Machines Corporation and
* others. All Rights Reserved. *
*******************************************************************************
*/
};
Object[][] JapaneseTestData = {
- {1234f, "1.2千"},
+ {1234f, "1200"},
{12345f, "1.2万"},
{123456f, "12万"},
{1234567f, "120万"},
Object[][] SkTestDataLong = {
{1000, "1 tis\u00edc"},
- {1572, "1,6 tis\u00edc"},
- {5184, "5,2 tis\u00edc"},
+ {1572, "1,6 tis\u00edca"},
+ {5184, "5,2 tis\u00edca"},
};
Object[][] SwahiliTestDataNegative = {
{ "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+01:00", "+1:00" },
{ "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", GMT_BG+"+1", "+1:00" },
{ "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u043e \u043b\u044f\u0442\u043d\u043e \u0447\u0430\u0441\u043e\u0432\u043e \u0432\u0440\u0435\u043c\u0435", "+1:00" },
- { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u0412\u0435\u043b\u0438\u043a\u043e\u0431\u0440\u0438\u0442\u0430\u043d\u0438\u044f", "Europe/London" },
- { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u0412\u0435\u043b\u0438\u043a\u043e\u0431\u0440\u0438\u0442\u0430\u043d\u0438\u044f", "Europe/London" },
+ { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e\u0442\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "Europe/London" },
+ { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e\u0442\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "Europe/London" },
{ "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
{ "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-03:00", "-3:00" },
TimeZone tz = TimeZone.getTimeZone("PST");
dfFrench.setTimeZone(tz);
dfUS.setTimeZone(tz);
- String expectedFRENCH_JDK12 = "lundi 15 septembre 1997 00:00:00 heure d\u2019\u00E9t\u00E9 du Pacifique";
+ String expectedFRENCH_JDK12 = "lundi 15 septembre 1997 \u00E0 00:00:00 heure d\u2019\u00E9t\u00E9 du Pacifique";
//String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
String expectedUS = "Monday, September 15, 1997 at 12:00:00 AM Pacific Daylight Time";
logln("Date set to : " + testDate);
"EEEEEE d MMM y", "fp", "2013 01 13 0:00:00", "s\u00F6 13 jan. 2013", "2013 01 13 0:00:00",
"EEEEEE d MMM y", "fp", "2013 01 16 0:00:00", "on 16 jan. 2013", "2013 01 16 0:00:00",
"EEEEEE d", "fp", "1970 01 17 0:00:00", "l\u00F6 17", "1970 01 17 0:00:00",
- "cccccc d", "fp", "1970 01 17 0:00:00", "L\u00F6 17", "1970 01 17 0:00:00",
- "cccccc", "fp", "1970 01 03 0:00:00", "L\u00F6", "1970 01 03 0:00:00",
+ "cccccc d", "fp", "1970 01 17 0:00:00", "l\u00F6 17", "1970 01 17 0:00:00",
+ "cccccc", "fp", "1970 01 03 0:00:00", "l\u00F6", "1970 01 03 0:00:00",
};
expect(EN_DATA, new Locale("en", "", ""));
"ccccc", "1970 01 02 0:00:00", "P",
"ccccc", "1970 01 03 0:00:00", "S",
- "h:mm a", "2015 01 01 10:00:00", "10:00 dopoledne",
- "h:mm a", "2015 01 01 22:00:00", "10:00 odpoledne",
+ "h:mm a", "2015 01 01 10:00:00", "10:00 dop.",
+ "h:mm a", "2015 01 01 22:00:00", "10:00 odp.",
"h:mm aaaaa", "2015 01 01 10:00:00", "10:00 dop.",
"h:mm aaaaa", "2015 01 01 22:00:00", "10:00 odp.",
};
"h:mm a", "2015 01 01 10:00:00", "10:00 a. m.",
"h:mm a", "2015 01 01 22:00:00", "10:00 p. m.",
- "h:mm aaaaa", "2015 01 01 10:00:00", "10:00 a.m.",
- "h:mm aaaaa", "2015 01 01 22:00:00", "10:00 p.m.",
+ "h:mm aaaaa", "2015 01 01 10:00:00", "10:00 a. m.",
+ "h:mm aaaaa", "2015 01 01 22:00:00", "10:00 p. m.",
};
expectFormat(EN_DATA, new Locale("en", "", ""));
new ULocale("ru"),
new String[] {"yM", "01.1999"},
- new String[] {"yMMM", "\u044F\u043D\u0432. 1999"},
+ new String[] {"yMMM", "\u044F\u043D\u0432. 1999 \u0433."},
new String[] {"yMd", "13.01.1999"},
new String[] {"yMMMd", "13 \u044F\u043D\u0432. 1999 \u0433."},
new String[] {"Md", "13.01"},
new String[] {"MMMd", "13 \u044F\u043D\u0432."},
new String[] {"MMMMd", "13 \u044F\u043D\u0432\u0430\u0440\u044F"},
new String[] {"yQQQ", "1-\u0439 \u043A\u0432. 1999 \u0433."},
- new String[] {"hhmm", "11:58 PM"},
+ new String[] {"hhmm", "11:58 \u041F\u041F"},
new String[] {"HHmm", "23:58"},
new String[] {"jjmm", "23:58"},
new String[] {"mmss", "58:59"},
- new String[] {"yyyyMMMM", "\u044F\u043D\u0432\u0430\u0440\u044C 1999"},
- new String[] {"MMMEd", "\u0421\u0440, 13 \u044F\u043D\u0432."},
- new String[] {"Ed", "\u0421\u0440, 13"},
+ new String[] {"yyyyMMMM", "\u044F\u043D\u0432\u0430\u0440\u044C 1999 \u0433."},
+ new String[] {"MMMEd", "\u0441\u0440, 13 \u044F\u043D\u0432."},
+ new String[] {"Ed", "\u0441\u0440, 13"},
new String[] {"jmmssSSS", "23:58:59,123"},
new String[] {"JJmm", "23:58"},
new TestOptionsItem( "en", "Hmm", "HH:mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
new TestOptionsItem( "en", "HHmm", "HH:mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
new TestOptionsItem( "en", "hhmm", "hh:mm a", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
- new TestOptionsItem( "be", "Hmm", "HH.mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
- new TestOptionsItem( "be", "HHmm", "HH.mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
- new TestOptionsItem( "be", "hhmm", "h.mm a", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
- new TestOptionsItem( "be", "Hmm", "H.mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
- new TestOptionsItem( "be", "HHmm", "HH.mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
- new TestOptionsItem( "be", "hhmm", "hh.mm a", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
+ new TestOptionsItem( "da", "Hmm", "HH.mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
+ new TestOptionsItem( "da", "HHmm", "HH.mm", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
+ new TestOptionsItem( "da", "hhmm", "h.mm a", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
+ new TestOptionsItem( "da", "Hmm", "H.mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
+ new TestOptionsItem( "da", "HHmm", "HH.mm", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
+ new TestOptionsItem( "da", "hhmm", "hh.mm a", DateTimePatternGenerator.MATCH_HOUR_FIELD_LENGTH ),
//
new TestOptionsItem( "en", "yyyy", "yyyy", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
new TestOptionsItem( "en", "YYYY", "YYYY", DateTimePatternGenerator.MATCH_NO_OPTIONS ),
{ULocale.ENGLISH, FormatWidth.WIDE, "2 miles, 1 foot, 2.3 inches"},
{ULocale.ENGLISH, FormatWidth.SHORT, "2 mi, 1 ft, 2.3 in"},
{ULocale.ENGLISH, FormatWidth.NARROW, "2mi 1\u2032 2.3\u2033"},
- {russia, FormatWidth.WIDE, "2 \u043C\u0438\u043B\u0438, 1 \u0444\u0443\u0442 \u0438 2,3 \u0434\u044E\u0439\u043C\u0430"},
- {russia, FormatWidth.SHORT, "2 \u043C\u0438\u043B\u0438, 1 \u0444\u0443\u0442, 2,3 \u0434\u044E\u0439\u043C."},
+ {russia, FormatWidth.WIDE, "2 \u043C\u0438\u043B\u0438 1 \u0444\u0443\u0442 \u0438 2,3 \u0434\u044E\u0439\u043C\u0430"},
+ {russia, FormatWidth.SHORT, "2 \u043C\u0438\u043B\u0438 1 \u0444\u0443\u0442 \u0438 2,3 \u0434\u044E\u0439\u043C."},
{russia, FormatWidth.NARROW, "2 \u043C\u0438\u043B\u044C 1 \u0444\u0443\u0442 2,3 \u0434\u044E\u0439\u043C\u0430"},
};
for (Object[] row : data) {
{FormatWidth.WIDE, 1.0, MeasureUnit.MINUTE, "1 pound per minute", DONT_CARE, 0, 0},
{FormatWidth.WIDE, 2.0, MeasureUnit.MINUTE, "2 pounds per minute", DONT_CARE, 0, 0},
// per unit
- {FormatWidth.SHORT, 1.0, MeasureUnit.SECOND, "1 lbps", DONT_CARE, 0, 0},
- {FormatWidth.SHORT, 2.0, MeasureUnit.SECOND, "2 lbsps", DONT_CARE, 0, 0},
+ {FormatWidth.SHORT, 1.0, MeasureUnit.SECOND, "1 lb/s", DONT_CARE, 0, 0},
+ {FormatWidth.SHORT, 2.0, MeasureUnit.SECOND, "2 lb/s", DONT_CARE, 0, 0},
// compound
{FormatWidth.SHORT, 1.0, MeasureUnit.MINUTE, "1 lb/min", DONT_CARE, 0, 0},
- {FormatWidth.SHORT, 2.0, MeasureUnit.MINUTE, "2 lbs/min", DONT_CARE, 0, 0},
+ {FormatWidth.SHORT, 2.0, MeasureUnit.MINUTE, "2 lb/min", DONT_CARE, 0, 0},
// per unit
{FormatWidth.NARROW, 1.0, MeasureUnit.SECOND, "1#/s", DONT_CARE, 0, 0},
{FormatWidth.NARROW, 2.0, MeasureUnit.SECOND, "2#/s", DONT_CARE, 0, 0},
// compound
- {FormatWidth.NARROW, 1.0, MeasureUnit.MINUTE, "1#/m", DONT_CARE, 0, 0},
- {FormatWidth.NARROW, 2.0, MeasureUnit.MINUTE, "2#/m", DONT_CARE, 0, 0},
+ {FormatWidth.NARROW, 1.0, MeasureUnit.MINUTE, "1#/min", DONT_CARE, 0, 0},
+ {FormatWidth.NARROW, 2.0, MeasureUnit.MINUTE, "2#/min", DONT_CARE, 0, 0},
// field positions
- {FormatWidth.SHORT, 23.3, MeasureUnit.SECOND, "23.3 lbsps", NumberFormat.Field.DECIMAL_SEPARATOR, 2, 3},
- {FormatWidth.SHORT, 23.3, MeasureUnit.SECOND, "23.3 lbsps", NumberFormat.Field.INTEGER, 0, 2},
- {FormatWidth.SHORT, 23.3, MeasureUnit.MINUTE, "23.3 lbs/min", NumberFormat.Field.DECIMAL_SEPARATOR, 2, 3},
- {FormatWidth.SHORT, 23.3, MeasureUnit.MINUTE, "23.3 lbs/min", NumberFormat.Field.INTEGER, 0, 2},
+ {FormatWidth.SHORT, 23.3, MeasureUnit.SECOND, "23.3 lb/s", NumberFormat.Field.DECIMAL_SEPARATOR, 2, 3},
+ {FormatWidth.SHORT, 23.3, MeasureUnit.SECOND, "23.3 lb/s", NumberFormat.Field.INTEGER, 0, 2},
+ {FormatWidth.SHORT, 23.3, MeasureUnit.MINUTE, "23.3 lb/min", NumberFormat.Field.DECIMAL_SEPARATOR, 2, 3},
+ {FormatWidth.SHORT, 23.3, MeasureUnit.MINUTE, "23.3 lb/min", NumberFormat.Field.INTEGER, 0, 2},
};
/**
* Port From: ICU4C v1.8.1 : format : NumberFormatTest
- * Source File: $ICU4CRoot/source/test/intltest/numfmtst.cpp
+ * Source File: $ICU4oot/source/test/intltest/numfmtst.cpp
**/
package com.ibm.icu.dev.test.format;
{"en_US", "1", "USD", "$1.00", "USD1.00", "1.00 US dollars"},
{"en_US", "1234.56", "USD", "$1,234.56", "USD1,234.56", "1,234.56 US dollars"},
{"en_US", "-1234.56", "USD", "-$1,234.56", "-USD1,234.56", "-1,234.56 US dollars"},
- {"zh_CN", "1", "USD", "US$\u00A01.00", "USD\u00A01.00", "1.00美元"},
- {"zh_CN", "1234.56", "USD", "US$\u00A01,234.56", "USD\u00A01,234.56", "1,234.56美元"},
- {"zh_CN", "1", "CNY", "¥\u00A01.00", "CNY\u00A01.00", "1.00人民币"},
- {"zh_CN", "1234.56", "CNY", "¥\u00A01,234.56", "CNY\u00A01,234.56", "1,234.56人民币"},
+ {"zh_CN", "1", "USD", "US$1.00", "USD1.00", "1.00美元"},
+ {"zh_CN", "1234.56", "USD", "US$1,234.56", "USD1,234.56", "1,234.56美元"},
+ {"zh_CN", "1", "CNY", "¥1.00", "CNY1.00", "1.00人民币"},
+ {"zh_CN", "1234.56", "CNY", "¥1,234.56", "CNY1,234.56", "1,234.56人民币"},
{"ru_RU", "1", "RUB", "1,00 \u20BD", "1,00 RUB", "1,00 российского рубля"},
{"ru_RU", "2", "RUB", "2,00 \u20BD", "2,00 RUB", "2,00 российского рубля"},
{"ru_RU", "5", "RUB", "5,00 \u20BD", "5,00 RUB", "5,00 российского рубля"},
{"root", "-1.23", "USD", "-US$ 1.23", "-USD 1.23", "-1.23 USD"},
{"root@numbers=latn", "-1.23", "USD", "-US$ 1.23", "-USD 1.23", "-1.23 USD"}, // ensure that the root locale is still used with modifiers
{"root@numbers=arab", "-1.23", "USD", "\u200F-US$ ١٫٢٣", "\u200F-USD ١٫٢٣", "\u200F-١٫٢٣ USD"}, // ensure that the root locale is still used with modifiers
- {"es_AR", "1", "INR", "INR1,00", "INR1,00", "1,00 rupia india"},
+ {"es_AR", "1", "INR", "INR\u00A01,00", "INR\u00A01,00", "1,00 rupia india"},
{"ar_EG", "1", "USD", "US$ ١٫٠٠", "USD ١٫٠٠", "١٫٠٠ دولار أمريكي"},
};
// starting with CLDR 2.0
String[] DATA = {
"es", "CO", "", "1.250,75",
- "es", "CR", "", "1.250,75",
"es", "ES", "", "1.250,75",
"es", "GQ", "", "1.250,75",
"es", "MX", "", "1,250.75",
/*
*******************************************************************************
- * Copyright (C) 2007-2014, International Business Machines Corporation and
+ * Copyright (C) 2007-2015, International Business Machines Corporation and
* others. All Rights Reserved.
*******************************************************************************
*/
for (PluralType type : PluralType.values()) {
PluralRules rules = PluralRules.forLocale(locale, type);
for (SampleType sampleType : SampleType.values()) {
- if (sampleType == SampleType.DECIMAL && type == PluralType.ORDINAL) {
+ if (type == PluralType.ORDINAL) {
logKnownIssue("10783", "Fix issues with isLimited vs computeLimited on ordinals");
continue;
}
}
if(!hasLocalizedCountryFor(locales[i], locales[i]) &&
!(locales[i].getLanguage().equals("ti") || // TODO: restore test for ti_* when cldrbug 3058 is fixed
- ((locales[i].getBaseName().equals("sah_RU") || locales[i].getBaseName().equals("smn_FI")) && logKnownIssue("cldrbug:7872", "No localized region name for sah_RU, smn_FI")))) {
+ ((locales[i].getBaseName().equals("lrc_IQ") || locales[i].getBaseName().equals("lrc_IR") || locales[i].getBaseName().equals("nus_SS")) && logKnownIssue("cldrbug:8903", "No localized region name for lrc_IQ, lrc_IR, nus_SS")))) {
errln("Could not get native localized country for " + locales[i]);
hasLocalizedCountryFor(locales[i], locales[i]);
}
h[1].put("collation", "\u6392\u5E8F");
h[1].put("calendar", "\u65E5\u5386");
h[1].put("currency", "\u8D27\u5E01");
- h[1].put("phonebook", "\u7535\u8BDD\u7C3F\u6392\u5E8F\u987A\u5E8F");
+ h[1].put("phonebook", "\u7535\u8BDD\u7C3F\u6392\u5E8F");
h[1].put("pinyin", "\u62FC\u97F3\u6392\u5E8F");
h[1].put("stroke", "\u7B14\u5212\u987A\u5E8F");
- h[1].put("traditional", "\u4F20\u7EDF\u6392\u5E8F\u987A\u5E8F");
+ h[1].put("traditional", "\u4F20\u7EDF\u6392\u5E8F");
h[1].put("japanese", "\u65E5\u672C\u65E5\u5386");
h[1].put("buddhist", "\u4F5B\u6559\u65E5\u5386");
h[1].put("islamic", "\u4F0A\u65AF\u5170\u65E5\u5386");