Comunidad de diseño web y desarrollo en internet online

Sistema de varios idiomas para web

Citar            
MensajeEscrito el 25 Ene 2011 04:03 pm
Hola buenas!

Estoy pensando un sistema óptimo para poder publicar en 2 idiomas (Español e Inglés, por ahora) mi web.

Desconozco los sistemas que se utilizan normalmente, asi que he pensado ésto: ir enviando en las peticiones a las paginas que lo requieran una variable mediante ?idioma= para éstas cuando hagan la consulta en la base de datos, lo hagan en función a ese idioma (aunque como no va a haber textos en exceso, tampoco quería tener TODO el contenido que sea texto en la base de datos, también quería insertarlo un poquito en el propio html).

He observado que muchas webs tienen todo distribuido en: /en/ y /es/. Y digo yo, no tienen una copia de los archivos que hay en /es/ en /en/ pero en Inglés, verdad? Supongo que lo harán dinamicamente, pero desconozco el método. He visto que muchas tienen /es/main.html y cuando pasas al inglés: /en/main.html. He inspeccionado los códigos de ambas, y en muchas son distintos, por lo que tienen una main para inglés y otra para español.

¿Habría alguna manera óptima y flexible de hacer el sistema de traducción? (El tener el texto en .xml y cargarlos mediante flash no me gusta nada :-\)

Venga, pues muchas gracias, nos vemos!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 25 Ene 2011 04:51 pm
Usando Gettext me gusta mucho, no necesitas fijarte tanto en la parte técnica y es más lógico que muchas soluciones propuestas, ademas de que ya está hecho xD

Por tribak

Claber

2448 de clabLevel

6 tutoriales

Genero:Masculino   Héroes

Fotógrafo o algo

firefox
Citar            
MensajeEscrito el 25 Ene 2011 11:50 pm
Gettext creo que trabaja en ambito global osea si un cliente esta viendo en cierto idioma español y a este le das que cambie a portugues el mismo afecta a otro usuario que estaba viendo en español a portugues eso segun lo que lei ahora no se como se comportaria en modo Fastcgi o en Modulo de apache ya que es diferente la forma de trabajo pero creo que lo te comente afecta a fastcgi no me meti de lleno de gettext seria bueno que usuarios aporten con su experiencia sobre este tema

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ene 2011 12:01 am
dudo mucho que gettext haga eso u_u

Por tribak

Claber

2448 de clabLevel

6 tutoriales

Genero:Masculino   Héroes

Fotógrafo o algo

firefox
Citar            
MensajeEscrito el 26 Ene 2011 02:55 am
Pues en .GAIA justamente elegimos usar archivos XML, es más fácil y rápido :P

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome
Citar            
MensajeEscrito el 29 Ene 2011 12:39 pm
Siento no haber respondido!! No me llegaron los avisos de respuesta al mail :-\. Se me olvidaría seleccionarlo jeje.

Bueno, pues al final decidí hacerlo mediante la variable $_SESSION['idioma']. Me resulta sencillo, bastante lógico y bueno, funciona bien jeje.

De todas maneras echaré un vistacete al gettext que comentas Tribak.

Gracias!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 29 Ene 2011 03:40 pm
Yo el sistema que utilizo es a base de defines();

Tengo en una variable de sesión el idioma actual y una carpeta con los archivos para cada seccion del idioma donde guardo los defines de dicha sección.

Así cuando entres en una sección lo unico que tienes que hacer es cargar los defines del idioma en curso y listo.

Ejemplo:

archivo de idioma español, (general.php):

Código PHP :

define("GEN_ERROR_MODULO_NO_ENCONTRADO",htmlentities("La sección a la que intentas acceder no existe o no está disponible temporalmente."));

define("GEN_FORMULARIO_SOLICITUD",htmlentities("Formulario de Solicitud de Información y reserva."));
define("GEN_FORMULARIO_IDIOMA",htmlentities("Idioma: "));
define("GEN_FORMULARIO_PAIS",htmlentities("País: "));
define("GEN_FORMULARIO_CIUDAD",htmlentities("Ciudad: "));


El mismo pero en inglés:

Yo el sistema que utilizo es a base de defines();

Tengo en una variable de sesión el idioma actual y una carpeta con los archivos para cada seccion del idioma donde guardo los defines de dicha sección.

Así cuando entres en una sección lo unico que tienes que hacer es cargar los defines del idioma en curso y listo.

Ejemplo:

archivo de idioma español, (./idiomas/es/general.php):

Código PHP :

define("GEN_FORMULARIO_SOLICITUD",htmlentities("Información y reservas."));
define("GEN_FORMULARIO_IDIOMA",htmlentities("Idioma: "));
define("GEN_FORMULARIO_PAIS",htmlentities("País: "));
define("GEN_FORMULARIO_CIUDAD",htmlentities("Ciudad: "));


archivo de idioma en inglés (./idiomas/en/general.php)

Código PHP :

define("GEN_FORMULARIO_SOLICITUD",htmlentities("Information and reservations."));
define("GEN_FORMULARIO_IDIOMA",htmlentities("Language: "));
define("GEN_FORMULARIO_PAIS",htmlentities("Country: "));
define("GEN_FORMULARIO_CIUDAD",htmlentities("City: "));


Y antes de cargar el formulario tnego que cargar el idioma,ej:

Código PHP :

require_once("./idiomas/en/general.php");


Sólo tengo que imprimir mi clave donde toque:

<h2>

Código PHP :

<?php echo GEN_FORMULARIO_SOLICITUD;?>
</h2>

<label for="idioma">

Código PHP :

<?php echo GEN_FORMULARIO_IDIOMA;?>
</label>
<input type="text" name="idioma" id="idioma" />
.
.
.
Espero que te ayude. Un Saludo.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 29 Ene 2011 03:42 pm
una pequeña correccion a mi mensaje anterior, que me acabo de dar cuenta.

Donde pone

Código PHP :

require_once("./idiomas/en/general.php");


Lo que queria poner es

Código PHP :

require_once("./idiomas/" . $_SESSION['idioma']. "/general.php");

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 29 Ene 2011 08:55 pm
Pues muchas gracias, me parece una muy buena solución.

He estado probando, y haré algo muy similar, pero con variables. Tenía los textos de cada apartado, en la base de datos. Pero me atrae más la idea de tenerlos en unos archivos y cargar unos u otros en función a la variable $_SESSION[]. Cargaré las variables, y listo, jeje.

Una cosilla, influirá en el posicionamiento? Me refiero a la indexación por parte de Google. Influirá el que tenga parte del contenido en los archivos "diccionarios"?

Venga, gracias!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 29 Ene 2011 09:09 pm
Google no debería ni enterarse de eso, a el solo le llegará un documento HTML con el contenido de modo regular, esos "diccionarios" solo existen para tu deleite y disfrute

Por tribak

Claber

2448 de clabLevel

6 tutoriales

Genero:Masculino   Héroes

Fotógrafo o algo

chrome
Citar            
MensajeEscrito el 29 Ene 2011 09:25 pm
Perfecto entonces, pues muchísimas gracias!

Para el resto, iré echando un vistacete a crear el sitemap como me comentaste en otro post :).

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.