i18n_extension_core
Dart-only package for Translation and Internationalization (i18n), with Dart extensions. Easy to use for both large and small projects.
5.0.2
27K downloads/mo
#1922 most downloaded on pub.dev
marcglasberg/i18n_extension_core
What this package is like to depend on
Last release 1 years ago
22 Jul 2025
Release timing varies
gaps range from 8 days to 8 months
Some releases are documented
notes for 5 of 16 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
23 releases · first in 2024
0 releases in the last 12 months
see the full history below
Release timeline
23 releases · Feb 2024 to Jul 2025Releases
latest 23-
5.0.222 Jul 2025Release notes
Open source →-
You can now define
Translations.supportedLocalesto specify the locales that your app supports. If you do this, only those supported locales will be considered when recording missing translations. In other words, unsupported locales will not be recorded as missing translations. Note the supported locales should be valid BCP47 codes. For example:Translations.supportedLocales = ['en-US', 'cs-CZ', 'es', 'zh-Hant-CN']; -
Breaking Change: The
Translations.missingTranslationCallbacksignature changed, and it's now of typeMissingTranslationCallback:typedef MissingTranslationCallback = bool Function({ required Object? key, required String locale, required Translations translations, required Iterable<String> supportedLocales, });Note it now also returns a boolean. Only if it returns
true, the missing translation will be put into theTranslations.missingTranslationsmap.
-
-
5.0.115 Jan 2025Nothing published for this version
-
5.0.018 Dec 2024Nothing published for this version
-
4.0.016 Dec 2024Release notes
Open source →-
Translations.byHttp()is now available (only when using thei18n_extensionpackage). It allows you to load translations from.jsonor.pofiles in the web. Use it like this:final translations = Translations.byHttp('en-US', url: 'https://example.com/translations', resources: ['en-US.json', 'es.json', 'pt-BR.po', 'fr.po']); );
-
-
3.0.116 Dec 2024Nothing published for this version
-
3.0.016 Dec 2024Release notes
Open source →-
Breaking Change: Language codes should now respect the BCP47 standard, when you define your translations.
For example, you should now useen-USinstead of the olden_usformat. Other valid code examples are:en,es-419,hi-Deva-INandzh-Hans-CN. To help you upgrade, aTranslationsExceptionerror will be thrown when you use the old code format, with a detailed error message such as:Locale "en_us" should be "en-US" (for translatable string "Hello!"). -
As a helper, in case you need it, we now provide function
DefaultLocale.normalizeLocaleto normalize language codes to the BCP47 standard (which is compatible with the Unicode Locale Identifier (ULI) syntax). It fixes casing (uppercase and lowercase), removes spaces, and turns underscores into hyphens. As such, it can be used to convert the old format language codes to the new ones. For example:DefaultLocale.normalizeLocale('en_us')returns'en-US'. -
You can now do string interpolation by using
{},{1}, and{named}, by using functionlocalizeArgs:localizeArgs('Hello {student} and {teacher}', {'student': 'John', 'teacher': 'Mary'}); localizeArgs('Hello {student} and {teacher}', 'John', 'Mary'); localizeArgs('Hello {1} and {2}', 'John', 'Mary'); localizeArgs('Hello {1} and {2}', ['John', 'Mary']); localizeArgs('Hello {1} and {2}', {1: 'John', 2: 'Mary'}); localizeArgs('Hello {} and {}', 'John', 'Mary'); localizeArgs('Hello {} and {}', ['John', 'Mary']);From the
i18n_extensionpackage, this functionality is accessible via theargsextension. For example:'Hello {student} and {teacher}'.i18n.args({'student': 'John', 'teacher': 'Mary'}); 'Hello {student} and {teacher}'.i18n.args('John', 'Mary'); 'Hello {1} and {2}'.i18n.args('John', 'Mary'); 'Hello {1} and {2}'.i18n.args(['John', 'Mary']); 'Hello {1} and {2}'.i18n.args({1: 'John', 2: 'Mary'}); 'Hello {} and {}'.i18n.args('John', 'Mary'); 'Hello {} and {}'.i18n.args(['John', 'Mary']); -
Previously, you could do string interpolation by using sprintf specifiers, like
%s,%1$s,%detc., and providing a list of values to fill them. This is still supported:localizeFill('Hello %s and %s', ['student', 'teacher']); localizeFill('Hello %1$s and %2$s', ['student', 'teacher']);However now you can also provide the values directly, without having to wrap them in a list:
localizeFill('Hello %s and %s', 'student', 'teacher'); localizeFill('Hello %1$s and %2$s', 'student', 'teacher');From the
i18n_extensionpackage, this functionality is accessible via thefillextension. For example:'Hello %s and %s'.i18n.fill(['student', 'teacher']); 'Hello %1$s and %2$s'.i18n.fill(['student', 'teacher']); 'Hello %s and %s'.i18n.fill('student', 'teacher'); 'Hello %1$s and %2$s'.i18n.fill('student', 'teacher'); -
Translations.byFile()is now available (only when using thei18n_extensionpackage). It allows you to load translations from a.jsonor.pofile. Use it like this:final translations = Translations.byFile('en-US', dir: 'assets/translations');
-
-
3.0.0-dev.715 Dec 2024 pre-releaseNothing published for this version
-
3.0.0-dev.614 Dec 2024 pre-releaseNothing published for this version
-
3.0.0-dev.513 Dec 2024 pre-releaseNothing published for this version
-
3.0.0-dev.413 Dec 2024 pre-releaseNothing published for this version
-
3.0.0-dev.313 Dec 2024 pre-releaseNothing published for this version
-
3.0.0-dev.212 Dec 2024 pre-releaseNothing published for this version
-
3.0.0-dev.105 Dec 2024 pre-releaseNothing published for this version
-
2.0.730 Oct 2024Nothing published for this version
-
2.0.603 Mar 2024Release notes
Open source →- Translations:
Translations.byText(): SupportsStringthemselves as translation-keys, organized per key.Translations.byLocale(): SupportsStringthemselves as translation-keys, organized per locale.Translations.byId<T>(): Supports any object (of typeT) as translation-keys.const ConstTranslations(): Supports defining translations with aconstMap.
- Translations:
-
2.0.524 Feb 2024Nothing published for this version
-
2.0.418 Feb 2024Nothing published for this version
-
2.0.318 Feb 2024Nothing published for this version
-
2.0.216 Feb 2024Nothing published for this version
-
2.0.115 Feb 2024Nothing published for this version
-
2.0.013 Feb 2024Nothing published for this version
-
1.0.112 Feb 2024Nothing published for this version
-
1.0.011 Feb 2024Release notes
Open source →- On Feb 11, 2024 I've created this Dart-only package to contain the core code of the i18n_extension package.