Guide de Démarrage Rapide - Système de Traduction
Version : 1.0 Date : 2026-01-25 Story : Epic 5, Story 5.4
Vue d'ensemble
Ce guide vous permet de démarrer rapidement avec le système de traduction multilingue. En 5 minutes, vous serez capable d'utiliser les traductions dans votre application.
1. Configuration minimale (5 minutes)
Étape 1 : Activer les traductions
Fichier : .env
TRANSLATIONS_ENABLED=true
TRANSLATIONS_INTERFACE_ENABLED=true
TRANSLATIONS_DATABASE_ENABLED=true
TRANSLATIONS_ROUTING_ENABLED=true
TRANSLATIONS_FILAMENT_ENABLED=true
Étape 2 : Vérifier la configuration
php artisan config:clear
php artisan cache:clear
Étape 3 : Tester
Créez un fichier de traduction :
Fichier : lang/fr.json
{
"Welcome": "Bienvenue",
"Hello": "Bonjour"
}
Fichier : lang/es.json
{
"Welcome": "Bienvenido",
"Hello": "Hola"
}
Dans une vue Blade :
<h1>{{ __('Welcome') }}</h1>
<p>{{ __('Hello') }}</p>
2. Utiliser les traductions dans les vues (2 minutes)
Traductions JSON (interface)
{{-- Simple --}}
{{ __('Welcome') }}{{-- Avec paramètres --}}
{{ __('Hello :name', ['name' => $user->name]) }}
{{-- Avec namespace --}}
{{ __('blog.title') }}
Traductions de modèles (BDD)
{{-- Utiliser le helper trans_model --}}
<h1>{{ trans_model($post, 'title') }}</h1>
<p>{{ trans_model($post, 'content') }}</p>{{-- Ou directement (si traductions activées) --}}
<h1>{{ $post->title }}</h1>
3. Créer un modèle traduisible (5 minutes)
Étape 1 : Ajouter le trait
<?phpnamespace App\Models;
use App\Specifics\Shares\Models\Concerns\ConditionallyTranslatable;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
use ConditionallyTranslatable;
protected function getTranslatableFields(): array
{
return ['title', 'content', 'slug'];
}
}
Étape 2 : Créer la migration
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->json('title')->nullable();
$table->json('content')->nullable();
$table->json('slug')->nullable();
$table->timestamps();
});
Étape 3 : Activer pour le modèle
Fichier : .env
TRANSLATIONS_MODEL_ARTICLE=true
Étape 4 : Utiliser
$article = new Article();
$article->setTranslation('title', 'fr', 'Mon article');
$article->setTranslation('title', 'es', 'Mi artículo');
$article->save();// Récupérer
$title = $article->getTranslation('title', 'fr');
// Ou
$title = trans_model($article, 'title');
4. Utiliser dans Filament (3 minutes)
Étape 1 : Ajouter LocaleAction
use App\Filament\Support\LocaleAction;
use Filament\Resources\Pages\EditRecord;class EditArticle extends EditRecord
{
public ?string $locale = null;
public function mount(int|string $record): void
{
parent::mount($record);
$this->locale = current_locale();
}
protected function getHeaderActions(): array
{
return array_merge(
LocaleAction::make() ?? [],
parent::getHeaderActions()
);
}
}
Étape 2 : Utiliser TranslatableField
use App\Filament\Support\TranslatableField;...TranslatableField::makeTextInput('title', 'Titre',
fn ($field) => $field->required()
),
5. Helpers essentiels
// Locale courante
current_locale(); // 'fr'// Locales disponibles
available_locales(); // ['fr', 'es']
// Route localisée
localized_route('blog.index'); // '/fr/blog' ou '/es/blog'
// Traduction de modèle
trans_model($post, 'title'); // Titre selon la locale courante
// Vérifier l'activation
translations_enabled(); // true/false
translation_component_enabled('database'); // true/false
6. Prochaines étapes
- 📖 Guide de Configuration Complet
- 📖 Guide des Helpers
- 📖 Guide de Traduction BDD
- 📖 Guide Filament
- 📖 Guide du Cache
- 📖 Pattern Modules
Besoin d'aide ? Consultez la FAQ ou la documentation complète.