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:
parent
340b58f1ab
commit
2e9abac16e
5 changed files with 37 additions and 8 deletions
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ public class EmojiLanguage extends Language {
|
|||
id = Integer.parseInt(EMOJI_SEQUENCE);
|
||||
locale = Locale.ROOT;
|
||||
abcString = "emoji";
|
||||
code = "emj";
|
||||
name = "Emoji";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue