Last updated:
0 purchases
ez localization
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,
);
copied to clipboard
Then you create a folder named languages in your assets directory with the defined languages in it.
An example structure could be :
assets
└── languages
├── en.json
└── fr.json
copied to clipboard
Here's an example of en.json :
{
"hello": "Hello !"
}
copied to clipboard
And a translated fr.json :
{
"hello": "Bonjour !"
}
copied to clipboard
Don't forget to add the assets in your pubspec.yml :
flutter:
# ...
assets:
- "assets/languages/"
copied to clipboard
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 :
const EzLocalizationBuilder(
delegate: EzLocalizationDelegate(
supportedLocales: [
Locale('en'),
Locale('fr'),
Locale('es'),
],
),
builder: (context, localizationDelegate) => MaterialApp(
title: 'Beautifully localized app',
home: MyMainWidget(),
localizationsDelegates: localizationDelegate.localizationDelegates,
supportedLocales: localizationDelegate.supportedLocales,
localeResolutionCallback: localizationDelegate.localeResolutionCallback,
),
);
copied to clipboard
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"
}
}
copied to clipboard
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} !"
}
copied to clipboard
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 :
Fork it on Github.
Submit a feature request or a bug report.
Donate to the developer.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.