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
// enabled multiple ones, make it clear which one is it, by appending the unique
// 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();
}

View file

@ -5,6 +5,7 @@ import java.util.Locale;
public class LanguageKind {
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 isCyrillic(Language language) { return language != null && language.getKeyCharacters(2).contains("а"); }
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 language = locale.getLanguage().toLowerCase();
switch (language) {
case "en":
if ("in".equals(country)) { // en-IN = Hinglish
return "hi";
}
// otherwise, fall-through to return "en"
case "ca":
return language;
case "ji":
return "yi";
case "zgh":
return "tmz";
default:
return country;
}
return switch (language) {
case "ar" -> "ع";
case "bg" -> "бг";
case "en" -> ("in".equals(country)) ? "hn" : language; // en-IN = Hinglish
case "fa" -> "ف";
case "fi" -> "su";
case "he", "iw" -> "אב";
case "hu" -> "mg";
case "ji", "yi" -> "יי";
case "ru" -> "ру";
case "uk" -> "ук";
case "zgh" -> "tm";
case "ca", "ga", "sw" -> language;
default -> country;
};
}
@NonNull