Подскажите как лучше реализовать поддержку нескольких языков в приложении? Пока

вижу вариант как создание стрингов для каждого языка в ресурсах и читать их. Но это для вьюх я такое знаю, может есть новое для компоса?

6 ответов

19 просмотров

Ничего нового -- тоже несколько строк на каждый язык в ресурсах. Если есть нужда в мультиплатформе -- есть несколько либ на выбор, которые заменят ресурсы на мультиплатформенное решение.

Andrew Mikhaylov
Ничего нового -- тоже несколько строк на каждый яз...

А напомните пожалуйста какие еще кроме moko есть. Помню какие то слышал, но не помню какие)

я сделаль для каждого скрина отдельный нитерфейс 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" }

Наблюдатель ® ]
Легче застрелиться тогда)

Лучше так никогда не делать, как выше на сниппете написали

Похожие вопросы

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта