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 {
languageCode == null -> ""
languageCode.length == 2 -> LanguageContainer(languageCode).languageName
languageCode.length == 3 -> localeMap[languageCode]?.displayLanguage.orEmpty()
languageCode.length == 3 -> localeMap[languageCode]?.displayLanguage.orEmpty() +
getCountryFromLanguageCode(
languageCode
)
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))
companion object {
private fun chooseLanguageName(languageCode: String): String {
val displayLanguage = Locale(languageCode).displayLanguage
val displayCountry =
Locale(languageCode).displayCountry
return if (displayLanguage.length == 2 || displayLanguage.isEmpty())
Locale.ENGLISH.displayLanguage
Locale.ENGLISH.displayLanguage + " (${Locale.ENGLISH.displayCountry})"
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"))
// testing the hashmap created inside the BookUtils class
assertEquals("code length equals 3 (English)", "English", t.getLanguage("eng"))
assertEquals("code length equals 3 (Hindi)", "Hindi", t.getLanguage("hin"))
assertEquals("code length equals 3 (French)", "French", t.getLanguage("fra"))
assertEquals("code length equals 3 (Akan)", "Akan", t.getLanguage("aka"))
assertEquals("code length equals 3 (Burmese)", "Burmese", t.getLanguage("mya"))
assertEquals("code length equals 3 (Catalan)", "Catalan", t.getLanguage("cat"))
assertEquals("code length equals 3 (English)", "English (India)", t.getLanguage("eng"))
assertEquals("code length equals 3 (Hindi)", "Hindi (India)", t.getLanguage("hin"))
assertEquals("code length equals 3 (French)", "French (Rwanda)", t.getLanguage("fra"))
assertEquals("code length equals 3 (Akan)", "Akan (Ghana)", t.getLanguage("aka"))
assertEquals(
"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
assertEquals("code length equals 2 (dummy)", "English", t.getLanguage("en"))