Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2006
rcuevas rcuevas is offline
Miembro
 
Registrado: nov 2006
Ubicación: Rosas - Gerona - España
Posts: 39
Poder: 0
rcuevas Va por buen camino
Question Sistemas multilenguaje

Buenos días a todos,

Tngo en mente realizar un sistema web en php y será necesario que este sea multilenguaje. El sitio encuestión tendrá mucha información, y no estoy del todo seguro sobre cómo conseguir que sea multisistema.
He leido por haí el truquillo de los archivos .php de traducción, o lo que es lo mismo, para cada idioma a traducir genero un fichero con todos aquellos textos traducidos al idioma correspondiente. Luego, en función del idioma seleccionao por el usuario, cargo un fichero de traducciones o otro.

Lo que no sé es si esta carga va a pesar mucho o no en el sistema. no tengo ni idea de cuanto me puede llegar a ocupar cada uno de estos archivos.

De momento me quedo con esta forma de traducir. Conozco otra, pero creo que aún va a penalizar más: consiste en poner todas las traducciones en una tabla donde existiran tantas columnas como idiomas quiera tener, y para cada texto que quiera traducir, realizar la corespondiente consulta a BD. la veerdad es que esta solución me parece lentísima.

Si alguien me aporta su opinión se lo agradecería muchísimo.
Responder Con Cita
  #2  
Antiguo 12-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé si te sonará de algo GetText. En el manual de PHP tienes una serie de referencias a las funciones que pueden echarte una mano con GetText. Para usar GetText necesitarás de la correspondiente extensión en PHP, empero, existe un proyecto de nombre PHP GetText que te permitirá usar "la infraestructura" de GetText desde PHP sin necesidad de extensión alguna.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 13-11-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Yo utilizo es sistema que comentas de meter las traducciones en diferentes archivos y cargar el del idioma correspondiente, eso si, cargo solo las traducciones de la página que se está visionando y no todas las traducciones de la página. Funciona muy bien y muy rápido.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #4  
Antiguo 19-11-2006
rcuevas rcuevas is offline
Miembro
 
Registrado: nov 2006
Ubicación: Rosas - Gerona - España
Posts: 39
Poder: 0
rcuevas Va por buen camino
Muchas gracias a los 2 por vuestra información. Agradezco el tiempo que me habéis dedicado. Supongo que finalmente optaré por seguir las traducciones medante los archivos php.
Responder Con Cita
  #5  
Antiguo 08-01-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Hola amigos, podrian comentar para novatos como yo un poco mas de como se hace el sistema con archivos, algun ejemplo basico para darme una idea.
__________________
[Crandel]
Responder Con Cita
  #6  
Antiguo 08-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo de ti me tiraría por el sistema GetText, puesto que da mucho juego, por ejemplo, a la hora de que pone sencillas las cosas a los traductores: hay herramientas para Windows y para Linux que les ayudan en la tarea.

Si quieres puedo explicar un poco el tema usando PHP-GetText. Por otro lado, si prefieres hacerlo mediante archivos... más o menos podría ser así:

Código PHP:

// espanol.php

$_LENGUAJE['label-bienvenida'] = 'Bienvenido a esta página Web';
$_LENGUAJE['label-despedida'] = 'Esperamos verte pronto por aquí';

// ingles.php

$_LENGUAJE['label-bienvenida'] = 'Welcome to this Web page';
$_LENGUAJE['label-despedida'] = 'We hope see you here again'
Teniendo los dos archivos anteriores, es más o menos sencillo deducir que depende de qué archivo incluyamos en nuestro Script contaremos con un contenido en el array $_LENGUAJE.

Y eso es más o menos todo. Es decir, suponamos un Script como el siguiente:

Código PHP:

// index.php

if(isset($_GET['lenguaje']))
{
  switch(
$_GET['lenguaje']) {
    case 
'espanol':
      include(
'espanol.php');
    break;
    case 
'ingles':
      include(
'ingles.php');
    break; 
    default:
      include(
'espanol.php');
    break;
  }
} else {
  include(
'espanol.php');
}


echo 
$_LENGUAJE['label-bienvenida'];
echo 
'<br />';
echo 
$_LENGUAJE['label-despedida']; 
En el Script "index.php" se mira por una variable "GET", a modo de ejemplo. Si existe la variable "GET" "lenguaje" miraremos el valor de dicha variable. En caso ser "espanol" incluiremos en nuestro Script el archivo "espanol.php", y en caso de ser inglés el correspondiente Script "ingles.php".

Por defecto, como puede verse, incluríamos el archivo "espanol.php", por lo que la instrucción:

Código PHP:
echo $_LENGUAJE['label-bienvenida']; 
Imprimiría: "Bienvenido a esta página Web".

Nota: He simplificado el código, y seguro que he omitido algunas cosas, o no he tenido en cuenta otras, pero, espero que sirva para coger la idea del asunto: complicarse se puede complicar lo que se quiera: guardar en una Cookie el lenguaje elegido, más lenguajes, Arrays de Arrays para las cadenas de los lenguajes... qué sé yo.

Sigo prefiriendo PHP-GetText.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 08-01-2007 a las 01:41:50.
Responder Con Cita
  #7  
Antiguo 08-01-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Muchas gracias DEC, muy rapido.

Te sigo molestando con un par de preguntas:

1. El servidor donde tengo alojado mi sitio no es mio, por lo que estuve viendo PHP-GetText son solo dos archivos que deben ir donde estan mis paginas y ninguna instalacion mas. Es asi no?

2. Respecto a los metodos de traduccion con archivo, como sabe la pagina index.php cual indioma estoy seleccionando, le debo pasar la palabra espanol como parametro?

igualmente ahora me voy a poner a probar todo esto.
__________________
[Crandel]
Responder Con Cita
  #8  
Antiguo 08-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola Crandel,

1º Así es. PHP-GetText es una librería para PHP que hace innecesario el uso de la extensión GetText para PHP, con la que puede que no cuentes en tu sitio Web. Sin embargo, el uso de PHP-GetText no invalida que puedas valerte de herramientas como PO-Edit, por poner un ejemplo, de modo que puedes aprovecharte de toda la infraestructura creada alrededor de GetText.

2º "index.php" puede saber qué lenguaje utilizar de varias formas Crandel. Imagina que para establecer el lenguaje de la aplicación utilizas un formulario. Una simple lista de opciones puede bastar, pero el caso es que pertenezca a un formulario que pueda ser procesado.

Al procesar dicho formulario tú puedes guardar el lenguaje seleccionado por el usuario de varias formas: en una Cookie, en una variable de sesión, en una base de datos... de modo que luego en "index.php" puedes revisar el sitio que sea menester para averiguar qué lenguaje hay establecido.

De todos modos ya digo: el asunto puede complicarse lo que se quiera. La base es la misma: el mismo Array se define en varios archivos. Las claves del Array son las mismas, pero los valores no: corresponden cada uno a la cadena traducida correspondiente. Basta con incluir el archivo adecuado para que el Array en uso sea el que corresponde al lenguaje que nos interese.

En nuestro ejemplo el archivo "index.php" se entera del lenguaje a utilizar mediante una variable "GET", es decir, que para que "index.php" mostrase las cadenas en español habría que llamar al Script tal que así:

Código:
http://www.tusitio.com/index.php?lenguaje=espanol
O así:

Código:
http://www.tusitio.com/index.php?lenguaje=ingles
Para establecer/utilizar el inglés.

Así que lo de guardar el lenguaje en una variable de sesión o en una Cookie, por ejemplo, sirve, precisamente, para no tener que llamar al Script incluyendo la variable lenguaje en la URL. Es decir, tenemos un Script que establece un lenguaje: guarda "espanol" en una Cookie, y luego, cuando queramos averiguar qué lenguaje está establecido (y qué archivo debemos incluir) bastaría con mirar el valor de dicha Cookie para averiguarlo.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 08-01-2007 a las 02:17:32.
Responder Con Cita
  #9  
Antiguo 08-01-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Gracias de nuevo. Estuve probando el sistema de archivos y funciona muy bien.

Ahora estoy probando PHP-gettext y tambien parece interesante, voy a hacer un par de pruebas mas y me voy a dormir que no le vanto para trabajar mañana

ya seguire molestando mañana.
__________________
[Crandel]
Responder Con Cita
  #10  
Antiguo 08-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No molestas, hombre. Que sueñes con los angelitos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 09-01-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Yo el sistema multilenguaje lo realizo de otra forma:
- Primero, en vez de pasar siempre por metodo GET el idioma, lo cargo en una cookie y asin me dura toda la sesion.
- Para cargar los archivo nada mas facil que esto:
Código PHP:
<?
   
...
   include( 
"idiomas/"$_COOKIE['lang'] ."/"basename$_SERVER['PHP_SELF'] ) );
   ...
?>
Sinedo $_COOKIE['lang'] el idioma en el que estoy (esp, eng, fra, deu, ...)
De esta forma cargo la traducción correspondiente a la página que estoy visualizando.

Yo en vez de utilizar arrays para guardar las traducciones utilizo constantes.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #12  
Antiguo 16-01-2007
rcuevas rcuevas is offline
Miembro
 
Registrado: nov 2006
Ubicación: Rosas - Gerona - España
Posts: 39
Poder: 0
rcuevas Va por buen camino
Thumbs up Agradecimientos

Buenas tardes, noches, días, mañanas o madrugadas (qué grande es esto de internet):

Tan sólo quería agradecer nuevamente las valoraciones aportadas por cada uno de vosotros, y siento no poder haber aportado nada nuevo más al tema desde hace ya mucho tiempo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema Con Programa Multilenguaje sammyrano Varios 3 15-09-2006 18:38:27
Aplicación Multilenguaje??? burasu Varios 4 13-09-2005 17:33:18
sistemas que corran en web pepe2000 Internet 1 19-03-2005 20:41:44
sistemas de Informacion koalasoft Lazarus, FreePascal, Kylix, etc. 1 20-01-2005 13:29:51
Multilenguaje en Delphi 7 Athalon Varios 10 23-11-2003 14:17:42


La franja horaria es GMT +2. Ahora son las 03:27:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi