Bonjour,

Voila je rencontre un petit problème avec mon code.
j ' ai deux div contiennt beuacoup de code
je veux que lorsque l'utilisateur change la langue en anglais la deuxieme div se place en premier

Ce que je fais

par exemple

if($url == "en"){
        echo "div1";
        echo "div2";
    }else{
        echo "div2";
        echo "div1";
    }

je ne veux pas de copier les div deux fois car si il y a une modif je l'affecterai 2 fois et cette conditions je l'utilise dans plusieurs endroit dans le site

Merci d' avance

10 réponses


PhiSyX
Réponse acceptée

Utilise les flexbox, c'est surtout la propriété "order" qui t'interessera ici.
Suivant la langue choisi par l'utilisateur, tu donnes une valeur de 2 à la propriété order.

Exemple:

.flexbox { display: flex; justify-content: space-between; }
.flexbox-order-1 { order: 1; }
.flexbox-order-2 { order: 2; }
<div class="flexbox">
    <div class="flexbox-order-2">Date</div>
    <div class="flexbox-order-1">22 09 16</div>
</div>

Tu verras que la div avec comme texte Date se trouve bien a droite de la div qui a comme contenu 22 09 16.

Résultat:

Pour la langue arabe par exemple, ce serait comme suit: 
22 09 16                    Date

Sinon:
Date                    22 09 16

ba c'est simple, il suffit d'utiliser des variables.

$div1 = "div1";
$div2 = "div2";

if ($url == "en") {
  echo $div1;
  echo $div2;
} else {
  echo $div2;
  echo $div1;
}

Hello !

Si tu stock tes divs dans deux variables, je vois pas ou est le problème. Après je connais pas la logique de ton code, ni te dire si c'est bien ou pas.

Mais si tu fais ce code si dessous, tu devrais avoir ta div qu'une fois, et répercutée correctement.

$div1 =  "div1";
$div2 =  "div2";
if($url == "en"){
        echo $div1
        echo $div2;
    }else{
        echo $div2;
        echo $div1;
    }

Edit : Merde, je pars me faire un café, j'ai oublié d'appuyer sur envoyer, et @quenti77 répond avec moi ! Du coup cette solution est la bonne xD

Med-
Auteur

Merci pour l'aide , meme j' ai souhaité une autre solution car il y a pusieurs div que je voulais les déplacer soit des blocs , menu ,colonnes.

Bah dans ce cas la, faut le préciser. Mais je vois pas l'intérêt de changer 40 éléments de place. Si je vais sur une page web en français et qu'elle est totalement différente en anglais, je vois pas l'intérêt.

Normalement un site, il reste identique quelque soit la langue, il n'y a que le texte qui change.

Donc soit tu ne sais pas ce que tu veux vraiment (et ca arrive) soit tu n'exploite pas une bonne solution.

Med-
Auteur

le site est en arabe et l'anglais ,et l'arabe est rtl commence dés le coté droit

Bah dans ce cas là, plutot que de faire un if/else "dégueulasse" qui change de place 40 divs, fait deux vraies vues séparés :)

Car pour moi (je suis pas spécialiste en design ltr) mais si c'est que pour du texte et quelques boutons (style suivant / précédent) tu peux le changer en CSS / javascript.

Sinon si les deux pages n'ont rien à voir il faut faire de vrai vue propre. C'est plus propre je trouve.

Med-
Auteur

@Kaelyscius je pense que c'est la meiulleur solution,
@quenti77 par exemple j'ai bloc les propriétés à gauche et leurs valeurs à droite ' <HTML lang="ar" dir="rtl"> ' comme float right mais moi je veux en arabe les propriétés à droite et les valeurs à gauche

Med-
Auteur

ça marche merci pour l'aide @PhiSyX et également à @Kaelyscius et @quenti77
juste un petit point concernat les flexbox , ils ne sont pas supporté par les anciennes versions des naviagteurs