-
Notifications
You must be signed in to change notification settings - Fork 0
LocalizationTool
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.
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.
- 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"- 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- 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');| 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