seedkit_locale 0.1.5
seedkit_locale: ^0.1.5 copied to clipboard
Генератор локализации SeedKit на базе intl_utils
seedkit_locale #
Пакет собирает ARB-файлы из приложения и подключенных пакетов, объединяет их
в один набор локализации и генерирует Dart-код через intl_utils.
Возможности #
- команда
dart run seedkit_locale:generate; - фиксированный входной путь
assets/l10n/; - фиксированный выходной путь
lib/src/generated/l10n/; - сбор строк из всех пакетов, доступных через
.dart_tool/package_config.json; - переопределение строк приложения поверх строк подключенных пакетов;
- единый delegate для Flutter и общий интерфейс
SeedkitLocalizationsдля UI-пакетов. - доступ к внутренниму пакету
intl
Настройка #
В UI-пакетах положите ARB-файлы в assets/l10n/ и используйте общий интерфейс:
Text(SeedkitLocalizations.of(context).getByKey('packageTitle'))
Можно использовать короткое обращение через extension на BuildContext:
Text(context.packageLocale.getByKey('packageTitle'))
После загрузки delegate доступно обращение без BuildContext:
Text(SeedkitLocalizations.current.getByKey('packageTitle'))
В основном приложении добавьте зависимости:
dependencies:
intl: ^0.20.2
seedkit_locale: ^0.0.3
Файлы локализации приложения тоже должны лежать в assets/l10n/ и называться
в формате intl_{locale}.arb, например assets/l10n/intl_ru.arb. Если ключ из
пакета повторяется в приложении, значение приложения используется как override.
Использование #
dart run seedkit_locale:generate
После запуска пакет создаст файлы в lib/src/generated/l10n/.
Подключите сгенерированный delegate в приложении:
MaterialApp(
localizationsDelegates: const [
SeedKitLocale.seedkitDelegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: SeedKitLocale.delegate.supportedLocales,
)
В основном приложении также доступен типизированный API сгенерированного класса:
Text(SeedKitLocale.of(context).packageTitle)