Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Localisation problem


jlauriol

Recommended Posts

Posted

In my server the setlocal function is not properly installed and any date display is in english form. I'm french, my customers is french, german, italian, ... and english.

 

My problem is frequent in europa.

 

I have a solution :

 

 

in file '/catalog/includes/functions/general.php'

 

function 'tep_date_long' : ligne 493

 

remplace code by :

// Output a raw date string in the selected locale date format
// $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS
// Ajout traduction ind?pendante de l'installation du systeme
 function tep_date_long($raw_date) {
 
   if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;
   $year = (int)substr($raw_date, 0, 4);
   $month = (int)substr($raw_date, 5, 2);
   $day = (int)substr($raw_date, 8, 2);
   $hour = (int)substr($raw_date, 11, 2);
   $minute = (int)substr($raw_date, 14, 2);
   $second = (int)substr($raw_date, 17, 2);

   $datefmt = DATE_FORMAT_LONG;
   $tab_day_of_week = array(DATE_DAY_00,DATE_DAY_01,DATE_DAY_02,DATE_DAY_03,DATE_DAY_04,DATE_DAY_05,DATE
_DAY_06);
   $tab_month = array(DATE_MONTH_01,DATE_MONTH_02,DATE_MONTH_03,DATE_MONTH_04,DATE_MONTH_05,DATE_M
ONTH_06,DATE_MONTH_07,DATE_MONTH_08,DATE_MONTH_09,DATE_MONTH_10,DATE_MONTH_11,DAT
E_MONTH_12);


   $timestamp = mktime($hour,$minute,$second,$month,$day,$year);
   
   $date = ereg_replace('%[aA]', $tab_day_of_week[(int)strftime('%w', $timestamp)], $datefmt);
   $date = ereg_replace('%[bB]', $tab_month[(int)strftime('%m', $timestamp)-1], $date);

   return strftime($date, $timestamp);
 }

 

in file language 'french.php', 'english.php', ...

( folders catalog/includes/language' )

 

Append :

 

define('DATE_DAY_00', 'Dimanche');
define('DATE_DAY_01', 'Lundi');
define('DATE_DAY_02', 'Mardi');
define('DATE_DAY_03', 'Mercredi');
define('DATE_DAY_04', 'Jeudi');
define('DATE_DAY_05', 'Vendredi');
define('DATE_DAY_06', 'Samedi');

define('DATE_MONTH_01', 'Janvier');
define('DATE_MONTH_02', 'F?vrier');
define('DATE_MONTH_03', 'Mars');
define('DATE_MONTH_04', 'Avril');
define('DATE_MONTH_05', 'Mai');
define('DATE_MONTH_06', 'Juin');
define('DATE_MONTH_07', 'Juillet');
define('DATE_MONTH_08', 'Ao?t');
define('DATE_MONTH_09', 'Septembre');
define('DATE_MONTH_10', 'Octobre');
define('DATE_MONTH_11', 'Novembre');
define('DATE_MONTH_12', 'D?cembre');

 

or ( in english )

 

define('DATE_DAY_00', 'Sunday');
define('DATE_DAY_01', 'Monday');
define('DATE_DAY_02', 'Tuesday');
define('DATE_DAY_03', 'Wednesday');
define('DATE_DAY_04', 'Thursday');
define('DATE_DAY_05', 'Friday');
define('DATE_DAY_06', 'Saturday');

define('DATE_MONTH_01', 'January');
define('DATE_MONTH_02', 'February');
define('DATE_MONTH_03', 'March');
define('DATE_MONTH_04', 'April');
define('DATE_MONTH_05', 'May');
define('DATE_MONTH_06', 'June');
define('DATE_MONTH_07', 'July');
define('DATE_MONTH_08', 'August');
define('DATE_MONTH_09', 'September');
define('DATE_MONTH_10', 'October');
define('DATE_MONTH_11', 'November');
define('DATE_MONTH_12', 'December');

 

 

PS : This code run, but all display use not the function 'tep_date_long'. A modification of the code is nessessary !

 

Example :

In footer.php

 

<!--	JL07/04 ? remplacer 
   <td class="footer">  <?php echo strftime(DATE_FORMAT_LONG); ?>  </td>
-->    
   <td class="footer">  <?php echo tep_date_long(date('Y-m-d H:i:s',mktime())); ?>  </td>

 

 

includes/functions/html_ouput.php

line 329 (function tep_draw_date_pull_down_menu() )

 

// months pull down menu
// JL07/04+
  $tab_month = array(DATE_MONTH_01,DATE_MONTH_02,DATE_MONTH_03,DATE_MONTH_04,DATE_MONTH_05,DATE_M
ONTH_06,DATE_MONTH_07,DATE_MONTH_08,DATE_MONTH_09,DATE_MONTH_10,DATE_MONTH_11,DAT
E_MONTH_12);
// JL07/04-

  $months_array = array();
  for ($i=1; $i<=12; $i++) {
// JL07/04+
//      $months_array[] = array('id' => $i,
//                              'text' => (($use_month_names === true) ? strftime('%B', mktime(0, 0, 0, $i)) : $i));
    $months_array[] = array('id' => $i,
                            'text' => (($use_month_names === true) ? $tab_month[$i-1] : $i));
// JL07/04-
  }

 

in includes/modules/services/simple_counter.php (for the fun !)

line 50 ( function start() )

 

// JL07/04+
//      $counter_startdate_formatted = strftime(DATE_FORMAT_LONG, mktime(0, 0, 0, substr($counter_startdate, 4, 2), substr($counter_startdate, -2), substr($counter_startdate, 0, 4)));
    $counter_startdate_formatted = tep_date_long(date('Y-m-d H:i:s',mktime(0, 0, 0, substr($counter_startdate, 4, 2), substr($counter_startdate, -2), substr($counter_startdate, 0, 4))));
// JL07/04-

 

I'm very happy, my code run. Why not in CVS ! (Hello developpers ! )

 

Sorry for my english, i'm french.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...