--- a/make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java Fri Apr 27 15:55:29 2018 -0700
+++ b/make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java Mon Apr 30 11:59:42 2018 +0530
@@ -270,7 +270,8 @@
out.printf("public class %s implements LocaleDataMetaInfo {\n", className);
out.printf(" private static final Map<String, String> resourceNameToLocales = new HashMap<>();\n" +
(CLDRConverter.isBaseModule ?
- " private static final Map<Locale, String[]> parentLocalesMap = new HashMap<>();\n\n" :
+ " private static final Map<Locale, String[]> parentLocalesMap = new HashMap<>();\n" +
+ " private static final Map<String, String> languageAliasMap = new HashMap<>();\n\n" :
"\n") +
" static {\n");
@@ -301,10 +302,16 @@
} else {
if ("AvailableLocales".equals(key)) {
out.printf(" resourceNameToLocales.put(\"%s\",\n", key);
- out.printf(" \"%s\");\n", toLocaleList(metaInfo.get(key), false));
+ out.printf(" \"%s\");\n", toLocaleList(applyLanguageAliases(metaInfo.get(key)), false));
}
}
}
+ // for languageAliasMap
+ if (CLDRConverter.isBaseModule) {
+ CLDRConverter.handlerSupplMeta.getLanguageAliasData().forEach((key, value) -> {
+ out.printf(" languageAliasMap.put(\"%s\", \"%s\");\n", key, value);
+ });
+ }
out.printf(" }\n\n");
@@ -340,6 +347,10 @@
if (CLDRConverter.isBaseModule) {
out.printf(" @Override\n" +
+ " public Map<String, String> getLanguageAliasMap() {\n" +
+ " return languageAliasMap;\n" +
+ " }\n\n");
+ out.printf(" @Override\n" +
" public Map<String, String> tzCanonicalIDs() {\n" +
" return TZCanonicalIDMapHolder.tzCanonicalIDMap;\n" +
" }\n\n");
@@ -377,4 +388,13 @@
}
return sb.toString();
}
+
+ private static SortedSet<String> applyLanguageAliases(SortedSet<String> tags) {
+ CLDRConverter.handlerSupplMeta.getLanguageAliasData().forEach((key, value) -> {
+ if (tags.remove(key)) {
+ tags.add(value);
+ }
+ });
+ return tags;
+ }
}