Skip to content
Gérits Aurélien edited this page Feb 14, 2026 · 5 revisions

La classe LocalizationTool est le moteur de localisation de Magepattern. Elle est conçue pour être agnostique vis-à-vis de la source de données : elle peut être alimentée par des fichiers de configuration Smarty (.conf), des fichiers JSON, des bases de données ou l'extension système intl.

Logique de Priorité

L'outil cherche les traductions dans l'ordre suivant : Dictionnaire Injecté : Priorité absolue (via setCountries ou setLanguages). Extension Intl : Traduction dynamique si l'extension est active et configurée. Fallback Statique : Liste interne de secours (en anglais). Note sur la Normalisation : L'outil convertit automatiquement les index en majuscules pour les pays (ISO) et en minuscules pour les langues. Cela permet d'utiliser des sources aux formats variés (comme Smarty) sans conflit.

Exemples d'utilisation

  1. Avec Smarty (.conf) Smarty impose souvent des index en minuscules dans ses fichiers .conf. L'outil gère cela de manière transparente.

Fichier pays.conf :

be = Belgique fr = France ca = Canada

use Magepattern\Component\Tool\LocalizationTool;

// Chargement des variables du fichier .conf
$configVars = $smarty->getConfigVars(); 

// Injection (la classe transforme "be" en "BE" automatiquement)
LocalizationTool::setCountries($configVars, 'fr');

// Usage
echo LocalizationTool::getCountry('be', 'fr'); // Affiche "Belgique"
  1. Avec un fichier JSON Idéal pour stocker des listes de langues ou de pays volumineuses sans encombrer vos scripts.

Fichier languages-fr.json :

{
  "fr": "Français",
  "en": "Anglais",
  "es": "Espagnol"
}
$json = file_get_contents('languages-fr.json');
$data = json_decode($json, true);

LocalizationTool::setLanguages($data, 'fr');

$liste = LocalizationTool::getLanguages('fr'); // Retourne votre tableau JSON
  1. Usage PHP Standard (Sans injection) Si vous ne fournissez rien, l'outil tente d'utiliser le système ou ses propres ressources.
// Retourne l'émoji correspondant
echo LocalizationTool::getFlag('FR'); // 🇫🇷

// Retourne le symbole de la devise
echo LocalizationTool::getCurrencySymbol('EUR', 'fr'); // €

// Retourne la liste complète par défaut (Fallback)
$pays = LocalizationTool::getCountries('en');

Liste des méthodes

Méthode Paramètres Description
setCountries() array $data, string $loc Injecte un dictionnaire de pays pour une langue donnée.
setLanguages() array $data, string $loc Injecte un dictionnaire de langues pour une langue donnée.
getCountries() string $loc Retourne la liste complète (injectée ou système).
getCountry() $code, $loc Retourne le nom d'un pays (insensible à la casse de l'index).
getFlag() string $code Retourne l'émoji drapeau.
getCurrencySymbol() $code, $loc Retourne le symbole monétaire (ex: $, £, €).

Note : Filtrage des données (Injection Smarty) Si votre fichier .conf contient des variables globales mélangées aux codes de pays (ex: site_name, email_admin), il est conseillé de filtrer le tableau avant l'injection pour ne pas polluer vos listes de sélection.

Exemple de filtrage par longueur de clé (Codes ISO) Ce script permet d'extraire uniquement les clés de 2 lettres (norme ISO pour les pays) avant de les envoyer au LocalizationTool.

// 1. Récupération de toutes les variables du .conf
$allVars = $smarty->getConfigVars();

// 2. Filtrage : on ne garde que les clés de 2 caractères (ex: be, fr, us)
$onlyCountries = array_filter($allVars, function($key) {
    return (strlen($key) === 2);
}, ARRAY_FILTER_USE_KEY);

// 3. Injection propre dans Magepattern
LocalizationTool::setCountries($onlyCountries, 'fr');
$config = parse_ini_file('ma_config.conf', true);
LocalizationTool::setCountries($config['pays'], 'fr');
[pays]
be = Belgique
fr = France

[config]
site_name = Magepattern

Clone this wiki locally