localize.dev

Documentación / Laravel

Localización de Laravel para Blade, automatizada

Mueva el texto duro en vistas Blade de Laravel a llamadas __() con traducciones de lang/<locale>.json indexadas por el texto, en un solo comando o solicitud de extracción.

Cómo funciona

El texto en vistas Blade se convierte en {{ __('Hi :name, welcome back', ['name' => $user->name]) }}: cadenas de traducción JSON de Laravel, indexadas por el texto en sí, con placeholders :name.

Directivas como @if dividen oraciones; las direcciones de correo electrónico no se confunden con directivas.

Los plurales ({{ $n == 1 ? 'item' : 'items' }}, Str::plural('item', $n)) se convierten en trans_choice(':count item|:count items', $n), con las formas de cada idioma en el orden que Laravel selecciona.

Antes y después

La salida real del motor para este archivo. En una ejecución real, el modelo alojado nombra las claves a partir del contexto.

resources/views/cart.blade.php · antes
@extends('layouts.app')
@section('content')
  <h1>Hi {{ $user->name }}, welcome back</h1>
  <input placeholder="Search products">
@endsection
resources/views/cart.blade.php · después
@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"
}

Lo que añade la configuración

La primera ejecución configura Cadenas de traducción de Laravel si el proyecto aún no lo tiene:

  • lang/<locale>.json para cada idioma
  • Un middleware SetLocale en el grupo web: ?locale=, luego una cookie lang, luego Accept-Language

Ejecutarlo

La CLI necesita Node.js 22 o posterior, nada más: npx lo ejecuta sin añadir un package.json al proyecto. ¿No tienes Node en tu máquina? La GitHub Action de abajo la ejecuta por ti.

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

O añade la GitHub Action y obtén una pull request en cada push. Pruébalo primero en tu propio código en el playground.