diff --git a/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityBasedJoinExampleMain.java b/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityBasedJoinExampleMain.java index 2f6933d..2b4abf7 100644 --- a/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityBasedJoinExampleMain.java +++ b/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityBasedJoinExampleMain.java @@ -45,6 +45,7 @@ public class AffinityBasedJoinExampleMain { *
  • (bs-Cyrl-BA, bs-Latn) -> Join possible with SAME affinity. *
  • (bs-Cyrl-BA, hr-MK) -> Join possible with MUTUALLY_INTELLIGIBLE affinity. *
  • (de, de-AT) -> Join possible with SAME affinity. + *
  • (de, gsw-CH) -> Join possible with MUTUALLY_INTELLIGIBLE affinity. *
  • (da-SE, nb-FI) -> Join possible with HIGH affinity. *
  • (en-GB, en-JP) -> Join possible with SAME affinity. *
  • (en-GB, en-SE) -> Join possible with SAME affinity. @@ -55,6 +56,8 @@ public class AffinityBasedJoinExampleMain { *
  • (hr-BA, hr-MK) -> Join possible with SAME affinity. *
  • (ja-IT, ja@calendar=buddhist) -> Join possible with SAME affinity. *
  • (nl-BE, nl-ZA) -> Join possible with SAME affinity. + *
  • (no-SE, nb-FI) -> Join possible with SAME affinity. + *
  • (nn-DK, nb-FI) -> Join possible with SAME affinity. *
  • (zh-Hans-US, zh-CN) -> Join possible with SAME affinity. * * @@ -73,6 +76,8 @@ public static void main(String[] args) { "it-CH", // Italian (Switzerland) "ja-IT", // Japanese (Italy) "nl-BE", // Dutch (Belgium) + "no-SE", // Norwegian (Sweden) + "nn-DK", // Norwegian Nynorsk (Danemark) "zh-Hans-US", // Chinese (Simplified) (USA) "zh-HK" // Chinese (Hong-Kong) ); @@ -86,6 +91,7 @@ public static void main(String[] args) { "en-SE", // English (Sweden) "fr-BE-u-ca-gregorian", // French (Belgium), with gregorian calendar extension "fr-CA", // French (Canada) + "gsw-CH", // Swiss German (Switzerland) "hr-MK", // Croatian (North Macedonia) "ja@calendar=buddhist", // Japanese, with buddhist calendar extension "nb-FI", // Norwegian BokmÃ¥l (Finland) @@ -102,10 +108,6 @@ public static void main(String[] args) { languageTagInOriginDataset, languageTagInTargetDataset); switch (affinityResult.affinity()) { case NONE: - System.out.println( - String.format( - "(%s, %s) -> No join possible.", - languageTagInOriginDataset, languageTagInTargetDataset)); break; default: System.out.println( diff --git a/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityCalculationExampleMain.java b/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityCalculationExampleMain.java index f394608..7b5f06c 100644 --- a/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityCalculationExampleMain.java +++ b/examples/locales-affinity-examples/src/main/java/com/spotify/i18n/locales/affinity/examples/AffinityCalculationExampleMain.java @@ -21,6 +21,7 @@ package com.spotify.i18n.locales.affinity.examples; import static com.spotify.i18n.locales.common.model.LocaleAffinity.LOW; +import static com.spotify.i18n.locales.common.model.LocaleAffinity.MUTUALLY_INTELLIGIBLE; import static com.spotify.i18n.locales.common.model.LocaleAffinity.NONE; import static com.spotify.i18n.locales.common.model.LocaleAffinity.SAME; @@ -29,7 +30,7 @@ import com.spotify.i18n.locales.common.LocaleAffinityHelpersFactory; import com.spotify.i18n.locales.common.model.LocaleAffinity; import com.spotify.i18n.locales.common.model.LocaleAffinityResult; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -100,7 +101,7 @@ private static String getAcceptLanguage() { * which were all imported as static in this class. */ private static Map getLanguageTagToExpectedAffinityMap() { - Map map = new HashMap<>(); + Map map = new LinkedHashMap<>(); // Edge cases map.put(" Invalid language tag ", NONE); @@ -109,18 +110,26 @@ private static Map getLanguageTagToExpectedAffinityMap() map.put("", NONE); map.put(null, NONE); + // Catalan should be matched, since we support Spanish + map.put("bs", SAME); + map.put("bs-Latn-MK", SAME); + map.put("bs-Cyrl", SAME); + map.put("bs-BA", SAME); + // Catalan should be matched, since we support Spanish map.put("ca", LOW); - map.put("ca-ES", LOW); map.put("ca-AD", LOW); + map.put("ca-ES", LOW); // No english should be matched map.put("en", NONE); map.put("en-GB", NONE); + map.put("en-SE", NONE); map.put("en-US", NONE); - // Spanish in Europe should ok + // Spanish in Europe or elsewhere should ok map.put("es-419", SAME); + map.put("es-BE", SAME); map.put("es-GB", SAME); map.put("es-US", SAME); @@ -140,10 +149,11 @@ private static Map getLanguageTagToExpectedAffinityMap() map.put("hi", NONE); // Croatian should be nicely matched with Bosnian - map.put("hr-HR", SAME); + map.put("hr-HR", MUTUALLY_INTELLIGIBLE); + map.put("hr-US", MUTUALLY_INTELLIGIBLE); // Serbian Cyrillic should be matched, although only Latin script is supported - map.put("sr", SAME); + map.put("sr-MK", SAME); map.put("sr-Latn", SAME); map.put("sr-Cyrl-ME", SAME); @@ -155,8 +165,11 @@ private static Map getLanguageTagToExpectedAffinityMap() // Only Traditional Chinese should be matched, not Simplified map.put("zh-CN", NONE); + map.put("zh-Hant-CN", SAME); map.put("zh-TW", SAME); map.put("zh-HK", SAME); + map.put("zh-US", SAME); + return map; } @@ -171,6 +184,7 @@ public static void main(String[] args) { "Example 1: List of language tags with calculated affinity = %s", SAME.name())); getLanguageTagToExpectedAffinityMap().keySet().stream() .filter(languageTag -> affinityCalculator.calculate(languageTag).affinity() == SAME) + .sorted() .forEach(System.out::println); // Example 2: Check that calculated affinity for each language tag matches the expected value.