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.