=== A faster load_textdomain === Contributors: PerS Tags: l10n, load_textdomain, cache, performance Requires at least: 5.9 Requires PHP: 7.4 Tested up to: 6.4 Stable tag: 2.3.2 Donate link: https://paypal.me/PerSoderlind License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html A faster load_textdomain == Description == >**NOTE** This plugin is not needed if you are running WordPress 6.5 or later, as the functionality [is built into WordPress core](https://make.wordpress.org/core/2024/02/27/i18n-improvements-6-5-performant-translations/). If you need to generate translation in the new .l10n.php format, use the Performant Translations plugin instead. This is a WordPress plugin that caches the .mo file as an PHP array, and [include](https://www.php.net/manual/en/function.include.php) the array instead of the .mo file. In theory, nothing is faster in PHP than loading and executing another PHP file. = How it works = If you have a plugin or theme that loads a textdomain, e.g. `load_textdomain( 'textdomain', $path_to_mo_file )`, then this plugin will: 1. Look for a PHP version of the .mo file in `WP_CONTENT_DIR . '/cache/a-faster-load-textdomain'` directory. 2. If the PHP version exists, [include](https://www.php.net/manual/en/function.include.php) the file. 3. If the PHP version doesn't exist, load the .mo file, and save the file as an PHP array in `wp-content/cache/a-faster-load-textdomain/` directory. The localized PHP array can be cached via [PHP OPcache](http://blog.jpauli.tech/2015-03-05-opcache-html/). If you have PHP OPcache enabled, then the localized PHP array will be cached in memory, and the PHP file will not be parsed again. = Filters = `a_faster_load_textdomain_cache_path` Change the cache path, default is `WP_CONTENT_DIR . '/cache/a-faster-load-textdomain'`. ` add_filter( 'a_faster_load_textdomain_cache_path', function( $path ) { return WP_CONTENT_DIR . '/cache/my-cache'; } ); ` = GitHub = The plugin source is available at [GitHub](https://github.com/soderlind/a-faster-load-textdomain/blob/main/a-faster-load-textdomain.php) == Installation == Either (recommended): - Download the plugin files and extract `a-faster-load-textdomain.php` and `class-afld-cachehandler.php` to the `wp-content/mu-plugins` directory. Or: - Search for "A faster load_textdomain" and install with the WordPress plugin installer. - (Network) Activate the plugin through the 'Plugins' menu in WordPress. It's also possible to install the plugin via Composer: `composer require soderlind/a-faster-load-textdomain` == Changelog == = 2.3.2 = * Housekeeping. = 2.3.1 = * Catch errors in the cache handler. If the cache file is corrupt, update the file and return the .mo file. = 2.3.0 = * If running WordPress 6.5, give a notice that the plugin is not needed. = 2.2.4 = * Fail gracefully if cache directory can't be created. = 2.2.3 = * Housekeeping. = 2.2.2 = * Add uninstall handler. Will remove the cache directory when the plugin is uninstalled. = 2.2.1 = * Fix bug in cache handler. = 2.2.0 = * Refactor cache handler. = 2.1.5 = - Bump version to force deploy to WordPress.org = 2.1.4 = - Deploy with GitHub Actions to WordPress.org = 2.1.3 = - Remove `mkdir()` = 2.1.2 = * Fail gracefully if `$cache_path` can't be created. = 2.1.1 = * Add `aflt_load_textdomain` filter. = 2.1.0 = * Rename namespace to `Soderlind\Plugin\A_Faster_Load_Textdomain` * Rename cache directory to `WP_CONTENT_DIR . '/cache/a-faster-load-textdomain'` = 2.0.1 = * Rename file to `a-faster-load-textdomain.php` to follow WordPress plugin standards. = 2.0.0 = * Refactor code, instead of using a transient, save .mo file as an PHP array, and [include](https://www.php.net/manual/en/function.include.php) the array instead of the .mo file. = 1.0.3 = * Housekeeping. = 1.0.2 = * DRY (Don't Repeat Yourself) code. Add namespace. = 1.0.1 = * Add multisite support = 1.0.0 = * Initial release