This topic contains a post which is marked as Best Answer. Press here if you would like to see it.
Hello,

I am using Osclass and I would like to know how to translate the Page Title and Page Description based on the language the user is browsing the site in. Currently, the title and description are displayed statically, but I want them to change according to the selected language.

For example:

If the user is browsing the site in Arabic, the title and description should appear in Arabic.
If the user is browsing the site in French, the title and description should appear in French.
And for any other language, the title and description should be shown in that language.
Can I translate these fields by adding translations in the theme's translation file or in the site settings? What is the best way to ensure the title and description are shown in the appropriate language?
Youness Ouchene

*

MB Themes

Re: How to Translate Title and Description Based on Site Language
« Reply #1 on: March 07, 2025, 04:22:04 PM »
Not possible.
You need seo plugin or customization.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots

Re: How to Translate Title and Description Based on Site Language
« Reply #2 on: March 07, 2025, 06:38:43 PM »
All in one SEO plugin or SEO pro plugin
Youness Ouchene

*

MB Themes

Re: How to Translate Title and Description Based on Site Language
« Reply #3 on: March 10, 2025, 03:31:20 PM »
Any plugin will work, one or another.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots

Re: How to Translate Title and Description Based on Site Language
« Reply #4 on: March 11, 2025, 05:24:55 AM »
Where can I find the code and modify it to fix the problem?
Youness Ouchene

Marked as best answer by frosticek on July 08, 2026, 05:01:12 PM
*

Anteverce

  • *
  • 1 posts
Re: How to Translate Title and Description Based on Site Language
« Reply #5 on: July 07, 2026, 06:55:51 PM »
Hello,

It's not optimal, but it works by modifying 3 files :)


In oc-admin / themes / omega / settings / index.php

Replace :

Quote
          <div class="form-row">
            <div class="form-label"><?php _e('Page title'); ?></div>
            <div class="form-controls"><input type="text" class="xlarge" name="pageTitle" value="<?php echo osc_esc_html(osc_page_title()); ?>"/></div>
          </div>

          <div class="form-row">
            <div class="form-label"><?php _e('Page description'); ?></div>
            <div class="form-controls">
              <textarea name="pageDesc"><?php echo osc_esc_html(osc_page_description()); ?></textarea>
            </div>
          </div>

By :

Quote
          <!-- //MODIFICATION -->
          <div class="form-row">
            <?php if(count($aLanguages) > 1) { ?>

              <?php printLocaleTabs(); ?>

              <?php foreach($aLanguages as $lang) { ?>
                <div class="input-has-placeholder input-title-wide">
                  <div class="form-label">
                    <?php _e('Website Name'); ?> (<?php echo $lang['pk_c_code']; ?>)
                  </div>
                  <input id="pageTitle_<?php echo $lang['pk_c_code']; ?>" class="xlarge" type="text" name="pageTitle_<?php echo $lang['pk_c_code']; ?>" value="<?php echo osc_esc_html(osc_page_title($lang['pk_c_code'])); ?>" style="margin-left: 20px;" />
                  <div class="clear"><br></div>
                  <div class="form-label">
                    <?php _e('Website description'); ?> (<?php echo $lang['pk_c_code']; ?>)
                  </div>
                  <textarea id="pageDesc_<?php echo $lang['pk_c_code']; ?>" name="pageDesc_<?php echo $lang['pk_c_code']; ?>" rows="5" style="margin-left: 20px;"><?php echo osc_esc_html(osc_page_description($lang['pk_c_code'])); ?></textarea>
                </div>
              <?php } ?>

              <div class="clear"> </div>

            <?php } else { ?>
              <div class="form-label">
                <?php _e('Website Name'); ?>
              </div>
              <div class="form-controls">
                <input type="text" class="xlarge" name="pageTitle" value="<?php echo osc_esc_html(osc_page_title()); ?>"/>
              </div>

              <div class="form-label">
                <?php _e('Website description'); ?>
              </div>
              <div class="form-controls">
                <textarea name="pageDesc"><?php echo osc_esc_html(osc_page_description()); ?></textarea>
              </div>
            <?php } ?>
          </div>
          <!-- //FIN MODIFICATION -->


In oc-admin / controller / settings / main.php

Add :

Quote
        $locales = osc_listLocales();

Just after :

Quote
        osc_csrf_check();
        $iUpdated = 0;


Replace :

Quote
        $sPageTitle = Params::getParam('pageTitle');
        $sPageDesc = Params::getParam('pageDesc');

By :

Quote
        //$sPageTitle = Params::getParam('pageTitle');
        //$sPageDesc = Params::getParam('pageDesc');
        //MODIFICATION
        if(count($locales) > 1) {
          foreach($locales as $key => $locale) {
            $sPageTitle[$key] = Params::getParam('pageTitle_'.$locale['code']);
            $sPageDesc[$key] = Params::getParam('pageDesc_'.$locale['code']);
          }
        } else {
          $sPageTitle = Params::getParam('pageTitle');
          $sPageDesc = Params::getParam('pageDesc');
        }
        //FIN MODIFICATION

Replace :

Quote
        $sPageTitle = trim(strip_tags($sPageTitle));
        $sPageDesc = trim(strip_tags($sPageDesc));

By :

Quote
        //$sPageTitle = trim(strip_tags($sPageTitle));
        //$sPageDesc = trim(strip_tags($sPageDesc));
        //MODIFICATION
        if(count($locales) > 1) {
          foreach($sPageTitle as $key => $pageTitle) {
            $sPageTitle[$key] = trim(strip_tags($pageTitle));
          }
          foreach($sPageDesc as $key => $pageDesc) {
            $sPageDesc[$key] = trim(strip_tags($pageDesc));
          }
        } else {
          $sPageTitle = trim(strip_tags($sPageTitle));
          $sPageDesc = trim(strip_tags($sPageDesc));
        }
        //FIN MODIFICATION

Replace :

Quote
         if(!osc_validate_text($sPageTitle)) {
           $msg .= _m("Page title field is required")."<br/>";
         }

By :

Quote
        // if(!osc_validate_text($sPageTitle)) {
        //   $msg .= _m("Page title field is required")."<br/>";
        // }
        //MODIFICATION
        if(count($locales) > 1) {
          foreach($sPageTitle as $key => $pageTitle) {
            if(!osc_validate_text($pageTitle)) {
              $msg .= _m("Page title field is required") . ' (' . $key . ')<br/>';
            }
          }
        } else {
          if(!osc_validate_text($sPageTitle)) {
            $msg .= _m("Page title field is required")."<br/>";
          }
        }
        //FIN MODIFICATION

Replace :

Quote
        $iUpdated += osc_set_preference('pageTitle', $sPageTitle);
        $iUpdated += osc_set_preference('pageDesc', $sPageDesc);

by :

Quote
        //$iUpdated += osc_set_preference('pageTitle', $sPageTitle);
        //$iUpdated += osc_set_preference('pageDesc', $sPageDesc);
        //MODIFICATION
        if(count($locales) > 1) {
          foreach($sPageTitle as $key => $pageTitle) {
            $iUpdated += osc_set_preference('pageTitle_'.$key, $pageTitle);
          }
          foreach($sPageDesc as $key => $pageDesc) {
            $iUpdated += osc_set_preference('pageDesc_'.$key, $pageDesc);
          }
        } else {
          $iUpdated += osc_set_preference('pageTitle', $sPageTitle);
          $iUpdated += osc_set_preference('pageDesc', $sPageDesc);
        }
        //FIN MODIFICATION



In oc-includes / osclass / helpers / hPreference.php

Replace :

Quote
function osc_page_title() {
  return getPreference('pageTitle');
}

By :

Quote
// function osc_page_title() {
//   return getPreference('pageTitle');
// }
//MODIFICATION
function osc_page_title($lang = null) {
  if ($lang === null && count(osc_listLocales()) > 1) {
    $lang = osc_current_user_locale();
  }
  return getPreference($lang ? 'pageTitle_' . $lang : 'pageTitle');
}
//FIN MODIFICATION


Replace :

Quote
function osc_page_description() {
  return (getPreference('pageDesc'));
}

By :

Quote
// function osc_page_description() {
//   return (getPreference('pageDesc'));
// }
//MODIFICATION
function osc_page_description($lang = null) {
  if ($lang === null && count(osc_listLocales()) > 1) {
    $lang = osc_current_user_locale();
  }
  return getPreference($lang ? 'pageDesc_' . $lang : 'pageDesc');
}
//FIN MODIFICATION


« Last Edit: July 07, 2026, 07:00:52 PM by Anteverce »