intl_translation
Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
0.22.0
69K downloads/mo
#1294 most downloaded on pub.dev
dart-lang/i18n
What this package is like to depend on
Last release 1 months ago
15 Jul 2026
Release timing varies
gaps range from 2 months to 2.3 years
Nearly every release is documented
notes for 30 of 32 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
32 releases · first in 2016
2 releases in the last 12 months
see the full history below
Release timeline
32 releases · Sep 2016 to Jul 2026Releases
latest 32-
0.22.015 Jul 2026Release notes
Open source →- Upgrade analyzer to
^12.1.0. - Escape text direction code points in generated code.
- Upgrade analyzer to
^14.0.0.
Release notes
Open source →- Upgrade analyzer to
^12.1.0.- Escape text direction code points in generated code.
- Upgrade analyzer to
^14.0.0.
- Upgrade analyzer to
-
0.21.019 Sep 2025Release notes
Open source →- BREAKING CHANGE: Update
dart_styleto^3.0.0- Allow analyzer
>=6.3.0 <8.0.0 - Upgrade SDK constraint to
^3.9.0.
- Allow analyzer
- BREAKING CHANGE: Update
-
0.20.113 Nov 2024Release notes
Open source →- Add topics to
pubspec.yaml- Update to
dart_style2.3.7.bin/make_examples_const.dartandrewrite_intl_messages.dartwill now look for a surrounding.dart_tool/package_config.json` file to infer the language version of the files updated by the script. - Upgrade dep on
package:intl.
- Update to
- Add topics to
-
0.20.014 May 2024Release notes
Open source →- Throw if the
Intl.selectargis not in the list ofargs.- Support
package:intl0.19.0. - Require Dart 3.0.
- Support
- Throw if the
-
0.19.010 Jan 2024Release notes
Open source →- Always generate null safe code, remove
null-safeflag.- Add example for
helocale. - MessageExtraction: add set of error codes to be ignored in analysis.
- Upgrade dependencies on
analyzerandlints. - Fix pubspec
repositoryurl. - Fix error in
toStringofMessages.
- Add example for
- Always generate null safe code, remove
-
0.18.218 Apr 2023Nothing published for this version
-
0.18.123 Feb 2023Release notes
Open source →- Update analyzer dependency to
5.2.0.- Address analyzer deprecations.
- Require Dart 2.18.
- Fix issue #182, enabling escaping of curly brackets with a single quote as per the ICU message format specs.
- Require
package:intl^0.18.0.
- Update analyzer dependency to
-
0.18.002 Dec 2022Release notes
Open source →- Add support for Flutter locale split.
- Allow null safe code when parsing.
- Update analyzer dependency.
- Upgrade to
package:lints/recommended.yaml. - Initial null safety conversion.
- Remove petit_parser dependency.
- Address analyzer deprecations, see #168.
- Migrate to null safety.
- Add support for Flutter locale split.
-
0.17.1007 Apr 2020 -
0.17.10+124 Aug 2020Release notes
Open source →- Generate code that passes analysis with
implicit-casts: false.- Allow use of
MessageExtractionandMessageGenerationwithoutFile. - Move arb generation from bin to lib so it's available to external packages.
- Update analyzer dependency.
- Allow use of
- Generate code that passes analysis with
-
0.17.910 Jan 2020Release notes
Open source →- Fix pub complaint trying to precompile a library file in bin by moving that file to lib/src.
-
0.17.806 Jan 2020Release notes
Open source →- Add --sources-list-files and --translations-list-file to ARB handling utilities to read the input names from files. This is useful for large numbers of inputs.
-
0.17.705 Sep 2019 -
0.17.626 Aug 2019Release notes
Open source →- Strip indentation from generated JSON output to improve codesize.
- Make generated code not trigger most lints, either by fixing issues or by using lots of ignore_for_file directives.
- Added --with-source-text option to include the source text in the extracted ARB metadata.
- Strip indentation from generated JSON output to improve codesize.
-
0.17.528 May 2019Release notes
Open source →- Allow multiple ARB files with the same locale and combine
their translations.
- Update analyzer constraints and stop using deprecated elements2 API.
- Allow multiple ARB files with the same locale and combine
their translations.
-
0.17.426 Apr 2019Release notes
Open source →- Adds --suppress-meta-data on ARB extraction.
- Allow Dart enums in an Intl.select call. The map of cases can either take enums directly, or the short string name of the enum.
- Handles triple quotes in a translation properly when generating messages as JSON.
- Adds --suppress-meta-data on ARB extraction.
-
0.17.312 Feb 2019Release notes
Open source →- Make require_description also fail for empty strings.
- Update analyzer dependency.
- Make require_description also fail for empty strings.
-
0.17.201 Oct 2018 -
0.17.128 Sep 2018Release notes
Open source →- Added --suppress-last-modified flag to suppress output of the
@@last_modified entry in output file.
- Add a "package" field in MessageGeneration that can be useful for emitting additional information about e.g. which locales are available and which package we're generating for. Also makes libraryName public.
- Silence unnecessary_new lint warnings in generated code.
- Add --require_description command line option to message extraction.
- Added --suppress-last-modified flag to suppress output of the
@@last_modified entry in output file.
-
0.17.017 Jul 2018Release notes
Open source →- Fully move to Dart 2.0
- Delete the transformer and related code.
- Minor update to analyzer API.
- Update pubspec version requirements
- Fully move to Dart 2.0
-
0.16.805 Jul 2018Release notes
Open source →- Allow message extraction to find messages from prefixed uses of Intl.
- Move analyzer dependency up to 0.33.0
- Allow message extraction to find messages from prefixed uses of Intl.
-
0.16.717 May 2018Release notes
Open source →- Allow message extraction to find messages in class field declarations
and top-level declarations.
- Fix incorrect name and parameters propagation during extraction phase.
- Still more uppercase constant removal.
- Allow message extraction to find messages in class field declarations
and top-level declarations.
-
0.16.611 Apr 2018 -
0.16.510 Apr 2018 -
0.16.421 Mar 2018Release notes
Open source →- Update Intl compatibility requirements. This requires at least 0.15.3 of Intl, because the tests contain messages with the new "skip" parameter.
-
0.16.312 Mar 2018Release notes
Open source →- Fix https://github.com/flutter/flutter/issues/15458 - specify concrete type for generated map.
-
0.16.209 Mar 2018Release notes
Open source →- Handle fallback better when we provide translations for locale "xx" but initialize "xx_YY", initializing "xx". Previously we would do nothing.
- Skip extracting messages that pass the 'skip' argument to Intl calls.
- Move analyzer dependency up to 0.32.0
-
0.16.123 Nov 2017Release notes
Open source →- Add @@last_modified to extracted ARB files.
- Handle @@locale in translated ARB files properly, and adds a --locale parameter to specify the locale.
- Adds a --output-file parameter to extract_to_arb
- Indent the output file for ARB for better readability.
- A couple of tweaks to satisfy Flutter's default linter rules when run on the generated code.
-
0.16.019 Oct 2017Release notes
Open source →- BREAKING CHANGE: Require that the examples to message/plural/gender/select
calls be const. DDC does not optimize non-const maps well, so it's a
significant performance issue if these are non-const.
- Added a utility to convert examples in calls to be const. See bin/make_examples_const.dart
- Add a codegen_mode flag, which can be either release or debug. In release mode a missing translation throws an exception, in debug mode it returns the original text, which was the previous behavior.
- Add support for generating translated messages as JSON rather than methods. This can significantly improve dart2js compile times for applications with many translations. The JSON is a literal string in the deferred library, so usage doesn't change at all.
- BREAKING CHANGE: Require that the examples to message/plural/gender/select
calls be const. DDC does not optimize non-const maps well, so it's a
significant performance issue if these are non-const.
-
0.15.005 Jun 2017Release notes
Open source →- API overhaul:
- 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.
- Remove most ...Options objects from the public API, as they make it more verbose. Users now directly input the options to the top-level ...Format constructor.
- Use => instead of block bodies for methods where possible.
- Fix some imports
- Add documentation to some classes.
- Remove some methods which are not implemented in ICU4X
Release notes
Open source →- Change non-transformer message rewriting to preserve the original message as
much as possible. Adds --useStringSubstitution command-line arg.
- Change non-transformer message rewriting to allow multiple input files to be specified on the command line. Adds --replace flag to ignore --output option and just replace files.
- Make non-transformer message rewriting also run dartfmt on the output.
- Make message extraction more robust: error message instead of stack trace when an Intl call is made outside a method, when a prefixed expression is used in an interpolation, and when a non-required example Map is not a literal.
- Make message extraction more robust: if parsing triggers an exception then report it as an error instead of exiting.
- Move barback to being a normal rather than a dev dependency.
- Add a check for invalid select keywords.
- Added a post-message construction validate, moved IntlMessageExtractionException into intl_message.dart
- Make use of analyzer's new AstFactory class (requires analyzer version 0.29.1).
- Fix error in transformer, pass the path instead of the asset id.
- Prefer an explicit =0/=1/=2 to a ZERO/ONE/TWO if both are present. We don't distinguish the two as Intl.message arguments, we just have the "one" parameter, which we confusingly write out as =1. Tools interpret these differently, and in particular, a ONE clause is used for the zero case if there's no explicit zero. Translation tools may implement this by filling in both ZERO and ONE values with the OTHER clause when there's no ZERO provided, resulting in a translation with both =1 and ONE clauses which are different. We should prefer the explicit =1 in that case. In future we may distinguish the different forms, but that would probably break existing translations.
- Switch to using package:test
- Give a more specific type in the generated code to keep lints happy.
- API overhaul:
-
0.14.002 Sep 2016Release notes
Open source →- Split message extraction and code generation out into a separate package. Versioned to match the corresponding Intl version.
-
0.14.0+106 Sep 2016Nothing published for this version