Kotlin: Как передать несколько переменных в локализованную строку

Чтобы передать несколько переменных в локализованную строку (например, имя пользователя + число элементов), используйте позиционные плейсхолдеры в "strings.xml" и передавайте аргументы в stringResource() в нужном порядке.

Настройка строк в strings.xml


В файле "res/values/strings.xml" (и его локализованных аналогах) определите строку с несколькими плейсхолдерами:
<!-- Пример: Приветствие + количество уведомлений -->
<string name="welcome_with_count">
    Привет, %1$s! У вас %2$d уведомлений.
</string>

<!-- Пример: Дата + сумма -->
<string name="transaction_summary">
    Операция от %1$s на сумму %2$.2f рублей.
</string>

Синтаксис плейсхолдеров:
  • %1$s — первая переменная, тип String (s = string);
  • %2$d — вторая переменная, тип Int/Long (d = decimal);
  • %2$.2f — вторая переменная, тип Float/Double с 2 знаками после запятой (f = float).

Важно:
  • Нумерация (1$, 2$) обязательна — иначе порядок аргументов может нарушиться.
  • Типы (s, d, f) должны соответствовать передаваемым данным.

Исп

...

Kotlin: Как сделать приложение мультиязычным

Чтобы добавить мультиязычность в Android‑приложение (на Kotlin + Jetpack Compose), следуйте пошаговому руководству.

Создайте файлы ресурсов для разных языков


В папке "res" вашего проекта создайте отдельные директории для каждого языка по шаблону values-<код_языка>.

Примеры:
  • "values" — язык по умолчанию (обычно английский);
  • "values-ru" — русский;
  • "values-es" — испанский;
  • "values-de" — немецкий.

Добавьте строки в strings.xml


В каждой папке создайте файл "strings.xml" и заполните его переводами. Ключи (name) должны совпадать во всех файлах!

Пример для "values/strings.xml" (английский):
<resources>
    <string name="app_name">My App</string>
    <string name="welcome">Welcome!</string>
    <string name="button_text">Click me</string>
</resources>

Пример для "values-ru/strings.xml" (русский):
<resources>
    <string name="app_name">Моё приложение</string>
    <string name="welcome">Добро пожаловать!</string>
    <string name="button_text">Нажми
...

Kotlin: Типичные ошибки: Как их избежать и исправить

Kotlin — современный язык программирования, но даже опытные разработчики сталкиваются с ошибками. Рассмотрим самые распространенные проблемы и способы их решения.

Ошибки компиляции



NullPointerException
Причина: Обращение к null-переменной.
Решение:
  • Используйте безопасные вызовы (?.).
  • Применяйте оператор !! с осторожностью.
  • Объявляйте переменные как val/var = something ?: defaultValue.

Несовместимость типов
Пример: Попытка присвоить String переменной типа Int.
Решение:
  • Используйте явное приведение типов.
  • Проверяйте типы данных.
  • Применяйте обобщенные типы (generics).

Неопределенные переменные
Причина: Использование необъявленных переменных.
Решение:
  • Всегда объявляйте переменные перед использованием.
  • Проверяйте область видимости переменных.

Ошибки времени выполнения



IndexOutOfBoundsException
Причина: Обращение к несуществующему элементу коллекции.
Решение:
  • Проверяйте размер коллекции.
  • Используйте безопасные методы доступа.
  • Применяйте let и takeIf.

IllegalStateException
Причина: некорректное...

Kotlin: Строку в JSON

Для работы с JSON в Kotlin используется библиотека kotlinx.serialization. Вот как это работает:

Настройка проекта


Добавьте в "build.gradle" следующие зависимости:
plugins {
    kotlin("jvm") version "1.8.0"
    kotlin("plugin.serialization") version "1.8.0"
}

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0")
}

Создание модели данных


Создайте data-класс с аннотацией @Serializable:
@Serializable
data class User(
    val name: String,
    val age: Int,
    val email: String
)

Преобразование объекта в JSON


Используйте метод encodeToString():
fun main() {
    val user = User("Иван", 25, "ivan@example.com")
    
    // Преобразование в JSON строку
    val jsonString = Json.encodeToString(user)
    println(jsonString)  // {"name":"Иван","age":25,"email":"ivan@example.com"}
}

Дополнительные возможности



Работа с коллекциями
val users = listOf(
    User("Иван", 25, "ivan@example.com"),
   
...

От куда берётся надпись "Hello Android"?

Надпись “Hello Android” может появиться в вашем приложении несколькими путями:

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

Строковые ресурсы
Текст может быть прописан в файле "strings.xml" в ресурсах:
<string name="hello_android">Hello Android</string>

Макет активности
В файле макета (например, activity_main.xml) может быть напрямую прописан TextView:
<TextView
    android:text="@string/hello_android"
    ... />

Код активности
Текст может устанавливаться программно в MainActivity:
textView.text = "Hello Android"

Кэширование проекта
Иногда старые версии ресурсов могут оставаться в кэше, из-за чего отображается не тот текст, который вы ожидаете.

Чтобы избавиться от нежелательного текста:
  • Проверьте файл "strings.xml" на наличие строки “Hello Android”.
  • Посмотрите макет в "res/layout".
  • Проверьте код активности на наличие прямого задания текста.
  • Очистите проек
...