Untitled
unknown
kotlin
4 years ago
1.3 kB
3
Indexable
class PluralString(val none: String, val one: String, val many: String) { operator fun invoke(count: Int): String { return when(count) { 0 -> none 1 -> one else -> many } } } interface Strings { val hello: String val worlds: PluralString fun helloUser(user: String): String val blam: String get() = "Blam" // Дефолтная реализация, для случая, когда перевод еще не готов } class EnStrings : Strings { override val hello = "Hello" override val worlds = PluralString("Nothing", "World", "Worlds") override fun helloUser(user: String) = "Hello $user" } class RuStrings : Strings { override val hello = "Привет" override val worlds = PluralString("Пустота", "Мир", "Миры") override fun helloUser(user: String) = "$user, привет!" } fun getStrings(lang: String): Strings { return if (lang == "ru") RuStrings() else EnStrings() } fun main() { // В Compose это будет глобальное свойство, возвращающее Strings из CompositionLocal val tr = getStrings("ru") println(tr.hello) println(tr.worlds(1)) println(tr.helloUser("Tim")) println(tr.blam) }
Editor is loading...