PHP date bilingue de mise à jour de page

Résolu
Bonjour,

Voilà j'ai adapté un script sur ce forum mais cela ne marche pas en Français (ça marche en Anglais).

<?
function date_fr($date)
{
$date=str_replace("Monday","Lundi",$date);
$date=str_replace("Tuesday","Mardi",$date);
$date=str_replace("Wednesday","Mercredi",$date);
$date=str_replace("Thursday","Jeudi",$date);
$date=str_replace("Friday","Vendredi",$date);
$date=str_replace("Saturday","Samedi",$date);
$date=str_replace("Sunday","Dimanche",$date);
$date=str_replace("January","Janvier",$date);
$date=str_replace("February","Février",$date);
$date=str_replace("March","Mars",$date);
$date=str_replace("April","Avril",$date);
$date=str_replace("May","Mai",$date);
$date=str_replace("June","Juin",$date);
$date=str_replace("July","Juillet",$date);
$date=str_replace("August","Août",$date);
$date=str_replace("September","Septembre",$date);
$date=str_replace("October","Octobre",$date);
$date=str_replace("November","Novembre",$date);
$date=str_replace("December","Décembre",$date);
return ($date);
}
setlocale (LC_TIME, 'fr_FR','fra');
echo "Actualisation ".date("l j F Y", getlastmod(), $date);
echo " / Updating ".date("l j F Y", getlastmod());
?>


Un coup de pouce pour un presque débutant ?
Merci !

Seb

6 réponses

  1. Bonjour,

    Qu'est-ce qui ne marche pas exactement ? Tu as un message d'erreur ?
    Dans le code que tu nous donnes, il n'y a aucun appel à la fonction date_fr() que tu redéfinis.

    Xavier
    1. Bonjour Reivax
      C'est simple, ça affiche:
      <
      Actualisation (puis rien) / Updating suivi de la date en Anglais d'actualisation
      >
      Je pense que l'os vient de $date après getlastmod().
      Je pensais appeler la fonction de la sorte, mais c'est pas bon.
      Merci, Seb
      1. En fait, ton $date n'est jamais défini en dehors de la fonction.
        Or, ton "echo" est bel et bien en dehors de la fonction dont le } se situe juste avant...
        1. Bonjour Reivax et merci de ton soutien.
          J'ai essayé diverses options qui "rentre" mon echo dans la fonction mais le Français ne s'affiche pas.
          J'obtiens seulement:
          Actualisation / Updating Tuesday 10 May 2011, avec le code suivant:
          <code>
          <?
          setlocale (LC_TIME, 'fr_FR','fra');
          echo "Actualisation ";
          echo $date;
          function date_fr($date)
          {
          date("l j F Y", getlastmod());
          $date=str_replace("Monday","Lundi",$date);
          $date=str_replace("Tuesday","Mardi",$date);
          $date=str_replace("Wednesday","Mercredi",$date);
          $date=str_replace("Thursday","Jeudi",$date);
          $date=str_replace("Friday","Vendredi",$date);
          $date=str_replace("Saturday","Samedi",$date);
          $date=str_replace("Sunday","Dimanche",$date);
          $date=str_replace("January","Janvier",$date);
          $date=str_replace("February","Février",$date);
          $date=str_replace("March","Mars",$date);
          $date=str_replace("April","Avril",$date);
          $date=str_replace("May","Mai",$date);
          $date=str_replace("June","Juin",$date);
          $date=str_replace("July","Juillet",$date);
          $date=str_replace("August","Août",$date);
          $date=str_replace("September","Septembre",$date);
          $date=str_replace("October","Octobre",$date);
          $date=str_replace("November","Novembre",$date);
          $date=str_replace("December","Décembre",$date);
          return ($date);
          }
          echo " / Updating ".date("l j F Y", getlastmod());
          ?>
          <code>

          Alternativement si je te suis bien (pas sûr!), je pourrai définir $date par
          define("$date", Valeur); à la place de echo $date; mais avec quelle valeur... je nage.
          Seb
          1. Bonjour,

            Essaie plutôt comme ça :
            <?php
            function date_fr($date)
            {
                $date=str_replace("Monday","Lundi",$date);
                $date=str_replace("Tuesday","Mardi",$date);
                $date=str_replace("Wednesday","Mercredi",$date);
                $date=str_replace("Thursday","Jeudi",$date);
                $date=str_replace("Friday","Vendredi",$date);
                $date=str_replace("Saturday","Samedi",$date);
                $date=str_replace("Sunday","Dimanche",$date);
                $date=str_replace("January","Janvier",$date);
                $date=str_replace("February","Février",$date);
                $date=str_replace("March","Mars",$date);
                $date=str_replace("April","Avril",$date);
                $date=str_replace("May","Mai",$date);
                $date=str_replace("June","Juin",$date);
                $date=str_replace("July","Juillet",$date);
                $date=str_replace("August","Août",$date);
                $date=str_replace("September","Septembre",$date);
                $date=str_replace("October","Octobre",$date);
                $date=str_replace("November","Novembre",$date);
                $date=str_replace("December","Décembre",$date);
                return ($date);
            }
            setlocale (LC_TIME, 'fr_FR','fra');
            
            $date = date("l j F Y", getlastmod())
            $datefr = date_fr($date);
            
            echo "Actualisation $datefr";
            echo " / Updating $date";
            ?>


            Xavier
            1. Ah oui, aussi, ce serait plus efficace d'utiliser des tableaux pour les str_replace :

              $anglais = array("Monday", "Tuesday", "Wednesday", ...);
              $francais = array("Lundi", "Mardi", "Mercredi", ...);

              $date = str_replace($anglais, $francais, $date);
          2. Bonjour Xavier,

            Ah je vois que j'étais encore loin du compte.
            Merci vivement !
            J'ai testé et j'ai eu : Parse error: syntax error, unexpected T_VARIABLE in xxxxxxxxx on line 136
            Mais je suis un presque débutant et il a suffi d'ajouter un point-virgule après getlastmod()) pour devenir nickel

            Donc c'est résolu, merci 1000 fois et comme le code peut servir à d'autres, je le copie ci-après avec la (petite) correction:

            <?php
            function date_fr($date)
            {
            $date=str_replace("Monday","Lundi",$date);
            $date=str_replace("Tuesday","Mardi",$date);
            $date=str_replace("Wednesday","Mercredi",$date);
            $date=str_replace("Thursday","Jeudi",$date);
            $date=str_replace("Friday","Vendredi",$date);
            $date=str_replace("Saturday","Samedi",$date);
            $date=str_replace("Sunday","Dimanche",$date);
            $date=str_replace("January","Janvier",$date);
            $date=str_replace("February","Février",$date);
            $date=str_replace("March","Mars",$date);
            $date=str_replace("April","Avril",$date);
            $date=str_replace("May","Mai",$date);
            $date=str_replace("June","Juin",$date);
            $date=str_replace("July","Juillet",$date);
            $date=str_replace("August","Août",$date);
            $date=str_replace("September","Septembre",$date);
            $date=str_replace("October","Octobre",$date);
            $date=str_replace("November","Novembre",$date);
            $date=str_replace("December","Décembre",$date);
            return ($date);
            }
            setlocale (LC_TIME, 'fr_FR','fra');
            $date = date("l j F Y", getlastmod());
            $datefr = date_fr($date);
            echo "Actualisation $datefr";
            echo " / Updating $date";
            ?>

            Seb