Trigger locale download in WordPress programmatically
Published: – Leave a comment
WordPress comes with a handy auto-download feature for non-installed locale files. But how to implement that in a custom function? Since I needed exactly this (I added an identical select for the locale on another settings page to improve our workflow), I looked for a way to get the exact same behavior.
WordPress has an own file in wp-admin/includes/translation-install.php
that represents all functionality to download and install a locale. In my case, whenever I changed the locale setting I could check whether the user is able to install locales, and then install it. The code looks like this:
/**
* Installs a language.
*
* @param string $language The language code
* @return bool Whether installation was successful
*/
function prefix_install_language( string $language ): bool {
if ( ! current_user_can( 'install_languages' ) ) {
return false;
}
require_once ABSPATH . 'wp-admin/includes/translation-install.php';
if ( wp_can_install_language_pack() ) {
return (bool) wp_download_language_pack( $language );
}
return false;
}
Code language: PHP (php)
wp_download_language_pack
already checks whether the locale is already installed. Otherwise it installs it automatically for us.
The $language
parameter is always the language code including its country code, e.g. en_US
instead of en
or de_DE_formal
instead of de
.