automattic / jetpack-composer-plugin
A custom installer plugin for Composer to move Jetpack packages out of `vendor/` so WordPress's translation infrastructure will find their strings.
Installs: 20 893
Dependents: 8
Suggesters: 0
Security: 0
Stars: 4
Watchers: 5
Forks: 1
Type:composer-plugin
Requires
- php: >=7.0
- composer-plugin-api: ^2.1.0
Requires (Dev)
- automattic/jetpack-changelogger: ^4.2.8
- composer/composer: ^2.2 || ^2.4
- yoast/phpunit-polyfills: ^1.1.1
This package is auto-updated.
Last update: 2024-11-04 16:28:21 UTC
README
This is a custom installer plugin for Composer to help with WordPress translation of Composer libraries intended for use as shared code in plugins and themes.
When this plugin is installed, libraries with type
set to jetpack-library
will be installed into jetpack_vendor/
instead of the usual vendor/
.
Also translation text domain information will be collected from such libraries and written to jetpack_vendor/i18n-map.php
.
Use in a WordPress plugin or theme
This plugin needs to be put into the require
section of your composer.json
file in order to be used.
"require": { "automattic/jetpack-composer-plugin": "*" },
You'll also want to set extra.wp-plugin-slug
or extra.wp-theme-slug
to the WordPress.org slug, which is also the textdomain for your plugin or theme's translations.
"extra": { "wp-plugin-slug": "my-plugin" },
Finally, for the libraries' translations to work, you'll also want to require automattic/jetpack-assets and include something like the following in your initialization code just after you load the autoloader:
\Automattic\Jetpack\Assets::alias_textdomains_from_file( __DIR__ . '/jetpack_vendor/i18n-map.php' );
Use by a library
A library that wants to be used in WordPress plugins or themes needs to set the type
in composer.json
to jetpack-library
. The library package should not itself include a dependency on automattic/jetpack-composer-plugin, although it may suggest it.
All calls to __()
, _x()
, and other WordPress i18n functions should then use a textdomain unique to the library. This textdomain also needs to be declared in composer.json
as extra.textdomain
:
"extra": { "textdomain": "my-library" },
License
composer-plugin is licensed under GNU General Public License v2 (or later)