Tag Archive for: multilenguaje

Como hacer una web multilenguaje

Categories: Tutoriales - Tags:

Para detectar el idioma del navegador y hacer una web multilenguaje existen diversos métodos. Yo particularmente suelo usar el siguiente:

Primero creo el archivo lang-functions.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
 
    /*
 
    =============================================================================
 
     Funcion: detectar_idioma_navegador() 
 
    -----------------------------------------------------------------------------
 
     Proposito: Esta funcion detecta el idioma por defecto seleccionado en el navegador del visitante.
 
     Si no se detecta un lenguaje valido, se asigna el selecionado por defecto.
 
 
 
    =============================================================================
 
    */
 
    function detectar_idioma_navegador() {
 
    global $conf;
 
 
 
    $languages = preg_replace('/(;q=\d+.\d+)/i', '', getenv('HTTP_ACCEPT_LANGUAGE'));
 
 
 
    $bol_language_detected = false;
 
 
 
    // Comprobamos si el navegador usa alguno de los idiomas que hemos predefinido.
 
    foreach ($conf['lang_enabled'] as $tmp_arr_language) {
 
    if (preg_match('/' . $tmp_arr_language . '/i', $languages)) {
 
    $tmp_str_language_detected = $tmp_arr_language;
 
    $bol_language_detected = true;
 
    break;
 
    }
 
    }
 
    // Si el navegador usa uno de los idiomas seleccionados, se devuelve el path del fichero de idioma
 
    // En caso contrario, se devuelve el path del idioma original
 
    if ($bol_language_detected) {
 
    return $tmp_str_language_detected;
 
    } else {
 
    return $conf['lang_default'];
 
    }
 
    }

Una vez creado el archivo lo incluyo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
include("languages/lang-functions.php");
 
 
		$conf['lang_default'] = 'es'; // idioma por defecto
 
		$conf['lang_enabled'] = array('es','en');
 
		$conf['lang'] = detectar_idioma_navegador();
 
		if(isset($_GET['lang'])) $conf['lang']=$_GET['lang'];// Podemos crear un link como por ej una bandera para permitir cambiar el idioma al usario
 
		require_once("languages/".$conf['lang'].".php");

Por último nos queda crear los archivos de idiomas de la siguiente forma:

es.php

1
2
3
4
<? // Spanish language file 
   setlocale(LC_ALL,'es_ES');
define("_MENSAJE", "HOLA SOY UN MENSAJE EN ESPAÑOL");
?>

en.php

1
2
3
4
<? // English language file 
   setlocale(LC_ALL,'es_ES');
define("_MENSAJE", "Hi im a English message");
?>

En la web escribiriamos echo (_MENSAJE); y según el idioma del navegador aparecerá de una forma u otra.

Espero que haya servido de ayuda