NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #40 most downloaded on pub.dev
Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
Last release 3 months ago
25 Jun 2026
Release timing varies
gaps range from 2 weeks to 1.9 years
Most releases are documented
notes for 53 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
140 releases · first in 2012
Updated the Turkish Lira (TRY) currency symbol in simpleCurrencySymbols from "TL" to "₺" (U+20BA). This ensures accuracy and alignment with the offici
simpleCurrencySymbolsverifiedLocale.zh-Hans-CN would have been previously parsed as zh, but iszh_CN.simpleCurrencySymbols@pragma('wasm:prefer-inline') to Intl methods that already have@pragma('vm:prefer-inline'), for the same reason: to help omit messagepackage:lints.simpleCurrencySymbols
from "TL" to "₺" (U+20BA). This ensures accuracy and alignment with the
official symbol introduced in 2012.verifiedLocale.
For example, zh-Hans-CN would have been previously parsed as zh, but is
now parsed as zh_CN.simpleCurrencySymbols
from "GHS" to "GH₵(U+20B5)".simpleCurrencySymbols from "GEL" to "₾" (U+20BE).@pragma('wasm:prefer-inline') to Intl methods that already have
@pragma('vm:prefer-inline'), for the same reason: to help omit message
descriptions from compiled output.package:lints.Intl.select documentation to clarify other fallback behavior
and thrown ArgumentError.One column per quarter.
Remove the dependency on package:http.
package:http.package:web.Upgrade package:web dependency constraint to 1.1.0, fixes issue #916.
package:web dependency constraint to 1.1.0, fixes issue
#916.Fix caching of messages in CompositeMessageLookup.
CompositeMessageLookup.numberFormatSymbols as a Map<String, NumberSymbols>.dateTimeSymbolMap as a Map<String, DateSymbols>.^3.3package:web ^0.5.0.package:lints ^4.0.0.bidi.dart for Kordi Sorani "ckb".Add fallback for deprecated locales, such as he <-> iw.
tryParse to NumberFormat.tryParse tryParseStrict tryParseLoose tryParseUtc to DateFormat.he <-> iw.EEEEE skeleton for DateFormat, closing #176.3.0.0 SDK.yy skeleton.NumberParserBase abstract classUpdate ruble sign and update corresponding test.
Add support for minimumSignificantDigits / maximumSignificantDigits in NumberFormat.
minimumSignificantDigits / maximumSignificantDigits in
NumberFormat.NumberFormat.compact() ('2 milliards').NumberFormat.compact().NumberFormat.compact() to explicitly add sign
even for positive values.decimalPatternDigits to NumberFormat which supports specifying the
number of decimal digits in a decimal pattern.package:lints/recommended.yaml.IntlStream and StringIterator into StringStack.formatDuration and formatDurationFrom.shortLocale and canonicalizedLocale implementations smarter.Make year and month not zoneable, as this is a runtime error in ICU4X.
year and month not zoneable, as this is a runtime error in ICU4X.@pragma('vm:prefer-inline') to Intl methods that already have
@pragma('dart2js:tryInline'), for the same reason: to help omit message
descriptions from compiled output.Nothing published for this version
Nothing published for this version
Nothing published for this version
Add an analysis_options.yaml and fix or suppress all the complaints from it.
Add class modifiers.
Add return type to some internal methods to improve dart2js output.
Upate to require Dart 2.0. Remove deprecated calls,
More upper case constant removal.
Add type parameters on numberFormatSymbols for Dart 2 compatibility. Note that it only adds them on the right-hand side because adding them to the sta
A couple of minor Dart 2 fixes.
Add a customPattern parameter to the currency constructor. This can be used to provide a custom pattern if you have one, e.g. for accounting formats.
Group the padding digits to the left of the number, if present. e.g. 00,001.
Use the platform.locale API to get the OS platform.
Getting rid of the Intl object, as it only served as a wrapper of Locale. So the ...Format objects are now the top-level things.
Change timezone API, adding a dependency on package:timezone.
As part of deprecating transformer usage, allow rewrite_intl_messages.dart to add names and arguments to messages with parameters. Make the transforme…
rewrite_intl_messages.dart
to add names and arguments to messages with parameters. Make the transformer
not generate names for zero-argument methods and just use the name+meaning
instead.Move top-level variables in extract_messages.dart into a MessageExtraction object. This is a breaking change for code that imports extract_messages.da…
onMessage top level variable, which defaults to print. Warning and
error messages will all now go through this function instead of calling
print directly.extract_messages.dart into a MessageExtraction
object. This is a breaking change for code that imports
extract_messages.dart, which probably only means message format
readers/extractors like extract_to_arb.dart and generate_from_arb.dart.Update SDK dependency to 1.12.0, to reflect use of null-aware operators.
Change the signature for args and examples in Intl.plural/gender/select to match Intl.message, allowing dynamic values.
generate_locale_data_files.dartDeprecate NumberFormat.currencyPattern.
Update pubspec.yaml to allow newer version of fixnum and analyzer.
Nothing published for this version
Handle spaces in ARB files where we didn't handle them before, and where Google translation toolkit is now putting them.
Allow the name of an Intl.message to be "ClassName_methodName", as well as "functionName". This makes it easier to disambiguate messages with the same
* update analyzer to '<0.27.0'
update analyzer to '<0.28.0' and fixnum to '<0.11.0'
Use latest version of 'analyzer' and 'args' packages.
Nothing published for this version
Adds a special locale name "fallback" in verifiedLocale. So if a translation is provided for that locale and has been initialized, anything that doesn
Adds a DateFormat.parseLoose that accepts mixed case and missing delimiters when parsing dates. It also allows arbitrary amounts of whitespace anywher
Make withLocale and defaultLocale use a zone, so async operations inside withLocale also get the correct locale. Bumping the version as this might be
Fixes bug with printing a percent or permille format with no fraction part and a number with no integer part. For example, print 0.12 with a format pa
No user impacting changes. Tighten up a couple method signatures to specify that int is required.
Update pubspec dependencies to allow analyzer version 23.
Number formatting now accepts "int-like" inputs that don't have to conform to the num interface. In particular, you can now pass an Int64 from the fix
Add a -no-embedded-plurals flag to reject plurals and genders that have either leading or trailing text around them. This follows the ICU recommendati
Fix some style glitches with naming. The only publicly visible one is DateFormat.parseUtc, but the parseUTC variant is still retained for backward-com
Fix some style glitches with naming. The only publicly visible one is DateFormat.parseUtc, but the parseUTC variant is still retained for backward-compatibility.
Fix bug with per-mille parsing (only divided by 100, not 1000)
Fix bug with per-mille parsing (only divided by 100, not 1000)
Support NumberFormats with two different grouping sizes, e.g. 1,23,45,67,890
Moved petitparser into a regular dependency so pub run works.
Moved petitparser into a regular dependency so pub run works.
Improved code layout of the package.
Added a DateFormat.parseStrict method that rejects DateTimes with invalid values and requires it to be the whole string.
Catch analyzer errors and do not generate messages for that file. Previously this would stop the message extraction on syntax errors and not give erro
Change to work with both petitparser 1.1.x and 1.2.x versions.
Broaden the pubspec constraints to allow current analyzer versions.
Add a --[no]-use-deferred-loading flag to generate_from_arb.dart and generally make the deferred loading of message libraries optional.
Missed canonicalization of locales in one place in message library generation.
Missed canonicalization of locales in one place in message library generation.
Added a simple debug script for message_extraction_test.
Negative numbers were being parsed as positive.
Switch the message format from a custom JSON format to the ARB format
Make message catalogs use deferred loading.
Make message catalogs use deferred loading.
Update CLDR Data to version 25 for dates and numbers.
Update analyzer dependency to allow later versions.
Adds workaround for flakiness in DateTime creation, removes debugging code associated with that.
Nothing published for this version
Allow NumberFormat constructor to take an optional currency name/symbol, so you can format for a particular locale without it dictating the currency,
Add NumberFormat.parse()
Allow NumberFormat constructor to take an optional currency name/symbol, so you can format for a particular locale without it dictating the currency, and also supply the currency symbols which we don't have yet.
Canonicalize locales more consistently, avoiding a number of problems if you use a non-canonical form.
For locales whose length is longer than 6 change "-" to "_" in position 3 when canonicalizing. Previously anything of length > 6 was left completely alone.
Add a "meaning" optional parameter for Intl.message to distinguish between two messages with identical text.
Add a "meaning" optional parameter for Intl.message to distinguish between two messages with identical text.
Handle two different messages with the same text.
Allow complex string literals in arguments (e.g. multi-line)
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →