Jump to content
Sign in to follow this  
Catalina

Site translation as Google translate

Recommended Posts

Posted (edited)

Hello,

 

Do you if there a module allowing to display the language and translate the site ?

Edited by Catalina

Share this post


Link to post
Share on other sites

Is it someone can help to create a little module for that.

Looking a little but I do ot know if it's better in header tag or in modules header ?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Sign in to follow this  

×
×
  • Create New...

Important Information

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