phpnomad / gettext-integration
PHPNomad gettext translation strategy implementation
Requires
- ext-gettext: *
- phpnomad/translate: ^2.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpnomad/tests: ^0.1.0 || ^0.3.0
- phpunit/phpunit: ^9.6
README
Integrates PHP's built-in gettext extension with phpnomad/translate. This package provides a TranslationStrategy implementation that delegates to dgettext and dngettext, applies the locale through setlocale(LC_MESSAGES, ...), and handles gettext's msgctxt context convention. If you'd rather not depend on the ext-gettext PHP extension, phpnomad/symfony-translation-integration implements the same abstraction against Symfony Translation instead.
Installation
This package requires the ext-gettext PHP extension to be installed and enabled.
composer require phpnomad/gettext-integration
What This Provides
PHPNomad\Gettext\Strategies\TranslationStrategy, which implementsPHPNomad\Translations\Interfaces\TranslationStrategyusingdgettextanddngettext.- Locale application from an injected
HasLanguageprovider, applied withsetlocale(LC_MESSAGES, ...)on every call. - Context disambiguation via the gettext
msgctxtconvention (EOT separator\x04), with fallback to the untranslated source (or the appropriate singular/plural form) when no translation is registered for that context.
Requirements
- PHP 8.0+
ext-gettextPHP extensionphpnomad/translate ^2.0- A
HasTextDomainprovider and aHasLanguageprovider bound in your container (both interfaces ship withphpnomad/translate)
Usage
Bind the TranslationStrategy interface from phpnomad/translate to the gettext implementation inside your bootstrapper. The strategy is then resolved wherever the interface is injected.
<?php use PHPNomad\Gettext\Strategies\TranslationStrategy as GettextTranslationStrategy; use PHPNomad\Translations\Interfaces\TranslationStrategy; $container->bind(TranslationStrategy::class, GettextTranslationStrategy::class);
Catalog files, domain binding, and locale setup are handled by the gettext extension itself. See the PHP manual for bindtextdomain, .mo file layout, and platform-specific notes on locale availability.
Documentation
The PHPNomad bootstrapping guide lives at phpnomad.com. For gettext catalog setup, see the PHP manual entry for gettext.
License
MIT. See LICENSE.