Foros del Web » Programando para Internet » PHP »

Página en 5 Idiomas

Estas en el tema de Página en 5 Idiomas en el foro de PHP en Foros del Web. Estoy actualmente con un proyecto en el cual la página debe tener 5 idiomas. Me preguntaba la mejor manera de hacer esto. Con un archivo ...
  #1 (permalink)  
Antiguo 05/09/2012, 01:51
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Página en 5 Idiomas

Estoy actualmente con un proyecto en el cual la página debe tener 5 idiomas. Me preguntaba la mejor manera de hacer esto.

Con un archivo XML para cada pagina, y en cada XML incluir el texto de TODOS los idiomas. O bien un XML para cada pagina y por cada idioma. O tal vez un XML con todo el texto de todos los idiomas.

Tampoco es que vaya a tener muchos texto me parece. O también podría ser quizá metiendo los textos en variables?
¿Cual es la forma habitual de trabajar con múltiples idiomas? También me preguntaba como almacenar el idioma en cuestión. Lo meto en una variable de sesión o lo voy pasando por GET?

Y luego tengo la duda de qué codificación debería utilizar. Tengo que cambiar la codificación de caracteres según el idioma? Además tendría que cambiar también el título de la página, palabras clave y descripción supongo.

También tengo unas dudas con los métodos de pago. Y es que prefería hacerlo de 0 en lugar de usar un CMS como prestashop, así tengo control total y se exactamente como funciona, pero tengo la duda de si seré capaz de implementar los pagos o es muy complicado. Con esos programas ya te lo traen mascado.

Última edición por alyciashape; 05/09/2012 a las 02:01
  #2 (permalink)  
Antiguo 05/09/2012, 06:35
Avatar de NJS
NJS
 
Fecha de Ingreso: noviembre-2011
Mensajes: 371
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: Página en 5 Idiomas

Yo lo pasaria por las variables de session.
El texto lo almacenaría en la base de datos y mediante php averiguar que idioma prefiere el visitante y mostrar solo el idioma que te hace falta.
__________________
Mejores empresas de Hosting
-=-=-=-=-=-=-=-
Empresas de Hosting
  #3 (permalink)  
Antiguo 05/09/2012, 08:08
 
Fecha de Ingreso: julio-2012
Ubicación: Girona
Mensajes: 63
Antigüedad: 11 años, 9 meses
Puntos: 10
Respuesta: Página en 5 Idiomas

1º: Multiidioma
Yo cuando hago las páginas multiidioma, tengo una tabla en una base de datos que le llamo textos_fijos, la cual se compone de 3 campos, "id" del texto, traduccion, e idioma. Luego tengo un método para recuperar la traducción del campo en cuestión. Lo hago de esta manera, porque luego para editar la información es bastante más sencillo.

2º: Métodos de pago
depende con el banco que trabajes, ya tienen un "manual" de como se debe implementar la pasarela de pago, por ejemplo, La Caixa de Pensions de Barcelona tiene el cyberpack (que es un SERVIRED un poco modificado), el Banco Popular tiene una pasarela de pago 4B, y así sucesivamente. (normalmente suele ser bastante sencillo, tu le envías unas variables a una url del banco y éstos tramitan la orden de cobro, con la ventaja que no necesitas extra de seguridad porque lo haces directamente con ellos).

Saludos
__________________
Por favor utilizad HIGHLIGHTS en los códigos insertados para que sean más legibles
  #4 (permalink)  
Antiguo 05/09/2012, 08:38
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: Página en 5 Idiomas

Lee esto! http://www.albertlanchas.com/articul...on-php-gettext
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #5 (permalink)  
Antiguo 05/09/2012, 11:09
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Página en 5 Idiomas

Yo lo hago con variables de sesion para saber que idioma está viendo.
El texto lo pongo en variables y segun el idioma que se ha guardado en la sesion abro un archivo o otro con las bariables.

Para modificarlo és tan facil como cambiar ese archivo y listo.

En el fondo se parece a tenerlo en bases de datos, pero prefiero no ir mandando consultas para todo el texto de las páginas. Manias supongo.

Lo de la pasarela desde zero, yo solo lo he hecho con paypal y sin CMS's, al principio es un lio, pero cuando entiendes el proceso todo se hace más fácil.
Yo tb prefiero tener el control de todo, no me gustan mucho los frameworks estos que te lo dan todo hecho.
  #6 (permalink)  
Antiguo 06/09/2012, 04:47
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Página en 5 Idiomas

Muchas gracias por la información pero me quedan ahora más dudas. Lo de los textos en la base de datos tampoco lo veo porque hay demasiados y además quiero poder distribuir fácilmente los ficheros para que se traduzcan cómodamente.

La duda es, porque decís alguno de por ejemplo, meter todo el texto en la base de datos o en variables, pero, como lo divides?
Dejas los div en la página y luego sólo cargas el texto y divides todo en mogollón de variables/campos ?

Es decir:
$titulo = "Bienvenido";
$parrafo1 = "Texto del párrafo";
<h1>$titulo</h1>
<p>$parrafo1</p>

o sería mejor:
$texto_cabecera = '<h1>Bienvenido</h1><p>Texto</p>Etc y más etiquetas';
  #7 (permalink)  
Antiguo 06/09/2012, 05:45
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Página en 5 Idiomas

Buenas alyciashape,

Yo actualmente también tengo una web multi-idioma, y te comento el procedimento que uso:

- Tengo una clase PHP, digamos "Textos". Dentro tengo algo así:

Código:
Class Textos{
   private txt = array();

   function Textos($pIn, $pLan){
      if($pIn == 0){
         if($pLan == 1){
            $this->txt = array("CASTELLANO1", "CASTELLANO2"...);
         }elseif($pLan == 2){
            $this->txt = array("ENGLISH1", "ENGLISH2"...);
         }
      }elseif($pIn == 1){...}
   }

   public function getString($pIn){
       return $this->txt[$pIn];
   }
}
De esta manera, por ejemplo, los textos estáticos de la página "inicio.php" los meto en el apartado correspondiente a $pIn == 0, en sus diversos idiomas; los textos de "test.php" en $pIn == 1, ok?

Entonces, el idioma lo guardo como un número en, por ejemplo, $_SESSION['i'] (i de idioma).

Finalmente, en inicio.php haría:

Código:
  $t = new Textos(0, $_SESSION['i'];

  echo($t->getString(0)) //muestra CASTELLANO1 o ENGLISH1, dependiendo de $_SESSION['i'];
No obstante, estoy cambiando esta clase, ya que estoy metiendo los textos en la base de datos, y los recuperaré en el constructor, por lo que la función getString no deja de funcionar

Espero que te haya podido ayudar!

Saludos.
  #8 (permalink)  
Antiguo 06/09/2012, 10:16
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Página en 5 Idiomas

En php es asin:
Código PHP:
Ver original
  1. <?php
  2. error_reporting(0); // oculta el error que sale cuando no as elegido ningun idioma que en verdad no es un error si no que dice que no as elegido ningun idioma
  3. $_SESSION['idioma'] = $_GET['idioma'];
  4.  
  5. if($_SESSION['idioma'] == "es"){
  6.     include ("es.php");
  7. }else{
  8. if($_SESSION['idioma'] == "en"){
  9.     include ("en.php");
  10. }else{
  11.     // Idioma por defecto es el español
  12.     include ("es.php");
  13. }}
  14. ?>
  #9 (permalink)  
Antiguo 06/09/2012, 12:07
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Página en 5 Idiomas

para mi la mejor opcion es

1- averiguar el idioma
2- texto en variables ,las variables deben de ser las misma sea el idioma que sea
3- creamos un archivo para cada idioma que contendra las traducciones

entonces , si llamamos a:

echo $bienvenido

y el usuario es ingles habremos cargado el documento del idioma ingles que contendra

$bienvenido = 'welcome';

ahora si el usuario es aleman, cargamos la hoja de idioma aleman que contendra

$bienvenido = 'willkommen';

para mi esa es la mejor opcion .
  #10 (permalink)  
Antiguo 07/09/2012, 09:35
FDA
 
Fecha de Ingreso: agosto-2010
Mensajes: 99
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Página en 5 Idiomas

Tal como dices.
Mi archivo de idiomas que incluyo es este:

Código PHP:
Ver original
  1. <?php
  2. if (isset($_GET["lang"])){
  3.     if ($_GET["lang"]=="es"){
  4.         $_SESSION["idioma"]="es";
  5.         include("idiomes/es.php");
  6.     }
  7.     if ($_GET["lang"]=="en"){
  8.         $_SESSION["idioma"]="en";
  9.         include("idiomes/en.php");
  10.     }
  11.     if ($_GET["lang"]=="fr"){
  12.         $_SESSION["idioma"]="fr";
  13.         include("idiomes/fr.php");
  14.     }
  15. }else{
  16.     if (isset($_SESSION["idioma"])){
  17.         if ($_SESSION["idioma"]=="es"){
  18.             include("idiomes/es.php");
  19.         }
  20.         if ($_SESSION["idioma"]=="en"){
  21.             include("idiomes/en.php");
  22.         }
  23.         if ($_SESSION["idioma"]=="fr"){
  24.             include("idiomes/fr.php");
  25.         }
  26.     }else{
  27.         include("idiomes/en.php");
  28.     }
  29. }
  30. ?>
Pongo el get para cambiar el idioma si lo pide, aunque creo que voy a empezar a usar post y utilizar un desplegable para mandar-la por post, que me parece más limpio, además el tema de las banderitas queda un poco feo, la verdad.

Los archivos de idiomas, por ejemplo es.php

Código PHP:
Ver original
  1. $menu1="home"
  2. $menu2="noticias"
  3. .....

Y en el html simplemente le metes:
Código HTML:
Ver original
  1. <li><?php echo $menu1 ?> .... </li>
Por ejemplo.

Etiquetas: idiomas, página, variables
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 17:22.