A collection of Python scripts to automatically manage metadata in ARB (Application Resource Bundle) localization files.
Works with: Flutter, Angular, Chrome Extensions, and any application using ARB format for internationalization (i18n/l10n).
When using ARB files for localization, the Google ARB VS Code extension shows warnings for keys without metadata. Manually adding metadata to hundreds of keys is tedious and time-consuming.
This affects developers using:
- Flutter apps
- Angular applications
- Chrome extensions
- Any project using ARB format for i18n/l10n
These tools automatically add and manage metadata for your ARB files:
- add_arb_metadata.py - Adds empty metadata blocks to all keys
- add_descriptions_intelligently.py - Intelligently generates contextual descriptions based on key names and values
- ✅ Automatically adds metadata to all ARB keys
- ✅ Intelligently generates contextual descriptions
- ✅ Preserves existing metadata with placeholders
- ✅ Supports multiple ARB files
- ✅ Pattern-based description generation
- ✅ Handles bilingual keys (e.g.,
*Bnfor Bengali)
pip install arb-metadata-tools# Clone the repository
git clone https://github.com/JehadurRE/arb-metadata-tools.git
cd arb-metadata-tools
# Install in development mode
pip install -e .
# Or install directly
pip install .Requirements: Python 3.6+ (no external dependencies)
After installation, you can use the command-line tools:
# Process default files (lib/l10n/app_en.arb, lib/l10n/app_bn.arb)
arb-metadata
# Process specific files
arb-metadata path/to/file1.arb path/to/file2.arb
# Show help
arb-metadata --help
# Show version
arb-metadata --versionThis adds empty metadata blocks to all keys without metadata.
# Process default files
arb-descriptions
# Process specific files
arb-descriptions path/to/file1.arb path/to/file2.arb
# Show each description being added (verbose mode)
arb-descriptions --verbose path/to/file.arb
# Show help
arb-descriptions --help
# Show version
arb-descriptions --versionThis generates contextual descriptions based on:
- Key naming patterns (Label, Hint, Desc, etc.)
- Action verbs (send, create, confirm, etc.)
- Content analysis (questions, exclamations, labels)
- Context clues (Dashboard, Management, History, etc.)
{
"loginButton": "Login",
"enterPassword": "Enter your password"
}{
"loginButton": "Login",
"@loginButton": {
"description": "Button text to login to the application"
},
"enterPassword": "Enter your password",
"@enterPassword": {
"description": "Placeholder text to enter password field"
}
}The tools look for ARB files in the standard Flutter location: lib/l10n/
Edit the file paths in the scripts to match your project structure:
arb_files = [
'lib/l10n/app_en.arb',
'lib/l10n/app_bn.arb',
# Add more ARB files as needed
]The intelligent description generator recognizes:
- Labels:
*Label→ "Label for {field} input field" - Hints:
*Hint→ "Placeholder or hint text for {field}" - Actions:
send*,create*,confirm*→ Action descriptions - Validation:
please*,*Must*→ Validation messages - Status:
*Successful,*Failed→ Status messages - Screens:
*Dashboard,*Management→ Screen titles
- Python 3.6+
- No external dependencies
See CHANGELOG.md for a complete list of changes and release notes for each version.
Latest Release (v1.1.0):
- Added proper
--helpand--versioncommand-line arguments - Enhanced CLI with
argparsefor better user experience - Added
--verboseflag for detailed output - Improved error messages and documentation
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details
Created to solve ARB metadata management for Flutter localization projects.
If you find this tool helpful, please ⭐ star the repository!