Sets translated strings for a script.
Description
Works only if the script has already been registered.
See also
Parameters
$handle
stringrequired- Script handle the textdomain will be attached to.
$domain
stringoptional- Text domain. Default
'default'
.Default:
'default'
$path
stringoptional- The full file path to the directory containing translation files.
Default:
''
Source
function wp_set_script_translations( $handle, $domain = 'default', $path = '' ) {
global $wp_scripts;
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) {
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle );
return false;
}
return $wp_scripts->set_translations( $handle, $domain, $path );
}
If you have to generate your own JSON language pack files, use WP CLI to generate your JSON file for you. Just navigate to your plugin folder and run the following command.
wp i18n make-json languages
Then set the language folder in
wp_set_script_translations
Warning: If someone translates your plugin with the same locale on the WordPress Plugin Directory, the language will not show up if using the third argument.
Remember to check the path in the third argument. I wasted 3 days investigating what’s wrong and it turned out I gave
instead of
—
With plugin_dir_path() works fine.
plugin_dir_path()
returns the path with trailing slashwp_set_script_translations() should not be called before register or wp_enqueue_scripts or with init hook. To make wordpress able to load handled scripts this function should be called after text domain handled script load. Here is an example:
If you do not register script yourself, but rely on automatic script registration, the appropriate handle is in the format
[plugin name]-editor-script
(as of WP 6.6.1).If naming rules change or you want to translate some other automatically registered script, you can find registered scripts in array
wp_scripts->registered
.Naming of the translation files still applies like described in Block editor internationalization.