diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/BookUtils.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/BookUtils.kt index 794e1017d..72a7b62e6 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/BookUtils.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/BookUtils.kt @@ -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 { + "" + } + } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageContainer.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageContainer.kt index 51ccbb51e..9a594eb32 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageContainer.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/LanguageContainer.kt @@ -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 { + "" } } } diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/utils/BookUtilsTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/utils/BookUtilsTest.kt index 6889301ef..35d7eb861 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/utils/BookUtilsTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/utils/BookUtilsTest.kt @@ -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"))