Jump to content

Site translation as Google translate


Recommended Posts

Hi @Catalina,

You must decide where you want to implement this module.

 

- Header, footer, boxe ?

- You can look after an exististing module and you can include the information that you want inside.

- Generally you have this inside the module(structure)


  - module_header_google_translate (case of header)
     he_header_google_translate.php

         content (directory)

             header_google_translate.php (html content)

 

and the languages synthaxe (do forget to reset your language in admin if you make a mistake because it's included in cache)

 

On this example :

 

For  he_header_google_translate.php

<?php
/**
 *
 *  @copyright 2008 - https://www.clicshopping.org
 *  @Brand : ClicShopping(Tm) at Inpi all right Reserved
 *  @Licence GPL 2 & MIT
 *  @licence MIT - Portion of osCommerce 2.4
 *  @Info : https://www.clicshopping.org/forum/trademark/
 *
 */

  use ClicShopping\OM\Registry;
  use ClicShopping\OM\CLICSHOPPING;

  class module_header_google_translate {
    public $code;
    public $group;
    public $title;
    public $description;
    public $sort_order;
    public $enabled = false;
    public $pages;

    public function __construct() {

      $this->code = get_class($this);
      $this->group = basename(__DIR__);

      $this->title = CLICSHOPPING::getDef('module_header_google_translate_title');
      $this->description = CLICSHOPPING::getDef('module_header_google_translate_description');

      if ( defined('MODULE_HEADER_GOOGLE_TRANSLATE_STATUS') ) {
        $this->sort_order = MODULE_HEADER_GOOGLE_TRANSLATE_SORT_ORDER;
        $this->enabled = (MODULE_HEADER_GOOGLE_TRANSLATE_STATUS == 'True');
        $this->pages = MODULE_BOXES_GOOGLE_TRANSLATE_DISPLAY_PAGES;
      }
    }

    public function execute() {
      $CLICSHOPPING_Template = Registry::get('Template');

      $content_width = (int)MODULE_HEADER_GOOGLE_TRANSLATE_CONTENT_WIDTH;

      $data = '<!-- header_google_translate  start -->' . "\n";
      $data .= '<script type="text/javascript">';
      $data .= 'function googleTranslateElementInit() {';
      $data .= 'new google.translate.TranslateElement({pageLanguage: \'en\'}, \'google_translate_element\');';
      $data .= '}';
      $data .= '</script>' . "\n";

      $data .='<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>' . "\n";
      
      ob_start();
      require_once($CLICSHOPPING_Template->getTemplateModules($this->group . '/content/header_google_translate'));
      $data .= ob_get_clean();
      $data .='<!-- header_google_translate end -->' . "\n";

      $CLICSHOPPING_Template->addBlock($data, $this->group);
    }

    public function isEnabled() {
      return $this->enabled;
    }

    public function check() {
      return defined('MODULE_HEADER_GOOGLE_TRANSLATE_STATUS');
    }

    public function install() {
      $CLICSHOPPING_Db = Registry::get('Db');

      $CLICSHOPPING_Db->save('configuration', [
          'configuration_title' => 'Do you want to enable this module ?',
          'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_STATUS',
          'configuration_value' => 'True',
          'configuration_description' => 'Do you want to enable this module in your shop ?',
          'configuration_group_id' => '6',
          'sort_order' => '1',
          'set_function' => 'clic_cfg_set_boolean_value(array(\'True\', \'False\'))',
          'date_added' => 'now()'
        ]
      );

      $CLICSHOPPING_Db->save('configuration', [
          'configuration_title' => 'Please indicate the width of the content',
          'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_CONTENT_WIDTH',
          'configuration_value' => '12',
          'configuration_description' => 'Please specify a display width',
          'configuration_group_id' => '6',
          'sort_order' => '2',
          'set_function' => 'clic_cfg_set_content_module_width_pull_down',
          'date_added' => 'now()'
        ]
      );

      $CLICSHOPPING_Db->save('configuration', [
          'configuration_title' => 'Sort order',
          'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_SORT_ORDER',
          'configuration_value' => '500',
          'configuration_description' => 'Sort order of display. Lowest is displayed first. The sort order must be different on every module',
          'configuration_group_id' => '6',
          'sort_order' => '3',
          'set_function' => '',
          'date_added' => 'now()'
        ]
      );


      $CLICSHOPPING_Db->save('configuration', [
          'configuration_title' => 'Please indicate where boxing should be displayed',
          'configuration_key' => 'MODULE_HEADER_GOOGLE_TRANSLATE_DISPLAY_PAGES',
          'configuration_value' => 'all',
          'configuration_description' => 'Sélectionnez les pages où la boxe doit être présente',
          'configuration_group_id' => '6',
          'sort_order' => '7',
          'set_function' => 'clic_cfg_set_select_pages_list',
          'date_added' => 'now()'
        ]
      );
    }

    public function remove() {
      return Registry::get('Db')->exec('delete from :table_configuration where configuration_key in ("' . implode('", "', $this->keys()) . '")');
    }

    public function keys() {
      return array('MODULE_HEADER_GOOGLE_TRANSLATE_STATUS',
                   'MODULE_HEADER_GOOGLE_TRANSLATE_CONTENT_WIDTH',
                   'MODULE_HEADER_GOOGLE_TRANSLATE_SORT_ORDER',
                   'MODULE_HEADER_GOOGLE_TRANSLATE_DISPLAY_PAGES'
                  );
    }
  } 

 

Now the content : header_google_translate.php

 

<div class="col-md-<?php echo $content_width; ?>">
  <div class="separator"></div>
  <div id="google_translate_element"></div>
</div>  

 

At the end the language : languages/english/modules/modules_header/he_header_google_translate.php

module_header_google_translate_title = Do you want to enable google translate language module ?
module_header_google_translate_description = Display google translate language

Same for the french language.

 

Now it's possible to improve the module and fix the script inside the footer by this code

 

$footer_tag = '<script defer>';
$footer_tag .= 'function googleTranslateElementInit() {';
$footer_tag .= 'new google.translate.TranslateElement({pageLanguage: \'en\'}, \'google_translate_element\');';
$footer_tag .= '}';
$footer_tag .= '</script>' . "\n";
$footer_tag .= '<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>';

$CLICSHOPPING_Template->addBlock($footer_tag, 'footer_scripts');

10 mn to do that.

 

 

 

 

  • Like 2
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use