class PolyglotFlutter::Serializer::Localization::Localization
Public Instance Methods
import_default_language()
click to toggle source
# File lib/flutter_polyglot_cli/serializers/localizations/localization_serializer.rb, line 17 def import_default_language() return '' unless @set_default_langauge %{import 'package:flutter_gen/gen_l10n/#{@output_localization_file}_#{@mandatory_language.downcase}.dart';} end
latest_localizations()
click to toggle source
# File lib/flutter_polyglot_cli/serializers/localizations/localization_serializer.rb, line 22 def latest_localizations() return 'static AppLocalizations? _latestLocalizations;' unless @set_default_langauge %{static AppLocalizations? _latestLocalizations = AppLocalizations#{@mandatory_language.capitalize}(); } end
template()
click to toggle source
# File lib/flutter_polyglot_cli/serializers/localizations/localization_serializer.rb, line 27 def template <<~TEMPLATE import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/<%= @output_localization_file %>.dart'; <%= import_default_language %> class Strings { Strings._(); <%= latest_localizations %> static AppLocalizations of(BuildContext context) => AppLocalizations.of(context) ?? latest; static AppLocalizations get latest { final appLocalizations = _latestLocalizations; if (appLocalizations == null) { throw 'Unable to load App Localizations'; } return appLocalizations; } } class StringsLocaleWidget extends StatelessWidget { const StringsLocaleWidget({Key? key, required this.child}) : super(key: key); final Widget child; @override Widget build(BuildContext context) { Strings._latestLocalizations = AppLocalizations.of(context); return child; } } extension AppLocales on Locale { <%= generate_static_locales(@languages) %> } TEMPLATE end
write(sources_path, output_localization_file, set_default_langauge, mandatory_language)
click to toggle source
# File lib/flutter_polyglot_cli/serializers/localizations/localization_serializer.rb, line 7 def write(sources_path, output_localization_file, set_default_langauge, mandatory_language) @output_localization_file = output_localization_file @set_default_langauge = set_default_langauge @mandatory_language = mandatory_language FileUtils.mkdir_p sources_path unless File.exist? sources_path output_path = File.join(sources_path, 'strings.dart') File.write(output_path, render) end