seedkit_locale 0.4.0
seedkit_locale: ^0.4.0 copied to clipboard
Генератор локализации SeedKit на базе intl_utils
seedkit_locale #
Пакет генерации и переключения локализации для SeedKit-приложений.
Интеграция #
- Для генерации локализации добавь конфиг в
pubspec.yaml:
seedkit_locale:
enabled: true
class_name: L
main_locale: ru
arb_dir: assets/l10n
output_dir: lib/src/core/generated/l10n
untranslated_messages_file: untranslated_messages.json
- Перед созданием,
IntlCubitхранилище awaitStorageFactory.to, должно быть инициализировано:
await StorageFactory.to;
BlocProvider(
create: (_) => IntlCubit(
IntlRepository(IntlProvider()),
),
);
- В корне приложения оберни
MaterialAppвIntlWidgetи передай locale:
IntlWidget(
builder: (_, intlState) => MaterialApp.router(
locale: intlState.getLocale,
localizationsDelegates: const [
L.delegate,
// <- тут другие SeedKitLocale.deletage из других пакетов
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: L.delegate.supportedLocales,
),
);
Использование #
- в
pubspec.yamlдолжна быть секцияseedkit_locale.
seedkit_locale:
enabled: true
class_name: L
main_locale: ru
arb_dir: assets/l10n
output_dir: lib/src/core/generated/l10n
untranslated_messages_file: untranslated_messages.json
- ARB-файлы в директории
arb_dir.
{
"@@locale": "ru",
"app_name": "Seedkit шаблон",
"app_version": "Версия {value}",
"@app_version": {
"placeholders": {
"value": {
"type": "String",
"example": "1.0.0"
}
}
}
}
- Команда запуска
dart run seedkit_locale:generate
-
Результат: генератор создаёт класс, имя которого ==
class_nameв секцииpubspec.seedkit_locale -
IntlCubit— cubit текущей локали; подписывается на репозиторий и меняет локаль черезchangeLocale. -
IntlState— состояние локали;getLocaleвозвращаетLocale. -
IntlWidget— корневой виджет-обёртка, который отдаётIntlStateв builder. -
IntlProvider— provider хранения выбранной локали. -
IntlRepository— репозиторий текущей локали со stream, сохранением и восстановлением значения. -
Intl,MessageLookupByLibrary,initializeInternalMessageLookupи связанные API для сгенерированной локализации.
Импорты #
import 'package:seedkit_locale/seedkit_locale_cubit.dart';
import 'package:seedkit_locale/seedkit_locale_intl.dart';
import 'package:seedkit_locale/seedkit_locale_provider.dart';
import 'package:seedkit_locale/seedkit_locale_repository.dart';