localize.dev

Documenti / Laravel

Localizzazione Laravel per Blade, automatizzata

Sposta il testo hardcoded nelle viste Laravel Blade in chiamate __() con traduzioni lang/<locale>.json indicizzate dal testo, in un unico comando o pull request.

Come funziona

Il testo nelle viste Blade diventa {{ __('Hi :name, welcome back', ['name' => $user->name]) }}: stringhe di traduzione JSON di Laravel, indicizzate dal testo stesso, con segnaposto :name.

Direttive come @if dividono le frasi; gli indirizzi email non vengono scambiati per direttive.

Plurali ({{ $n == 1 ? 'item' : 'items' }}, Str::plural('item', $n)) diventano trans_choice(':count item|:count items', $n), le forme di ogni lingua nell'ordine in cui Laravel le sceglie.

Prima e dopo

L'output effettivo del motore per questo file. In un'esecuzione reale, il modello ospitato nomina le chiavi dal contesto.

resources/views/cart.blade.php · prima
@extends('layouts.app')
@section('content')
  <h1>Hi {{ $user->name }}, welcome back</h1>
  <input placeholder="Search products">
@endsection
resources/views/cart.blade.php · dopo
@extends('layouts.app')
@section('content')
  <h1>{{ __('Hi :name, welcome back', ['name' => $user->name]) }}</h1>
  <input placeholder="{{ __('Search products') }}">
@endsection
lang/en.json
{
    "Hi :name, welcome back": "Hi :name, welcome back",
    "Search products": "Search products"
}

Cosa aggiunge la configurazione

La prima esecuzione imposta Stringhe di traduzione di Laravel se il progetto non lo ha ancora:

  • lang/<locale>.json per ogni lingua
  • Un middleware SetLocale nel gruppo web: ?locale=, poi un cookie lang, quindi Accept-Language

Eseguilo

La CLI richiede Node.js 22 o versioni successive, nient'altro: npx lo esegue senza aggiungere un package.json al progetto. Non hai Node sulla tua macchina? La GitHub Action qui sotto lo esegue per te.

npx localize-dev login

# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de

# Or open a pull request instead
npx localize-dev pr -l es,fr,de

Oppure aggiungi la GitHub Action e ottieni una pull request a ogni push. Provalo prima sul tuo codice nel playground.