Comment mettre en œuvre des packs linguistiques en PHP
-
24-09-2019 - |
Question
J'ai créé 3 packs linguistiques pour mon site: anglais, espagnol et français. Je suis juste de la difficulté à les mettre en œuvre en fonction de sélection de l'utilisateur. Je le menu déroulant suivant:
<select onchange='document.location.href=this.options[this.selectedIndex].value;'> <option>Select</option> <option value="?lang=eng">US English</option> <option value="?lang=esp">Español</option> <option value="?lang=fra">Français</option> </select>
Comment puis-je inclure les fichiers linguistiques basés sur ce que l'utilisateur sélectionne, je ne sais pas quoi mettre comme état if .
Merci.
La solution
Dans un premier temps, enregistrez la valeur que l'utilisateur a sélectionné dans la session utilisateur. par exemple:.
switch($_POST['lang']) {
case 'en': $_SESSION['lang'] = 'English'; break;
case 'sp': $_SESSION['lang'] = 'Spanish'; break;
default: $_SESSION['lang'] = 'English'; break;
}
Sur chaque demande de page, récupérer les fichiers de langue à partir du dossier de langue pertinente en fonction de la valeur que vous avez enregistré.
Par exemple, ce quoi ressemblera la structure des fichiers:
- anglais
- global.php
- register.php
- espagnol
- global.php
- register.php
Ensuite, chaque fois que vous devez charger un fichier texte, utilisez:
function load_text_file($filename) {
include 'languages/' . $_SESSION['lang'] . '/' . $filename.'php';
return $txt; // $txt should be an array
}
//...
$text = array();
$text += load_text_file('Global');
$text += load_text_file('Register');
Autres conseils
Comme vous apportez dans l'option via une chaîne de requête, vous pouvez y accéder avec
$lang = $_GET['lang']
Pour mon modèle, ce morceau de code est
$_SESSION['language'] = 'english';