ez_localization 0.3.0+1

Flutter Android iOS web

Setup a powerful localization system in your flutter application quickly and easily.

EzLocalization #

This package allows you to setup a powerful localization system with ease and in only a few minutes.

Features #

Here are some features:

  • Easy, lightweight, open-source.
  • MIT licensed.
  • Easily extensible.

Getting started #

It only takes a few steps in order to get EzLocalization to work !
First, add the following code to your MaterialApp definition (usually in main.dart) :

EzLocalizationDelegate ezLocalization = EzLocalizationDelegate(supportedLocales: [Locale('en'), Locale('fr')]); // The first language is your default language.

return MaterialApp(
  // ...
  localizationsDelegates: ezLocalization.localizationDelegates,
  supportedLocales: ezLocalization.supportedLocales,
  localeResolutionCallback: ezLocalization.localeResolutionCallback,

Then you create a folder named languages in your assets directory with the defined languages in it. An example structure could be :

└── languages
    ├── en.json
    └── fr.json

Here's an example of en.json :

  "hello": "Hello !"

And a translated fr.json :

  "hello": "Bonjour !"

Don't forget to add the assets in your pubspec.yml :

  # ...
    - "assets/languages/"

That's it ! To get your string you only have to call EzLocalization.of(context).get('hello').

Advanced #

Extension method #

With the extension method, it's even easier to get a localized string ! The only thing you have to do is to replace EzLocalization.of(context).get('key') by context.getString('key').

You may have to manually import EzLocalization in your file.

Builder widget #

EzLocalization provides a builder widget called EzLocalizationBuilder. You can use it as such :

  delegate: EzLocalizationDelegate(
    supportedLocales: [
  builder: (context, localizationDelegate) => MaterialApp(
    title: 'Beautifully localized app',
    home: MyMainWidget(),
    localizationsDelegates: localizationDelegate.localizationDelegates,
    supportedLocales: localizationDelegate.supportedLocales,
    localeResolutionCallback: localizationDelegate.localeResolutionCallback,

It has two advantages :

  • It helps reducing boilerplate.
  • You can dynamically change the current locale using EzLocalizationBuilder.of(context).changeLocale(yourLocale).

Nested strings #

You can nest translation strings as such :

  "tabs": {
    "home": "Home"

And it can be access using EzLocalization.of(context).get('tabs.home').

Format arguments #

In your translation string, you may add arguments using {} :

  "greeting": "Hello {target}, my name is {me} !"

You can then fill them with EzLocalization.of(context).get('greeting', {'target': 'John', 'me': 'Bob'}). Also, instead of a map you can pass a list and get your arguments by their indexes.

Change the files path #

You can change from the default path of assets/languages/$languageCode.json by passing getPathFunction to EzLocalizationDelegate. You will then have to provide a valid asset path according to the specified locale.

Don't forget to update your assets entry in your pubspec !

Updating the iOS app bundle #

See the official flutter.dev documentation about updating the iOS app bundle.

Contributing #

You have a lot of options to contribute to this project ! You can :

pub points



Setup a powerful localization system in your flutter application quickly and easily.

Repository (GitHub)
View/report issues


API reference




flutter, flutter_localizations


Packages that depend on ez_localization