1
0
Fork 0

fixed some languages from the same country being displayed using the same code in mode ABC, e.g. Spanish and Catalan were both 'ES'

This commit is contained in:
sspanak 2024-09-20 13:16:35 +03:00 committed by Dimo Karaivanov
parent 340b58f1ab
commit 2e9abac16e
5 changed files with 37 additions and 8 deletions

View file

@ -117,16 +117,14 @@ public class ModeABC extends InputMode {
return textCase == CASE_LOWER ? "abc" : "ABC";
}
String langCode = "";
String modeString = language.getAbcString();
// 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)) {
// There are many languages written using the same alphabet, so if the user has enabled multiple,
// make it clear which one is it, by appending the country code to "ABC" or "АБВ".
langCode = language.getLocale().getCountry();
langCode = langCode.isEmpty() ? language.getLocale().getLanguage() : langCode;
langCode = langCode.isEmpty() ? language.getName() : langCode;
langCode = " / " + langCode;
modeString += " / " + language.getCode();
}
String modeString = language.getAbcString() + langCode.toUpperCase();
return (textCase == CASE_LOWER) ? modeString.toLowerCase(language.getLocale()) : modeString.toUpperCase(language.getLocale());
}

View file

@ -17,6 +17,7 @@ public class EmojiLanguage extends Language {
id = Integer.parseInt(EMOJI_SEQUENCE);
locale = Locale.ROOT;
abcString = "emoji";
code = "emj";
name = "Emoji";
}

View file

@ -10,6 +10,7 @@ import io.github.sspanak.tt9.languages.exceptions.InvalidLanguageCharactersExcep
abstract public class Language {
protected int id;
protected String abcString;
protected String code;
protected String dictionaryFile;
protected Locale locale = Locale.ROOT;
protected String name;
@ -25,6 +26,10 @@ abstract public class Language {
return abcString;
}
@NonNull public String getCode() {
return code;
}
@NonNull final public String getDictionaryFile() {
return dictionaryFile;
}

View file

@ -173,6 +173,29 @@ public class NaturalLanguage extends Language implements Comparable<NaturalLangu
return abcString;
}
@NonNull
@Override
public String getCode() {
if (code != null) {
return code;
}
String country = getLocale().getCountry().toLowerCase();
String language = getLocale().getLanguage().toLowerCase();
if ("en".equals(language) && "in".equalsIgnoreCase(country)) {
return code = "hi";
}
if ("ar".equals(language) || "ca".equals(language) || "en".equals(language)) {
return code = language;
}
return code = country.equals("ji") ? "yi" : country;
}
@NonNull
@Override
public String getName() {

View file

@ -14,6 +14,8 @@ public class NullLanguage extends Language {
locale = Locale.ROOT;
name = context.getString(R.string.no_language);
abcString = "ABC";
code = "";
dictionaryFile = "";
hasUpperCase = false;
}