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

  1. PHP und Composer installieren:

    /bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"
    
  2. Laravel global installieren:

    composer global require laravel/installer
    
  3. Neues Laravel-Projekt erstellen:

    laravel new example-app
    

    Bei Aufforderung:

    • Wählen Sie "None" für den Projekttyp
    • Wählen Sie "SQLite" für die Datenbank
  4. In das Projektverzeichnis wechseln:

    cd example-app
    

Schritt 2. Quellinhalte erstellen

  1. Standard-Sprachdateien von Laravel veröffentlichen:

    php artisan lang:publish
    

    Dies erstellt ein Verzeichnis lang/en mit Übersetzungsdateien wie lang/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

  1. Registrieren Sie sich für ein Lingo.dev-Konto.

  2. Melden Sie sich über die CLI bei Lingo.dev an:

    npx lingo.dev@latest login
    
  3. Führen Sie die Übersetzungs-Pipeline aus:

    npx lingo.dev@latest run
    

    Die CLI erstellt ein lang/es/-Verzeichnis zum Speichern der übersetzten Inhalte und eine i18n.lock-Datei, um nachzuverfolgen, was bereits übersetzt wurde (um unnötige erneute Übersetzungen zu vermeiden).

Schritt 5. Übersetzungen verwenden

  1. Erstellen Sie eine Middleware, um die Locale aus der Route zu setzen:

    php artisan make:middleware SetLocaleFromRoute
    
  2. 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);
        }
    }
    
  3. 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();
    
  4. 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');
        });
    
  5. 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>
    
  6. Starten Sie den Entwicklungsserver:

    npm install
    npm run build
    composer run dev
    
  7. Navigieren Sie zu den folgenden URLs: