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: 21 291

Dependents: 8

Suggesters: 0

Security: 0

Stars: 4

Watchers: 5

Forks: 1

Type:composer-plugin

v3.0.0 2024-11-14 20:12 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)