SZGoogleModuleTranslate

The SZ - Google SZGoogleModuleTranslate class.

Defined (1)

The class is defined in the following location(s).

/classes/module/SZGoogleModuleTranslate.php  
  1. class SZGoogleModuleTranslate extends SZGoogleModule 
  2. private $options = false; 
  3.  
  4. static protected $NUMBERCALLS = 0; 
  5. static protected $JAVASCRIPTS = array(); 
  6.  
  7. /** 
  8. * Definition of the initial variable array which are 
  9. * used to identify the module and options related to it 
  10. */ 
  11.  
  12. function moduleAddSetup() 
  13. $this->moduleSetClassName(__CLASS__); 
  14. $this->moduleSetOptionSet('sz_google_options_translate'); 
  15.  
  16. // Definition shortcode connected to the module with an array where you 
  17. // have to specify the name activation option with the shortcode and function 
  18.  
  19. $this->moduleSetShortcodes(array( 
  20. 'translate_shortcode' => array('sz-gtranslate', array($this, 'getTranslateShortcode')),  
  21. )); 
  22.  
  23. // Definition widgets connected to the module with an array where you 
  24. // have to specify the name option of activating and class to be loaded 
  25.  
  26. $this->moduleSetWidgets(array( 
  27. 'translate_widget' => 'SZGoogleWidgetTranslate',  
  28. )); 
  29.  
  30. /** 
  31. * Calcolo le opzioni legate al modulo con esecuzione dei  
  32. * controlli formali di coerenza e impostazione dei default 
  33. * @return array 
  34. */ 
  35. function getOptions() 
  36. if ($this->options) return $this->options; 
  37. else $this->options = parent::getOptionsSet('sz_google_options_translate'); 
  38.  
  39. // Controllo opzione di codice GA-UA nel caso debba pendere il valore 
  40. // specificato nel modulo corrispondente se risulta attivo. 
  41.  
  42. if ($object = self::getObject('SZGoogleModuleAnalytics') and 
  43. $this->options['translate_analytics_ua'] == '') 
  44. $options_ga = $object->getOptions(); 
  45. $this->options['translate_analytics_ua'] = $options_ga['ga_uacode']; 
  46.  
  47. // Ritorno indietro il gruppo di opzioni corretto dai 
  48. // controlli formali eseguito dalla funzione di controllo 
  49.  
  50. return $this->options; 
  51.  
  52. /** 
  53. * Add the actions of the current module, this function must be 
  54. * implemented in the case of a non-standard customization via array 
  55. */ 
  56.  
  57. function moduleAddActions() { 
  58. add_action('SZ_HEAD', array($this, 'getTranslateMetaHead')); 
  59. add_action('SZ_FOOT', array($this, 'addJavascriptToFooter')); 
  60.  
  61. /** 
  62. * Funzione per generazione codice HTML da inserire nella 
  63. * sezione HEAD come <meta name="google-translate-customization"> 
  64. * @return string 
  65. */ 
  66. function getTranslateMeta() { 
  67. if ($this->getTranslateMetaID() == '') return NULL; 
  68. else return '<meta name="google-translate-customization" content="'.$this->getTranslateMetaID().'"/>'."\n"; 
  69.  
  70. /** 
  71. * Funzione per calcolare il codice ID univoco di google da aggiungere  
  72. * alla sezione HEAD come <meta name="google-translate-customization"> 
  73. * @return void 
  74. */ 
  75. function getTranslateMetaID()  
  76. $options = (object) $this->getOptions(); 
  77.  
  78. // Check if user insert all meta code con html tags 
  79. // or insert value for only identification meta ID 
  80.  
  81. if (preg_match('/content=\"(.*)\"/', $options->translate_meta, $matches)) { 
  82. if (isset($matches[1])) return $matches[1]; 
  83.  
  84. return trim($options->translate_meta); 
  85.  
  86. /** 
  87. * Funzione per generazione codice HTML da inserire nella 
  88. * sezione HEAD come <meta name="google-translate-customization"> 
  89. * @return void 
  90. */ 
  91. function getTranslateMetaHead() { 
  92. echo $this->getTranslateMeta(); 
  93.  
  94. /** 
  95. * Funzione per shortcode [sz-gtranslate] che permette di eseguire 
  96. * un selettore di lingua da utilizzare nella traduzione automatica 
  97. * @return string 
  98. */ 
  99. function getTranslateShortcode($atts, $content=null) 
  100. return $this->getTranslateCode(shortcode_atts(array( 
  101. 'language' => '',  
  102. 'mode' => '',  
  103. 'automatic' => '',  
  104. 'multiple' => '',  
  105. 'analytics' => '',  
  106. 'uacode' => '',  
  107. 'action' => 'shortcode',  
  108. ), $atts), $content); 
  109.  
  110. /** 
  111. * Aggiungo il modulo generale con lo shortcode e il widget per 
  112. * eseguire la funzione di start button hangout su google+ 
  113. * Questa funzione definisce il codice HTML che deve essere generato. 
  114. * @return string 
  115. */ 
  116. function getTranslateCode($atts=array(), $content=null) 
  117. $options = $this->getOptions(); 
  118.  
  119. // Estrazione dei valori specificati nello shortcode, i valori ritornati 
  120. // sono contenuti nei nomi di variabili corrispondenti alla chiave 
  121.  
  122. if (!is_array($atts)) $atts = array(); 
  123.  
  124. extract(shortcode_atts(array( 
  125. 'language' => '',  
  126. 'mode' => '',  
  127. 'automatic' => '',  
  128. 'multiple' => '',  
  129. 'analytics' => '',  
  130. 'uacode' => '',  
  131. 'action' => '',  
  132. ), $atts)); 
  133.  
  134. // Elimino spazi aggiunti di troppo ed esegui la trasformazione in 
  135. // stringa minuscolo per il controllo di valori speciali come "auto" 
  136.  
  137. $uacode = trim($uacode); 
  138. $language = strtolower(trim($language)); 
  139. $mode = strtolower(trim($mode)); 
  140. $automatic = strtolower(trim($automatic)); 
  141. $multiple = strtolower(trim($multiple)); 
  142. $analytics = strtolower(trim($analytics)); 
  143.  
  144. // Se non sono riuscito ad assegnare nessun valore con le istruzioni 
  145. // precedenti metto dei default assoluti che possono essere cambiati 
  146.  
  147. if ($language == '') $language = $options['translate_language']; 
  148. if ($mode == '') $mode = $options['translate_mode']; 
  149. if ($automatic == '') $automatic = $options['translate_automatic']; 
  150. if ($multiple == '') $multiple = $options['translate_multiple']; 
  151. if ($analytics == '') $analytics = $options['translate_analytics']; 
  152. if ($uacode == '') $uacode = $options['translate_analytics_ua']; 
  153.  
  154. if ($options['translate_language'] == '99') $language = substr(get_bloginfo('language'), 0, 2);  
  155. else $language = trim($options['translate_language']); 
  156.  
  157. // Incremento la variabile che tiene il conto del numero dei componenti 
  158. // elaborati e creo un id univoco da assegnare al contenitore HTML 
  159.  
  160. self::$NUMBERCALLS++; 
  161. $uniqueID = 'sz-google-translate-unique-'.self::$NUMBERCALLS; 
  162.  
  163. // Creazione codice HTML per inserimento javascript di google  
  164. // inserimento del risultato dentro array globale per scrittura footer 
  165.  
  166. $JAVA = '<script type="text/javascript">'; 
  167. $JAVA .= 'function szgoogleTranslateElementInit_'.self::$NUMBERCALLS.'() {'; 
  168. $JAVA .= 'new google.translate.TranslateElement({'; 
  169. $JAVA .= "pageLanguage:'".$language."'"; 
  170.  
  171. if ($options['translate_mode'] == 'I2') $JAVA .= ", layout:google.translate.TranslateElement.InlineLayout.HORIZONTAL"; 
  172. if ($options['translate_mode'] == 'I3') $JAVA .= ", layout:google.translate.TranslateElement.InlineLayout.SIMPLE"; 
  173.  
  174. if ($automatic <> '1' ) $JAVA .= ", autoDisplay:false"; 
  175. if ($multiple == '1' ) $JAVA .= ", multilanguagePage:true"; 
  176. if ($analytics == '1' ) $JAVA .= ", gaTrack:true"; 
  177.  
  178. if ($options['translate_analytics_ua'] <> '' ) $JAVA .= ", gaID:'".$options['translate_analytics_ua']."'"; 
  179.  
  180. $JAVA .= "}, '$uniqueID');}"; 
  181. $JAVA .= '</script>'; 
  182.  
  183. // Creazione codice HTML per inserimento javascript di google  
  184. // inserimento del risultato dentro array globale per scrittura footer 
  185.  
  186. self::$JAVASCRIPTS[self::$NUMBERCALLS] = $JAVA; 
  187.  
  188. // Ritorno come codice HTML solo il contenitore con ID univoco in quanto 
  189. // il resto del codcie javascript sar inserito in fondo alla pagina 
  190.  
  191. return '<div id="'.$uniqueID.'"></div>'; 
  192.  
  193. /** 
  194. * Funzione per aggiungere il codice javascript della composizione 
  195. * widget di traduzione in fondo alla pagina e gestendo anche i casi 
  196. * di inserimento componenti multipli sulla stessa pagina. 
  197. * @return void 
  198. */ 
  199. function addJavascriptToFooter()  
  200. if(is_array(self::$JAVASCRIPTS) && count(self::$JAVASCRIPTS) > 0)  
  201. // Per ogni elemento presente in array scrivo la riga singola 
  202. // di codice Javascript con la definizione della funzione 
  203.  
  204. foreach (self::$JAVASCRIPTS as $key=>$value) { 
  205. echo $value."\n"; 
  206.  
  207. // Creazione di una funzione generica di callback per  
  208. // richiamare le singole funzioni precedentemente definite 
  209.  
  210. echo '<script type="text/javascript">'; 
  211. echo 'function szgoogleTranslateElementInit_0() {'; 
  212.  
  213. foreach (self::$JAVASCRIPTS as $key=>$value) { 
  214. echo 'szgoogleTranslateElementInit_'.$key.'(); ';  
  215.  
  216. echo "}"; 
  217. echo '</script>'."\n"; 
  218.  
  219. // Richiamo dello script ufficiale di google specificando una 
  220. // funzione di callback che corrisponde a quella generica 
  221.  
  222. echo '<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=szgoogleTranslateElementInit_0"></script>'."\n";