WordPress Version: 6.3
/**
* Gets installed translations.
*
* Looks in the wp-content/languages directory for translations of
* plugins or themes.
*
* @since 3.7.0
*
* @param string $type What to search for. Accepts 'plugins', 'themes', 'core'.
* @return array Array of language data.
*/
function wp_get_installed_translations($type)
{
if ('themes' !== $type && 'plugins' !== $type && 'core' !== $type) {
return array();
}
$dir = ('core' === $type) ? '' : "/{$type}";
if (!is_dir(WP_LANG_DIR)) {
return array();
}
if ($dir && !is_dir(WP_LANG_DIR . $dir)) {
return array();
}
$files = scandir(WP_LANG_DIR . $dir);
if (!$files) {
return array();
}
$language_data = array();
foreach ($files as $file) {
if ('.' === $file[0] || is_dir(WP_LANG_DIR . "{$dir}/{$file}")) {
continue;
}
if (!str_ends_with($file, '.po')) {
continue;
}
if (!preg_match('/(?:(.+)-)?([a-z]{2,3}(?:_[A-Z]{2})?(?:_[a-z0-9]+)?).po/', $file, $match)) {
continue;
}
if (!in_array(substr($file, 0, -3) . '.mo', $files, true)) {
continue;
}
list(, $textdomain, $language) = $match;
if ('' === $textdomain) {
$textdomain = 'default';
}
$language_data[$textdomain][$language] = wp_get_pomo_file_data(WP_LANG_DIR . "{$dir}/{$file}");
}
return $language_data;
}