Como hacer una web multilenguaje
Categories: Tutoriales - Tags: multilenguajePara 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



