localize.dev

Dokumentation / Laravel

Laravel-Lokalisierung für Blade, automatisiert

Bewegen Sie fest codierten Text in Laravel-Blade-Ansichten in __()-Aufrufe mit Übersetzungen aus lang/<locale>.json, sortiert nach dem Text – in einem Befehl oder Pull Request.

Funktionsweise

Text in Blade-Ansichten wird zu {{ __('Hi :name, welcome back', ['name' => $user->name]) }}: Laravel-Übersetzungsstrings in JSON, die nach dem Text selbst indiziert sind, mit Platzhaltern :name.

Direktiven wie @if trennen Sätze; E-Mail-Adressen werden nicht mit Direktiven verwechselt.

Pluralformen ({{ $n == 1 ? 'item' : 'items' }}, Str::plural('item', $n)) werden zu trans_choice(':count item|:count items', $n), wobei die Formen jeder Sprache in der Reihenfolge verwendet werden, die Laravel auswählt.

Vorher und nachher

Die tatsächliche Ausgabe der Engine für diese Datei. Bei einer echten Ausführung benennt das gehostete Modell die Schlüssel anhand des Kontexts.

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

Was das Setup hinzufügt

Der erste Durchlauf richtet Laravel-Übersetzungsstrings ein, falls das Projekt es noch nicht hat:

  • lang/<locale>.json für jede Sprache
  • Ein SetLocale-Middleware in der Web-Gruppe: ?locale=, dann ein lang-Cookie, dann Accept-Language

Ausführen

Die CLI benötigt Node.js 22 oder neuer, sonst nichts: npx führt es aus, ohne ein package.json zum Projekt. Kein Node auf Ihrem Rechner? Die GitHub Action unten führt es für Sie aus.

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

Oder fügen Sie die GitHub Action und erhalten Sie bei jedem Push einen Pull Request. Probieren Sie es zuerst mit Ihrem eigenen Code im Spielbereich.