diff --git a/common/supplemental/likelySubtags.xml b/common/supplemental/likelySubtags.xml index 6dd06b45d6f..1cf6e396413 100644 --- a/common/supplemental/likelySubtags.xml +++ b/common/supplemental/likelySubtags.xml @@ -451,7 +451,6 @@ not be patched by hand, as any changes made in that fashion may be lost. - @@ -1254,7 +1253,8 @@ not be patched by hand, as any changes made in that fashion may be lost. - + + diff --git a/common/supplemental/supplementalData.xml b/common/supplemental/supplementalData.xml index 59d143b7ea9..5b44590c312 100644 --- a/common/supplemental/supplementalData.xml +++ b/common/supplemental/supplementalData.xml @@ -1918,7 +1918,7 @@ XXX Code for transations where no currency is involved - + @@ -3147,7 +3147,8 @@ XXX Code for transations where no currency is involved - + + diff --git a/common/testData/localeIdentifiers/likelySubtags.txt b/common/testData/localeIdentifiers/likelySubtags.txt index f525de38b34..3b1261d5247 100644 --- a/common/testData/localeIdentifiers/likelySubtags.txt +++ b/common/testData/localeIdentifiers/likelySubtags.txt @@ -1575,9 +1575,9 @@ und-NP ; ne-Deva-NP ; ne ; und-NR ; en-Latn-NR ; en-NR ; und-NU ; en-Latn-NU ; en-NU ; und-NZ ; en-Latn-NZ ; en-NZ ; -und-Nkoo ; man-Nkoo-GN ; man-Nkoo ; man-GN -und-Nkoo-AQ ; man-Nkoo-AQ ; ; -und-Nkoo-GN ; man-Nkoo-GN ; man-Nkoo ; man-GN +und-Nkoo ; nqo-Nkoo-GN ; nqo ; +und-Nkoo-AQ ; nqo-Nkoo-AQ ; nqo-AQ ; +und-Nkoo-GN ; nqo-Nkoo-GN ; nqo ; und-OM ; ar-Arab-OM ; ar-OM ; und-Olck ; sat-Olck-IN ; sat ; und-Olck-AQ ; sat-Olck-AQ ; sat-AQ ; diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/util/DiffLanguageGroups.java b/tools/cldr-code/src/main/java/org/unicode/cldr/util/DiffLanguageGroups.java index 88e1be187c1..c73d931753a 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/util/DiffLanguageGroups.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/util/DiffLanguageGroups.java @@ -356,7 +356,7 @@ public static Set getAllKeysAndValues(Map newItems) { private static boolean handleLanguageGroups( String value, XPathParts parts, Multimap languageGroups) { String parent = parts.getAttributeValue(-1, "parent"); - List children = SupplementalDataInfo.WHITESPACE_SPLTTER.splitToList(value); + List children = SupplementalDataInfo.WHITESPACE_SPLITTER.splitToList(value); languageGroups.putAll(parent, children); return true; } diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/util/SupplementalDataInfo.java b/tools/cldr-code/src/main/java/org/unicode/cldr/util/SupplementalDataInfo.java index 19355579dfb..94295daef18 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/util/SupplementalDataInfo.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/util/SupplementalDataInfo.java @@ -318,8 +318,6 @@ public PopulationData setWritingPopulation(double writingPopulation) { } } - static final Pattern WHITESPACE_PATTERN = PatternCache.get("\\s+"); - /** Simple language/script/region information */ public static class BasicLanguageData implements Comparable, @@ -349,18 +347,17 @@ public BasicLanguageData setType(Type type) { // Adding scripts but leaving 0 as a placeholder when there is no population data // input: a whitespace-separated list of scripts public BasicLanguageData setScriptsWithoutPopulation(String scriptTokens) { - List scripts = new ArrayList<>(); - if (scriptTokens != null) { - scripts = Arrays.asList(WHITESPACE_PATTERN.split(scriptTokens)); - } - return setScriptsWithoutPopulation(scripts); + return setScriptsWithoutPopulation( + scriptTokens == null ? null : WHITESPACE_SPLITTER.splitToList(scriptTokens)); } // Adding scripts but leaving 0 as a placeholder when there is no population data public BasicLanguageData setScriptsWithoutPopulation(Collection scripts) { Map scriptsByPopulation = new TreeMap<>(); - for (String script : scripts) { - scriptsByPopulation.put(script, 0); + if (scripts != null) { + for (String script : scripts) { + scriptsByPopulation.put(script, 0); + } } return setScripts(scriptsByPopulation); } @@ -369,7 +366,7 @@ public BasicLanguageData setTerritories(String territoryTokens) { return setTerritories( territoryTokens == null ? null - : Arrays.asList(WHITESPACE_PATTERN.split(territoryTokens))); + : WHITESPACE_SPLITTER.splitToList(territoryTokens)); } public BasicLanguageData setScripts(Map newScripts) { @@ -379,7 +376,9 @@ public BasicLanguageData setScripts(Map newScripts) { // TODO add error checking scripts = Collections.emptySet(); scriptsByPopulation = new TreeMap<>(); - addScripts(newScripts); + if (newScripts != null) { + addScripts(newScripts); + } return this; } @@ -1686,7 +1685,7 @@ private boolean handleUnitPreferences(XPathValue parts, String value) { private boolean handleLanguageGroups(String value, XPathValue parts) { String parent = parts.getAttributeValue(-1, "parent"); - List children = WHITESPACE_SPLTTER.splitToList(value); + List children = WHITESPACE_SPLITTER.splitToList(value); languageGroups.putAll(parent, children); return true; } @@ -1862,7 +1861,7 @@ private boolean handleLanguageMatcher(XPathValue parts) { switch (parts.getElement(3)) { case "paradigmLocales": List locales = - WHITESPACE_SPLTTER.splitToList(parts.getAttributeValue(3, "locales")); + WHITESPACE_SPLITTER.splitToList(parts.getAttributeValue(3, "locales")); // TODO // LanguageMatchData languageMatchData = // languageMatchData.get(type); @@ -5107,7 +5106,7 @@ public File getDirectory() { return directory; } - public static final Splitter WHITESPACE_SPLTTER = + public static final Splitter WHITESPACE_SPLITTER = Splitter.on(PatternCache.get("\\s+")).omitEmptyStrings(); public static final class AttributeValidityInfo { @@ -5155,7 +5154,7 @@ public AttributeValidityInfo( this.dtds = Collections.singleton(DtdType.ldml); } else { Set temp = EnumSet.noneOf(DtdType.class); - for (String s : WHITESPACE_SPLTTER.split(dtds)) { + for (String s : WHITESPACE_SPLITTER.split(dtds)) { temp.add(DtdType.fromElement(s)); } this.dtds = Collections.unmodifiableSet(temp); @@ -5164,10 +5163,10 @@ public AttributeValidityInfo( this.elements = elements == null ? Collections.EMPTY_SET - : With.in(WHITESPACE_SPLTTER.split(elements)) + : With.in(WHITESPACE_SPLITTER.split(elements)) .toUnmodifiableCollection(new HashSet()); this.attributes = - With.in(WHITESPACE_SPLTTER.split(attributes)) + With.in(WHITESPACE_SPLITTER.split(attributes)) .toUnmodifiableCollection(new HashSet()); this.order = order; } diff --git a/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/country_language_population.tsv b/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/country_language_population.tsv index 04fd3895bd3..2155b596d52 100644 --- a/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/country_language_population.tsv +++ b/tools/cldr-code/src/main/resources/org/unicode/cldr/util/data/country_language_population.tsv @@ -507,7 +507,8 @@ Guinea GN "11,855,411" 41% "27,970,000,000" official French fr 27.2% https://o Guinea GN "11,855,411" 41% "27,970,000,000" Fulah ff 26% Guinea GN "11,855,411" 41% "27,970,000,000" Fulah (Adlam) ff_Adlm 1 No Data Available at present. Guinea GN "11,855,411" 41% "27,970,000,000" Kpelle kpe 3.8% -Guinea GN "11,855,411" 41% "27,970,000,000" Mandingo (N’Ko) man_Nkoo 23% +Guinea GN "11,855,411" 41% "27,970,000,000" Mandingo man 23% +Guinea GN "11,855,411" 41% "27,970,000,000" Mandingo (N’Ko) man_Nkoo 23% 5% Actually literacy in Nko writing unknown but historically they used the Latin script Guinea GN "11,855,411" 41% "27,970,000,000" N’Ko nqo 5% No figures available for this language. Estimating at 5%. Guinea GN "11,855,411" 41% "27,970,000,000" Susu sus 11% Guinea-Bissau GW "1,833,247" 55% "3,171,000,000" Fulah ff 1 No estimate available.