Skip to content

Repository files navigation

ARB Metadata Tools

PyPI version PyPI downloads Python versions GitHub stars License

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).

Problem

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

Solution

These tools automatically add and manage metadata for your ARB files:

  1. add_arb_metadata.py - Adds empty metadata blocks to all keys
  2. add_descriptions_intelligently.py - Intelligently generates contextual descriptions based on key names and values

Features

  • ✅ 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., *Bn for Bengali)

Installation

Option 1: Install from PyPI (Recommended)

pip install arb-metadata-tools

Option 2: Install from Source

# 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)

Usage

After installation, you can use the command-line tools:

Basic Metadata Addition

# 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 --version

This adds empty metadata blocks to all keys without metadata.

Intelligent Description Generation

# 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 --version

This 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.)

Examples

Before

{
  "loginButton": "Login",
  "enterPassword": "Enter your password"
}

After

{
  "loginButton": "Login",
  "@loginButton": {
    "description": "Button text to login to the application"
  },
  "enterPassword": "Enter your password",
  "@enterPassword": {
    "description": "Placeholder text to enter password field"
  }
}

Configuration

For Command-Line Usage

The tools look for ARB files in the standard Flutter location: lib/l10n/

For Custom Paths

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
]

Pattern Recognition

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

Requirements

  • Python 3.6+
  • No external dependencies

📋 Changelog

See CHANGELOG.md for a complete list of changes and release notes for each version.

Latest Release (v1.1.0):

  • Added proper --help and --version command-line arguments
  • Enhanced CLI with argparse for better user experience
  • Added --verbose flag for detailed output
  • Improved error messages and documentation

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details

👨‍💻 Author

Md. Jehadur Rahman Emran

Software Engineer • Researcher • Full-Stack Developer

GitHub LinkedIn Twitter Portfolio Email

Acknowledgments

Created to solve ARB metadata management for Flutter localization projects.

Support

If you find this tool helpful, please ⭐ star the repository!

Related

About

A collection of Python scripts to automatically manage metadata in Flutter ARB (Application Resource Bundle) localization files. Intelligently generates contextual descriptions and adds metadata blocks to eliminate VS Code extension warnings.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages