Cómo implementar paquetes de idiomas en PHP
-
24-09-2019 - |
Pregunta
He creado 3 paquetes de idiomas para mi sitio: Inglés, Francés y Español. Estoy teniendo problemas para su implementación en base a la selección del usuario. Tengo el siguiente menú desplegable:
<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>
¿Cómo puedo incluir los archivos de idioma en base a lo que el usuario seleccione, sólo que no sé qué poner como el estado en la if .
Gracias.
Solución
En primer lugar, guarde el valor que el usuario selecciona en la sesión de usuario. por ejemplo:.
switch($_POST['lang']) {
case 'en': $_SESSION['lang'] = 'English'; break;
case 'sp': $_SESSION['lang'] = 'Spanish'; break;
default: $_SESSION['lang'] = 'English'; break;
}
En cada solicitud de página, ir a buscar los archivos de idioma desde el idioma correspondiente carpeta de acuerdo con el valor de la guardó.
Por ejemplo, este aspecto que tendrá la estructura de archivos:
- Inglés
- global.php
- register.php
- Español
- global.php
- register.php
A continuación, cada vez que se necesita para cargar un archivo de texto, utilice:
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');
Otros consejos
A medida que usted está trayendo en la opción a través de una cadena de consulta, se puede acceder a ella con
$lang = $_GET['lang']
Para mi plantilla, que es parte del código
$_SESSION['language'] = 'english';