Claude-skill-registry laravel-i18n

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

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/laravel-i18n" ~/.claude/skills/majiayu000-claude-skill-registry-laravel-i18n && rm -rf "$T"
manifest: skills/data/laravel-i18n/SKILL.md
source content

Laravel Internationalization

Agent Workflow (MANDATORY)

Before ANY implementation, launch in parallel:

  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

FeaturePHP FilesJSON Files
KeysShort (
messages.welcome
)
Full text
NestingSupportedFlat only
Best forStructured translationsLarge 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)

TopicReferenceWhen to Consult
Setuplocalization.mdInitial configuration
Pluralizationpluralization.mdCount-based translations
Bladeblade-translations.mdView translations
Middlewaremiddleware.mdLocale detection
Formattingformatting.mdDate/number/currency
Packagespackages.mdVendor translations
Best Practicesbest-practices.mdLarge app organization

Templates (Complete Code)

TemplateWhen to Use
SetLocaleMiddleware.php.mdURL/session locale detection
lang-files.mdTranslation file examples
LocaleServiceProvider.php.mdCentralized localization service
LocaleRoutes.php.mdURL 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)