fast_i18n 5.7.0
fast_i18n: ^5.7.0 copied to clipboard
Localization / Internationalization (i18n) solution. Use JSON, YAML or CSV files to create typesafe translations via source generation.
5.7.0 #
- feat: add option to disable timestamp generation
- feat: add option to split output file
- perf: flat translation map now declared separately for each locale
5.6.0 #
- feat: add CSV support
- feat: improve generic type detection for lists (e.g.
List<List<String>>,List<Map<String, String>>) - feat: make optional class members (from interfaces) non-nullable when possible
5.5.0 #
Namespaces
Split your translations into different files. Each file represents a namespace:
i18n/
widgets/
- widgets.i18n.json
- widgets_fr.i18n.json
dialogs/
- dialogs.i18n.json
- dialogs_fr.i18n.json
Interfaces
Create common super classes for different nodes. This allows for more type safety. Instead of List<dynamic>, we can have List<PageData>
{
"pages": [
{
"title": "E2E encryption",
"content": "Your data is safe!"
},
{
"title": "Sync",
"content": "Synchronize all your devices!"
}
]
}
With the generated mixin:
mixin PageData {
String get title;
String get content;
}
See updated README for further information about those features.
5.4.0 #
- feat: add default plural resolvers for Spanish, French and Italian (Thanks to @SimoneBressan)
5.3.0 #
- feat: handle linked translations with parameters
5.2.0 #
- feat: add YAML support, you can now choose between JSON and YAML to define your translations!
- feat: different casing for map keys via
key_map_case
New recommended setup (see README):
void main() {
WidgetsFlutterBinding.ensureInitialized();
// LocaleSettings.useDeviceLocale();
runApp(TranslationProvider(child: MyApp())); // Wrap your app with TranslationProvider
}
MaterialApp(
locale: TranslationProvider.of(context).flutterLocale, // use provider
supportedLocales: LocaleSettings.supportedLocales,
localizationsDelegates: GlobalMaterialLocalizations.delegates,
)
5.1.0 #
- feat: add
param_caseconfiguration to recase parameters
5.0.4 #
- fix: always escape
$forbracesanddouble_braces, escape$fordartif this symbol is alone
5.0.3 #
- fix: For country code only,
indiainstead ofinwill be used for enum constant (inis a reserved keyword) - fix: When using country code only, the correct device locale will be selected
5.0.2 #
- fix: transform keys with multiple digits according to
key_casecorrectly
5.0.1 #
- fix: Missing
PluralResolverwhen pluralization is not used in project
5.0.0 #
This release mostly focuses on simplifications of build.yaml.
- Breaking: builder name renamed from
fast_i18n:i18nBuildertofast_i18n - Breaking: plural auto detection is on by default (
auto: cardinal) - Breaking: fallback strategy option
strictis nownone - Breaking: key paths in
build.yamlmust be cased according tokey_caseif specified - Breaking: your project must be null safe
- feat: generated file follows lint guidelines
- feat: add support for linked translations, e.g.
Welcome to @:appName
You can read the detailed migration guide here.
4.11.0 #
- feat: simplify
${arg}to$argif possible - feat: make internal translation class instance final
4.10.0 #
Added support for custom contexts. Example:
{
"greet": {
"male": "Hello Mr $name",
"female": "Hello Ms $name"
}
}
String a = t.greet(name: 'Anna', context: GenderContext.female);
For more information, see README.
4.9.2 #
- fix: call setLocale without WidgetsBinding
- docs: update README
4.9.1 #
- fix: generate default plural resolvers when auto pluralization is used
4.9.0 #
- feat: detect pluralization automatically, configure it via
pluralization->auto: cardinal / ordinal
4.8.0 #
- feat: add option to turn off flat map generation via
flat_map: false - feat: add
fallback_strategyconfiguration, possible valuesstrict(default),base_locale - feat: auto rebuild
flutter pub run fast_i18n watch(experimental) - fix: escape parameters with backslash correctly
4.7.2 #
- fix: handle string interpolation at the beginning (for
bracesanddouble_braces)
4.7.1 #
- fix:
build_runnergeneration error
4.7.0 #
- feat: new
string_interpolationconfiguration. Possible values:dart(default),bracesanddouble_braces
4.6.3 #
- fix: restore non-nullsafety compatibility
4.6.2 #
- fix: handle text nodes at root level, i.e.
t['someKey']
4.6.1 #
- fix: missing key parameter
4.6.0 #
- feat: add flat translation map, accessible via
t['someKey.anotherKey']
4.5.0 #
- feat: remove hint when overriding plural resolvers (were too verbose)
- feat: generated plural resolvers fallback to default quantity if null
- feat: add
zeroquantity tocs,de,enandvi(not breaking) - docs: it is now recommended to put this library into
dev_dependencies
4.4.1 #
- fix:
@forrequiredmissing (Flutter 1.x.x) - fix:
null_safetyistrueby default (as intended in 4.4.0)
4.4.0 #
- feat: add Flutter 1.x.x support, build_runner detects this automatically, otherwise set
null_safety: falseinbuild.yaml - feat:
flutter pub run fast_i18nignoresbuild.yamlfiles without fast_i18n entry - fix: add type hint for
_renderedResolvers
4.3.0 #
- feat: plural resolvers can now be overwritten
- fix: make params distinct
- fix: sort locales correctly (base first, then alphabetically)
4.2.0 #
- feat: add pluralization support
- feat:
AppLocalehas a new property calledflutterLocale - feat: new command
flutter pub run fast_i18nwhich is much faster thanflutter pub run build_runner build --delete-conflicting-outputs
4.1.1 #
- fix:
LocaleSettings.setLocaleRawfor locales encoded with underscore_ - docs: update README
4.1.0 #
A rebuild is needed: flutter pub run build_runner build.
- feat: the generated file is now self-contained, it works even if you remove this library!
- feat: add stats and timestamp to the generated file
- fix: parse files with underscore only (e.g.
strings_en_US) - fix: parse files with script tag (e.g.
strings_zh-Hant-TW) - perf: generate
LocaleSettings.supportedLocalesstatically without library call - perf: remove switch call in
Translations.of(context). - docs: updates in generated file
- docs: update README
4.0.0 #
The typed version is now first class.
- Breaking:
setLocale->setLocaleRaw,setLocaleTyped->setLocale - Breaking:
locales->supportedLocalesRaw - Breaking:
AppLocale.toLanguageTag->AppLocale.languageTag - Breaking: translation classes are now private by default, you can configure it via
translation_class_visibilityinbuild.yaml(in most cases just keep it private!) - plain strings are now implemented via getters,
edit json -> rebuild i18n -> hot reloadworks now for faster development
3.0.4 #
- fix
LocaleSettings.useDeviceLocale()causing compilation error (Flutter Web)
3.0.3 #
- docs: add hint for
.i18n.jsonextension - docs: update code examples
- docs: update image
3.0.2 #
- new optional case transformation:
pascal - remove recase dependency
- code changes in generated .g.dart file
3.0.1 #
- add real project example
- update FAQ in README
- depend on null-safety version of recase package
3.0.0 #
- null safety support
- add type-safe functions
LocaleSettings.setLocaleTypedandLocaleSettings.currentLocaleTyped - Breaking:
output_translate_varrenamed totranslate_varinbuild.yaml
2.3.1 #
- Make locales case sensitive to comply with
MaterialApp'ssupportedLocales.
2.3.0 #
- Add
supportedLocalesproperty that can be used to fillMaterialApp'ssupportedLocalesargument.
2.2.1 #
- Fix compilation error occurring when non-standard name (not 'strings.i18n.json') is used for json files.
2.2.0 #
- new config:
output_translate_var, renames defaulttvariable - internal: device locale now fetched via
Platform.localeName
2.1.0 #
A rebuild is needed: flutter pub run build_runner build.
- API change: LocaleSettings.useDeviceLocale() is no longer asynchronous and now returns the new locale (was
Future<void>) - API change: LocaleSettings.setLocale(locale) now also returns the new locale (was
void)
Just in case you use internal API: FastI18n.findDeviceLocale has been renamed to FastI18n.getDeviceLocale
2.0.0 #
Thanks to @DenchikBY (https://github.com/DenchikBY).
- Now it's possible to set in and out directories for files.
- You can set the pattern by which to search for files.
- Generated keys can be switched to another case in generated classes.
- Removed dependency on devicelocale.
- Configs with baseLocale and maps moved from config.i18n.json to build.yaml
- Generators replaced with fields for keys with static values.
- Arguments now can be wrapped with braces like ${key}.
- Removed deprecated
#mapmode (deprecated in 1.5.0)
Example of new config in build.yaml:
targets:
$default:
builders:
fast_i18n:i18nBuilder:
options:
base_locale: en
input_directory: lib/i18n
input_file_pattern: .i18n.json
output_directory: lib/i18n
output_file_pattern: .g.dart
key_case: snake
maps:
- a
- b
- c.d
1.8.2 #
- Hotfix: possible NPE when calling Translations.of(context)
1.8.1 #
- Hotfix: possible NPE error when calling LocaleSettings.useDeviceLocale or LocaleSettings.setLocale
1.8.0 #
- New advanced mode: final t = Translations.of(context)
1.7.0 #
- Prefer language code over region code.
1.6.1 #
- Add more unit tests.
- Code Polishing.
1.6.0 #
- Generates
List<String>orMap<String, String>instead ofList<dynamic>orMap<String, dynamic>if the children are only strings. - You will experience a better autocompletion like
.substring,.indexOf, etc. because of that.
1.5.0 #
- Define additional metadata in the
config.i18n.jsonfile. - Maps defined with
#mapare now deprecated. Useconfig.i18n.jsonfor that. - Add
LocaleSettings.localesto get the supported locales.
1.4.0 #
- Add support for country codes. Use e.g.
strings_en_US.i18n.jsonorstrings_en-US.i18n.json. - Add fallback for
LocaleSettings.setLocaleif locale is not supported.
1.3.0 #
- Add support for lists.
- Add support for maps. Use
{ "#map": "" }to enable map inlining.
1.2.0 #
- Only one single
.g.dartwill be generated
1.1.2 #
- Fix iOS bug in
LocaleSettings.useDeviceLocale
1.1.1 #
- Fix for
LocaleSettings.useDeviceLocale
1.1.0 #
- Add
LocaleSettings.useDeviceLocale()
1.0.0 #
- Initial Release
- basic json support (no arrays)