Laravel
KI-Übersetzung für Laravel mit der Lingo.dev CLI
Was ist Laravel?
Laravel ist ein PHP-Webapplikations-Framework mit ausdrucksstarker, eleganter Syntax. Es bietet integrierte Funktionen für Routing, Authentifizierung, Sessions und Caching, um moderne Webanwendungen zu entwickeln.
Was ist Lingo.dev CLI?
Lingo.dev ist eine KI-gestützte Übersetzungsplattform. Die Lingo.dev CLI liest Quelldateien, sendet übersetzbare Inhalte an Large Language Models und schreibt die übersetzten Dateien zurück in Ihr Projekt.
Über diesen Leitfaden
Dieser Leitfaden erklärt, wie man die Lingo.dev CLI in einer Laravel-Anwendung einrichtet. Sie lernen, wie man ein Laravel-Projekt mit Lokalisierungsunterstützung erstellt, eine Übersetzungspipeline konfiguriert und Sprachumschaltung implementiert.
Schritt 1. Einrichten eines Laravel-Projekts
-
Installieren Sie PHP und Composer:
/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"
-
Installieren Sie Laravel global:
composer global require laravel/installer
-
Erstellen Sie ein neues Laravel-Projekt:
laravel new example-app
Bei Aufforderung:
- Wählen Sie "None" für den Projekttyp
- Wählen Sie "SQLite" für die Datenbank
-
Navigieren Sie in das Projektverzeichnis:
cd example-app
Schritt 2. Quellinhalt erstellen
-
Veröffentlichen Sie die Standard-Sprachdateien von Laravel:
php artisan lang:publish
Dies erstellt ein
lang/en
-Verzeichnis mit Übersetzungsdateien wielang/en/auth.php
.
Schritt 3. Konfigurieren der CLI
Erstellen Sie im Stammverzeichnis des Projekts eine i18n.json
-Datei:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": 1.8,
"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.
Es ist wichtig zu beachten, dass:
[locale]
ein Platzhalter ist, der zur Laufzeit ersetzt wird. Er stellt sicher, dass Inhalte von einem Ort (z.B.lang/en/auth.php
) gelesen und an einen anderen Ort (z.B.lang/es/auth.php
) geschrieben werden.- Die Lingo.dev CLI wird alle PHP-Dateien im Sprachverzeichnis übersetzen, die diesem Muster entsprechen.
Weitere Informationen finden Sie unter i18n.json-Konfiguration.
Schritt 4. Übersetzen Sie den Inhalt
-
Melden Sie sich über die CLI bei Lingo.dev an:
npx lingo.dev@latest login
-
Führen Sie die Übersetzungspipeline aus:
npx lingo.dev@latest run
Die CLI erstellt ein Verzeichnis
lang/es/
zum Speichern der übersetzten Inhalte und einei18n.lock
-Datei, um zu verfolgen, was bereits übersetzt wurde (um unnötige Neuübersetzungen zu vermeiden).
Schritt 5. Verwenden Sie die Übersetzungen
-
Erstellen Sie Middleware, um das Gebietsschema aus der Route zu setzen:
php artisan make:middleware SetLocaleFromRoute
-
Aktualisieren Sie die generierte Datei
app/Http/Middleware/SetLocaleFromRoute.php
:<?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' kommt vom {locale} Routenparameter if ($locale = $request->route('locale')) { App::setLocale($locale); // setzt das Gebietsschema für diese Anfrage } 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 Gebietsschema-Präfixen in
routes/web.php
:<?php use Illuminate\Support\Facades\Route; Route::redirect('/', '/en'); // Standard ist Englisch Route::prefix('{locale}') ->whereIn('locale', ['en', 'es']) ->middleware('setLocale') ->group(function () { Route::get('/', function () { return view('welcome'); })->name('home'); });
-
Verwenden Sie die
__
-Hilfsfunktion, um lokalisierte Inhalte 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 folgenden URLs:
- http://localhost:8000/en für englische Inhalte
- http://localhost:8000/es für spanische Inhalte