Page affichée dans langue choisie mais mail envoyé en français

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Page affichée dans langue choisie mais mail envoyé en français

Page affichée dans langue choisie mais mail envoyé en français

par Couin » 22 mai 2020, 04:39

COUIN COUIIIIIIN !
Salut tout l'monde !

Alors voilà, là j’ai un truc bien tordu, je cale sur un problème que je n'arrive pas à résoudre.
Pour donner le contexte, je passe certaines parties du site en multilangues (au choix du visiteur, choix conservé dans un cookie).

La partie haute du site ramasse des infos toutes les 5 secondes, en déclenchant une fonction qui fait une requête ajax (je mets les parties pertinentes du code pour ne pas trop alourdir le post):

Code : Tout sélectionner

function recupdatardj() { sellangsite = <?php echo json_encode($selectlanguagesite); ?>; $.ajax({ type: 'POST', url: './topper/aspihisto.php', data: { selectlanguagesite:sellangsite }, success: function(data){ ....
Le fichier aspihisto.php (là aussi, que le code qui nous intéresse):

Code : Tout sélectionner

if ( !isset($_POST["selectlanguagesite"]) ) { $selectlanguagesite = 'fr'; } else { $selectlanguagesite = $_POST["selectlanguagesite"]; } //============ LANGUAGE ==============// $language_file = $_SERVER["DOCUMENT_ROOT"].'/lang/lang_selector.php'; include($language_file); //============ END LANGUAGE ==============// $language = htmlspecialchars_decode($lang_site['Language_code']);
Le fichier lang_selector.php qui est utilisé par d'autres endroits du site, va chercher les champs nécessaires dans la langue voulu, le tout stocké dans une table de la DB, et fourni aussi les langues disponibles (une colonne par langue , dans la table).

Code : Tout sélectionner

$languepreferee = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); if(stristr($languepreferee[0], 'fr') != FALSE) { $languagesite = 'fr'; } elseif(stristr($languepreferee[0], 'es') != FALSE) { $languagesite = 'fr'; } else { $languagesite = 'en'; } if ( isset($selectlanguagesite )) { $languagesite = $selectlanguagesite; } ... $query = "SELECT field, $languagesite AS selected_lang FROM translation ORDER BY area ASC, field ASC"; $requete = mysqli_query( $dbwrite,$query ) ; while( $result = mysqli_fetch_object( $requete ) ) { $field = htmlspecialchars($result->field); $selected_lang = htmlspecialchars($result->selected_lang); $lang_site[$field] = $selected_lang; } $query = "SHOW COLUMNS FROM translation WHERE Field NOT LIKE 'ID' AND Field NOT LIKE 'area' AND Field NOT LIKE 'field' "; $requete = mysqli_query( $dbwrite,$query ) ; while( $result = mysqli_fetch_object( $requete ) ) { $lang = $result->Field; $query2 = "SELECT $lang AS active FROM translation WHERE field = 'Language_activated' "; $requete2 = mysqli_query( $dbwrite,$query2 ) ; while( $result2 = mysqli_fetch_object( $requete2 ) ) { $active = $result2->active; if ( $active == 1 ) { $dispolanguages[] = $lang; } } }
On peut mettre des musiques en favori (pour les membres du tchat seulement), et lorsqu'un favori est mis en file d'attente de lecture, un mail est envoyé à l'adresse du membre tchat pour le prévenir (je passe sur tout ce qui est From etc etc car les mails partent et arrivent bien) :

Code : Tout sélectionner

$passage_ligne = "\n"; $message_expediteur = htmlspecialchars_decode($lang_site['Gen_Bonjour']) ." $nom_destinataire,".$passage_ligne.$passage_ligne.htmlspecialchars_decode($lang_site['Disco_tchat_email_message1']).$passage_ligne.$trackname.$passage_ligne.$passage_ligne.htmlspecialchars_decode($lang_site['Disco_tchat_email_message2']) .$url.", ".htmlspecialchars_decode($lang_site['Disco_tchat_email_message3']) .$passage_ligne.$passage_ligne.htmlspecialchars_decode($lang_site['Topper_welcome4']) ; mail($mail_destinataire,$objet,$message_expediteur,implode($passage_ligne, $entete));
Voilà, alors même si on choisi une autre langue que français, le mail est envoyé en français.

Si je prends un des champs utilisé dans le message expéditeur, pour l'afficher directement sur le site (à la place du titre de la musique qui passe par exemple, donc en retour ajax), le champs s'affiche dans la langue choisie.

Impossible de trouver où est le problème, j'ai fais tellement de tests que je ne sais même plus où chercher :(

Si quelqu'un voit ce qui est peut être évident , je suis preneur d'ifno :D

Merkouin !