1
0
Fork 0

consistent language codes for ABC mode

This commit is contained in:
sspanak 2025-04-30 17:38:51 +03:00 committed by Dimo Karaivanov
parent 898bbf7a7f
commit 863b6d8480
3 changed files with 17 additions and 16 deletions

View file

@ -129,7 +129,7 @@ class ModeABC extends InputMode {
// There are many languages written using the same alphabet, so if the user has // There are many languages written using the same alphabet, so if the user has
// enabled multiple ones, make it clear which one is it, by appending the unique // enabled multiple ones, make it clear which one is it, by appending the unique
// country or language code to "ABC" or "АБВ". // country or language code to "ABC" or "АБВ".
if (LanguageKind.isLatinBased(language) || LanguageKind.isCyrillic(language)) { if (LanguageKind.isArabicBased(language) || LanguageKind.isCyrillic(language) || LanguageKind.isHebrew(language) || LanguageKind.isLatinBased(language)) {
modeString += " / " + language.getCode(); modeString += " / " + language.getCode();
} }

View file

@ -5,6 +5,7 @@ import java.util.Locale;
public class LanguageKind { public class LanguageKind {
public static final int KOREAN = 601579; public static final int KOREAN = 601579;
public static boolean isArabicBased(Language language) { return isArabic(language) || isFarsi(language); }
public static boolean isCJK(Language language) { return isChinese(language) || isJapanese(language) || isKorean(language); } public static boolean isCJK(Language language) { return isChinese(language) || isJapanese(language) || isKorean(language); }
public static boolean isCyrillic(Language language) { return language != null && language.getKeyCharacters(2).contains("а"); } public static boolean isCyrillic(Language language) { return language != null && language.getKeyCharacters(2).contains("а"); }
public static boolean isLatinBased(Language language) { return language != null && language.getKeyCharacters(2).contains("a"); } public static boolean isLatinBased(Language language) { return language != null && language.getKeyCharacters(2).contains("a"); }

View file

@ -38,21 +38,21 @@ class LocaleCompat {
String country = locale.getCountry().toLowerCase(); String country = locale.getCountry().toLowerCase();
String language = locale.getLanguage().toLowerCase(); String language = locale.getLanguage().toLowerCase();
switch (language) { return switch (language) {
case "en": case "ar" -> "ع";
if ("in".equals(country)) { // en-IN = Hinglish case "bg" -> "бг";
return "hi"; case "en" -> ("in".equals(country)) ? "hn" : language; // en-IN = Hinglish
} case "fa" -> "ف";
// otherwise, fall-through to return "en" case "fi" -> "su";
case "ca": case "he", "iw" -> "אב";
return language; case "hu" -> "mg";
case "ji": case "ji", "yi" -> "יי";
return "yi"; case "ru" -> "ру";
case "zgh": case "uk" -> "ук";
return "tmz"; case "zgh" -> "tm";
default: case "ca", "ga", "sw" -> language;
return country; default -> country;
} };
} }
@NonNull @NonNull