Multilenguaje en php

Kansy

Community Advocate
Community Support
Prime Account
Messages
2,621
Reaction score
9
Points
38
Hola a todos!!!

Necesito de vosotros, he de hacer una web en multilenguaje y no se como.

La forma mas facil es en el index hacer dos links que uno te lleve al /es/ y el otro al /en/ y ale haces dos webs y punto...

Pero como esta web ha de ser un poco mas seria pense en hacerla en php y luego por cookies...


No se ni como empezar...



gracias!!!!
 

cetutnx1

New Member
Messages
510
Reaction score
0
Points
0
Primero te recomendaría que entres a http://www.phpclasses.org es el mejor lugar que yo conozco para encontrar clases en php y he visto unas cuantas como la que tu necesitas...

Si me das un poco de tiempo talvez tenga guardado algo que te puede servir..

Gonzalo.
 

figu120

New Member
Messages
921
Reaction score
0
Points
0
y por q no usas un cms que eso usa multilenguaje no necesitas hacer nada

el ph-nuke 7.6 tiene mas o menos 32 idiomas
y puede encontar muchos mas o quitales ..

buen en fin te recomiendo eso
 

darksite

New Member
Messages
67
Reaction score
0
Points
0
mmm, te recomiendo que lo hagas con $_GET ya que es la manera mas sencilla,
por ejemplo si queremos que el idioma sea español
index.php?idioma=es
y ahi se estaria usando el $_GET ahora solo tendriamos que hacer que hiciera un require o include hacia el archivo del idioma

En este caso:
$dir_idioma = "idioma/$_GET[idioma].php";
if(file_exists($dir_idioma)){
require("$dir_idioma");
} else {
echo"NO SE ENCONTRO EL ARCHIVO QUE CONTIENE EL IDIOMA INDICADO";
}

ahora solo creamos el archivo que contendra todo el idioma
por ejemplo

define("_PALABRA_AQUI, "PALABRA AQUI JEJE");

ahora solo ponemos
._PALABRA_AQUI. donde queramos que aparesca ya definida
EJEMPLOS:
echo ._PALABRA_AQUI.
echo""._PALABRA_AQUI."";
echo''._PALABRA_AQUI.'';

espero que con mis palabras te des a entender, y espero que te funcione
 

eZakto

Member
Messages
782
Reaction score
1
Points
18
Lo que dice darksite está muy bien, aunque he de decir que me parecería mejor así el 1er script:

PHP:
$dir_idioma_default = "idioma/es.php";
$dir_idioma = "idioma/".$_GET["idioma"].".php";
if(file_exists($dir_idioma)) {
	include("$dir_idioma");
} else {
	include("dir_idioma_default");
}

Lo del 2do está bien, yo usaría arrays en vez de define, pero creo que es a gusto:

PHP:
$lang["welcome"] = "Bienvenido al sitio";
$lang["login"] = "Iniciar sesión";
$lang["logout"] = "Cerrar sesión";

Y así sucesivamente, luego, en la página, los pondrías así:

PHP:
<span><?=$lang["welcome"]?></span>

Saludos.
 

Kansy

Community Advocate
Community Support
Prime Account
Messages
2,621
Reaction score
9
Points
38
Os quiero,

Es decir creo un archivo llamado es.php pal español y un ca.php para el catalan por ejemplo.

Y le meto esto como decis.. Ahora viene a lo que no llego...

Si el usuario le da a catalan, y luego le da a un submenu, como puedo hacer para que se siga viendo en catalan, o por ejemplo si el usuario esta por ejemplo en frio/pantalones/verde.html y quiere verlo en catalan. El enlace de catalan tiene que ser frio/pantalones/verde.html?lang=ca o hay alguna manera para que el navegador solito añada detras de la URL en la que esta el ?lang=ca


No se si me explico bien
 
Last edited:

Kansy

Community Advocate
Community Support
Prime Account
Messages
2,621
Reaction score
9
Points
38
Este ultimo enlace es muy bueno y ya lo conocia.. el problema es que el solito te escoje el idioma segun el que tengas en tu navegador... que pasa si lo tienes en castellano y lo quieres ver en ingles por ejemplo...

Te tocaria irte a las opciones de t navegador cambiarlas al catalan y volver a entrar... bastante engorroso para un usuario no?
 

cetutnx1

New Member
Messages
510
Reaction score
0
Points
0
pero sería bastante simple cambiar eso... avisame si necesitas ayuda con eso
 

Kansy

Community Advocate
Community Support
Prime Account
Messages
2,621
Reaction score
9
Points
38

cetutnx1

New Member
Messages
510
Reaction score
0
Points
0
Perdón me congué un poquito...

El único cambio que tienes que hacer es modificar la parte de la declaracion de la funcion detectar_idioma_navegador()...

Te tiene que quedar asi:

PHP:
function detectar_idioma_navegador() {
	global $conf;
	
	if(!isset($_GET['lang'])) {
		$languages = preg_replace('/(;q=\d+.\d+)/i', '', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	} else {
		$languages = trim($_GET['lang']);
	}
	$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'];
	}
}
Edit:
De esa forma index.php?lang=es lleva a la página en español y asi tal cual como lo explica el manual de Alex...
 
Last edited:
Top