/** * Get 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 ($type !== 'themes' && $type !== 'plugins' && $type !== 'core') { 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 (substr($file, -3) !== '.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)) { 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; }
/** * @ticket 35284 */ function test_wp_get_pomo_file_data() { $file = DIR_TESTDATA . '/pomo/empty.po'; $array = wp_get_pomo_file_data($file); $this->assertArrayHasKey('POT-Creation-Date', $array); $this->assertArrayHasKey('PO-Revision-Date', $array); $this->assertArrayHasKey('Project-Id-Version', $array); $this->assertArrayHasKey('X-Generator', $array); $file = DIR_TESTDATA . '/pomo/mo.pot'; $array = wp_get_pomo_file_data($file); $this->assertNotEmpty($array['POT-Creation-Date']); $this->assertNotEmpty($array['PO-Revision-Date']); $this->assertNotEmpty($array['Project-Id-Version']); $this->assertArrayHasKey('X-Generator', $array); $file = DIR_TESTDATA . '/languages/es_ES.po'; $array = wp_get_pomo_file_data($file); $this->assertArrayHasKey('POT-Creation-Date', $array); $this->assertNotEmpty($array['PO-Revision-Date']); $this->assertNotEmpty($array['Project-Id-Version']); $this->assertNotEmpty($array['X-Generator']); }