From 103c1085173051db18a4deb379fb0287c8e3f0b2 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 15 Jul 2022 01:01:05 +0200 Subject: [PATCH 01/11] Localization on a dart (non Flutter) app. --- lib/src/config/pubspec_config.dart | 42 ++++++++++++++--------- lib/src/constants/constants.dart | 1 + lib/src/generator/generator.dart | 10 +++++- lib/src/generator/templates.dart | 55 +++++++++++++++++++++++++++++- 4 files changed, 89 insertions(+), 19 deletions(-) diff --git a/lib/src/config/pubspec_config.dart b/lib/src/config/pubspec_config.dart index 89dc763..c9386ae 100644 --- a/lib/src/config/pubspec_config.dart +++ b/lib/src/config/pubspec_config.dart @@ -4,6 +4,7 @@ import '../utils/file_utils.dart'; import 'config_exception.dart'; class PubspecConfig { + bool? _flutter = false; bool? _enabled; String? _className; String? _mainLocale; @@ -26,33 +27,40 @@ class PubspecConfig { "Failed to extract config from the 'pubspec.yaml' file.\nExpected YAML map but got ${pubspecYaml.runtimeType}."); } - var flutterIntlConfig = pubspecYaml['flutter_intl']; - if (flutterIntlConfig == null) { - return; - } + var intlConfig = pubspecYaml['flutter_intl']; + if (intlConfig == null) { + intlConfig = pubspecYaml['intl']; - _enabled = flutterIntlConfig['enabled'] is bool - ? flutterIntlConfig['enabled'] + if( intlConfig==null) + return; + _flutter = false; + } else + _flutter = true; + + _enabled = intlConfig['enabled'] is bool + ? intlConfig['enabled'] : null; - _className = flutterIntlConfig['class_name'] is String - ? flutterIntlConfig['class_name'] + _className = intlConfig['class_name'] is String + ? intlConfig['class_name'] : null; - _mainLocale = flutterIntlConfig['main_locale'] is String - ? flutterIntlConfig['main_locale'] + _mainLocale = intlConfig['main_locale'] is String + ? intlConfig['main_locale'] : null; - _arbDir = flutterIntlConfig['arb_dir'] is String - ? flutterIntlConfig['arb_dir'] + _arbDir = intlConfig['arb_dir'] is String + ? intlConfig['arb_dir'] : null; - _outputDir = flutterIntlConfig['output_dir'] is String - ? flutterIntlConfig['output_dir'] + _outputDir = intlConfig['output_dir'] is String + ? intlConfig['output_dir'] : null; - _useDeferredLoading = flutterIntlConfig['use_deferred_loading'] is bool - ? flutterIntlConfig['use_deferred_loading'] + _useDeferredLoading = intlConfig['use_deferred_loading'] is bool + ? intlConfig['use_deferred_loading'] : null; _localizelyConfig = - LocalizelyConfig.fromConfig(flutterIntlConfig['localizely']); + LocalizelyConfig.fromConfig(intlConfig['localizely']); } + bool? get flutter => _flutter; + bool? get enabled => _enabled; String? get className => _className; diff --git a/lib/src/constants/constants.dart b/lib/src/constants/constants.dart index 48f52b8..4276d69 100644 --- a/lib/src/constants/constants.dart +++ b/lib/src/constants/constants.dart @@ -1,5 +1,6 @@ import 'package:path/path.dart'; +const defaultFlutter = false; const defaultClassName = 'S'; const defaultMainLocale = 'en'; final defaultArbDir = join('lib', 'l10n'); diff --git a/lib/src/generator/generator.dart b/lib/src/generator/generator.dart index 853346c..2f66342 100644 --- a/lib/src/generator/generator.dart +++ b/lib/src/generator/generator.dart @@ -17,11 +17,19 @@ class Generator { late String _outputDir; late bool _useDeferredLoading; late bool _otaEnabled; + late bool _flutter; /// Creates a new generator with configuration from the 'pubspec.yaml' file. Generator() { var pubspecConfig = PubspecConfig(); + _flutter = defaultFlutter; + if( pubspecConfig.flutter!=null ) + _flutter = pubspecConfig.flutter!; + else { + warning("Config parameter 'flutter_int' or 'intl' required."); + } + _className = defaultClassName; if (pubspecConfig.className != null) { if (isValidClassName(pubspecConfig.className!)) { @@ -87,7 +95,7 @@ class Generator { var labels = _getLabelsFromMainArbFile(); var locales = _orderLocales(getLocales(_arbDir)); var content = - generateL10nDartFileContent(_className, labels, locales, _otaEnabled); + generateL10nDartFileContent(_flutter, _className, labels, locales, _otaEnabled); var formattedContent = formatDartContent(content, 'l10n.dart'); await updateL10nDartFile(formattedContent, _outputDir); diff --git a/lib/src/generator/templates.dart b/lib/src/generator/templates.dart index 3c63dae..bef106f 100644 --- a/lib/src/generator/templates.dart +++ b/lib/src/generator/templates.dart @@ -2,8 +2,9 @@ import '../utils/utils.dart'; import 'label.dart'; String generateL10nDartFileContent( - String className, List