Receber por email
← Voltar para o catálogo

laravel-i18n

Laravel localization - __(), trans_choice(), lang files, JSON translations, pluralization, middleware, formatting. Use when implementing translations.

15estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add fusengine/agents

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/laravel-i18n/svg)](https://www.skillteca.com.br/skills/laravel-i18n)

Alerta por categoria

Receba novas skills de Escrita e Conteúdo toda segunda

1 email curto, só com as skills novas de Escrita e Conteúdo. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Laravel Internationalization

Agent Workflow (MANDATORY)

Before ANY implementation, use TeamCreate to spawn 3 agents:

  1. fuse-ai-pilot:explore-codebase - Check existing translation patterns
  2. fuse-ai-pilot:research-expert - Verify Laravel i18n best practices via Context7
  3. 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

  1. Never concatenate strings - Use :placeholder replacements
  2. Always handle zero in pluralization
  3. Group by feature - auth.login.title, auth.login.button
  4. Extract strings early - No hardcoded text in views
  5. 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](references/localization.md) | Initial configuration | | Pluralization | [pluralization.md](references/pluralization.md) | Count-based translations | | Blade | [blade-translations.md](references/blade-translations.md) | View translations | | Middleware | [middleware.md](references/middleware.md) | Locale detection | | Formatting | [formatting.md](references/formatting.md) | Date/number/currency | | Packages | [packages.md](references/packages.md) | Vendor translations | | Best Practices | [best-practices.md](references/best-practices.md) | Large app organization |

Templates (Complete Code)

| Template | When to Use | |----------|-------------| | [SetLocaleMiddleware.php.md](references/templates/SetLocaleMiddleware.php.md) | URL/session locale detection | | [lang-files.md](references/templates/lang-files.md) | Translation file examples | | [LocaleServiceProvider.php.md](references/templates/LocaleServiceProvider.php.md) | Centralized localization service | | [LocaleRoutes.php.md](references/templates/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 :placeholder for 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 vos Locale enums si utilisés en queue
  • Middleware SetLocale : compatible avec le nouveau validateOrigin() de [[laravel-auth]]
// app/Jobs/SendNotification.php
public function handle(): void
{
    App::setLocale(Context::get('locale', 'en'));
    Notification::send($this->user, new OrderShipped());
}
Compartilhar X LinkedIn