[RESOLU] Site internet bilingue

Eléphant du PHP | 63 Messages

12 juin 2015, 11:22

avec ce language peut on afficher les images d'un fichier en fonction de la langue ? si on ne sait pas stocker les images dans une base.
par exemple

si la langue==fr
<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center"><?php echo _("image 1");?></div>
<img src="imageFR/image1.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

si la langue==en
<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center"><?php echo _("image 1");?>
</div><img src="imageEN/image1.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>



j'ai un site qui avait ete fait a l epoque par un developpeur qui affiche les fichiers de text de langue a partir de fichier .mo .po
avec des echo.

le problem c est que lorsque je veux afficher une image selons la langue actuelle je ne connais pas la request

Bonne journee a tous
dryland

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juin 2015, 12:28

Bonjour,

Il est tout à fait possible d'utiliser une structure conditionnelle de type if/else ou switch pour tester la langue et afficher le bloc que tu souhaites.

Les fichiers de traductions po/mo servent surtout pour les libellés, mais tu peux effectivement les utiliser pour spécifier des noms de fichiers différents en fonction de la langue de l'utilisateurs. il suffit d'avoir un nom de fichier ou un chemin dans une langue et de renseigner sa valeur ("traduction") dans les autres langues.

tu peux peut être aussi t'en sortir simplement avec un
<img src="image<?php echo strToUpper($langue); ?>/image1.jpg" alt="" />
En supposant que $langue soit égale à "fr" tu génère ainsi le chemin "imageFR/" et si $langue est égale à en, ton chemin deviendra "imageEN/" :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 63 Messages

12 juin 2015, 16:53

merci je vais tester mais le soucis c est que langue est stocker dans $local et tous est en echo . j ai copier la requet pour mes drapeau puisque ca affiche aussi une image et j ai adapte, le problem cest que ca affiche bien les images mais de toutes les langues sur la meme page , alors que l effet que j esperais etait si la langue et En afficher que les images du fichier imagepdf/en je dois avoir un problem avec le else
<?
   if(isset($_GET['id'])){
     $id=$_GET['id'];
     ?>
   <div class="flags">
  <?php if ($locale == 'en') { ?>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?id=<?php echo $id ?>&lang=en" <?php if ($locale == 'en') { ?>class="active"<?php } ?>>

<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center"><?php echo _("Page 1");?></div> <img src="imagepdf/en/page01.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center"><?php echo _("Page 2");?></div> <img src="imagepdf/en/page02.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>
</a>
<?php } ?> 
</div>    
     <?
     }else{
 ?>
   <div class="flags">
  <?php if ($locale == 'de') { ?>
<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center"><?php echo _("Page 1");?></div> <img src="imagepdf/de/page01.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center"><?php echo _("Page 2");?></div> <img src="imagepdf/de/page02.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>
</a>
<?php } ?> 
</div>    

<?php } ?>
</div>
 <?
     }
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 juin 2015, 11:13

Effectivement, ce que tu veux faire n'est pas très clair. J'ai essaye de réorganiser ton code, mais je t'avoue que je m'y perds. Le else correspond au isset et pas à la langue, il y a des balises html qui se ferment mais qui ne se sont pas ouvertes, ... :)
<?php
  if (isset($_GET['id'])) {
    $id=$_GET['id'];
    ?>

    <div class="flags">
      <?php if ($locale == 'en') { ?>
        <a href="<?php echo $_SERVER['PHP_SELF']; ?>?id=<?php echo $id ?>&lang=en" <?php if ($locale == 'en') echo 'class="active"'?>>
          <div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
            <?php echo _("Page 1");?>
          </div>
          <img src="imagepdf/en/page01.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

          <div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
            <?php echo _("Page 2");?>
          </div>
          <img src="imagepdf/en/page02.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>
        </a>
      <?php } ?> 
    </div>    

  <? } else { ?>

    <div class="flags">
      <?php if ($locale == 'de') { ?>
        <div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
          <?php echo _("Page 1");?>
        </div> 
        <img src="imagepdf/de/page01.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

        <div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
          <?php echo _("Page 2");?>
        </div> 
        <img src="imagepdf/de/page02.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>
      </a><!-- pas de lien ouvert correspondant ? -->
      <?php } ?> 
    </div>    

  <?php } ?>
</div><!-- pas de div ouvert correspondant ? -->
<?php } ?><!-- pas de { correspondant ? -->
Pour bien organiser tes structures, pense à utiliser l'indentation (les tabulations en début de lignes pour aligner les blocs, tu verras plus facilement s'il te manque des éléments) et pour les structures n'hésites pas à commencer par écrire l'algorithme :

Code : Tout sélectionner

SI ma langue est en anglais, (if) ALORS ... SINON SI ma langue est en allemand, (elseif) ALORS ... SINON (else) ALORS ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 63 Messages

15 juin 2015, 18:22

Merci ryle je debut et je suis pas tres douer pour les ouvertures et les fermetures. } { j'utilise maguma studio il ne m'indique pas les erreurs.
je vois le resultat une fois en online test.

mais j'ai apprendre a developer a comprendre et chercher pourquoi ca fonctionne pas.
encore merci et ravi de faire partie de ce forum

Eléphant du PHP | 63 Messages

15 juin 2015, 19:47

en prenant sur ton exemple, l'anglais ne s'affichait pas, par contre le allemande "de" lui affichait bien les deux pages,.
Alors j'ai dupliquer un nouveau "en" c est comme la premiere requette n'etait qu'une iniatilisation mais il n'affiche pas
quand je viens de tester en rajouter encore un "en" anglaiset allemande fonctionne parfaitement .
c'est Normal ?? c'est comme cela que cela doit etre?
donc dans la premiere requette j'ai supprimer le code d affichage des pages en qui etait obsolete.

Pour ton conseil de (les tabulations en début de lignes pour aligner les blocs, tu verras plus facilement )
tu veux dire aligner le code a gauche ?

<?php
if (isset($_GET['id'])) {
$id=$_GET['id'];
 ?>

<div class="flags">
<?php if ($locale == 'en') { ?>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?id=<?php echo $id ?>&lang=en" <?php if ($locale == 'en') echo 'class="active"'?>></a>
<?php } ?>
</div>

<? } else { ?>

<div class="flags">
<?php if ($locale == 'en') { ?>
<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
<?php echo _("Page 1");?>
 </div>
<img src="imagepdf/en/page01.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

<div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
<?php echo _("Page 2");?>
</div>
 <img src="imagepdf/en/page02.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>
            
 <? } else { ?>

<div class="flags">
 <?php if ($locale == 'de') { ?>
 <div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
 <?php echo _("Page 1");?>
 </div>
 <img src="imagepdf/de/page01.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>

 <div style="margin-top:10px;font-weight:bold;color:#C03000;font-size:12px;text-align:center">
 <?php echo _("Page 2");?>
 </div>
 <img src="imagepdf/de/page02.jpg" alt="" width="473" height="700" style="display:block;" align="center"/><br>
 <?php } ?>
 <?php } ?>
 <?php } ?>