From: Peter Edberg Date: Sun, 7 Sep 2014 06:22:43 +0000 (+0000) Subject: ICU-10968 Add DisplayContext.Type.DISPLAY_LENGTH and values for it, implement support (J) X-Git-Tag: milestone-59-0-1~1602 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fb4d6e12223c0ba5e2fe00d4c06f06a8c0c333e1;p=icu ICU-10968 Add DisplayContext.Type.DISPLAY_LENGTH and values for it, implement support (J) X-SVN-Rev: 36378 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java index e818ff0539e..37724c178fc 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/LocaleDisplayNamesImpl.java @@ -26,6 +26,7 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { private final ULocale locale; private final DialectHandling dialectHandling; private final DisplayContext capitalization; + private final DisplayContext nameLength; private final DataTable langData; private final DataTable regionData; private final MessageFormat separatorFormat; @@ -93,6 +94,7 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { public LocaleDisplayNamesImpl(ULocale locale, DisplayContext... contexts) { DialectHandling dialectHandling = DialectHandling.STANDARD_NAMES; DisplayContext capitalization = DisplayContext.CAPITALIZATION_NONE; + DisplayContext nameLength = DisplayContext.LENGTH_FULL; for (DisplayContext contextItem : contexts) { switch (contextItem.type()) { case DIALECT_HANDLING: @@ -102,6 +104,9 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { case CAPITALIZATION: capitalization = contextItem; break; + case DISPLAY_LENGTH: + nameLength = contextItem; + break; default: break; } @@ -109,6 +114,7 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { this.dialectHandling = dialectHandling; this.capitalization = capitalization; + this.nameLength = nameLength; this.langData = LangDataTables.impl.get(locale); this.regionData = RegionDataTables.impl.get(locale); this.locale = ULocale.ROOT.equals(langData.getLocale()) ? regionData.getLocale() : @@ -207,6 +213,9 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { case CAPITALIZATION: result = capitalization; break; + case DISPLAY_LENGTH: + result = nameLength; + break; default: result = DisplayContext.STANDARD_NAMES; // hmm, we should do something else here break; @@ -367,6 +376,12 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { } private String localeIdName(String localeId) { + if (nameLength == DisplayContext.LENGTH_SHORT) { + String locIdName = langData.get("LanguagesShort", localeId); + if (!locIdName.equals(localeId)) { + return locIdName; + } + } return langData.get("Languages", localeId); } @@ -376,13 +391,25 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { if (lang.equals("root") || lang.indexOf('_') != -1) { return lang; } + if (nameLength == DisplayContext.LENGTH_SHORT) { + String langName = langData.get("LanguagesShort", lang); + if (!langName.equals(lang)) { + return adjustForUsageAndContext(CapitalizationContextUsage.LANGUAGE, langName); + } + } return adjustForUsageAndContext(CapitalizationContextUsage.LANGUAGE, langData.get("Languages", lang)); } @Override public String scriptDisplayName(String script) { String str = langData.get("Scripts%stand-alone", script); - if (str.equals(script) ) { + if (str.equals(script)) { + if (nameLength == DisplayContext.LENGTH_SHORT) { + str = langData.get("Scripts%short", script); + if (!str.equals(script)) { + return adjustForUsageAndContext(CapitalizationContextUsage.SCRIPT, str); + } + } str = langData.get("Scripts", script); } return adjustForUsageAndContext(CapitalizationContextUsage.SCRIPT, str); @@ -390,31 +417,51 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { @Override public String scriptDisplayNameInContext(String script) { + if (nameLength == DisplayContext.LENGTH_SHORT) { + String scriptName = langData.get("Scripts%short", script); + if (!scriptName.equals(script)) { + return adjustForUsageAndContext(CapitalizationContextUsage.SCRIPT, scriptName); + } + } return adjustForUsageAndContext(CapitalizationContextUsage.SCRIPT, langData.get("Scripts", script)); } @Override public String scriptDisplayName(int scriptCode) { - return adjustForUsageAndContext(CapitalizationContextUsage.SCRIPT, scriptDisplayName(UScript.getShortName(scriptCode))); + return scriptDisplayName(UScript.getShortName(scriptCode)); } @Override public String regionDisplayName(String region) { + if (nameLength == DisplayContext.LENGTH_SHORT) { + String regionName = regionData.get("CountriesShort", region); + if (!regionName.equals(region)) { + return adjustForUsageAndContext(CapitalizationContextUsage.TERRITORY, regionName); + } + } return adjustForUsageAndContext(CapitalizationContextUsage.TERRITORY, regionData.get("Countries", region)); } @Override public String variantDisplayName(String variant) { + // don't have a resource for short variant names return adjustForUsageAndContext(CapitalizationContextUsage.VARIANT, langData.get("Variants", variant)); } @Override public String keyDisplayName(String key) { + // don't have a resource for short key names return adjustForUsageAndContext(CapitalizationContextUsage.KEY, langData.get("Keys", key)); } @Override public String keyValueDisplayName(String key, String value) { + if (nameLength == DisplayContext.LENGTH_SHORT) { + String keyValueName = langData.get("Types%short", key, value); + if (!keyValueName.equals(value)) { + return adjustForUsageAndContext(CapitalizationContextUsage.KEYVALUE, keyValueName); + } + } return adjustForUsageAndContext(CapitalizationContextUsage.KEYVALUE, langData.get("Types", key, value)); } @@ -514,12 +561,15 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { private ULocale locale; private DialectHandling dialectHandling; private DisplayContext capitalization; + private DisplayContext nameLength; private LocaleDisplayNames cache; public LocaleDisplayNames get(ULocale locale, DialectHandling dialectHandling) { - if (!(dialectHandling == this.dialectHandling && DisplayContext.CAPITALIZATION_NONE == this.capitalization && locale.equals(this.locale))) { + if (!(dialectHandling == this.dialectHandling && DisplayContext.CAPITALIZATION_NONE == this.capitalization && + DisplayContext.LENGTH_FULL == this.nameLength && locale.equals(this.locale))) { this.locale = locale; this.dialectHandling = dialectHandling; this.capitalization = DisplayContext.CAPITALIZATION_NONE; + this.nameLength = DisplayContext.LENGTH_FULL; this.cache = new LocaleDisplayNamesImpl(locale, dialectHandling); } return cache; @@ -527,6 +577,7 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { public LocaleDisplayNames get(ULocale locale, DisplayContext... contexts) { DialectHandling dialectHandlingIn = DialectHandling.STANDARD_NAMES; DisplayContext capitalizationIn = DisplayContext.CAPITALIZATION_NONE; + DisplayContext nameLengthIn = DisplayContext.LENGTH_FULL; for (DisplayContext contextItem : contexts) { switch (contextItem.type()) { case DIALECT_HANDLING: @@ -536,14 +587,19 @@ public class LocaleDisplayNamesImpl extends LocaleDisplayNames { case CAPITALIZATION: capitalizationIn = contextItem; break; + case DISPLAY_LENGTH: + nameLengthIn = contextItem; + break; default: break; } } - if (!(dialectHandlingIn == this.dialectHandling && capitalizationIn == this.capitalization && locale.equals(this.locale))) { + if (!(dialectHandlingIn == this.dialectHandling && capitalizationIn == this.capitalization && + nameLengthIn == this.nameLength && locale.equals(this.locale))) { this.locale = locale; this.dialectHandling = dialectHandlingIn; this.capitalization = capitalizationIn; + this.nameLength = nameLengthIn; this.cache = new LocaleDisplayNamesImpl(locale, contexts); } return cache; diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java index 9ac06c37276..29e970f2cfd 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayContext.java @@ -68,7 +68,27 @@ public enum DisplayContext { * isolated name on a calendar page. * @stable ICU 51 */ - CAPITALIZATION_FOR_STANDALONE(Type.CAPITALIZATION, 4); + CAPITALIZATION_FOR_STANDALONE(Type.CAPITALIZATION, 4), + /** + * ================================ + * Settings for DISPLAY_LENGTH (use one) + */ + /** + * A possible setting for DISPLAY_LENGTH: + * use full names when generating a locale name, + * e.g. "United States" for US. + * @draft ICU 54 + * @provisional This API might change or be removed in a future release. + */ + LENGTH_FULL(Type.DISPLAY_LENGTH, 0), + /** + * A possible setting for DISPLAY_LENGTH: + * use short names when generating a locale name, + * e.g. "U.S." for US. + * @draft ICU 54 + * @provisional This API might change or be removed in a future release. + */ + LENGTH_SHORT(Type.DISPLAY_LENGTH, 1); /** * Type values for DisplayContext @@ -85,7 +105,13 @@ public enum DisplayContext { * CAPITALIZATION_FOR_STANDALONE. * @stable ICU 51 */ - CAPITALIZATION + CAPITALIZATION, + /** + * DISPLAY_LENGTH can be set to LENGTH_FULL or LENGTH_SHORT. + * @draft ICU 54 + * @provisional This API might change or be removed in a future release. + */ + DISPLAY_LENGTH } private final Type type; diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java index a7eb6150332..a9926501596 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java @@ -1033,56 +1033,70 @@ public class ULocaleTest extends TestFmwk { public String displayLocale; public DisplayContext dialectHandling; public DisplayContext capitalization; + public DisplayContext nameLength; public String localeToBeNamed; public String result; - public TestContextItem(String dLoc, DisplayContext dia, DisplayContext cap, String locToName, String res) { + public TestContextItem(String dLoc, DisplayContext dia, DisplayContext cap, DisplayContext nameLen, String locToName, String res) { displayLocale = dLoc; dialectHandling = dia; capitalization = cap; + nameLength = nameLen; localeToBeNamed = locToName; result = res; } }; final TestContextItem[] items = { - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, "en", "engelsk" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, "en", "Engelsk" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, "en", "Engelsk" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, "en", "engelsk" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, "en_US", "engelsk (USA)" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, "en_US", "Engelsk (USA)" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, "en_US", "Engelsk (USA)" ), - new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, "en_US", "engelsk (USA)" ), - new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, "en_US", "amerikansk engelsk" ), - new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, "en_US", "Amerikansk engelsk" ), - new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, "en_US", "Amerikansk engelsk" ), - new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, "en_US", "amerikansk engelsk" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, "en", "ingl\u00E9s" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, "en", "Ingl\u00E9s" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, "en", "Ingl\u00E9s" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, "en", "Ingl\u00E9s" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, "en_US", "ingl\u00E9s (Estados Unidos)" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, "en_US", "Ingl\u00E9s (Estados Unidos)" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, "en_US", "Ingl\u00E9s (Estados Unidos)" ), - new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, "en_US", "Ingl\u00E9s (Estados Unidos)" ), - new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, "en_US", "ingl\u00E9s estadounidense" ), - new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, "en_US", "Ingl\u00E9s estadounidense" ), - new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, "en_US", "Ingl\u00E9s estadounidense" ), - new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, "en_US", "Ingl\u00E9s estadounidense" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en", "engelsk" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en", "Engelsk" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_FULL, "en", "Engelsk" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_FULL, "en", "engelsk" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "engelsk (Storbritannien)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "Engelsk (Storbritannien)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_FULL, "en_GB", "Engelsk (Storbritannien)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_FULL, "en_GB", "engelsk (Storbritannien)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_SHORT, "en_GB", "engelsk (UK)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_SHORT, "en_GB", "Engelsk (UK)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_SHORT, "en_GB", "Engelsk (UK)" ), + new TestContextItem( "da", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_SHORT, "en_GB", "engelsk (UK)" ), + new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "britisk engelsk" ), + new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "Britisk engelsk" ), + new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_FULL, "en_GB", "Britisk engelsk" ), + new TestContextItem( "da", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_FULL, "en_GB", "britisk engelsk" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en", "ingl\u00E9s" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en", "Ingl\u00E9s" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_FULL, "en", "Ingl\u00E9s" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_FULL, "en", "Ingl\u00E9s" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "ingl\u00E9s (Reino Unido)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "Ingl\u00E9s (Reino Unido)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_FULL, "en_GB", "Ingl\u00E9s (Reino Unido)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_FULL, "en_GB", "Ingl\u00E9s (Reino Unido)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_SHORT, "en_GB", "ingl\u00E9s (RU)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_SHORT, "en_GB", "Ingl\u00E9s (RU)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_SHORT, "en_GB", "Ingl\u00E9s (RU)" ), + new TestContextItem( "es", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_SHORT, "en_GB", "Ingl\u00E9s (RU)" ), + new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "ingl\u00E9s brit\u00E1nico" ), + new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, DisplayContext.LENGTH_FULL, "en_GB", "Ingl\u00E9s brit\u00E1nico" ), + new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_UI_LIST_OR_MENU, DisplayContext.LENGTH_FULL, "en_GB", "Ingl\u00E9s brit\u00E1nico" ), + new TestContextItem( "es", DisplayContext.DIALECT_NAMES, DisplayContext.CAPITALIZATION_FOR_STANDALONE, DisplayContext.LENGTH_FULL, "en_GB", "Ingl\u00E9s brit\u00E1nico" ), + new TestContextItem( "en", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "ur@numbers=latn", "Urdu (Western Digits)" ), + new TestContextItem( "en", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_FULL, "ur@numbers=arabext", "Urdu (Extended Arabic-Indic Digits)" ), + new TestContextItem( "en", DisplayContext.STANDARD_NAMES, DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, DisplayContext.LENGTH_SHORT, "ur@numbers=arabext", "Urdu (X Arabic-Indic Digits)" ), }; for (TestContextItem item: items) { ULocale locale = new ULocale(item.displayLocale); - LocaleDisplayNames ldn = LocaleDisplayNames.getInstance(locale, item.dialectHandling, item.capitalization); + LocaleDisplayNames ldn = LocaleDisplayNames.getInstance(locale, item.dialectHandling, item.capitalization, item.nameLength); DisplayContext dialectHandling = ldn.getContext(DisplayContext.Type.DIALECT_HANDLING); DisplayContext capitalization = ldn.getContext(DisplayContext.Type.CAPITALIZATION); - if (dialectHandling != item.dialectHandling || capitalization != item.capitalization) { - errln("FAIL: displayLocale: " + item.displayLocale + ", dialectHandling: " + item.dialectHandling + - ", capitalization: " + item.capitalization + ", localeToName: " + item.localeToBeNamed + - ", => read back dialectHandling: " + dialectHandling + ", capitalization: " + capitalization); + DisplayContext nameLength = ldn.getContext(DisplayContext.Type.DISPLAY_LENGTH); + if (dialectHandling != item.dialectHandling || capitalization != item.capitalization || nameLength != item.nameLength) { + errln("FAIL: displayLoc: " + item.displayLocale + ", dialectNam?: " + item.dialectHandling + + ", capitalize: " + item.capitalization + ", nameLen: " + item.nameLength + ", locToName: " + item.localeToBeNamed + + ", => read back dialectNam?: " + dialectHandling + ", capitalize: " + capitalization + ", nameLen: " + nameLength); } else { String result = ldn.localeDisplayName(item.localeToBeNamed); if (!result.equals(item.result)) { - errln("FAIL: displayLocale: " + item.displayLocale + ", dialectHandling: " + item.dialectHandling + - ", capitalization: " + item.capitalization + ", localeToName: " + item.localeToBeNamed + + errln("FAIL: displayLoc: " + item.displayLocale + ", dialectNam?: " + item.dialectHandling + + ", capitalize: " + item.capitalization + ", nameLen: " + item.nameLength + ", locToName: " + item.localeToBeNamed + ", => expected result: " + item.result + ", got: " + result); } }