datalinx / gettext-context
Implementation of context functions for the PHP gettext extension
Requires
- php: >=7.2
- ext-gettext: *
Requires (Dev)
- jaschilz/php-coverage-badger: ^2.0
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2022-05-26 20:05:40 UTC
README
Implementation of context functions for the PHP gettext extension
About
PHP still lacks full support for gettext, because it does not implement the context functions. Until this is sorted out, you can use this package to add context support to your localization efforts.
Requirements
- PHP >= 7.2
- gettext PHP extension
It can be used on lower versions of PHP, but you won't be able to install it with composer (or run tests).
Installing
- Download it with composer:
composer require datalinx/gettext-context
- Include the
vendor/datalinx/gettext-context/src/gettext-context.php
file when you need it*
* It's not added to the autoload
directive, since you might not need or want to always include it in runtime. If you want to always load it, just add the source file to your composer.json
autoload files list:
{ "autoload": { "files": [ "vendor/datalinx/gettext-context/src/gettext-context.php" ] } }
Usage
See the documented src/gettext-context.php file for the list of functions and their parameters.
Extracting messages with context support
With xgettext
You can add extra keyword parameters to your xgettext
call to include the context functions.
For example, this would be used in our package:
xgettext --force-po --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 --keyword=dpgettext:2c,3 --keyword=dnpgettext:2c,3,4 -c -o messages.po tests/Test.php
With Poedit
If you're using Poedit, add the following keywords in your Catalog > Properties > Sources Keywords:
pgettext:1c,2
npgettext:1c,2,3
dpgettext:2c,3
dnpgettext:2c,3,4
Then run the "Update from code" procedure :)
Credits
- This answer on Stack Overflow for the implementation.
- This comment on the PHP documentation for the messages extraction fix.