Download the PHP package wlib/i18n without Composer
On this page you can find all versions of the php package wlib/i18n. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package i18n
Short Description Brings internationalization tools to your PHP project.
License CECILL-2.1
Informations about the package i18n
wlib/i18n
Paquet d'internationalisation (i18n) pour les applications PHP, basé sur la librairie pomo/pomo utilisée par WordPress.
Ce paquet simplifie la gestion des traductions dans vos applications en proposant une API intuitive et des fonctions inspirées de WordPress, tout en s'intégrant parfaitement à l'écosystème wlib.
🚀 Besoin d'un cadre prêt à l'emploi pour vos applications multilingues ? Installez sans plus attendre wlib/skeleton qui vous propose une structure de départ clé en main pour démarrer votre prochain projet.
Sommaire
- Installation
- Concepts clés
- Configuration rapide
- Utilisation
- Structure recommandée des fichiers
- Bonnes pratiques
- Intégration avec les frameworks
- Génération des fichiers .po
- Dépannage
- API avancée
- Exemple complet avec architecture MVC
- Contribution
- Licence
Installation
Prérequis :
- PHP 7.4
- Extension PHP
gettextrecommandée (mais non obligatoire)
Concepts clés
Domaines de traduction
Un domaine permet d'organiser vos traductions par contexte fonctionnel. Par défaut, le domaine default est utilisé. Vous pouvez créer des domaines séparés pour :
- Les messages de l'application (
app) - Les messages d'erreur (
errors) - Les labels de formulaires (
forms) - etc.
Fichiers de traduction
Les traductions sont stockées dans des fichiers au format Gettext :
.po: fichier source editable (Portable Object).mo: fichier binaire compilé (Machine Object)
Configuration rapide
1. Initialisation du traducteur
2. Avec wlib/dibox (recommandé)
Utilisation
Fonctions helpers (style WordPress)
Les fonctions suivantes sont automatiquement disponibles après l'instanciation du Translator :
| Fonction | Description | Exemple |
|---|---|---|
__() |
Traduction simple | __('Bonjour') |
_n() |
Singulier/Pluriel | _n('%d article', '%d articles', $count) |
_x() |
Traduction avec contexte | _x('Post', 'type de contenu', 'post-type') |
_nx() |
Singulier/Pluriel avec contexte | _nx('%d article', '%d articles', $count, 'blog') |
_s() |
Traduction + sprintf | _s('Bonjour %s', 'Jean') |
_ns() |
Singulier/Pluriel + sprintf | _ns('%d article pour %s', '%d articles pour %s', $count, $author) |
Exemple complet
Structure recommandée des fichiers
Bonnes pratiques
1. Organisation des traductions
- Un fichier par domaine : Séparez vos traductions par fonctionnalité
- Nommage des domaines : Utilisez des noms courts et explicites (
auth,validation,admin) - Hiérarchie des langues : Utilisez le format
langue_REGION(ex:fr_FR,en_US)
2. Dans votre code
3. Variables dans les traductions
Utilisez des placeholders numérotés pour les interpolations :
Intégration avec les frameworks
Avec wlib/application
Middleware de détection de langue
Génération des fichiers .po
Je recommande chaudement l'utilisation de Poedit :
- Téléchargez Poedit
- Créez un nouveau catalogue
- Configurez les chemins sources de votre projet
- Extrayez les chaînes traduisibles
- Traduisez et enregistrez
Dépannage
Les traductions n'apparaissent pas
-
Vérifiez que le fichier .po est bien chargé :
- Assurez-vous que le
Translatorest instancié avant l'appel aux helpers - Vérifiez que le fichier .po est valide (utilisez Poedit pour le valider)
Problèmes de caractères spéciaux
- Enregistrez vos fichiers .po en UTF-8 sans BOM
- Assurez-vous que votre éditeur utilise bien UTF-8
Les fonctions helpers ne fonctionnent pas
Les fonctions helpers nécessitent que le Translator soit instancié au moins une fois avant leur utilisation. Assurez-vous que :
API avancée
Gestion multiple de fichiers par domaine
Utilisation sans helpers
Exemple complet avec architecture MVC
Structure du projet
Fichier de configuration (config/translations.php)
Initialisation (src/bootstrap.php)
Utilisation dans un contrôleur
Contribution
Les contributions sont les bienvenues ! Pour contribuer :
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/nouvelle-fonctionnalité) - Committez vos changements (
git commit -m 'feat(i18n): ajoute telle fonctionnalité') - Poussez vers la branche (
git push origin feature/nouvelle-fonctionnalité) - Ouvrez une Pull Request
📜 Licence
Ce package est distribué sous la licence CeCILL 2.1, une licence open source française compatible avec la GPL.
CeCILL (CEA CNRS INRIA Logiciel Libre) est une licence qui garantit la liberté d'utiliser, modifier et redistribuer le logiciel.
Pour plus d'informations : http://www.cecill.info