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.

Leave a Reply

Your email address will not be published. Required fields are marked *