axproo / lang-manager
Un générateur de fichiers de langue PHP réutilisable qui analyse les projets et les bibliothèques à la recherche de clés lang() et crée automatiquement des fichiers de langue structurés.
Requires
- php: >=8.0
README
LangManager est une librairie PHP pour gérer la traduction et la génération des fichiers de langue dans vos projets.
Elle scanne automatiquement votre code à la recherche des clés lang('module.key'), met à jour les fichiers de langue existants, ajoute les nouvelles clés avec un placeholder, et supprime les clés non utilisées.
Fonctionnalités
- 📂 Scan automatique : Parcourt tous les fichiers PHP de votre projet pour détecter les clés
lang('module.key'). - 🌐 Gestion multilingue : Génère et met à jour les fichiers pour plusieurs langues (
fr,en, etc.). - 🆕 Ajout automatique des nouvelles clés avec placeholder
__TRANSLATE__. - 🧹 Nettoyage des clés obsolètes : Supprime les clés non utilisées dans le projet.
- 📝 Rapport CLI : Affiche les clés en attente de traduction.
- 🔄 Réutilisable : Peut être utilisé dans n’importe quel projet PHP ou librairie.
📦 Installation
composer require axproo/lang-manager
Structure du projet
Axproo/LangManager ├── src/ │ ├── LangManager.php │ ├── Scanner.php │ ├── FileGenerator.php │ ├── DictionaryLoader.php │ ├── Helpers.php │ └── LangReporter.php ├── dictionaries/ │ ├── en-fr.php │ └── en-en.php └── vendor/
Exemple d’utilisation
Dans votre projet :
Si vous lancer les test à partir de composer, vous pouvez faire ceci:
composer dump-autoload
Créer un fichier nommé example.php à la racine de votre projet, et entré le code ci-dessous
require __DIR__ . '/vendor/autoload.php'; use LangManager\LangManager; $projectDir = __DIR__ . '/src'; $outputDir = __DIR__ . '/src/Language'; $locales = ['fr', 'en', 'es']; $langManager = new LangManager(); $langManager->run($projectDir, $outputDir, $locales);
en suite lancer dans votre CLI:
php exampe.php
Explication
- Les clés nouvelles sont ajoutées automatiquement dans les fichiers de langue avec le placeholder TRANSLATE.
- Les anciennes clés non utilisées sont supprimées du dictionnaire et des fichiers de langue.
- Les traductions existantes sont conservées si elles ne contiennent pas le placeholder.
- Le rapport CLI affiche toutes les clés encore à traduire.
Fichiers de dictionnaire
Exemple dictionaries/en-fr.php :
<?php return [ 'login.success' => 'Connexion réussie', 'login.unauthorized' => 'Accès non autorisé', ];
Exemple dictionaries/en-en.php :
<?php return [ 'login.success' => 'Login successful', 'login.unauthorized' => 'Unauthorized access', ];
Exemple de fichiers générés
src/ └── Language/ ├── fr/ │ ├── Auth.php │ ├── Users.php │ └── Token.php └── en/ ├── Auth.php ├── Users.php └── Token.php
Chaque clé trouvée est automatiquement placée dans le bon module.
Contribution
Les contributions sont les bienvenues ! Pour ajouter une nouvelle langue, créez simplement un fichier en-xx.php dans le dossier dictionaries et exécutez LangManager.
Vous pouvez aussi générer un fichier de langue en-xx.php en le spécifiant dans locales lors de la création de langues :
$locales = ['fr', 'en', 'es', 'de'];
La librairie générera automatiquement les fichiers nécessaires.
📄 Licence
MIT License – Vous pouvez utiliser cette librairie librement dans vos projets.
👨💻 Auteur
Développé par Christian Djomou. Pour toute contribution, suggestion ou amélioration, ouvrez une issue ou un pull request.