вижу вариант как создание стрингов для каждого языка в ресурсах и читать их. Но это для вьюх я такое знаю, может есть новое для компоса?
Ничего нового -- тоже несколько строк на каждый язык в ресурсах. Если есть нужда в мультиплатформе -- есть несколько либ на выбор, которые заменят ресурсы на мультиплатформенное решение.
А напомните пожалуйста какие еще кроме moko есть. Помню какие то слышал, но не помню какие)
Я ещё libres знаю.
я сделаль для каждого скрина отдельный нитерфейс interface BaseStrings interface SomeScreenStrings: BaseStrings{ val someLabel: String } interface SomeScreen2Strings: BaseStrings{ val someLabel2: String } interface StringsScope<T: BaseStrings> { val stringClz: KClass<T> } internal class RussianStrings: SomeScreenStrings, SomeScreen2Strings { override val someLabel = "Строка 1" override val someLabel2 = "Строка 2" } internal class EnglishStrings: SomeScreenStrings, SomeScreen2Strings { override val someLabel = "Label 1" override val someLabel2 = "Label 2" } class ScreenComponent: StringsScope<SomeScreenStrings> { override val stringClz = SomeScreenStrings::class } @Composable fun ScreenContent(component: ScreenComponent){ Text(text = component.string { someLabel } ) } @Composable inline fun <reified T : BaseStrings> StringsScope<T>.string( factory: T.() -> String, ): String = stringClz.string(factory) @Composable @Suppress("UnusedReceiverParameter") inline fun <reified T : BaseStrings> KClass<T>.string( factory: T.() -> String, ): String { val localStrings = LocalStrings.current return if (localStrings is T) factory(localStrings) else "interface not implemented" }
Легче застрелиться тогда)
Лучше так никогда не делать, как выше на сниппете написали
Обсуждают сегодня