Se connecter avec
S'enregistrer | Connectez-vous

[PHP] Plusieurs langues dans un seul fichier

Dernière réponse : dans Programmation

Bonjour !
Je suis en train de faire un site multiligue (pour l'instant français et anglais mais pourquoi pas plus plus tard).
C'est pour ça que j'ai besoin d'un système pratique.

J'ai fait ça vite fait donc j'ai une page PHP qui inclus soit page-fr.html soit page-en.html en fonction de la valeur du paramètre langue.

Mais deux fichiers différents pour chaque page, ça va vite devenir compliqué, donc je préfèrerais un seul fichier page.html pour chaque page avec dedans un truc du genre :
Citation :
[FR] première ligne en français
[EN] first line in english
[ES] primera linea en español

[FR] deuxième ligne en français
[EN] second line in english
[ES] segunda linea en español

Et le script php qui inclus la page page.html fait le tri en ne prenant que les bonnes lignes.
Il faudrait aussi que les lignes sans marqueur de langue devant soient toujours incluses.

Je pense que c'est possible mais je ne sais pas du tout comment faire.
Lassé par la pub ? Créez un compte

En gros c'est le même système que ce que j'ai actuellement, avec deux fichiers.
Ça m'arrange pas trop. J'ai déjà vu dans phpBB, il y a certaines parties du code HTML qui sont ignorées ou non par le script PHP. J'ai pas bien compris comment c'était fait, mais je voudrais la même chose.
Je vais essayer de me replonger dans le code de phpBB en attendant.

Heu, non, c'est pas tout à fait le même systeme.
Ici, on définit des constantes.
Genre :
fichier-fr.inc.php
CONST_HELLO=Bonjour
fichier-en.inc.php
CONST_HELLO=Hello

Et apres, lorsque l'on veut afficher bonjour, on appelle une fonction qui va prendre en compte la langue utilisée, et inclure me bon fichier de langue.

Finalement, j'ai trouvé une autre solution pas mal :

Je transforme page.html en page.php et je met ça dedans :
Citation :
<?php
if (langue==fr) {echo "en français";}
if (langue==en) {echo "in english";}
if (langue==es) {echo "en español";}
echo "<br />\n";
?>
Expert Programmation

au risque de paraitre chiant, ton système ne gère pas le cas d'une langue non définie (voir une langue par défaut) et peut très vite devenir lourd.
Oriente toi plutôt vers switch:
  1. <?
  2. switch($langue) {
  3. case "en":
  4. echo "in english";
  5. break;
  6. case "es":
  7. echo "en español";
  8. break;
  9. default:
  10. echo "en français";
  11. break;
  12. }
  13. echo "<br />\n";
  14. ?>

Si, j'ai mis la gestion de la langue par défaut, mais j'ai pas mis tout mon code (c'est dans un autre fichier que ça se passe).

Merci pour ton code, je verrais ça.
Mais j'ai déjà une idée pour faire ce que j'avais dit au début, je vais essayer.

Voilà, j'ai réussi !

Mon script PHP :
Citation :
<?php
$fichier = file('http://XXXXXXXX/page.html');

for ($i=0;$i<count($fichier); $i++)
{
$ligne = explode("]",$fichier[$i]);
if ($ligne[0] == $langue || !$ligne[0])
{
echo $ligne[1] . "\n";
}
}
?>

Et dans page.html :
Citation :
fr]En français.
en]In english
es]En español
]<br />
Lassé par la pub ? Créez un compte
Tom's guide dans le monde