best_localization
A Flutter localization package with dynamic translations and Kurdish support.
What this package is like to depend on
Last release 1 months ago
19 Jul 2026
Release timing varies
gaps range from 8 days to 5 months
Most releases are documented
notes for 14 of 18 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
18 releases · first in 2024
14 releases in the last 12 months
see the full history below
Release timeline
18 releases · Dec 2024 to Jul 2026Releases
latest 18-
3.0.119 Jul 2026Release notes
Open source →New Features
- Added support for Debug and Production modes.
🔄 Changed
- Debug Mode: Missing translation keys are returned wrapped in square brackets (
[missing_key]) to make them easy to identify during development. - Production Mode: Missing translation keys are returned as plain text (
missing_key) without square brackets for a cleaner production experience.
-
3.0.027 Jun 2026Release notes
Open source →⚠️ Breaking Changes
- Kurdish Locale Code Realignment:
- Kurdish Sorani language code changed from
kutockb. - Kurdish Kurmanji is now officially supported using language code
ku. Note: If your app previously usedkufor Sorani, you must rename your translation files (e.g.,ku.jsontockb.json) and update your app's supported locales list to prevent broken layouts or missing translations.
- Kurdish Sorani language code changed from
New Features
-
Official Kurdish Kurmanji (
ku) Support: Added complete localization support including Material and Cupertino widgets.
- Kurdish Locale Code Realignment:
-
2.0.405 Feb 2026Release notes
Open source →Breaking Changes
- Updated all loader type signatures to support complex translation values
- Changed from
Map<String, Map<String, String>>toMap<String, Map<String, Object>> - Now supports pluralization, gender-specific translations, and nested structures
- Affects all loaders: JsonLoader, YamlLoader, XmlLoader, CsvLoader, HttpLoader
- Translation values can now be strings, maps (for plurals/gender), or other objects
- Changed from
Fix
- Fixed type compatibility issues with pluralization and gender-specific translations
- All loaders now properly preserve complex translation structures instead of converting to strings
- Updated all loader type signatures to support complex translation values
-
2.0.301 Jan 2026 -
2.0.231 Dec 2025 -
2.0.131 Dec 2025Release notes
Open source →Fix
- Fix an issue with cupertino
cff1ecbc7b2a2389e189b58d4cce8bac3ed11cf2
- Fix an issue with cupertino
-
2.0.022 Dec 2025Release notes
Open source →New Features
- Directly Translate throu Text method or String
- Text('hello').tr() or Text('hello').translate()
- New way of gender and plural
Fix
- Issue of gender and plural fixed
-
1.2.116 Nov 2025Release notes
Open source →🎉 New Features
Added
- Translation Key Verification Tool 🔍
TranslationVerifierclass for programmatic verification- Command-line tool:
dart run best_localization:verify_translations - Verify all translations against a reference locale
- Compare two specific locales
- Find duplicate values (same translation for different keys)
- Find similar keys (potential typos using Levenshtein distance)
- Generate detailed reports in text or JSON format
- Calculate coverage percentage per locale
- CI/CD integration support with exit codes
- Pre-commit hook examples
- Commands:
verify <path>- Verify all translation filescompare <file1> <file2>- Compare two filesduplicates <file>- Find duplicate valuessimilar <file>- Find similar keys
- Features:
- Missing key detection
- Extra key detection
- Empty value detection
- Duplicate value detection
- Similar key detection (configurable threshold)
- JSON output for automation
- Reference locale selection
Documentation
- Added comprehensive VERIFICATION.md guide
- Updated README.md with verification tool section
- Added CI/CD integration examples
- Added programmatic usage examples
- Updated pubspec.yaml with executable entry
- Translation Key Verification Tool 🔍
-
1.2.015 Nov 2025Nothing published for this version
-
1.1.015 Nov 2025Nothing published for this version
-
1.0.315 Nov 2025Nothing published for this version
-
1.0.215 Nov 2025 -
1.0.115 Nov 2025Nothing published for this version
-
1.0.015 Nov 2025Release notes
Open source →🎉 Major Release - New Features
Added
-
Multiple File Format Support 🎉
- JSON Loader: Load translations from JSON files (single or multiple files)
- CSV Loader: Load translations from CSV files (columns or rows format)
- YAML Loader: Load translations from YAML files
- XML Loader: Load translations from XML files
- HTTP Loader: Load translations from remote API with caching support
-
Remote Translations 🎉
HttpLoaderclass for fetching translations from API- Automatic caching with
shared_preferences - Configurable cache duration (default: 24 hours)
- Custom HTTP headers support (for authentication)
- Offline fallback using expired cache
- Works seamlessly with
Loaders.remote()
-
Fallback Locale Support 🎉
- Added
fallbackLocaleparameter toBestLocalizationDelegate - Automatic fallback to default language when translation is missing
- Works with all loader types (JSON, CSV, YAML, XML, HTTP, Map)
- Better UX for incomplete translations
- Added
-
Loaders Class 🎉
- Easy-to-use static methods for all loaders
Loaders.json()- Load from JSON filesLoaders.csv()- Load from CSV filesLoaders.yaml()- Load from YAML filesLoaders.xml()- Load from XML filesLoaders.remote()- Load from remote APILoaders.jsonString()- Load from JSON stringLoaders.csvString()- Load from CSV string
-
Factory Methods
BestLocalizationDelegate.fromJson()- Create delegate from JSON loaderBestLocalizationDelegate.fromCsv()- Create delegate from CSV loaderBestLocalizationDelegate.fromYaml()- Create delegate from YAML loaderBestLocalizationDelegate.fromXml()- Create delegate from XML loaderBestLocalizationDelegate.fromHttp()- Create delegate from HTTP loaderBestLocalizationDelegate.fromMap()- Create delegate from mapBestLocalizationDelegate.fromLoader()- Create delegate from any loader
-
BuildContext Extensions
context.tr()- Translate with optional argumentscontext.localization- Get BestLocalization instancecontext.currentLocale- Get current localecontext.languageCode- Get language codecontext.isKurdish- Check if Kurdishcontext.isArabic- Check if Arabiccontext.isEnglish- Check if Englishcontext.isRTL- Check if RTL languagecontext.textDirection- Get text direction
Changed
- Updated package dependencies to use flexible version ranges
- Enhanced Kurdish Cupertino localizations with missing properties
- Improved code organization with separate loader files
Fixed
- Fixed missing implementations in
KurdishCupertinoLocalizations - Resolved compatibility issues with different Flutter versions
-
-
0.0.405 Jun 2025 -
0.0.321 Mar 2025 -
0.0.226 Dec 2024 -
0.0.125 Dec 2024Release notes
Open source →Added
- Initial release of
best_localizationpackage. - Support for dynamic translations using Dart maps.
- Interpolation for dynamic placeholders (e.g.,
Hello, {name}!). - Pluralization for managing singular and plural text forms.
- Kurdish (
ku) localization for Material and Cupertino widgets. - Seamless integration with Flutter's localization system via
BestLocalizationDelegate. - Example implementations for both Material and Cupertino apps.
- Comprehensive date and number formatting for Kurdish using
intl.
Fixed
- N/A (First release)
Changed
- N/A (First release)
- Initial release of