TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #242 662
🔗Всем привет, это Роза, Flutter Dev Friflex

Сегодня сделаем с вами обзор библиотеки по локализации — slang. Многие из вас наверняка слышали про .arb и работали с intl, но про slang, возможно, вы слышите впервые.

Что же это такое?
Это библиотека для генерации локализаций. У нее есть ряд существенных преимуществ по сравнению с intl.

Давайте по порядку!

Генерация
Slang поддерживает больше форматов, чем intl: JSON, YAML, ARB и CSV.

Код генерируется командой:

dart run slang


Также можно использовать build_runner,  если добавить дополнительный пакет slang_build_runner.

Перед генерацией необходимо создать конфигурационные файлы —  slang.yaml или build.yaml. Они во многом похожи на l10n.yaml, но позволяют настроить больше параметров.

Поддержка placeholders
Здесь все стандартно: plural, gender. Но кроме placeholders так же есть возможность работы с links, richText.

{
  "user": {
    "messageCount": {
      "one": "У тебя 1 сообщение",
      "other": "У тебя {count} сообщений"
    }
  }
}


Получаем

t.user.messageCount(count: 5);


Типобезопасность
Библиотека устойчива к ошибкам: опечатки или пропущенные аргументы невозможны,  
так как все ключи и параметры проверяются на этапе компиляции.

Если ключа нет — компилятор не даст собрать проект.  

Поддержка Flutter
Пакет slang_flutter предоставляет провайдер для управления локалями в проекте.
Можно легко переключать язык в рантайме, получать переводы через контекст context.t и использовать ленивую инициализацию делегатов.

CLI-команды
Библиотека предоставляет набор CLI-команд:

dart run slang                # генерация файлов локализации
dart run slang analyze        # поиск неиспользуемых и отсутствующих переводов
dart run slang normalize      # сортировка переводов по базовой локали
dart run slang configure      # автообновление CFBundleLocalizations
dart run slang edit move loginPage authPage   # переименование или перенос ключей
dart run slang migrate arb src.arb dest.json  # миграция из arb в json


Runtime overrides
Slang поддерживает runtime overrides —  вы можете менять переводы на лету, без пересборки приложения.

Несколько замечаний:
✔️Переопределения могут быть частичными – обновляются только указанные ключи
✔️Повторное переопределение заменяет предыдущее
✔️Новые переводы анализируются, но не активируются
✔️Плейсхолдеры (name) остаются без изменений

❕Не стоит сразу бросаться внедрять slang во все проекты. Он может быть избыточен для небольших проектов, у него сложнее конфигурация, чем у intl. У вас могут возникнуть сложности при работе с многомодульными проектами, где нужно объединять переводы из разных пакетов. Также типобезопасность делает невозможным использование динамических ключей, что в некоторых сценариях может ограничивать гибкость.

Я лишь представила краткий обзор в этом посте, для подробной информации — посетите библиотеку.
  • ❤ 10
  • 🔥 9
  • 👌 2
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →