PHP date bilingue de mise à jour de page

Résolu
Sebas22 Messages postés 119 Statut Membre -  
Sebas22 Messages postés 119 Statut Membre -
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. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
  2. Sebas22 Messages postés 119 Statut Membre 5
     
    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
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
  4. Sebas22 Messages postés 119 Statut Membre 5
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      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);
      0
  7. Sebas22 Messages postés 119 Statut Membre 5
     
    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
    1