Некоторые строки переведены, хотя файл strings.xml существует только на английском языке

В Android/Jetpack Compose некоторые ресурсы String переводятся на другие языки, хотя в приложении определен только один язык. Я рассматриваю случай off, который я определил в библиотечном модуле:

<string name = "off">Off</string>

Но телефон, настроенный на немецкий язык, покажет «Аус», или на украинский — «Вимкнено».

Я подозреваю, что они взяты из androidx.compose.ui:ui-android:1.5.4, поскольку Android Studio сообщает мне, что существует «несколько реализаций».

Где DR — класс R моего библиотечного модуля: import my.library.module.R as DR

Но почему это так? У меня в android.nonTransitiveRClass=true установлен gradle.properties. Я ожидал, что будут выбраны только ресурсы моих модулей.

Приложение выглядит довольно странно с парой переведенных случайных строк.

Есть ли у вашего my.library.module несколько файлов строковых ресурсов для разных языков?

Ahsan Ullah Rasel 25.06.2024 12:03

Нет. Он имеет только один файл res/values/strings.xml и не имеет других папок с локализованными значениями.

Oliver Metz 26.06.2024 02:12
2
2
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, таблица ресурсов библиотеки androidx.compose.ui:ui-android все еще объединяется с таблицей ресурсов вашего приложения, и, поскольку в вашем приложении нет переводов, оно берется из доступных строк.

Если вы уже знаете о переводимых строках, вы можете переименовать их в уникальное имя ресурса.

<string name = "appname_off">Off</string>

или Вы можете добавить следующий код в файл build.gradle вашего приложения:

android {
    ...
    defaultConfig {
        resourceConfigurations += "en"
    }
}

Это заставит систему сборки Android использовать для вашего приложения только английский язык, включая стороннюю библиотеку.

Можете ли вы попробовать заставить использовать в приложении только английский язык. <?xml version = "1.0"coding = "utf-8"?> <locale-config xmlns:android = "Schemas.android.com/apk/res/android"> <locale android:name = "en " /> </locale-config> Затем в файл build.gradle вашего приложения добавьте следующий код: android { ... localeConfig "xml/locale_config" }

MarGin 26.06.2024 06:28

Я думаю, нет необходимости переименовывать чертежи только со строками, поскольку в приложении на данный момент отсутствуют переводы.

MarGin 26.06.2024 06:56

Обновил ответ, спасибо!

MarGin 26.06.2024 07:40

Другие вопросы по теме

Как обрабатывать запросы на увольнение из диалога, запущенного из Composable, переданного как переменная
Как исправить проблему с KMP. Инициализируйте хотя бы одну цель Kotlin в «composeApp (:composeApp)» или «shared»?
Автоматически прокручивать ленивый столбец вверх, чтобы отображать полную высоту карты при раскрытии
Текст с обводкой или границами в наборе реактивного ранца
Ошибка Kotlin: java.lang.RuntimeException: не удалось найти реализацию для com.example.tutorialfollowing.AppDatabase. AppDatabase_Impl не существует
Hilt 2.44.2 — класс не найден при использовании @AndroidEntryPoint в GlanceAppWidgetReceiver
Ошибка размера анимированной бутылки с водой при составлении реактивного ранца
Предварительный просмотр Jetpack для экрана с параметрами SharedTransitionScope, AnimatedVisibilityScope
Рукоять кинжала: «Невозможно создать экземпляр ViewModel» при использовании внедрения зависимостей
Как передать строковый параметр в модель представления в составлении?