Locale
๐ Description
Manage GetX locale translations with powerful internationalization tools. The locale command provides comprehensive translation management for Flutter applications, including automatic code generation, multi-language support, and advanced features like variable replacement and smart pluralization.
โ๏ธ Usage
gexd locale <subcommand> [options]๐งฉ Aliases
l
๐ Available Subcommands
๐ Translation Management
Description: Generate GetX locale translations from JSON files with advanced features
gexd locale generate assets/locales
gexd locale generate assets/locales --sort-keys --key-style dotKey Features:
๐ Type-safe LocaleKeys - Compile-time safety with generated constants
๐ Variable replacement - Dynamic content with
trVars({})๐ข Smart pluralization - Universal language support with
trCount({})๐ Multi-language support - Arabic, English, and 100+ languages
โก Hot reload friendly - Real-time translation updates
๐ Common Usage Patterns
๐ Basic Translation Setup
# 1. Create locale files structure
mkdir -p assets/locales
echo '{"welcome": "Welcome {name}"}' > assets/locales/en_US.json
echo '{"welcome": "ู
ุฑุญุจุงู {name}"}' > assets/locales/ar_SA.json
# 2. Generate translations
gexd locale generate assets/locales --sort-keys๐ฏ Advanced Multi-language Project
# Generate with all features enabled
gexd locale generate assets/locales \
--key-style dot \
--sort-keys \
--output lib/generated/translations.g.dart๐ Development Workflow
# 1. Create/update your locale JSON files
# assets/locales/en_US.json, assets/locales/ar_SA.json, etc.
# 2. Generate translations with hot reload support
gexd locale generate assets/locales --sort-keys
# 3. Use in your Flutter app
# Text(LocaleKeys.welcome.trVars({'name': userName}))๐ฏ Supported Features
๐ Type-Safe Translations
LocaleKeys Generation: Compile-time safety for all translation keys
IDE Autocomplete: Full IntelliSense support for translation keys
Refactoring Support: Safe renaming and deletion of translation keys
๐ Multi-Language Support
JSON-Based: Simple JSON file structure for translations
Nested Keys: Support for hierarchical translation organization
Variable Syntax: Both
{variable}and@variableformats supported
๐ Dynamic Content
Variable Replacement:
LocaleKeys.welcome.trVars({'name': 'Ahmed'})Smart Pluralization:
LocaleKeys.items.trCount({'count': '5'})Combined Features: Variables + pluralization in single translation
๐ Project Integration
GetX Template: Generates to
lib/app/locales/translations.g.dartClean Template: Generates to
lib/locales/translations.g.dartCustom Output: Specify your own output location
๐ Translation File Structure
Input Structure (JSON Files)
assets/locales/
โโโ en_US.json # English (United States)
โโโ ar_SA.json # Arabic (Saudi Arabia)
โโโ es_ES.json # Spanish (Spain)
โโโ fr_FR.json # French (France)
โโโ de_DE.json # German (Germany)Example JSON Content
{
"app": {
"name": "My App",
"version": "Version {version}"
},
"welcome": "Welcome {name}",
"items": {
"__count": {
"zero": "No items",
"one": "One item",
"other": "{count} items"
}
}
}Generated Output
// lib/generated/translations.g.dart
class LocaleKeys {
static const String app_name = 'app.name';
static const String app_version = 'app.version';
static const String welcome = 'welcome';
static const String items = 'items';
}๐ Real-World Examples
๐ฑ Shopping App Translations
# Create comprehensive e-commerce translations
cat > assets/locales/en_US.json << 'EOF'
{
"app": {
"name": "ShopApp",
"version": "Version {version}"
},
"auth": {
"login": "Login",
"logout": "Logout",
"welcome": "Welcome back, {name}!"
},
"cart": {
"items": {
"__count": {
"zero": "Your cart is empty",
"one": "1 item in cart",
"other": "{count} items in cart"
}
},
"total": "Total: ${amount}"
},
"validation": {
"required": "{field} is required",
"email": "Please enter a valid email"
}
}
EOF
# Generate with optimal settings
gexd locale generate assets/locales --key-style dot --sort-keys๐ Multi-Regional App
# Arabic (Saudi Arabia)
cat > assets/locales/ar_SA.json << 'EOF'
{
"app": {
"name": "ุชุทุจููู"
},
"welcome": "ู
ุฑุญุจุงู {name}",
"notifications": {
"__count": {
"zero": "ูุง ุชูุฌุฏ ุฅุดุนุงุฑุงุช",
"one": "ุฅุดุนุงุฑ ูุงุญุฏ",
"two": "ุฅุดุนุงุฑุงู",
"few": "{count} ุฅุดุนุงุฑุงุช",
"many": "{count} ุฅุดุนุงุฑุงู",
"other": "{count} ุฅุดุนุงุฑ"
}
}
}
EOF
# Generate with full Arabic support
gexd locale generate assets/locales --sort-keys๐ก Best Practices
๐ฏ File Organization
Use Locale Codes:
en_US.json,ar_SA.jsoninstead of simpleen.jsonConsistent Structure: Keep the same key structure across all languages
Logical Grouping: Group related translations under common parents
๐ง Development Workflow
Start Simple: Begin with basic translations, add features incrementally
Use --sort-keys: Keep translations organized and version-control friendly
Test Pluralization: Verify plural forms work correctly for each language
Hot Reload: Generate translations during development for immediate feedback
๐ Translation Quality
Native Speakers: Use native speakers for translation accuracy
Context Aware: Provide context for translators about variable usage
Plural Forms: Research correct plural forms for each target language
Cultural Adaptation: Consider cultural differences, not just language translation
๐ง Advanced Configuration
Custom Output Locations
# GetX architecture
gexd locale generate assets/locales --output lib/app/locales/translations.g.dart
# Clean architecture
gexd locale generate assets/locales --output lib/locales/translations.g.dart
# Custom location
gexd locale generate assets/locales --output lib/core/i18n/app_translations.dartKey Naming Conventions
# Dot notation (recommended)
gexd locale generate assets/locales --key-style dot
# Output: LocaleKeys.auth_login, LocaleKeys.cart_items
# CamelCase notation
gexd locale generate assets/locales --key-style camelCase
# Output: LocaleKeys.authLogin, LocaleKeys.cartItems
# Snake case notation
gexd locale generate assets/locales --key-style snake
# Output: LocaleKeys.auth_login, LocaleKeys.cart_items๐ Documentation Links
For detailed documentation on locale subcommands:
Generate Command - Comprehensive translation generation guide
๐ฏ Quick Reference
Most Common Commands
# Basic setup
gexd locale generate assets/locales
# Production ready
gexd locale generate assets/locales --sort-keys --key-style dot
# Development with custom output
gexd locale generate assets/locales --sort-keys --output lib/l10n/translations.g.dartUsage in Flutter
import 'package:get/get.dart';
import 'generated/translations.g.dart';
// Simple translation
Text(LocaleKeys.welcome.tr)
// With variables
Text(LocaleKeys.welcome.trVars({'name': 'Ahmed'}))
// With pluralization
Text(LocaleKeys.items.trCount({'count': itemCount.toString()}))
// Combined features
Text(LocaleKeys.cart_items.trCount({'count': count.toString(), 'user': userName}))Generated automatically by gexd_doc
Last updated