main_plugin_file = Jutranslation::$main_plugin_file; $addon->extension_name = Jutranslation::$extension_name; $addon->extension_slug = Jutranslation::$extension_slug; $addon->text_domain = Jutranslation::$text_domain; $addon->language_file = Jutranslation::$language_file; $addons[$addon->extension_slug] = $addon; return $addons; }); //Only need Jutranslation on admin side if (!is_admin()) { return; } // Check if the current user add_action('admin_init', function () { if (current_user_can('manage_options')) { //Initialize needed ajax mehtods add_action( 'wp_ajax_jutranslation_' . Jutranslation::$extension_slug, array(__CLASS__, 'dispatchQuery') ); } }); } /** * Ajax queries dispatcher * * @return void */ public static function dispatchQuery() { check_ajax_referer('jutranslation', 'wp_nonce'); if (!isset($_REQUEST['task'])) { die; } switch ($_REQUEST['task']) { case 'jutranslation.saveStrings': self::saveStrings(); break; case 'jutranslation.getTranslation': self::getTranslation(); break; case 'jutranslation.showViewForm': self::showViewForm(); break; } } /** * Return the main html content for jutranslation * * @return void */ public static function getInput() { echo '
You can refer to the documentation page on Joomunited for more informations about extension translation
'; echo '';
foreach ($addons as $addon) {
//Get extension version
$plugin_data = get_plugin_data($addon->main_plugin_file);
$extension_version = $plugin_data['Version'];
echo 'Current ' . esc_html($addon->extension_name) . ' version is ' . esc_html($extension_version) . '
';
}
echo '
| 1 ? '' : 'style="display:none;"') . '>Plugin | Language | Current version | Latest available version |
|---|---|---|---|
| 1 ? '' : 'style="display:none;"') . '>' . esc_html($language->extension->extension_name) . ' | '; echo '' . esc_html($language->languageCode) . ' | '; echo '' . esc_html($language->installed ? ($language->language_version ? ($language->revision ? esc_html($language->language_version . ' rev' . $language->revision) : $language->language_version . ' rev' . $language->revision) : 'Unknown') : 'Not installed') . ' | '; echo '';
echo ' '; echo 'Override (' . esc_html($language->overrided) . ') '; if ($language->languageCode !== 'en-US') { //Reference en-US file can't be modified echo 'Edit original file'; } //No sharing for en-US if ($language->languageCode !== 'en-US') { echo ' '; } echo ' | ';
echo '
';
//Submit automatically the form on page loading
echo '';
echo '';
echo '';
wp_die();
}
/**
* Load overrided languages
*
* @param string $text_domain Text domain to load
* @param string $mofile Mo file to load
*
* @return void;
*/
public static function overrideLanguage($text_domain, $mofile)
{
//Only for our plugin and addons
$addons = apply_filters(self::$extension_slug . '_get_addons', array());
foreach ($addons as $addon) {
if ($text_domain === $addon->text_domain) {
$path_parts = explode(DIRECTORY_SEPARATOR, $mofile);
$filename = $path_parts[count($path_parts) - 1];
$filename_parts = explode('.', $filename);
//Return if it's action already for overrode file
if (count($filename_parts) > 2 || $filename_parts[count($filename_parts) - 2] === 'override') {
return;
}
//Load the overrode file
$path_parts[count($path_parts) - 1] = str_replace(
'.mo',
'.override.mo',
$path_parts[count($path_parts) - 1]
);
if (file_exists(implode(DIRECTORY_SEPARATOR, $path_parts))) {
load_textdomain($text_domain, implode(DIRECTORY_SEPARATOR, $path_parts));
}
}
}
}
}