easy_localization 3.0.7 copy "easy_localization: ^3.0.7" to clipboard
easy_localization: ^3.0.7 copied to clipboard

Easy and Fast internationalizing and localization your Flutter Apps, this package simplify the internationalizing process .

Changelog #

[3.0.7] #

  • add _supportedLocales in EasyLocalizationController; log and check the deviceLocale when resetLocale;
  • add scriptCode to desiredLocale if useOnlyLangCode is true. scriptCode is needed sometimes, for example zh-Hans, zh-Hant
  • add savedLocale get method for context. if context.savedLocale is null, then language option is following system, i can display the option in user selection form.

[3.0.6] #

  • add 'useFallbackTranslationsForEmptyResources' to be able to use fallback locales for empty resources.

[3.0.5] #

  • add 'extraAssetLoaders' to add more assets loaders if it is needed, for example, if you want to add packages localizations to your project.

[3.0.4] #

  • determine plural cases based on the actual language rules (#620)
  • update intl to 0.19.0 (#638)

[3.0.3] #

  • replace log() with stdout.writeln()

[3.0.2] #

  • support intl 18
  • support dart 3
  • added trExists extension
  • fix: handle invalid saved local
  • handle null returned by assetLoader
  • improve parsing scriptCode from local string
  • add tr-extension on build context

[3.0.1] #

  • added option allowing skip keys of nested object
  • fixed plural bug
  • fixed typos

[3.0.0] #

  • BREAKING: Added EasyLocalization.ensureInitialized(), Needs to be called
  • BREAKING: Added support null safety
  • BREAKING: removed context parameter from plural() and tr()
  • Added Formatting linked translations more
  • Updated plural() function, with arguments more
      var money = plural('money_args', 10.23, args: ['John', '10.23'])  // output: John has 10.23 dollars
    
  • Removed preloader widget preloaderWidget
  • fixed many issues.
  • customizable logger [EasyLogger]
  • device locale and reset device locale
  • extensions helpers
  • support fallback locale keys redirection

[2.3.3] #

  • Updated pubspec dependencies
  • Added --source-file argument in codegen

[2.3.2] #

  • Updates generated tool.

[2.3.1] #

  • Updated plural() function, now she is not strict.
  • Updates print and log messages

[2.3.0] #

  • Added extension methods on [BuildContext] for access to Easy Localization

🔥 It's more easiest way change locale or get parameters

context.locale = locale;

ℹ️ No breaking changes, you can use old the static method EasyLocalization.of(context)

[2.2.2] #

  • Added preloaderWidget.
  • Fixed many issues.

[2.2.1] #

  • Added startLocale.

[2.2.0] #

  • Added support Locale scriptCode.

  • Added EasyLocalization.of(context).delegates for localizationsDelegates

    supportedLocales: [
        Locale('en', 'US'),
        Locale('ar', 'DZ'),
        Locale('ar','DZ'),localeFromString('ar_DZ')
      ]
    
  • Added support Custom assets loaders Easy Localization Loader.

    • Added support CSV files.

      path: 'resources/langs/langs.csv',
      assetLoader: CsvAssetLoader(),
      
    • Added support Yaml files.

      path: 'resources/langs',
      assetLoader: YamlAssetLoader(),
      
      path: 'resources/langs/langs.yaml',
      assetLoader: YamlSingleAssetLoader(),
      
    • Added support XML files.

      path: 'resources/langs',
      assetLoader: XmlAssetLoader(),
      
      path: 'resources/langs/langs.xml',
      assetLoader: XmlSingleAssetLoader(),
      
  • Added Code generation of localization files.

    $ flutter pub run easy_localization:generate -h
    -s, --source-dir     Source folder contains all string json files
                        (defaults to "resources/langs")
    -O, --output-dir     Output folder stores generated file
                        (defaults to "lib/generated")
    -o, --output-file    Output file name
                        (defaults to "codegen_loader.g.dart")
    -f, --format         Support json, dart formats
                        [json (default), keys]
    
    • generate the json string static keys in a dart class

      {
        "msg_named": "{} مكتوبة باللغة {lang}",
      }
      
      flutter pub run easy_localization:generate  -f keys -o locale_keys.g.dart
      
      abstract class  LocaleKeys {
        static const msg_named = 'msg_named';
      }
      
      Text(LocaleKeys.msg_named).tr(namedArgs: {'lang': 'Dart'}, args: ['Easy localization']),
      
    • generate the json Loader in a dart class

      flutter pub run easy_localization:generate
      
  • fixed many issues.

  • Added named arguments.

    "msg_named": "{} are written in the {lang} language",
    
    Text(LocaleKeys.msg_named).tr(namedArgs: {'lang': 'Dart'}, args: ['Easy localization']),
    

[2.1.0] #

  • Added Error widget.
  • fixed many issues.
  • Based on Bloc.
  • optimized and clean code more stability

[2.0.2] #

  • fixed many issues
  • optimized and clean code more stability

[2.0.1] #

  • Added change locale dynamically saveLocale default value true
  • fixed many issues

[2.0.0] #

this version came with many updates, here are the main ones:

  • optimized and clean code more stability

  • fixed many issues

  • added Unite test

  • Customization AssetLoader localizations assetLoader for more details see custom assetLoader

  • added fallbackLocale as optional

  • Hiding EasyLocalizationProvider

  • refactor and update approach localization for more details see example:

    // Now V2.0.0
    runApp(EasyLocalization(
      child: MyApp(),
      ...
    ));
    
    // after V2.0.0
    runApp(EasyLocalization(
      child: MyApp(),
      ...
    ));
    ...
    class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      var data = EasyLocalizationProvider.of(context).data;
      return EasyLocalizationProvider(...);
    }}
    
  • added Support for context

    tr("key", context: context),
    plural("key", 1 , context: context),
    

[1.4.1] #

  • optimized and clean code

  • fixed many issues

  • added extension for Strings

    // after 1.4.1
    Text('title'.tr()),
    Text('switch'.tr( gender: _gender ? "female" : "male")),
    Text('counter'.plural(counter)),
    

[1.4.0] #

  • refactor code changed call AppLocalizations.of(context).tr() AppLocalizations.of(context).plural() to tr() and plural()

    // after 1.4.0
    Text(
      tr('switch', gender: _gender ? "female" : "male"),
    ),
    
    // before 1.4.0
    Text(
      AppLocalizations.of(context).tr('switch', gender: _gender ? "female" : "male"),
    ),
    
  • added Flutter extension for Text widget

    // after 1.4.0
    Text('switch').tr( gender: _gender ? "female" : "male"),
    Text('counter').plural(counter),
    

[1.3.5] #

  • merge gender() and tr() .

    {
      "gender":{
        "male": "Hi man ;)",
        "female": "Hello girl :)"
      }
    }
    
    new Text(
      AppLocalizations.of(context).tr('switch', gender: _gender ? "female" : "male"),
    ),
    
  • use parameters args for gender.

    {
      "gender":{
        "male": "Hi man ;) {}",
        "female": "Hello girl :) {}"
      }
    }
    
    new Text(
      AppLocalizations.of(context).tr('switch', args:["Naama"] gender: _gender ? "female" : "male"),
    ),
    

[1.3.4] #

  • adeed Gender [female,male] gender() .

    {
      "gender":{
        "male": "Hi man ;)",
        "female": "Hello girl :)"
      }
    }
    
    new Text(
      AppLocalizations.of(context).gender('switch', _gender ? "female" : "male"),
    ),
    `
    

[1.3.3+1] #

  • updated plural() thanks shushper .

    {
      "text": {
        "day": {
          "zero":"{} дней",
          "one": "{} день",
          "two": "{} дня",
          "few": "{} дня",
          "many": "{} дней",
          "other": "{} дней"
        }
      }
    }
    

[1.3.3] #

  • removed data.savedLocale .
  • optimized and clean code
  • fixed many issues

[1.3.2] #

  • plural() added property resolver for nested key translations

    {
    "text": {
      "day": {
        "zero": "day",
        "one": "day",
        "other": "days"
        }
      }
    }
    
    
    new Text(
      AppLocalizations.of(context).plural("text.day", 2),
    ),
    
  • fixed many issues

[1.3.1] #

  • add useOnlyLangCode flag

[1.3.0] #

  • Load translations from remote or backend
  • fixed many issues

[1.2.1] #

  • supported shared_preferences
  • Save selected localization

[1.2.0] #

  • Added property resolver for nested key translations
  • return translate key if the element or path not exist
{
  "title": "Hello",
  "msg": "Hello {} in the {} world ",
  "clickMe": "Click me",
  "profile": {
    "reset_password": {
      "label":  "Reset Password",
      "username": "Username",
      "password": "password"
    }
  },
  "clicked": {
    "zero": "You clicked {} times!",
    "one": "You clicked {} time!",
    "other": "You clicked {} times!"
  }
}

new Text(
  AppLocalizations.of(context).tr('profile.reset_password.title'),
 ),

[1.0.4] #

  • Added Support country codes

[1.0.3] #

  • Updated tr() function added Multi Argument

[1.0.2] #

  • Added string pluralisation .
  • Added Argument to tr() function.
3.38k
likes
140
points
257k
downloads

Publisher

unverified uploader

Weekly Downloads

Easy and Fast internationalizing and localization your Flutter Apps, this package simplify the internationalizing process .

Repository (GitHub)
View/report issues
Contributing

Documentation

API reference

License

MIT (license)

Dependencies

args, easy_logger, flutter, flutter_localizations, intl, path, shared_preferences

More

Packages that depend on easy_localization