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 */ public static function dispatchQuery() { if(!isset($_REQUEST['task'])) { die; } switch ($_REQUEST['task']) { case 'jutranslation.saveStrings': Jutranslation::saveStrings(); break; case 'jutranslation.getTranslation': Jutranslation::getTranslation(); break; case 'jutranslation.showViewForm': Jutranslation::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 ' . $addon->extension_name . ' version is ' . $extension_version . '
';
}
echo '
| 1?'':'style="display:none;"') . '>Plugin | Language | Current version | Latest available version |
|---|---|---|---|
| 1?'':'style="display:none;"') . '>' . $language->extension->extension_name . ' | '; echo '' . $language->languageCode . ' | '; echo '' . ($language->installed?($language->language_version?($language->revision?$language->language_version.' rev'.$language->revision:$language->language_version.' rev'.$language->revision):'Unknown'):'Not installed') . ' | '; echo '';
echo ' '; echo 'Override (' . $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();
}
public static function overrideLanguage($text_domain, $mofile){
//Only for our plugin and addons
$addons = apply_filters(Jutranslation::$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));
}
}
}
}
}