Skip to content
View in the app

A better way to browse. Learn more.

Clicshopping AI, Free generative artificial intelligence e-commerce Open Source , Open Source Store Onlne

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Site translation as Google translate

Featured Replies

Hello,

 

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

Edited by Catalina

  • Author

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 ?

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.

 

 

 

 

Join the conversation

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

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

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

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.