Added country name in front of ZIM file language

This commit is contained in:
MohitMali 2023-02-24 17:53:43 +05:30 committed by Kelson
parent 192d276103
commit ca58aecf02
3 changed files with 34 additions and 9 deletions

View File

@ -31,8 +31,20 @@ class BookUtils {
return when { return when {
languageCode == null -> "" languageCode == null -> ""
languageCode.length == 2 -> LanguageContainer(languageCode).languageName languageCode.length == 2 -> LanguageContainer(languageCode).languageName
languageCode.length == 3 -> localeMap[languageCode]?.displayLanguage.orEmpty() languageCode.length == 3 -> localeMap[languageCode]?.displayLanguage.orEmpty() +
getCountryFromLanguageCode(
languageCode
)
else -> "" else -> ""
} }
} }
private fun getCountryFromLanguageCode(languageCode: String): String {
val local = LanguageUtils.iSO3ToLocale(languageCode)
return if (local?.displayCountry?.isNotEmpty() == true) {
" (${local.displayCountry})"
} else {
""
}
}
} }

View File

@ -24,12 +24,21 @@ class LanguageContainer private constructor(val languageCode: String, val langua
constructor(languageCode: String) : this(languageCode, chooseLanguageName(languageCode)) constructor(languageCode: String) : this(languageCode, chooseLanguageName(languageCode))
companion object { companion object {
private fun chooseLanguageName(languageCode: String): String { private fun chooseLanguageName(languageCode: String): String {
val displayLanguage = Locale(languageCode).displayLanguage val displayLanguage = Locale(languageCode).displayLanguage
val displayCountry =
Locale(languageCode).displayCountry
return if (displayLanguage.length == 2 || displayLanguage.isEmpty()) return if (displayLanguage.length == 2 || displayLanguage.isEmpty())
Locale.ENGLISH.displayLanguage Locale.ENGLISH.displayLanguage + " (${Locale.ENGLISH.displayCountry})"
else else
displayLanguage "${displayLanguage}${getCountry(displayCountry)}"
}
private fun getCountry(displayCountry: String) = if (displayCountry.isNotEmpty()) {
" ($displayCountry)"
} else {
""
} }
} }
} }

View File

@ -34,12 +34,16 @@ class BookUtilsTest {
assertEquals("code length more than 3", "", t.getLanguage("english")) assertEquals("code length more than 3", "", t.getLanguage("english"))
// testing the hashmap created inside the BookUtils class // testing the hashmap created inside the BookUtils class
assertEquals("code length equals 3 (English)", "English", t.getLanguage("eng")) assertEquals("code length equals 3 (English)", "English (India)", t.getLanguage("eng"))
assertEquals("code length equals 3 (Hindi)", "Hindi", t.getLanguage("hin")) assertEquals("code length equals 3 (Hindi)", "Hindi (India)", t.getLanguage("hin"))
assertEquals("code length equals 3 (French)", "French", t.getLanguage("fra")) assertEquals("code length equals 3 (French)", "French (Rwanda)", t.getLanguage("fra"))
assertEquals("code length equals 3 (Akan)", "Akan", t.getLanguage("aka")) assertEquals("code length equals 3 (Akan)", "Akan (Ghana)", t.getLanguage("aka"))
assertEquals("code length equals 3 (Burmese)", "Burmese", t.getLanguage("mya")) assertEquals(
assertEquals("code length equals 3 (Catalan)", "Catalan", t.getLanguage("cat")) "code length equals 3 (Burmese)",
"Burmese (Myanmar (Burma))",
t.getLanguage("mya")
)
assertEquals("code length equals 3 (Catalan)", "Catalan (Spain)", t.getLanguage("cat"))
// this case uses the result from the container nested class inside LanguageUtils. It will be tested in LanguageUtilsTest // this case uses the result from the container nested class inside LanguageUtils. It will be tested in LanguageUtilsTest
assertEquals("code length equals 2 (dummy)", "English", t.getLanguage("en")) assertEquals("code length equals 2 (dummy)", "English", t.getLanguage("en"))