auto_easy_localization 1.0.1  auto_easy_localization: ^1.0.1 copied to clipboard
auto_easy_localization: ^1.0.1 copied to clipboard
A powerful Dart/Flutter tool for automated translation and localization.
Auto Easy Localization #
π A powerful Dart/Flutter tool for automated translation and localization management using Google Translate's free API.
Features #
- β¨ Smart Translation Mode: Only translates missing keys, preserving existing translations
- π Batch Processing: Efficient batch translation with configurable delays
- π Progress Tracking: Real-time progress bar with ETA and statistics
- π Auto-retry: Configurable retry mechanism for failed translations
- π JSON Support: Works with nested JSON translation files
- βοΈ pubspec.yaml Configuration: All configuration is managed through pubspec.yaml
- π 70+ Languages: Support for all Google Translate supported languages
- π‘οΈ Error Handling: Robust error handling with fallback to original text
Installation #
As a Development Dependency #
Add to your pubspec.yaml:
dev_dependencies:
  auto_easy_localization: ^1.0.1
Or run the following command:
flutter pub add auto_easy_localization --dev
Quick Start #
- Create your source translation file (assets/translations/en.json):
{
  "navigation": {
    "home": "Home",
    "profile": "Profile",
    "settings": "Settings"
  },
  "forms": {
    "validation": {
      "required": "This field is required",
      "email": "Please enter a valid email"
    }
  }
}
- Configure in pubspec.yaml:
auto_easy_localization:
  source_locale: en
  target_locales: [es, fr, de, tr]
  translations_path: assets/translations
  delay_between_requests: 100
  max_retries: 3
- Run the tool:
dart run auto_easy_localization
- Generated files will be created automatically:
- assets/translations/es.json(Spanish)
- assets/translations/fr.json(French)
- assets/translations/de.json(German)
- assets/translations/tr.json(Turkish)
 
Configuration #
All configuration is managed through your pubspec.yaml file. Add the auto_easy_localization section with your desired settings:
auto_easy_localization:
  source_locale: en # Source language (required)
  target_locales: [tr, es, fr, de, it] # Target languages (required) - can also use presets: european, global, asian
  translations_path: assets/translations # Path to translation files (optional, default: assets/translations)
  delay_between_requests: 100 # Delay between API calls in ms (optional, default: 100)
  max_retries: 3 # Maximum retry attempts (optional, default: 3)
Configuration Options #
| Option | Type | Required | Default | Description | 
|---|---|---|---|---|
| source_locale | String | β | en | The source language code | 
| target_locales | List | β | [tr, es, fr, de] | List of target language codes OR preset keyword ( european,global,asian) | 
| translations_path | String | β | assets/translations | Path to translation files directory | 
| delay_between_requests | int | β | 100 | Delay between API requests (milliseconds) | 
| max_retries | int | β | 3 | Maximum number of retry attempts for failed translations | 
| excluded_keys_path | String | β | assets/excluded_keys.json | Path to excluded keys file | 
Default Configuration #
If no configuration is found in pubspec.yaml, the tool will use these defaults:
auto_easy_localization:
  source_locale: en
  target_locales: [tr, es, fr, de]
  translations_path: assets/translations
  delay_between_requests: 100
  max_retries: 3
  excluded_keys_path: assets/excluded_keys.json
Preset Configurations #
The tool includes predefined locale sets for common use cases. You can use these presets in two ways:
Option 1: Using Preset Keywords (Recommended) #
Simply use preset keywords as string values for target_locales:
auto_easy_localization:
  source_locale: en
  target_locales: european # Uses predefined European language set
  translations_path: assets/translations
Available Presets:
European Languages (european)
auto_easy_localization:
  source_locale: en
  target_locales: european
  # Includes: es, fr, de, it, pt, nl, sv, da, no, tr
Global Languages (global)
auto_easy_localization:
  source_locale: en
  target_locales: global
  # Includes: es, fr, de, it, pt, ru, ja, ko, zh, ar, hi, tr
Asian Languages (asian)
auto_easy_localization:
  source_locale: en
  target_locales: asian
  # Includes: zh, ja, ko, th, vi, id, ms, hi, bn
Option 2: Manual List Configuration #
Alternatively, you can specify locales manually as a list:
auto_easy_localization:
  source_locale: en
  target_locales: [es, fr, de, it, pt, nl, sv, da, no, tr]
  translations_path: assets/translations
Advanced Features #
Smart Translation Mode #
The tool automatically detects:
- Missing locale files and creates them
- Missing translation keys in existing files and adds them
- Preserves existing translations to avoid overwriting manual edits
Progress Tracking #
Real-time progress display shows:
- Current locale being processed
- Completion percentage
- Elapsed time and ETA
- Number of keys processed
- Animated spinner for visual feedback
Error Handling #
- Automatic retry with exponential backoff
- Fallback to original text if translation fails
- Detailed error messages and validation
- Service availability checking
Supported Languages #
The tool supports 70+ languages including:
| Code | Language | Code | Language | Code | Language | 
|---|---|---|---|---|---|
| en | English | es | Spanish | fr | French | 
| de | German | it | Italian | pt | Portuguese | 
| ru | Russian | ja | Japanese | ko | Korean | 
| zh | Chinese | ar | Arabic | hi | Hindi | 
| tr | Turkish | nl | Dutch | sv | Swedish | 
File Structure #
assets/
βββ translations/
    βββ en.json          # Source locale
    βββ es.json          # Auto-generated
    βββ fr.json          # Auto-generated
    βββ de.json          # Auto-generated
    βββ tr.json          # Auto-generated
JSON Structure Support #
The tool handles nested JSON structures:
{
  "app": {
    "title": "My App",
    "navigation": {
      "home": "Home",
      "settings": "Settings"
    }
  },
  "errors": {
    "network": "Network error occurred",
    "validation": {
      "required": "This field is required",
      "email": "Invalid email format"
    }
  }
}
Performance & Rate Limiting #
- Default delay: 100ms between requests
- Configurable retries: 3 attempts by default
- Batch processing: Processes all keys for each locale
- Intelligent waiting: Respects Google's rate limits
Examples #
Basic Usage #
# Run with pubspec.yaml configuration
dart run auto_easy_localization
Configuration Examples #
Minimal Configuration
# pubspec.yaml
auto_easy_localization:
  source_locale: en
  target_locales: [es, fr, de, it]
Using Presets
# pubspec.yaml
auto_easy_localization:
  source_locale: en
  target_locales: european # Automatically includes 10 European languages
Advanced Configuration
# pubspec.yaml
auto_easy_localization:
  source_locale: en
  target_locales: global # Includes 12 major world languages
  translations_path: lib/l10n
  delay_between_requests: 1500
  max_retries: 5
Custom Source Locale
# pubspec.yaml
auto_easy_localization:
  source_locale: es
  target_locales: [en, fr, de, pt]
  translations_path: assets/translations
Troubleshooting #
Common Issues #
- 
"Source locale file not found" - Ensure your source locale file exists (e.g., assets/translations/en.json)
- Check the translations_pathin your pubspec.yaml configuration
 
- Ensure your source locale file exists (e.g., 
- 
"No auto_easy_localization configuration found" - Add the auto_easy_localizationsection to your pubspec.yaml
- Ensure proper YAML indentation and syntax
 
- Add the 
- 
"Google Translate service not available" - Check internet connection
- Verify you're not being rate limited
- Try increasing delay_between_requestsin your configuration
 
- 
"Translation failed" - Tool automatically falls back to original text
- Check logs for specific error details
- Verify target language codes are valid
 
Rate Limiting #
If you encounter rate limiting, adjust your configuration:
auto_easy_localization:
  delay_between_requests: 2000 # Increase delay
  max_retries: 5 # More retry attempts
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments #
- Uses Google Translate's free API
- Built for Flutter/Dart localization workflows
- Inspired by the need for automated translation tools
Made with β€οΈ for the Flutter community