Laravel
KI-Übersetzung für Laravel mit Lingo.dev CLI
Was ist Laravel?
Laravel ist ein PHP-Webanwendungs-Framework mit ausdrucksstarker, eleganter Syntax. Es bietet integrierte Funktionen für Routing, Authentifizierung, Sessions und Caching zum Erstellen moderner Webanwendungen.
Was ist Lingo.dev CLI?
Lingo.dev ist eine KI-gestützte Übersetzungsplattform. Die Lingo.dev CLI liest Quelldateien, sendet übersetzbare Inhalte an große Sprachmodelle und schreibt übersetzte Dateien zurück in Ihr Projekt.
Über diese Anleitung
Diese Anleitung erklärt, wie Sie Lingo.dev CLI in einer Laravel-Anwendung einrichten. Sie erfahren, wie Sie ein Laravel-Projekt mit Lokalisierungsunterstützung erstellen, eine Übersetzungs-Pipeline konfigurieren und Sprachwechsel implementieren.
Schritt 1. Laravel-Projekt einrichten
-
PHP und Composer installieren:
/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)" -
Laravel global installieren:
composer global require laravel/installer -
Neues Laravel-Projekt erstellen:
laravel new example-appBei Aufforderung:
- Wählen Sie "None" für den Projekttyp
- Wählen Sie "SQLite" für die Datenbank
-
In das Projektverzeichnis wechseln:
cd example-app
Schritt 2. Quellinhalte erstellen
-
Standard-Sprachdateien von Laravel veröffentlichen:
php artisan lang:publishDies erstellt ein Verzeichnis
lang/enmit Übersetzungsdateien wielang/en/auth.php.
Schritt 3. CLI konfigurieren
Erstellen Sie im Stammverzeichnis des Projekts eine Datei i18n.json:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"php": {
"include": ["lang/[locale]/*.php"]
}
}
}
Diese Datei definiert:
- die Dateien, die die Lingo.dev CLI übersetzen soll
- die Sprachen, zwischen denen übersetzt werden soll
In diesem Fall übersetzt die Konfiguration PHP-Sprachdateien von Englisch nach Spanisch.
Wichtig zu beachten ist:
[locale]ist ein Platzhalter, der zur Laufzeit ersetzt wird. Er stellt sicher, dass Inhalte von einem Ort gelesen (z. B.lang/en/auth.php) und an einen anderen Ort geschrieben werden (z. B.lang/es/auth.php).- Die Lingo.dev CLI übersetzt alle PHP-Dateien im Sprachverzeichnis, die diesem Muster entsprechen.
Weitere Informationen finden Sie unter i18n.json-Konfiguration.
Schritt 4. Inhalte übersetzen
-
Melden Sie sich über die CLI bei Lingo.dev an:
npx lingo.dev@latest login -
Führen Sie die Übersetzungs-Pipeline aus:
npx lingo.dev@latest runDie CLI erstellt ein
lang/es/-Verzeichnis zum Speichern der übersetzten Inhalte und einei18n.lock-Datei, um nachzuverfolgen, was bereits übersetzt wurde (um unnötige erneute Übersetzungen zu vermeiden).
Schritt 5. Übersetzungen verwenden
-
Erstellen Sie eine Middleware, um die Locale aus der Route zu setzen:
php artisan make:middleware SetLocaleFromRoute -
Aktualisieren Sie die generierte
app/Http/Middleware/SetLocaleFromRoute.php-Datei:<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Symfony\Component\HttpFoundation\Response; class SetLocaleFromRoute { /** * Handle an incoming request. * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next): Response { // 'locale' comes from the {locale} route parameter if ($locale = $request->route('locale')) { App::setLocale($locale); // sets the locale for this request } return $next($request); } } -
Registrieren Sie die Middleware in
bootstrap/app.php:<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; use App\Http\Middleware\SetLocaleFromRoute; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'setLocale' => SetLocaleFromRoute::class, ]); }) ->withExceptions(function (Exceptions $exceptions): void { // })->create(); -
Konfigurieren Sie Routen mit Locale-Präfixen in
routes/web.php:<?php use Illuminate\Support\Facades\Route; Route::redirect('/', '/en'); // default to English Route::prefix('{locale}') ->whereIn('locale', ['en', 'es']) ->middleware('setLocale') ->group(function () { Route::get('/', function () { return view('welcome'); })->name('home'); }); -
Verwenden Sie die
__Hilfsfunktion, um lokalisierten Inhalt in Ihren Views anzuzeigen:<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>{{ config('app.name', 'Laravel') }}</title> </head> <body> <nav> <a href="{{ route('home', ['locale' => 'en']) }}" class="underline mr-4">English</a> <a href="{{ route('home', ['locale' => 'es']) }}" class="underline">Español</a> </nav> <p class="mb-6">{{ __('auth.throttle') }}</p> </body> </html> -
Starten Sie den Entwicklungsserver:
npm install npm run build composer run dev -
Navigieren Sie zu den folgenden URLs:
- http://localhost:8000/en für englische Inhalte
- http://localhost:8000/es für spanische Inhalte