]> granicus.if.org Git - icu/commitdiff
ICU-12156 C, for locale disp name trailing parts, use internal methods that don't...
authorPeter Edberg <pedberg@unicode.org>
Sun, 28 Feb 2016 20:13:37 +0000 (20:13 +0000)
committerPeter Edberg <pedberg@unicode.org>
Sun, 28 Feb 2016 20:13:37 +0000 (20:13 +0000)
X-SVN-Rev: 38423

icu4c/source/common/locdspnm.cpp
icu4c/source/test/intltest/locnmtst.cpp

index f86d9090c2637a245f3f6455338a67805a78550c..952e66773ac292119780d0ac87a7ffca1c761da8 100644 (file)
@@ -12,7 +12,7 @@
 #include "unicode/locdspnm.h"
 #include "unicode/simpleformatter.h"
 #include "unicode/ures.h"
-#include "unicode/udisplaycontext.h" 
+#include "unicode/udisplaycontext.h"
 #include "unicode/brkiter.h"
 #include "unicode/ucurr.h"
 #include "cmemory.h"
@@ -278,7 +278,7 @@ class LocaleDisplayNamesImpl : public LocaleDisplayNames {
     SimpleFormatter format;
     SimpleFormatter keyTypeFormat;
     UDisplayContext capitalizationContext;
-    BreakIterator* capitalizationBrkIter; 
+    BreakIterator* capitalizationBrkIter;
     static UMutex  capitalizationBrkIterLock;
     UnicodeString formatOpenParen;
     UnicodeString formatReplaceOpenParen;
@@ -334,6 +334,12 @@ private:
                                 UnicodeString& result) const;
     UnicodeString& appendWithSep(UnicodeString& buffer, const UnicodeString& src) const;
     UnicodeString& adjustForUsageAndContext(CapContextUsage usage, UnicodeString& result) const;
+    UnicodeString& scriptDisplayName(const char* script, UnicodeString& result, UBool skipAdjust) const;
+    UnicodeString& regionDisplayName(const char* region, UnicodeString& result, UBool skipAdjust) const;
+    UnicodeString& variantDisplayName(const char* variant, UnicodeString& result, UBool skipAdjust) const;
+    UnicodeString& keyDisplayName(const char* key, UnicodeString& result, UBool skipAdjust) const;
+    UnicodeString& keyValueDisplayName(const char* key, const char* value,
+                                        UnicodeString& result, UBool skipAdjust) const;
     void initialize(void);
 };
 
@@ -587,13 +593,13 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& locale,
   UErrorCode status = U_ZERO_ERROR;
 
   if (hasScript) {
-    resultRemainder.append(scriptDisplayName(script, temp));
+    resultRemainder.append(scriptDisplayName(script, temp, TRUE));
   }
   if (hasCountry) {
-    appendWithSep(resultRemainder, regionDisplayName(country, temp));
+    appendWithSep(resultRemainder, regionDisplayName(country, temp, TRUE));
   }
   if (hasVariant) {
-    appendWithSep(resultRemainder, variantDisplayName(variant, temp));
+    appendWithSep(resultRemainder, variantDisplayName(variant, temp, TRUE));
   }
   resultRemainder.findAndReplace(formatOpenParen, formatReplaceOpenParen);
   resultRemainder.findAndReplace(formatCloseParen, formatReplaceCloseParen);
@@ -608,10 +614,10 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& locale,
       if (U_FAILURE(status)) {
         return result;
       }
-      keyDisplayName(key, temp);
+      keyDisplayName(key, temp, TRUE);
       temp.findAndReplace(formatOpenParen, formatReplaceOpenParen);
       temp.findAndReplace(formatCloseParen, formatReplaceCloseParen);
-      keyValueDisplayName(key, value, temp2);
+      keyValueDisplayName(key, value, temp2, TRUE);
       temp2.findAndReplace(formatOpenParen, formatReplaceOpenParen);
       temp2.findAndReplace(formatCloseParen, formatReplaceCloseParen);
       if (temp2 != UnicodeString(value, -1, US_INV)) {
@@ -686,56 +692,86 @@ LocaleDisplayNamesImpl::languageDisplayName(const char* lang,
 
 UnicodeString&
 LocaleDisplayNamesImpl::scriptDisplayName(const char* script,
-                                          UnicodeString& result) const {
+                                          UnicodeString& result,
+                                          UBool skipAdjust) const {
     if (nameLength == UDISPCTX_LENGTH_SHORT) {
         langData.get("Scripts%short", script, result);
         if (!result.isBogus()) {
-            return adjustForUsageAndContext(kCapContextUsageScript, result);
+            return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageScript, result);
         }
     }
     langData.get("Scripts", script, result);
-    return adjustForUsageAndContext(kCapContextUsageScript, result);
+    return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageScript, result);
+}
+
+UnicodeString&
+LocaleDisplayNamesImpl::scriptDisplayName(const char* script,
+                                          UnicodeString& result) const {
+    return scriptDisplayName(script, result, FALSE);
 }
 
 UnicodeString&
 LocaleDisplayNamesImpl::scriptDisplayName(UScriptCode scriptCode,
                                           UnicodeString& result) const {
-    return scriptDisplayName(uscript_getName(scriptCode), result);
+    return scriptDisplayName(uscript_getName(scriptCode), result, FALSE);
 }
 
 UnicodeString&
 LocaleDisplayNamesImpl::regionDisplayName(const char* region,
-                                          UnicodeString& result) const {
+                                          UnicodeString& result,
+                                          UBool skipAdjust) const {
     if (nameLength == UDISPCTX_LENGTH_SHORT) {
         regionData.get("Countries%short", region, result);
         if (!result.isBogus()) {
-            return adjustForUsageAndContext(kCapContextUsageTerritory, result);
+            return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageTerritory, result);
         }
     }
     regionData.get("Countries", region, result);
-    return adjustForUsageAndContext(kCapContextUsageTerritory, result);
+    return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageTerritory, result);
+}
+
+UnicodeString&
+LocaleDisplayNamesImpl::regionDisplayName(const char* region,
+                                          UnicodeString& result) const {
+    return regionDisplayName(region, result, FALSE);
 }
 
+
 UnicodeString&
 LocaleDisplayNamesImpl::variantDisplayName(const char* variant,
-                                           UnicodeString& result) const {
+                                           UnicodeString& result,
+                                           UBool skipAdjust) const {
     // don't have a resource for short variant names
     langData.get("Variants", variant, result);
-    return adjustForUsageAndContext(kCapContextUsageVariant, result);
+    return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageVariant, result);
+}
+
+UnicodeString&
+LocaleDisplayNamesImpl::variantDisplayName(const char* variant,
+                                           UnicodeString& result) const {
+    return variantDisplayName(variant, result, FALSE);
 }
 
 UnicodeString&
 LocaleDisplayNamesImpl::keyDisplayName(const char* key,
-                                       UnicodeString& result) const {
+                                       UnicodeString& result,
+                                       UBool skipAdjust) const {
     // don't have a resource for short key names
     langData.get("Keys", key, result);
-    return adjustForUsageAndContext(kCapContextUsageKey, result);
+    return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKey, result);
+}
+
+UnicodeString&
+LocaleDisplayNamesImpl::keyDisplayName(const char* key,
+                                       UnicodeString& result) const {
+    return keyDisplayName(key, result, FALSE);
 }
 
 UnicodeString&
 LocaleDisplayNamesImpl::keyValueDisplayName(const char* key,
                                             const char* value,
-                                            UnicodeString& result) const {
+                                            UnicodeString& result,
+                                            UBool skipAdjust) const {
     if (uprv_strcmp(key, "currency") == 0) {
         // ICU4C does not have ICU4J CurrencyDisplayInfo equivalent for now.
         UErrorCode sts = U_ZERO_ERROR;
@@ -750,17 +786,24 @@ LocaleDisplayNamesImpl::keyValueDisplayName(const char* key,
             return result;
         }
         result.setTo(currencyName, len);
-        return adjustForUsageAndContext(kCapContextUsageKeyValue, result);
+        return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKeyValue, result);
     }
 
     if (nameLength == UDISPCTX_LENGTH_SHORT) {
         langData.get("Types%short", key, value, result);
         if (!result.isBogus()) {
-            return adjustForUsageAndContext(kCapContextUsageKeyValue, result);
+            return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKeyValue, result);
         }
     }
     langData.get("Types", key, value, result);
-    return adjustForUsageAndContext(kCapContextUsageKeyValue, result);
+    return skipAdjust? result: adjustForUsageAndContext(kCapContextUsageKeyValue, result);
+}
+
+UnicodeString&
+LocaleDisplayNamesImpl::keyValueDisplayName(const char* key,
+                                            const char* value,
+                                            UnicodeString& result) const {
+    return keyValueDisplayName(key, value, result, FALSE);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
index f749b82a94f75f7e23e69a028708627914133fc5..ec583e23bd6a85fe1bf9be75cb5e7e207c3aafd0 100644 (file)
@@ -1,6 +1,6 @@
 /*********************************************************************
  * COPYRIGHT:
- * Copyright (c) 2010-2014, International Business Machines Corporation and
+ * Copyright (c) 2010-2016, International Business Machines Corporation and
  * others. All Rights Reserved.
  *********************************************************************/
 
@@ -61,7 +61,7 @@ LocaleDisplayNamesTest::LocaleDisplayNamesTest() {
 LocaleDisplayNamesTest::~LocaleDisplayNamesTest() {
 }
 
-void LocaleDisplayNamesTest::runIndexedTest(int32_t index, UBool exec, const char* &name, 
+void LocaleDisplayNamesTest::runIndexedTest(int32_t index, UBool exec, const char* &name,
                         char* /*par*/) {
     switch (index) {
 #if !UCONFIG_NO_FORMATTING
@@ -231,7 +231,7 @@ void LocaleDisplayNamesTest::TestUldnComponents() {
   }
 
   {
-    int32_t len = uldn_scriptCodeDisplayName(ldn, USCRIPT_TRADITIONAL_HAN, result, kMaxResultSize, 
+    int32_t len = uldn_scriptCodeDisplayName(ldn, USCRIPT_TRADITIONAL_HAN, result, kMaxResultSize,
                          &status);
     UnicodeString str(result, len, kMaxResultSize);
     test_assert_equal("Traditionell", str);
@@ -256,7 +256,7 @@ void LocaleDisplayNamesTest::TestUldnComponents() {
   }
 
   {
-    int32_t len = uldn_keyValueDisplayName(ldn, "calendar", "gregorian", result, 
+    int32_t len = uldn_keyValueDisplayName(ldn, "calendar", "gregorian", result,
                        kMaxResultSize, &status);
     UnicodeString str(result, len, kMaxResultSize);
     test_assert_equal("Gregorianischer Kalender", str);
@@ -275,10 +275,14 @@ typedef struct {
     const UChar * result;
 } LocNameDispContextItem;
 
-static char en[]    = "en";
+static char en[] = "en";
+static char en_cabud[] = "en@calendar=buddhist";
 static char en_GB[] = "en_GB";
+static char uz_Latn[] = "uz_Latn";
 
 static UChar daFor_en[]       = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"engelsk"
+static UChar daFor_en_cabud[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
+                                 0x6B,0x61,0x6C,0x65,0x6E,0x64,0x65,0x72,0x29,0}; //"engelsk (buddhistisk kalender)"
 static UChar daFor_en_GB[]    = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"engelsk (Storbritannien)"
 static UChar daFor_en_GB_S[]  = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x55,0x4B,0x29,0}; //"engelsk (UK)"
 static UChar daFor_en_GB_D[]  = {0x62,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"britisk engelsk"
@@ -286,8 +290,11 @@ static UChar esFor_en[]       = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0}; //"ingles" wi
 static UChar esFor_en_GB[]    = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"ingles (Reino Unido)" ...
 static UChar esFor_en_GB_S[]  = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x55,0x29,0}; //"ingles (RU)" ...
 static UChar esFor_en_GB_D[]  = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x62,0x72,0x69,0x74,0xE1,0x6E,0x69,0x63,0x6F,0}; //"ingles britanico" with acute on the e, a
+static UChar ruFor_uz_Latn[]  = {0x0443,0x0437,0x0431,0x0435,0x043A,0x0441,0x043A,0x0438,0x0439,0x20,0x28,0x043B,0x0430,0x0442,0x0438,0x043D,0x0438,0x0446,0x0430,0x29,0}; // all lowercase
 #if !UCONFIG_NO_BREAK_ITERATION
 static UChar daFor_en_T[]     = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Engelsk"
+static UChar daFor_en_cabudT[]= {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
+                                 0x6B,0x61,0x6C,0x65,0x6E,0x64,0x65,0x72,0x29,0}; //"Engelsk (buddhistisk kalender)"
 static UChar daFor_en_GB_T[]  = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"Engelsk (Storbritannien)"
 static UChar daFor_en_GB_ST[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x55,0x4B,0x29,0}; //"Engelsk (UK)"
 static UChar daFor_en_GB_DT[] = {0x42,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Britisk engelsk"
@@ -295,10 +302,12 @@ static UChar esFor_en_T[]     = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0}; //"Ingles" wi
 static UChar esFor_en_GB_T[]  = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"Ingles (Reino Unido)" ...
 static UChar esFor_en_GB_ST[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x55,0x29,0}; //"Ingles (RU)" ...
 static UChar esFor_en_GB_DT[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x62,0x72,0x69,0x74,0xE1,0x6E,0x69,0x63,0x6F,0}; //"Ingles britanico" with acute on the e, a
+static UChar ruFor_uz_Latn_T[]= {0x0423,0x0437,0x0431,0x0435,0x043A,0x0441,0x043A,0x0438,0x0439,0x20,0x28,0x043B,0x0430,0x0442,0x0438,0x043D,0x0438,0x0446,0x0430,0x29,0}; // first char upper
 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
 
 static const LocNameDispContextItem ctxtItems[] = {
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en,    daFor_en },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabud },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_S },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_D },
@@ -306,8 +315,10 @@ static const LocNameDispContextItem ctxtItems[] = {
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_SHORT,  en_GB, esFor_en_GB_S },
     { "es", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_D },
+    { "ru", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,    UDISPCTX_LENGTH_FULL,   uz_Latn, ruFor_uz_Latn },
 #if !UCONFIG_NO_BREAK_ITERATION
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en,    daFor_en_T },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabudT },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_T },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_ST },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_DT },
@@ -315,8 +326,10 @@ static const LocNameDispContextItem ctxtItems[] = {
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_T },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_SHORT,  en_GB, esFor_en_GB_ST },
     { "es", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_DT },
+    { "ru", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UDISPCTX_LENGTH_FULL,   uz_Latn, ruFor_uz_Latn_T },
 
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en,    daFor_en_T },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabudT },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_T },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_ST },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_DT },
@@ -324,8 +337,10 @@ static const LocNameDispContextItem ctxtItems[] = {
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_T },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_SHORT,  en_GB, esFor_en_GB_ST },
     { "es", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_DT },
+    { "ru", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,       UDISPCTX_LENGTH_FULL,   uz_Latn, ruFor_uz_Latn_T },
 
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en,    daFor_en },
+    { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_cabud, daFor_en_cabud },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB },
     { "da", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_SHORT,  en_GB, daFor_en_GB_S },
     { "da", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, daFor_en_GB_D },
@@ -333,6 +348,7 @@ static const LocNameDispContextItem ctxtItems[] = {
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_T },
     { "es", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_SHORT,  en_GB, esFor_en_GB_ST },
     { "es", UDISPCTX_DIALECT_NAMES,  UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   en_GB, esFor_en_GB_DT },
+    { "ru", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE,            UDISPCTX_LENGTH_FULL,   uz_Latn, ruFor_uz_Latn_T },
  #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
     { NULL, (UDisplayContext)0,      (UDisplayContext)0,                                (UDisplayContext)0,     NULL,  NULL }
 };