Foros del Web » Programando para Internet » PHP »

Traduccion php

Estas en el tema de Traduccion php en el foro de PHP en Foros del Web. Buenas, mi web esta completamente en castellano, y quiero hacer que te de opcion a elegir español/ingles. Como puedo ahcer que dependiendo de lo que ...
  #1 (permalink)  
Antiguo 19/08/2009, 10:29
Avatar de zornak  
Fecha de Ingreso: septiembre-2008
Ubicación: Toledo
Mensajes: 96
Antigüedad: 15 años, 7 meses
Puntos: 3
Traduccion php

Buenas, mi web esta completamente en castellano, y quiero hacer que te de opcion a elegir español/ingles.

Como puedo ahcer que dependiendo de lo que tengas, este en un idioma u otro??

Osea, tipo lo que hace google translator o algo asi
  #2 (permalink)  
Antiguo 19/08/2009, 11:23
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Traduccion php

Estas trabajando modular?

Una solucion seria mas o menos asi:

Código PHP:
<html>
<head>
</head>
<body>
<? 
switch($_GET[lan]){
    case(
'es'):
        echo 
'<h1>Hola Mundo</h1>';
    break;
    case(
'en');
        echo 
'<h1>Hello World</h1>';
    break;
}
?>
<br />
<? 
if(isset($_GET[lan])){
    if(
$_GET[lan]=='es'){
        echo 
'<a href="'.$_SERVER['PHP_SELF'].'?lan=en">Ver el sitio en ingles</a>';
    }else{
        echo 
'<a href="'.$_SERVER['PHP_SELF'].'?lan=es">Ver el sitio en español</a>';
    }
}else{
    echo 
'<a href="'.$_SERVER['PHP_SELF'].'?lan=en">Ver el sitio en ingles</a>';
}
?>
</body>
</html>
  #3 (permalink)  
Antiguo 19/08/2009, 12:50
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: Traduccion php

no creo que esa sea la mejor forma de trudicr seria un rollo, lo que yo hago es crear dos archivos:

ingles.php
espanol.php

ahora bien, estos archivos contienen las mismas variables pero con su respectivo idioma, ejemplo:

en ingles.php
$saludo="Hi";
en espanol.php
$saludo="Hola";

Ahora bien, lo demás seria como quieras definir tu idioma... si por cookie, si por un fomr, si por una cabecera de php, etc etc etc...

Saludos
__________________
Hospedaje Web al mejor costo!
  #4 (permalink)  
Antiguo 22/08/2009, 10:41
Avatar de zornak  
Fecha de Ingreso: septiembre-2008
Ubicación: Toledo
Mensajes: 96
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Traduccion php

Hmmm esa idea me ha gustado... seria curro (como todo..) pero es buena idea...

Podria hacer que por defecto, tengas la cookie de español, y si pulsas en la banderita de inglaterra, te lo ponga la cookie y te cargue la pagina....

no?

alguna idea?
  #5 (permalink)  
Antiguo 22/08/2009, 11:23
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Traduccion php

Yo creo que es mejor usar algo parecido a lo que dice urgido, solo que usando xml.
Sería lo mismo que dice él, una carpeta por lenguaje, y cada carpeta incluye el fichero default.xml, que un ejemplo de implementación podría ser:

Código:
<translation>
    <error-instalacion-one>mensaje de error</error-insalacion-one>
     //todas las posibles traducciones con sus nombres clave etc
</translation>
Y para cogerlo, se trata de abrir el archivo con xml_xml2array() y hacer algo parecido a esto:
Código PHP:
foreach ($xml['translation'][0] as $key => $value) {
    
$translation[$key] = $value[0];

dónde claro está que $xml es el resultado de la función.

Ahora en tu función de traducción sólo han de pasarte el código del mensaje para que puedas traducirlo, puesto que ya lo tienes traducido en la variable global $translation.

De esta manera cualquiera puede definir un texto de traducción, y podrías dar muchas más opciones al ser modulado.

Lo que comentas de como escoger el idioma, pues una variable de sesión del lenguaje, por defecto el que quieras, y en caso que en el formulario de selección de idioma se escoja otro, sólo tienes que cambiarlo por el código pertinente (sería el nombre de la carpeta de lenguaje) y acceder al directorio por medio de esa variable.
__________________
Un Lannister siempre cumple sus promesas
  #6 (permalink)  
Antiguo 22/08/2009, 11:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Traduccion php

Yo habia pensado en hacerlo ingresando algun tag que le indique a un parser que debe traducir todo ello y por cada traduccion se generarian automaticamente archivos en sus respectivas carpetas de idiomas.

/ (aca en el idioma en que nosotros tenemos el codigo fuente. Por ejemplo ingles)
/es
/it
/fr

en cada carpeta se generaria la misma estructura interna de sub-directorios
Respecto del tag....seria algo asi:

<?
// Archivo a traducir
echo "<0>Hola Mundo</0>";
echo "<p/";
...
For ($i=...... {cualquier cosa}
....
echo "CopyRight (2009)";
?>

Solo se traduce lo que esta entre <0> y </0> y para esto cuando corro el script me preguntaria por cada expresion que no tiene una traduccion y la guardaria en una base de datos
  #7 (permalink)  
Antiguo 08/11/2012, 08:36
Avatar de veruti85  
Fecha de Ingreso: octubre-2012
Ubicación: Entre Huelva y Madrid
Mensajes: 32
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Traduccion php

A mi lo que mas me gusta y suelo usar es definir globales para los idiomas con el define y usar una estructura de carpetas tipo

Código PHP:
idiomas/es/general.php
define
('_HOLA''Hola'); 
Código PHP:
idiomas/en/general.php
define
('_HOLA''Hello'); 
Y cojo por defecto el idioma del navegador y lo almaceno en sesion, si el usuario clica en otro, machaco la variable de sesion por la nueva y al principio de cada pagina:

Código PHP:
$idioma $_SESSION['idioma'];

require 
'idiomas/'.$idioma.'/general.php';
// Si tienes mas phps definidos pues igual con todos 
Espero que te ayude, un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:23.