locale_gen 13.0.0
locale_gen: ^13.0.0 copied to clipboard
Generate type-safe Dart code from JSON translation files, for Flutter apps and Dart projects, with sprintf and ICU MessageFormat support.
Changelog #
13.0.0 - 2026-09-15 #
13.0.0-alpha.1 13.0.0-alpha.2 #
Feature #
- MessageFormat (ICU) support: JSON values like
{count, plural, one {# item} other {# items}}andHi, {name}!now generate type-safe Dart functions with named parameters. - ICU
select,selectordinal,number,date,time, anddurationarg types are supported, with locale-aware formatting viapackage:intl. - Cross-locale validation: the generator warns when a non-default locale uses a different placeholder name or ICU node type than the default language for the same key.
- Optional
message_format_strict: trueconfig flag surfaces accidental sprintf usage in MessageFormat-only projects. - MessageFormat support also lands in the Dart (non-Flutter) writer, returning a
LocalizedValuewith one MessageFormat-interpolated string per locale. - The existing sprintf (
%s,%d,%1$s) and JSON-object plural formats keep working unchanged; detection happens per key. - When
Localization.localeis null at runtime, MessageFormat substitution and number/date/time formatting fall back to the project's default locale (LocalizationDelegate.defaultLocale.toLanguageTag()) instead of crashing.
Known limitations #
- The dynamic
getTranslation(key, args:)escape hatch on theLocalizationclass is sprintf-only. MessageFormat keys must be invoked via their generated typed functions (e.g.,Localization.of(context).greeting(name: 'Alice')). CallinggetTranslationwith an ICU key returns the raw template string without substitution.
12.6.0 #
12.1.0 #
12.0.0 - 2023-06-05 #
Updated to intl 0.18.x
11.0.0 - 2023-01-11 #
BREAKING CHANGE!! #
- After some time of using the new locale_gen package. It made our lifes harder than before.
For now we reverted the
.of(context)removalsingeltonimplementation Other changes likesprintf,pluralsand dependency updates are still in place.
10.0.0 - 2022-11-14 #
- Updated the signature of
loadto support getting the bundle to load from. Falls back torootBubdle
9.0.0 - 2022-10-03 #
Breaking #
- Translations can no longer be accessed from static methods on the Localization class. Instead you now need to manually manage the different localization instances. Migration steps are described in the readme.
8.0.0 - 2022-09-24 #
Breaking #
- Arguments are now formatted using the sprintf package. This means %d now refers to integers only. Use %f to format doubles, you can also use some format specifiers, eg: (%.2f will show 2 decimals)
- This means that the sprintf package must be added to the pubspec.yaml (at least ^6.0.2)
Added #
- Support for plurals had been added, see the readme on how to use them
Updated #
- Dependencies
7.0.0 - 2022-09-23 #
Breaking #
- Removed the need of passing a context to get translations. Migration steps are described in the readme.
6.0.0 - 2022-09-20 #
Added #
- Added support for non-positional arguments. You cannot use both positional and non-positional arguments in the same string.
4.1.1 - 2021-12-16 #
4.1.0 - 2021-12-16 #
Added #
- Support for using an other directory instead of
lib/util/localefor write all the files
4.0.0 - 2021-11-12 #
Breaking
- Dart 2.14.0 is minimum dart version
- Fixed an issue where
kDebugModemoved to another import
3.7.0 - 2021-11-02 #
- Added better import sorting (alphabetic) so the analyzer won't break everytime
3.6.1 - 2021-10-12 #
- Issue where an exception was thrown even when it was not needed.
3.6.0 - 2021-10-12 #
Fixed #
- #53: Issue where a carriage return
\rwould generate invalid documentation - #52: Unnecessary string interpolation for '$key' in
localization.dart
Added #
- #39: Better generated documentation for arguments
- #56: Option to override the localizations. Pass a
LocalizationOverridesto theLocalizationDelegate. Refreshing & managing the cached localizations should be done by the developer.
3.5.0 - 2021-10-06 #
Added #
- locale that was used to initialize your Localization is now also included in
localization.dart
3.3.0 - 2021-04-07 #
3.2.0 - 2021-03-30 #
Added #
- #42 Migrated strict mode code
- #42 Generate strict mode code
- #36 Added support generating documentation so you can see translations in your IDE
- #37 Added config option to configure which languages should be used for generating documentation code
3.1.0 - 2021-03-25 #
Added #
- #34 Support for skipping a locale at runtime. example: only use dutch in alpha but not in beta & production
3.0.0 - 2021-03-07 #
2.0.5 - 2020-10-06 #
Fixed #
- #24: error when using locale_asset_path in combination with the icapps_translations package
