IntlPull
Tutorial
16 min read

Localisation PHP : Guide Complet i18n Basé sur les Tableaux (2026)

Maîtrisez l'internationalisation PHP avec des traductions basées sur des tableaux. Configuration, meilleures pratiques, pluralisation, formatage des dates et intégration Laravel, Symfony, WordPress.

IntlPull Team
IntlPull Team
09 Feb 2026, 10:19 AM [PST]
On this page
Summary

Maîtrisez l'internationalisation PHP avec des traductions basées sur des tableaux. Configuration, meilleures pratiques, pluralisation, formatage des dates et intégration Laravel, Symfony, WordPress.

Réponse Rapide

Pour localiser une application PHP, utilisez des fichiers de traduction basés sur des tableaux. Stockez les traductions dans des tableaux PHP (/lang/fr/messages.php), créez une fonction helper de traduction et utilisez-la dans toute votre app. Pour les frameworks : Laravel a le helper intégré __('clé'), Symfony utilise le composant Translation, WordPress utilise __('texte', 'domaine'). Cette approche est simple, rapide et fonctionne avec n'importe quelle version PHP.


Configuration de Base : PHP Simple

Créer des Fichiers de Traduction

Structure des répertoires :

/lang
  /fr
    messages.php
    validation.php
  /en
    messages.php
    validation.php

lang/fr/messages.php :

PHP
1<?php
2
3return [
4    'welcome' => 'Bienvenue dans notre application',
5    'goodbye' => 'Au revoir, :name !',
6    'items_count' => '{0} Aucun article|{1} Un article|[2,*] :count articles',
7    
8    'auth' => [
9        'login' => 'Se connecter',
10        'logout' => 'Se déconnecter',
11        'register' => 'S'inscrire',
12    ],
13    
14    'nav' => [
15        'home' => 'Accueil',
16        'about' => 'À Propos',
17        'contact' => 'Contact',
18    ],
19];

Localisation Laravel

Laravel a une localisation intégrée basée sur des tableaux.

Configuration

1. Créer des fichiers de traduction :

/lang
  /fr
    messages.php
  /en
    messages.php

2. Configurer la locale par défaut :

PHP
1// config/app.php
2
3'locale' => 'fr',
4'fallback_locale' => 'en',
5'available_locales' => ['fr', 'en', 'es', 'de'],

3. Utiliser dans les vues :

PHP
1<!-- Template Blade -->
2<h1>{{ __('messages.welcome') }}</h1>
3<p>{{ __('messages.goodbye', ['name' => $user->name]) }}</p>
4
5<!-- Pluralisation -->
6<p>{{ trans_choice('messages.items_count', $count) }}</p>

4. Changer la locale dynamiquement :

PHP
1<?php
2
3App::setLocale('fr');
4$locale = App::getLocale();

Composant de Traduction Symfony

Installation (Autonome)

Terminal
composer require symfony/translation

Configuration

PHP
1<?php
2
3use SymfonyComponentTranslationTranslator;
4use SymfonyComponentTranslationLoaderPhpFileLoader;
5
6$translator = new Translator('fr');
7$translator->addLoader('php', new PhpFileLoader());
8$translator->addResource('php', __DIR__ . '/lang/fr/messages.php', 'fr', 'messages');
9
10echo $translator->trans('welcome', [], 'messages');

Localisation WordPress

Méthode Traditionnelle (Gettext)

PHP
1<?php
2
3echo __('Bienvenue sur notre site', 'mon-theme');
4printf(__('Bonjour, %s !', 'mon-theme'), $nom);
5echo _n('%s article', '%s articles', $count, 'mon-theme');

Formatage des Dates et Nombres

Extension PHP Intl

PHP
1<?php
2
3$locale = 'fr_FR';
4
5// Formatage de date
6$formatter = new IntlDateFormatter(
7    $locale,
8    IntlDateFormatter::LONG,
9    IntlDateFormatter::NONE
10);
11echo $formatter->format(new DateTime()); // "7 février 2026"
12
13// Formatage de nombre
14$numberFormatter = new NumberFormatter($locale, NumberFormatter::DECIMAL);
15echo $numberFormatter->format(1234.56); // "1 234,56"
16
17// Formatage de devise
18$currencyFormatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
19echo $currencyFormatter->formatCurrency(1234.56, 'EUR'); // "1 234,56 €"

Meilleures Pratiques

1. Organiser les Fichiers de Traduction

/lang
  /fr
    messages.php       # Chaînes UI générales
    validation.php     # Messages de validation
    auth.php          # Messages d'authentification

2. Utiliser des Tableaux Imbriqués

PHP
1<?php
2
3return [
4    'auth' => [
5        'login' => 'Se connecter',
6        'logout' => 'Se déconnecter',
7    ],
8];
9
10// Usage : __('messages.auth.login')

3. Ne Jamais Concaténer les Traductions

PHP
1<?php
2
3// ❌ Mauvais
4echo __('messages.welcome') . ' ' . $nom . ' !';
5
6// ✅ Bon
7echo __('messages.welcome_user', ['name' => $nom]);

Intégration avec IntlPull

Flux de Travail Automatisé

Terminal
1# Extraire les chaînes du code
2php artisan intlpull:extract
3
4# Télécharger vers IntlPull
5php artisan intlpull:upload
6
7# Traduire avec IA
8php artisan intlpull:translate
9
10# Télécharger les traductions
11php artisan intlpull:download

Questions Fréquemment Posées

Dois-je utiliser gettext ou des tableaux PHP ?

Utilisez des tableaux PHP pour la plupart des projets. Ils sont plus simples, plus rapides et ne nécessitent pas d'extensions PHP. Utilisez gettext uniquement si vous avez besoin de compatibilité avec des outils existants.

Comment gérer la pluralisation en PHP ?

Utilisez trans_choice() de Laravel ou trans() de Symfony avec le format de message ICU. Pour PHP simple, implémentez un analyseur simple qui gère la syntaxe {0}, {1}, et [2,*].


Conclusion

La localisation PHP est simple avec des traductions basées sur des tableaux.

Récapitulatif rapide :

  1. Créer des fichiers /lang/{locale}/messages.php
  2. Retourner des tableaux avec des clés de traduction
  3. Utiliser la fonction helper __('clé')
  4. Gérer la pluralisation avec trans_choice()
  5. Formater les dates/nombres avec l'extension Intl

Essayez IntlPull Gratuitement | Documentation PHP

Tags
php
localisation
i18n
laravel
symfony
wordpress
internationalisation
IntlPull Team
IntlPull Team
Engineering

Building tools to help teams ship products globally. Follow us for more insights on localization and i18n.