Laravel
Traduction IA pour Laravel avec Lingo.dev CLI
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 afin de créer des applications web modernes.
Qu'est-ce que Lingo.dev CLI ?
Lingo.dev est une plateforme de traduction alimentée par l'IA. L'interface en ligne de commande Lingo.dev lit les fichiers sources, envoie le contenu traduisible aux grands modèles de langage et réé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 prise en charge de la 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-appLorsque vous y êtes invité :
- Sélectionnez « None » pour le type de projet
- Sélectionnez « SQLite » pour la base de données
-
Accéder au répertoire du projet :
cd example-app
Étape 2. Créer le contenu source
-
Publier les fichiers de langue par défaut de Laravel :
php artisan lang:publishCela crée un répertoire
lang/enavec des fichiers de traduction tels quelang/en/auth.php.
Étape 3. Configurer l'interface en ligne de commande
À la racine du projet, créez un fichier i18n.json :
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"php": {
"include": ["lang/[locale]/*.php"]
}
}
}
Ce fichier définit :
- les fichiers que la CLI Lingo.dev 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 espace réservé qui est remplacé à l'exécution. Il garantit que le contenu est lu depuis un emplacement (par exemple,lang/en/auth.php) et écrit vers un emplacement différent (par exemple,lang/es/auth.php).- La CLI Lingo.dev traduira tous les fichiers PHP du 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 la CLI :
npx lingo.dev@latest login -
Exécutez le pipeline de traduction :
npx lingo.dev@latest runLa CLI créera un répertoire
lang/es/pour stocker le contenu traduit et un fichieri18n.lockpour 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' comes from the {locale} route parameter if ($locale = $request->route('locale')) { App::setLocale($locale); // sets the locale for this request } 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'); // default to English Route::prefix('{locale}') ->whereIn('locale', ['en', 'es']) ->middleware('setLocale') ->group(function () { Route::get('/', function () { return view('welcome'); })->name('home'); }); -
Utilisez la fonction helper
__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 -
Accédez aux URL suivantes :
- http://localhost:8000/en pour le contenu en anglais
- http://localhost:8000/es pour le contenu en espagnol