Skip to content

Commit

Permalink
ui enhancement(LanguagesScreen): add emojis for languages and redesig…
Browse files Browse the repository at this point in the history
…n language item
  • Loading branch information
kaajjo committed Dec 11, 2024
1 parent 7de7e3d commit 2bf4d64
Show file tree
Hide file tree
Showing 3 changed files with 874 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.kaajjo.libresudoku.ui.components.locale_emoji

import android.util.Log

object LocaleEmoji {
/**
* Get a country flag from language code
* @return country flag (emoji)
*/
fun getFlagEmoji(
languageCode: String
): String? {
val countryCode = countryFromLanguage(languageCode)
if (countryCode.isNullOrBlank()) return null

return countryCodeToEmoji(countryCode)
}

private fun countryFromLanguage(languageCode: String?): String? {
if (languageCode == null) return null

return languageCodeToCountryCode[languageCode.lowercase()]
}

private fun countryCodeToEmoji(countryCode: String): String? {
val uppercaseCode = countryCode.uppercase()

try {
val firstChar = uppercaseCode[0] - 'A' + 0x1F1E6
val secondChar = uppercaseCode[1] - 'A' + 0x1F1E6
val emoji = String(Character.toChars(firstChar)) + String(Character.toChars(secondChar))
return emoji
} catch (e: IllegalArgumentException) {
Log.e("LocaleEmoji", "Cannot find flag for: $countryCode")
return null
}
}
}
Loading

0 comments on commit 2bf4d64

Please sign in to comment.