Foros del Web » Programando para Internet » PHP »

formulario multidioma con php

Estas en el tema de formulario multidioma con php en el foro de PHP en Foros del Web. Hola a todxs. Estoy con un fomulario en php que necesito que se presente en diferentes idiomas, según la opción que haya elegido el usuario ...
  #1 (permalink)  
Antiguo 16/12/2011, 16:02
Avatar de mrsorpresa  
Fecha de Ingreso: enero-2008
Mensajes: 323
Antigüedad: 16 años, 3 meses
Puntos: 6
formulario multidioma con php

Hola a todxs.

Estoy con un fomulario en php que necesito que se presente en diferentes idiomas, según la opción que haya elegido el usuario (es la típica página con banderines de idiomas, pulsas la bandera y te sale todo el sitio en ese idioma). Estoy usando un script para formulario que funciona bien, pero no sé modificarlo para que me cargue un texto u otro según idioma, me viene ya con el texto insertado en el formulario en lugar de estar definido como una variable, que es lo que necesito.

Los textos que he marcado en rojo son los que necesito que se presenten como variables que cargaría de otro archivo, que serían llamados de la siguiente forma: <?php echo JText::_('YOUR_NAME'); ?> siendo YOUR_NAME un valor definido en los diferentes archivos "lang" dependiendo del idioma que la página esté mostrando.

Aquí paso el código, a ver si alquien me hecha una mano porque soy muy nulo en php...

Cita:
<?php

/**
* @Copyright Copyright (C) 2010- SP
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
**/

// no direct access
defined('_JEXEC') or die('Restricted access');

class ModRecommendThisHelper{
function renderForm(){
$content = ' <form class="form-validate" onSubmit="return validate(this);" id="frm_recommend" name="frm_recommend" action="" method="post">
<div class="hiddenDiv">

<div class="spLabel"><label for="txtName">Your Name</label></div>
<div class="spField"><input type="text" id="txtName" name="txtName" class = "required inputField" /> </div>

<div class="spLabel"><label for="txtEmail"> Your Email </label></div>
<div class="spField"><input type="text" id="txtEmail" name="txtEmail" class = "required inputField validate-email" /></div>

<div class="spLabel"><label for="txtMessage"> Message </label></div>
<div class="spField"><textarea id="txtMessage" name="txtMessage" rows="5" class = "required inputField" /></textarea></div>

<div class="spLabel"><label for="txtRecipients"> Recipients Email</label></div>
<div class="spField">
<input type="text" id="txtRecipients[]" name="txtRecipients[]" class="required inputField validate-email" />
<input type="hidden" id="row_count" name="row_count" value="1" />
</div>

<div class="spField">
<input type="hidden" id="counter" name="counter" value="0" />
<input type="submit" id="action" name="action" value="Send" class="actionButton" />
<input type="button" id="addMoreButton" name="addMoreButton" value="Add More.." class="actionButton" />
</div>

</div>
</form>';
return $content;
}

function sendEmail($params){

$sender_name = JRequest::getVar( "txtName" );
$sender_email = JRequest::getVar( "txtEmail" );
$sender_message = JRequest::getVar( "txtMessage" );

$subject = $params->get( "subject" );
$company_info = $params->get( "company_info" );

if (isset($_SERVER['HTTP_REFERER'])){
$referer_url = $_SERVER['HTTP_REFERER'];
}
else {
return;
}

//get mail object
$mailer =& JFactory::getMailer();

//set the sender
$sender = array($sender_email, $sender_name);
$mailer->setSender($sender);

//set recipients
$mailer->addRecipient( JRequest::getVar( "txtRecipients" ) );

//create Subject
$mailer->setSubject( $subject );

//set Body
$body_content = "
<p>Hi,</p>
<p> $sender_name wants you to check this page <a href = \"$referer_url\" > $referer_url </a></p>
<hr />

<p> $sender_name 's message: </p>
<p> $sender_message </p>
";

if (strlen( trim($company_info) ) != 0 ){
$body_content .= "
<hr />
<p> <h2> About the company</h2> </p>
<p> $company_info </p>
";
}

$mailer->setBody( $body_content );

//set html mail
$mailer->isHTML( true );

//now send mail
$send =& $mailer->Send();

if (!$send) {
return 'Error Sending Mail: ' . $send->message;
}
else {
echo '<p class="message">Email Sent.</p>';
}
}
}
Saludos y gracias por anticipado
  #2 (permalink)  
Antiguo 16/12/2011, 16:40
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: formulario multidioma con php

al hecer clic en la bandera, tienes que usar una variable de session , depende que que bandera será el idioma , luego , si son 3 idiomas será tres variables
Código PHP:
Ver original
  1. switch($_SESSION['idioma'])
  2. {
  3. case 1:
  4. $tu_mombre = 'Your Name';
  5. breack;
  6. case 2:
  7. $tu_mombre = 'Su nombre';
  8. breack;
  9. case 3:
  10. $tu_mombre = 'ui nombran';
  11. breack;
  12. }


en lugar de poner todas las variables acá, podrías hacer un include de un archivo, en donde tengas todas las variables necesarias

Código PHP:
Ver original
  1. switch($_SESSION['idioma'])
  2. {
  3. case 1:
  4. include("ingles.php");
  5. .....
  6. ...
  7. ...
  8. ...
__________________
la la la
  #3 (permalink)  
Antiguo 17/12/2011, 05:40
Avatar de mrsorpresa  
Fecha de Ingreso: enero-2008
Mensajes: 323
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: formulario multidioma con php

Hola Truman, muchas gracias por responder.

Pero me temo que no puedo hacerlo así...

Lo cierto es que estoy trabajando sobre un CMS y todo el tema multidioma está ya montado de una forma muy determina. Las variables de texto son llamadas de la siguiente manera: <?php echo JText::_('YOUR_NAME'); ?> (por ejemplo), donde YOUR_NAME es una variable definida en diferentes archivos (es-ES.ini, en-EN.ini, pt-PT.ini...) con sus valores correspondientes en cada idioma. Esos archivos son llamados por parte de la herramienta multidioma de una forma que desconozco. Por tanto, cambiar todo eso sería larguísimo y muy complicado para mí.

Me bastaría si en el fragmento que va entre $content = ' <form class [...] </form>'; (es decir el contenido de la variable $content) me permitiera cargar las variables definidas en los archivos antes citados. Sin embargo, he probado con algo como esto:

Cita:
$content = ' <form class="form-validate" onSubmit="return validate(this);" id="frm_recommend" name="frm_recommend" action="" method="post">
<div class="hiddenDiv">

<div class="spLabel"><label for="txtName">' . <?php echo JText::_('YOUR_NAME'); ?> . '</label></div> [...]
... pero no funciona, me da error de código (ya he dicho que no sé mucho php). Por tanto el tema es ese: como meto una llamada como esta: <?php echo JText::_('YOUR_NAME'); ?> dentro del contenido decalarado desde la variable $content =

Espero que se entienda, muchas gracias.
  #4 (permalink)  
Antiguo 17/12/2011, 11:02
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: formulario multidioma con php

Si nos muestras el error que te muestra nos ayudaría...

Pero creo... y si le quitas <?php echo ?>
Ya estás dentro del código php... es decir:

Código PHP:
Ver original
  1. $content = ' <form class="form-validate" onSubmit="return validate(this);" id="frm_recommend" name="frm_recommend" action="" method="post">
  2. <div class="hiddenDiv">
  3.  
  4. <div class="spLabel"><label for="txtName">' . JText::_('YOUR_NAME') . '</label></div>

Saludos
  #5 (permalink)  
Antiguo 17/12/2011, 12:15
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: formulario multidioma con php

<?php $LANG=$_SESSION['LANG']; idioma($LANG); ?>

<?php

function lang($LANG){

if($LANG = 'ES'){

aqui la consulta y en la consulta le indicas que seleccione el texto de la columna ES x ejemplo y deberas crerar una tabla para idioma con su traduccion

(o la pagina donde tengas la traduccion)

y luego un echo de esa variable

}elseif($LANG='EN'){

lo mismo que en ES pero ahora EN

}Y asi cuantos idiomas kieras


}

?>

Y AL PULSAR EN LA BANDERA LE DAS LA SESSION Y SI NO HA SELECCIONADO BANDERA LE DAS TU VALOR POR DEFECTO 'TU IDIOMA VAMOS'
  #6 (permalink)  
Antiguo 17/12/2011, 12:25
Avatar de mrsorpresa  
Fecha de Ingreso: enero-2008
Mensajes: 323
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: formulario multidioma con php

Cita:
Iniciado por charlyalegret Ver Mensaje

Pero creo... y si le quitas <?php echo ?>
Ya estás dentro del código php...
Síiiiiiiiiiiiiiiiiiiiiii va perfecto!!

Era eso: la etiqueta acotando el php estaba de más, puesto que ya estaba dentro del código php.

Ahora queda así:

Código PHP:
<div class="spLabel"><label for="txtName">' . JText::_('YOUR_NAME') . '</label></div
Muchas gracias!

Etiquetas: formulario, html, multidioma, variables, usuarios
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 23:29.