rezozero / xilofone-plugin
Package info
github.com/rezozero/xilofone-plugin
Type:composer-plugin
pkg:composer/rezozero/xilofone-plugin
Requires
- php: >=8.0
- composer-plugin-api: ^2.0
- composer/composer: >=2.2
- php-http/discovery: ^1.19
- psr/http-client: ^1.0
- psr/http-client-implementation: *
- psr/http-factory: ^1.0
- psr/http-factory-implementation: *
- symfony/dotenv: >=5.4
Requires (Dev)
- nyholm/psr7: ^1.8
- phpunit/phpunit: ^11.0
- symfony/http-client: ^7.2
README
Fetch XLIFF translations files from xilofone.rezo-zero.com and update them in your PHP project.
Plugin will download translations files each time you run composer update. Or you can run it manually with:
composer xilofone:fetch-files
Install
composer require --dev rezozero/xilofone-plugin
This plugin requires a PSR-18 HTTP client and PSR-17 HTTP factory to be available in your project. If you don't already have one, install a compatible implementation such as:
composer require --dev symfony/http-client nyholm/psr7
Configuration
Add the following configuration in your composer.json file:
{
"extra": {
"xilofone": {
"file_id": "30",
"destination_folder": "translations"
}
},
"config": {
"allow-plugins": {
"rezozero/xilofone-plugin": true
}
}
}
Then add your secret credentials in your project .env.local file:
XILOFONE_PLUGIN_USERNAME=username XILOFONE_PLUGIN_PASSWORD=password
Multiple files
You can fetch multiple files by adding them in your composer.json file:
{
"extra": {
"xilofone": {
"files": [
{
"file_id": "30",
"destination_folder": "translations"
},
{
"file_id": "31",
"destination_folder": "translations"
}
]
}
}
}
Development & testing
Install dependencies and run the test suite:
composer install ./vendor/bin/phpunit
Tests use a MockHttpClient stub (no real network required) and cover the model DTOs, the file provider, and the factory.
Custom host
By default the plugin connects to https://xilofone.rezo-zero.com. You can override this with a host key in composer.json:
{
"extra": {
"xilofone": {
"host": "https://custom.xilofone.com",
"file_id": "30",
"destination_folder": "translations"
}
}
}
Or set the XILOFONE_PLUGIN_HOST environment variable, which takes precedence over the composer.json value:
XILOFONE_PLUGIN_HOST=https://custom.xilofone.com