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.

¿Fue útil?

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';

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top