Laravel
Traduction IA pour Laravel avec l'interface en ligne de commande Lingo.dev
Qu'est-ce que Laravel ?
Laravel est un framework d'application web PHP avec une syntaxe expressive et élégante. Il fournit des fonctionnalités intégrées pour le routage, l'authentification, les sessions et la mise en cache pour construire des applications web modernes.
Qu'est-ce que Lingo.dev CLI ?
Lingo.dev est une plateforme de traduction alimentée par l'IA. Le CLI Lingo.dev lit les fichiers source, envoie le contenu traduisible aux grands modèles de langage et écrit les fichiers traduits dans votre projet.
À propos de ce guide
Ce guide explique comment configurer Lingo.dev CLI dans une application Laravel. Vous apprendrez comment créer un projet Laravel avec support de localisation, configurer un pipeline de traduction et implémenter le changement de langue.
Étape 1. Configurer un projet Laravel
-
Installer PHP et Composer :
/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"
-
Installer Laravel globalement :
composer global require laravel/installer
-
Créer un nouveau projet Laravel :
laravel new example-app
Lorsque vous êtes invité :
- Sélectionnez "None" pour le type de projet
- Sélectionnez "SQLite" pour la base de données
-
Naviguer dans le répertoire du projet :
cd example-app
Étape 2. Créer du contenu source
-
Publier les fichiers de langue par défaut de Laravel :
php artisan lang:publish
Cela crée un répertoire
lang/en
avec des fichiers de traduction commelang/en/auth.php
.
Étape 3. Configurer le CLI
À la racine du projet, créez un fichier i18n.json
:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": 1.8,
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"php": {
"include": ["lang/[locale]/*.php"]
}
}
}
Ce fichier définit :
- les fichiers que Lingo.dev CLI doit traduire
- les langues entre lesquelles traduire
Dans ce cas, la configuration traduit les fichiers de langue PHP de l'anglais vers l'espagnol.
Il est important de noter que :
[locale]
est un placeholder qui est remplacé à l'exécution. Il garantit que le contenu est lu à partir d'un emplacement (par exemple,lang/en/auth.php
) et écrit à un emplacement différent (par exemple,lang/es/auth.php
).- Lingo.dev CLI traduira tous les fichiers PHP dans le répertoire de langue qui correspondent à ce modèle.
Pour en savoir plus, consultez configuration i18n.json.
Étape 4. Traduire le contenu
-
Connectez-vous à Lingo.dev via l'interface en ligne de commande :
npx lingo.dev@latest login
-
Exécutez le pipeline de traduction :
npx lingo.dev@latest run
L'interface en ligne de commande créera un répertoire
lang/es/
pour stocker le contenu traduit et un fichieri18n.lock
pour suivre ce qui a été traduit (afin d'éviter les retraductions inutiles).
Étape 5. Utiliser les traductions
-
Créez un middleware pour définir la locale à partir de la route :
php artisan make:middleware SetLocaleFromRoute
-
Mettez à jour le fichier généré
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' provient du paramètre de route {locale} if ($locale = $request->route('locale')) { App::setLocale($locale); // définit la locale pour cette requête } return $next($request); } }
-
Enregistrez le middleware dans
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();
-
Configurez les routes avec des préfixes de locale dans
routes/web.php
:<?php use Illuminate\Support\Facades\Route; Route::redirect('/', '/en'); // par défaut en anglais Route::prefix('{locale}') ->whereIn('locale', ['en', 'es']) ->middleware('setLocale') ->group(function () { Route::get('/', function () { return view('welcome'); })->name('home'); });
-
Utilisez la fonction d'assistance
__
pour afficher le contenu localisé dans vos vues :<!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>
-
Démarrez le serveur de développement :
npm install npm run build composer run dev
-
Naviguez vers les URL suivantes :
- http://localhost:8000/en pour le contenu en anglais
- http://localhost:8000/es pour le contenu en espagnol