@@ -81,26 +81,22 @@ public List<DisplayLanguageDTO> getDisplayNamesFromCLDR(String productName, Stri
81
81
cacheKey = productName + "_" + version + "_" + locale ;
82
82
}
83
83
jsonMap = TranslationCache3 .getCachedObject (CacheName .LANGUAGE , cacheKey , HashMap .class );
84
+ Map <String , String > languageMap = languageList .stream ().collect (Collectors .toMap (language ->language , language -> LocaleUtils .normalizeToLanguageTag (language )));
84
85
if (jsonMap == null ) {
85
86
logger .info ("get data from file" );
86
- languageList = languageList .stream ().map (language -> LocaleUtils .normalizeToLanguageTag (language ))
87
- .collect (Collectors .toList ());
88
87
Map <String , String > tmp = new HashMap <String , String >();
89
88
Map <String , Object > displayNamesMap = null ;
90
89
if (StringUtils .isEmpty (dispLanguage )) {
91
- for (String language : languageList ) {
92
- String diplayLanguage = language ;
93
- if (language .indexOf (ConstantsUnicode .ALT )>0 )//handle languages like en-US-alt-short
94
- diplayLanguage = language .substring (0 , language .indexOf (ConstantsUnicode .ALT ));
95
- normalizedDispLanguage = CommonUtil .getCLDRLocale (diplayLanguage , localePathMap , localeAliasesMap );
90
+ for (String language : languageMap .keySet ()) {
91
+ normalizedDispLanguage = CommonUtil .getCLDRLocale (languageMap .get (language ), localePathMap , localeAliasesMap );
96
92
displayNamesMap = languagesParser .getDisplayNames (normalizedDispLanguage );
97
- getDisplayNameForLanguage (language , displayNamesMap , tmp );
93
+ getDisplayNameForLanguage (language , languageMap . get ( language ), displayNamesMap , tmp );
98
94
}
99
95
} else {
100
96
// VIP-2001:[Get LanguageList API]Can't parse the language(i.e. en-US) which in default content json file.
101
97
displayNamesMap = languagesParser .getDisplayNames (normalizedDispLanguage );
102
- for (String language : languageList ) {
103
- getDisplayNameForLanguage (language , displayNamesMap , tmp );
98
+ for (String language : languageMap . keySet () ) {
99
+ getDisplayNameForLanguage (language , languageMap . get ( language ), displayNamesMap , tmp );
104
100
}
105
101
}
106
102
if (tmp .size () == 0 ) {
@@ -112,33 +108,38 @@ public List<DisplayLanguageDTO> getDisplayNamesFromCLDR(String productName, Stri
112
108
}
113
109
languagesMap = (Map <String , String >) jsonMap .get (LANGUAGE_STR );
114
110
115
- for (String language : languageList ) {
111
+ for (String language : languageMap . keySet () ) {
116
112
Map <String , String > displayNameMap = null ;
117
113
if (StringUtils .isEmpty (dispLanguage )) {
118
- displayNameMap = getDisplayNameMap (language , languagesParser , languagesMap .get (language ));
114
+ normalizedDispLanguage = CommonUtil .getCLDRLocale (languageMap .get (language ), localePathMap , localeAliasesMap );
115
+ displayNameMap = getDisplayNameMap (normalizedDispLanguage , languagesParser , languagesMap .get (language ));
119
116
} else {
120
117
String disPlayLocale = CommonUtil .getCLDRLocale (dispLanguage .replace ("_" , "-" ),
121
118
localePathMap , localeAliasesMap );
122
119
displayNameMap = getDisplayNameMap (disPlayLocale , languagesParser , languagesMap .get (language ));
123
120
}
124
121
dto = new DisplayLanguageDTO ();
122
+ if (language .indexOf (ConstantsUnicode .ALT )>0 ) {//handle languages like en-US-alt-short
123
+ dto .setLanguageTag (language );
124
+ }else {
125
+ dto .setLanguageTag (languageMap .get (language ));
126
+ }
125
127
dto .setDisplayName (languagesMap .get (language ) == null ? "" : languagesMap .get (language ));
126
128
dto .setDisplayName_sentenceBeginning (StringUtils .isEmpty (displayNameMap .get (DISPLAY_NAME_SENTENCE_BEGINNING )) ? dto .getDisplayName () : displayNameMap .get (DISPLAY_NAME_SENTENCE_BEGINNING ));
127
129
dto .setDisplayName_uiListOrMenu (StringUtils .isEmpty (displayNameMap .get (DISPLAY_NAME_UI_LIST )) ? dto .getDisplayName () : displayNameMap .get (DISPLAY_NAME_UI_LIST ));
128
130
dto .setDisplayName_standalone (StringUtils .isEmpty (displayNameMap .get (DISPLAY_NAME_STANDALONE )) ? dto .getDisplayName () : displayNameMap .get (DISPLAY_NAME_STANDALONE ));
129
- dto .setLanguageTag (language );
130
131
dtoList .add (dto );
131
132
}
132
133
return dtoList ;
133
134
}
134
135
135
- private void getDisplayNameForLanguage (String language , Map <String , Object > displayNamesMap , Map <String , String > languageNameMap ){
136
+ private void getDisplayNameForLanguage (String language , String normalizedLanguage , Map <String , Object > displayNamesMap , Map <String , String > languageNameMap ){
136
137
if (displayNamesMap != null && displayNamesMap .get (LANGUAGE_STR ) != null ){
137
138
Map <String , Object > languageMap = (Map <String , Object >) displayNamesMap .get (LANGUAGE_STR );
138
139
if (languageMap != null && languageMap .get (LANGUAGE_STR ) != null && ((Map <String , String >)languageMap .get (LANGUAGE_STR )).get (language ) != null ) {
139
140
languageNameMap .put (language , ((Map <String , String >)languageMap .get (LANGUAGE_STR )).get (language ));
140
141
}else {
141
- languageNameMap .put (language , getDisplayNameByLocaleElements (language , displayNamesMap ));
142
+ languageNameMap .put (language , getDisplayNameByLocaleElements (normalizedLanguage , displayNamesMap ));
142
143
}
143
144
}else {
144
145
languageNameMap .put (language , "" );
@@ -168,23 +169,28 @@ private String getDisplayNameByLocaleElements(String locale, Map<String, Object>
168
169
boolean hasVariant = variant !=null && variant .length () > 0 ;
169
170
170
171
String languageName = languageData .get (language );
171
- StringBuilder buf = new StringBuilder ();
172
- if (hasScript ){
173
- String scriptName = scriptsData .get (script );
174
- if (scriptName != null )
175
- buf .append (scriptName );
176
- }
177
- if (hasCountry ){
178
- String countryName = regionData .get (country );
179
- if (countryName != null )
180
- appendWithSep (buf , localeSeparator , countryName );
181
- }
182
- if (hasVariant ){
183
- String variantName = variantsData .get (variant );
184
- if (variantName != null )
185
- appendWithSep (buf , localeSeparator , variantName );
172
+
173
+ if (!StringUtils .isEmpty (languageName )) {
174
+ StringBuilder buf = new StringBuilder ();
175
+ if (hasScript ) {
176
+ String scriptName = scriptsData .get (script );
177
+ if (scriptName != null ) {buf .append (scriptName );}
178
+ }
179
+ if (hasCountry ) {
180
+ String countryName = regionData .get (country );
181
+ if (countryName != null ) {appendWithSep (buf , localeSeparator , countryName );}
182
+ }
183
+ if (hasVariant ) {
184
+ String variantName = variantsData .get (variant );
185
+ if (variantName != null ) {appendWithSep (buf , localeSeparator , variantName );}
186
+ }
187
+
188
+ if (buf .isEmpty ()) {
189
+ displayName = languageName ;
190
+ } else {
191
+ displayName = MessageFormat .format (localePattern , languageName , buf .toString ());
192
+ }
186
193
}
187
- displayName = MessageFormat .format (localePattern , languageName , buf .toString ());
188
194
return displayName ;
189
195
}
190
196
0 commit comments