Foros del Web » Programando para Internet » PHP »

Web en 4 lenguajes

Estas en el tema de Web en 4 lenguajes en el foro de PHP en Foros del Web. hola buenas tardes tengo pensado hacer una web con distintos lenguajes (español,ingles,frances,aleman).. entonces mi pregunta es la siguiente hay alguna manera de no tener que ...

  #1 (permalink)  
Antiguo 06/05/2003, 07:07
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
Web en 4 lenguajes

hola buenas tardes tengo pensado hacer una web con distintos lenguajes (español,ingles,frances,aleman)..

entonces mi pregunta es la siguiente hay alguna manera de no tener que hacer todas las paginas en distintos idiomas o tendre que hacer la web 4 veces?¿

Gracias de antemano

Un Saludo
  #2 (permalink)  
Antiguo 06/05/2003, 07:29
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Puedes hacer la web una vez, extraer los textos a plantillas de idioma e incluir la plantilla de idioma en función de una variable.

Así es como funcionan la mayoría de módulos prefabricados (PHP-Nuke, vBulletin, phpBB...).

Yo personalmente, guardo la variable de idioma en una cookie y la uso para hacer un include de la plantilla de idiomas.

Las plantillas de idiomas no son más que una lista de variables. Ejemplo:

$titulo= "Bienvenido a mi web";
$seccion1 = "Sección 1";
...
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 06/05/2003, 12:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Sobre todo .. el "contenido" (esos texto, esos nombres de menus .. cosas así ..) Deberías tenerlos si o si en algún médio de almacenamiento separado de tu código .. ya sea en una Base de datos, en archivos de texto plano .. en "includes" .. o como combinación de estos.

A todo esto, si usas un sistema de "templates" (plantillas) dinámicos te vendría bien para seleccionar uno u otro diseño para cada idioma partiendo de los dtos (contenido) de esa BD .. archivo, etc..

A su vez .. usar una cookie o algun "flag" en el perfil del usuario (caso de que tengas usuarios registrados) ten vendrá bien para determinar el idioma de preferencia de ese usuario.

Puedes ver un sistema de "plantillas" dinámicas en:
http://www.zonaphp.com/?modulo=artic...cion=leer&id=9

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 06/05/2003, 19:43
 
Fecha de Ingreso: mayo-2003
Ubicación: en el mismisimo culo del mundo!
Mensajes: 21
Antigüedad: 14 años, 7 meses
Puntos: 0
No entiendo nada, soy diseñador grafico web que deseo de la misma manera que DINASEN presentar mi web (en mi caso en 3 idiomas) y casi lo tenia asumido que tendria que hacer 3 webs con el problema del tiempo claro esta. Ahora si hay una solucion via tecnologias del lado del servidor me ayudaria mucho pero el problema es que de eso si se mucho menos! en fin... espero aprender aunque sea algo basico y si por ahi existen scripts pre-fabricados para personas como yo que no estamos muy metidas en programacion sino mas bien en diseño, se lo agradeceria mucho que me comuniquen donde encontrar esa valiosa ayuda... Gracias

Entonces Se puede con PHP

Última edición por Web-Kreator; 06/05/2003 a las 19:43
  #5 (permalink)  
Antiguo 06/05/2003, 22:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Web-Kreator

Existen algunas aplicaciones "genéricas" que le denominan: CMS (Content Manager Systems) .. Uno de ellos es el clásico PHP-nuke .. pero no es el único.

Lo peor de la mayoría de CMS's es el tema del "diseño" de las "templates" (plantillas) de su sistema que usen. La mayoría requieren de algo de "programación" .. pero bueno .. es como todo .. hay que apreder como funcionan cada una.

Si quieres ver algún sistema de los que te comento de CMS para que los pruebes "sin compromiso" (sin tener que instalarlos):

http://www.opensourcecms.com/

No todos tienen soporte multi-idioma .. pero bueno es para que te hagas una idea de lo que es una apliación "genérica" de este tipo.

Te recomiendo que te asocies con un programador para hacer este tipo de trabajos. Si tu programador te "programa" la aplicación usando algun sitema de "Templates" al estilo del que propuse .. Veras que tu como diseñador tendras libertad para hacer el diseño del sitio sin tener que aprender programación ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 07/05/2003, 00:17
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
oye un pregunta:

es mas conveniente por un asunto de carga de variables de la aplicacion a nivel de memoria de servidor poner las definiciones de idioma como

define(TITLEBAR, "Welcome to mi web site");

o

$TITLEBAR = "Welcome to my website";

en ambos casos en un archivo para las deficiones

ah?
__________________
=PoWeReD By MySeLf!=
  #7 (permalink)  
Antiguo 07/05/2003, 01:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
e-miliox ..

Te recomiendo que "saques" tu pregunta de este mensaje.. como veras no tiene mucho que ver con este mensaje ...

Pero bueno .. Sobre tu tema ..

"Supongo" que como "constante" (via el define() ) .. esas "variables" puede que ocupen algun byte menos en la memoria ... A nivel "standarización" se usa mucho definiciones de constantes para ese tipo de archivos con datos de configuración. El nombre de las constantes se suele poner _CONSTANTE_ o algo así (la verdad que no sé si hay algun standar o algo así que lo defina ..) Pero, así queda mas "claro" que es una constante y ademas constante de tu própia aplicación.

Sólo tienes que tener cuidado al usarlas .. (sintax).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 07/05/2003, 02:57
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
okay gracias, bueno lo puse ahi por que digamos "" estaba en el contexto""
__________________
=PoWeReD By MySeLf!=
  #9 (permalink)  
Antiguo 07/05/2003, 03:24
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Yo uso plantillas tipo:

$t_titulo = "el título";
$t_parrafo1 = "el parrafo 1";
...


Sé que todas las variables que empiezan por $t_ son textos. Así no tengo problemas con otras variables que pueda definir.
__________________
M a l d i t o F r i k i
  #10 (permalink)  
Antiguo 07/05/2003, 03:42
 
Fecha de Ingreso: marzo-2003
Ubicación: Madrid
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Usar arrays creo que es la mejor solucion, tipo:

$idioma = array(

't_titulo' => 'El titulo de la pagina',
't_parrafo' => 'El Parrafo.',

);
  #11 (permalink)  
Antiguo 07/05/2003, 03:48
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
El problema es que luego tienes que llamar $a_idioma[t_texto] que es más largo que $t_texto.

Pero bueno, variables, array, defines... eso ya es cuestión de gustos
__________________
M a l d i t o F r i k i
  #12 (permalink)  
Antiguo 07/05/2003, 05:47
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 16 años, 1 mes
Puntos: 0
cain: ¿llamas plantillas a una relacion de variables?

yo lo que hago, que no se si es lo mismo, es tan simple como:

si la variable que paso como argumento es, por ejemplo "es" (español)

titulo="bienvenido a mi pagina"

si es en ingles, frances o aleman lo que corresponda

¿a eso lo llamas tu plantillas?

¿o es un simple fichero que luego llamas con un include? si es asi explicame lo del include por favor, a ser posible con un ejemplo simple

gracias
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #13 (permalink)  
Antiguo 07/05/2003, 06:20
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Pues sí, yo llamo "plantillas de idioma" a los simples ficheros que llamo con un include.

Es muy simple, tengo un fichero por cada idioma y todos definen las mismas variables (con distinto contenido). Luego sólo necesito cargar la plantilla que corresponda utilizando la variable de idioma que use.

Ejemplo:

pagina.php: La página en sí misma
Código PHP:
<?
# $idioma contiene el idioma seleccionado.
include("idioma_$idioma.php");
echo <<<HMTL
<table>
    <tr>
        <td colspan="2" class="titulo">$t_titulo</td>
    </tr>
    <tr>
        <td colspan="2" class="subtitulo"><img src="imagen.gif"></td>
    </tr>
    <tr>
        <td colspan="2" class="subtitulo">$t_subtitulo</td>
    </tr>
    <tr>
        <td class="texto">$t_texto1</td>
        <td class="texto">$t_texto2</td>
    </tr>
</table>
HTML;
?>
idioma_es.php: Plantilla en español
Código PHP:
<?
$t_titulo
="Bienvenido a mi web";
$t_subtitulo="Mira lo que tenemos";
$t_texto1="Aquí hay un texto.";
$t_texto2="Aquí hay otro texto";

?>
Ahora faltaría crear las plantillas en los otros idiomas.
__________________
M a l d i t o F r i k i
  #14 (permalink)  
Antiguo 07/05/2003, 07:22
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
JEJE para algo PHP tienes la libreria gettext, para trabajar con multiples idiomas, tirando de archivos .po (como la mayoria de programas usados en Linux) es muy util ya que solo debes crear una sola aplicacion y el resto trabajara con los datos de los archivos .po, mirar en php.net la seccion gettext ;) saludillos :)
__________________
Usuario registrado de Linux #288725
  #15 (permalink)  
Antiguo 07/05/2003, 07:27
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Interesante, pero confuso

Será cuestión de ir estudiando el tema con calma
__________________
M a l d i t o F r i k i
  #16 (permalink)  
Antiguo 08/05/2003, 02:09
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 16 años, 1 mes
Puntos: 0
Una pregunta: ¿es correcto el codigo siguiente en lugar del tuyo?:

<?
# $idioma contiene el idioma seleccionado.
include("idioma_$idioma.php");
?>
<HTML>
<table>
<tr>
<td colspan="2"><?= $t_titulo ?></td>
</tr>
<tr>
<td colspan="2"><img src="imagen.gif"></td>
</tr>
<tr>
<td colspan="2"><?= $t_subtitulo ?></td>
</tr>
<tr>
<td><?= $t_texto1 ?></td>
<td><?= $t_texto2 ?></td>
</tr>
</table>
<HTML>


si no lo es, te/os agradeceria que me explicaseis porque, y si lo es que diferencias hay, y para que defines class...
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #17 (permalink)  
Antiguo 08/05/2003, 02:48
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Los class de los <td> son para indicarle el estilo que debe tener la celda
__________________
Usuario registrado de Linux #288725
  #18 (permalink)  
Antiguo 08/05/2003, 05:08
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 16 años, 1 mes
Puntos: 0
hojas de estilo, ¿no?

por cierto... ¿el codigo que inclui es igualmente correcto? Lo probaria yo misma, pero en este momento no me es posible
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #19 (permalink)  
Antiguo 08/05/2003, 09:24
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Sí, es correcto. Siempre y cuando:

a) $idioma contenga la variable de idioma.
b) el fichero idioma_es.php (o el que sea) exista.
__________________
M a l d i t o F r i k i
  #20 (permalink)  
Antiguo 08/05/2003, 09:55
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 16 años, 1 mes
Puntos: 0
muchas gracias...

espero que cuando te canses de responder no me confundas con abel

__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #21 (permalink)  
Antiguo 08/05/2003, 10:08
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
No, tranquila, Abel se lo tenía más merecido
__________________
M a l d i t o F r i k i
  #22 (permalink)  
Antiguo 08/05/2003, 10:10
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 16 años, 1 mes
Puntos: 0
pssssaaa....

por ahi nos andamos
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #23 (permalink)  
Antiguo 08/05/2003, 11:43
Avatar de juque  
Fecha de Ingreso: marzo-2002
Ubicación: Temuco, Chile
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
tengo los siguiente archivos en mi directorio leng:

leng/es.php
leng/in.php

es.php
--------
$leng['bienvenido'] = 'Bienvenido';
$leng['inviar'] = 'Enviar';
$leng['cancelar'] = 'Cancelar';


in.php
--------
$leng['bienvenido'] = 'Welcome';
$leng['inviar'] = 'Submit';
$leng['cancelar'] = 'Cancel';

Ahora en mi index.php pregunto:

Código PHP:
if ( $_REQUEST['leng'] == 'es')
    include(
leng/es.php);
if ( 
$_REQUEST['leng'] == 'in')
     include(
leng/in.php); 
Ahora solo llamas a tus variales seteadas en los distintos archivos de idiomas.

espero te ayude

--jp
__________________
~~
www.juque.cl
  #24 (permalink)  
Antiguo 08/05/2003, 11:49
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Pequeña mejora:

En lugar de:

Código PHP:
<?
if ( $_REQUEST['leng'] == 'es')
    include(
leng/es.php);
if ( 
$_REQUEST['leng'] == 'in')
     include(
leng/in.php);
?>
Usar:
include("leng/".$_REQUEST['leng'].".php");

Así conviertes X líneas en 1.

A nivel de documentación y futuros cambios, te recomendaría usar los códigos ISO 3166 en lugar de códigos inventados. Pero eso es sólo una recomendación de "buenas maneras" que no afecta en nada a la programación.
__________________
M a l d i t o F r i k i
  #25 (permalink)  
Antiguo 08/05/2003, 12:02
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
No, me confundí de número ISO

Hay que coger el código ISO de idiomas (639), no de países, porque estamos hablando de idiomas.

http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt

Sinó, tendríamos idiomas diferentes para España, Argentina, México, Chile, Cuba, Guatemala, Costa Rica....
__________________
M a l d i t o F r i k i
  #26 (permalink)  
Antiguo 08/05/2003, 12:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para lo que propoenen juque o Cain .. estaría más "presentable" usar un condicional típo:

switch() .. no creen? .. Sobre todo para predefinir casos "default" si no se puede detectar el lenguaje del navegador ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #27 (permalink)  
Antiguo 08/05/2003, 12:48
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Sí, puede ser más correcto. Pero a veces hay muuuuchos idiomas y por eso prefiero suponer que si está
__________________
M a l d i t o F r i k i
  #28 (permalink)  
Antiguo 08/05/2003, 12:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
jeje Cain .. en esto de la "informática" no debes de dejar nada por "supuesto" .. Solo falta el día que pase para que tu sistema se "caiga" ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #29 (permalink)  
Antiguo 08/05/2003, 12:57
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Sí, es posible, pero yo lo que hago es asegurarme que la variable $idioma está definida. Y procuro revisar lo que publico para cerciorarme que todo está en orden.

El problema que puedo tener es que me haya "olvidado" de subir el fichero de texto. Pero del mismo modo que me olvido de subir un fichero, me puedo olvidar el fichero que pongo por defecto, ¿no?
__________________
M a l d i t o F r i k i
  #30 (permalink)  
Antiguo 08/05/2003, 13:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. Cain .. yo iva por el lado de que

$_REQUEST['leng'] no te entregue un valor de los que tu reconozcas en tu série de IF .. salvo, por supuesto que hagas una série de IF .. ELSEIF ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:42.