Laravel i18n
Skill fusengine/agents/plugins/laravel-expert/skills/laravel-i18n
Redefining development through cognitive automation and collaborative agent systems.
npx -y skills add fusengine/agents --skill laravel-i18nAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 stars22 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Laravel localization - __(), trans_choice(), lang files, JSON translations, pluralization, middleware, formatting. Use when implementing translations.
SKILL.md
4.5 KB, as published. Nobody here has run it
Laravel Internationalization
Agent Workflow (MANDATORY)
Before ANY implementation, use TeamCreate to spawn 3 agents:
- fuse-ai-pilot:explore-codebase - Check existing translation patterns
- fuse-ai-pilot:research-expert - Verify Laravel i18n best practices via Context7
- mcp__context7__query-docs - Check Laravel localization documentation
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
| Feature | PHP Files | JSON Files |
|---|---|---|
| Keys | Short (messages.welcome) | Full text |
| Nesting | Supported | Flat only |
| Best for | Structured translations | Large apps |
Critical Rules
- Never concatenate strings - Use
:placeholderreplacements - Always handle zero in pluralization
- Group by feature -
auth.login.title,auth.login.button - Extract strings early - No hardcoded text in views
- Validate locales - Use enum or whitelist
Decision Guide
Translation task?
├── Basic string → __('key')
├── With variables → __('key', ['name' => $value])
├── Pluralization → trans_choice('key', $count)
├── In Blade → @lang('key') or {{ __('key') }}
├── Locale detection → Middleware
├── Format date/money → LocalizationService
└── Package strings → trans('package::key')
Reference Guide
Concepts (WHY & Architecture)
| Topic | Reference | When to Consult |
|---|---|---|
| Setup | localization.md | Initial configuration |
| Pluralization | pluralization.md | Count-based translations |
| Blade | blade-translations.md | View translations |
| Middleware | middleware.md | Locale detection |
| Formatting | formatting.md | Date/number/currency |
| Packages | packages.md | Vendor translations |
| Best Practices | best-practices.md | Large app organization |
Templates (Complete Code)
| Template | When to Use |
|---|---|
| SetLocaleMiddleware.php.md | URL/session locale detection |
| lang-files.md | Translation file examples |
| LocaleServiceProvider.php.md | Centralized localization service |
| LocaleRoutes.php.md | URL prefix locale routing |
Quick Reference
// Basic translation
__('messages.welcome')
// With replacement
__('Hello :name', ['name' => 'John'])
// Pluralization
trans_choice('messages.items', $count)
// Runtime locale
App::setLocale('fr');
App::currentLocale(); // 'fr'
Best Practices
DO
- Use
:placeholderfor dynamic values - Handle zero case in pluralization
- Group keys by feature module
- Use Locale enum for type safety
- Set Carbon locale in middleware
DON'T
- Concatenate translated strings
- Hardcode text in views
- Accept any locale without validation
- Create DB-based translations (use files)
Laravel 13 Notes
L'API de localisation (__(), trans_choice(), App::setLocale()) reste inchangée en Laravel 13. Points spécifiques :
Context::add('locale', $locale)propage la locale dans les jobs queue (résout le bug L12 où la locale était perdue dans les ShouldQueue)serializable_classes: whitelister vosLocaleenums si utilisés en queue- Middleware
SetLocale: compatible avec le nouveauvalidateOrigin()de [[laravel-auth]]
// app/Jobs/SendNotification.php
public function handle(): void
{
App::setLocale(Context::get('locale', 'en'));
Notification::send($this->user, new OrderShipped());
}