FAQ 7: ¿Y si quiero que un usuario no registrado pueda elegir su idioma?
Aplicación: Foro phpBB (
www.phpbb.com)
Respuesta:
Para ello existe una modificación del phpBB. Te cuento cómo instalarla:
Abrir el archivo common.php y buscar:
Código PHP:
$board_config[$row['config_name']] = $row['config_value'];
}
}
Después de eso, añadimos:
Código PHP:
if ($language)
{
$board_config['default_lang'] = $language;
setcookie('default_lang',$language , (time()+60*60*12), $board_config['cookie_path'],
$board_config['cookie_domain'], $board_config['cookie_secure']);
} else if (isset($HTTP_COOKIE_VARS['default_lang']) )
$board_config['default_lang'] = $HTTP_COOKIE_VARS['default_lang'];
Guardamos el archivo y abrimos el index.php, dentro del cual buscamos:
Código PHP:
include($phpbb_root_path . 'common.'.$phpEx);
Y después añadimos:
Código PHP:
include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);
Ahora buscamos:
Código PHP:
'FORUM_LOCKED_IMG' => $images['forum_locked'],
Y a continuación añadimos:
Código PHP:
'LANGUAGE_SELECT' => language_select($board_config['default_lang'], 'language'),
'L_SELECT_LANG' => $lang['Board_lang'],
'L_CHANGE_NOW' => $lang['Go'],
Y guardamos el archivo. A continuación abrimos el archivo templates/XXXX/index_body.tpl y buscamos esto (puede variar según el template):
Código PHP:
<!-- BEGIN switch_user_logged_out -->
<form method="post" action="{S_LOGIN_ACTION}">
<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
<tr>
<td class="catHead" height="28"><a name="login"></a><span class="cattitle">{L_LOGIN_LOGOUT}</span></td>
</tr>
<tr>
<td class="row1" align="center" valign="middle" height="28"><span class="gensmall">{L_USERNAME}:
<input class="post" type="text" name="username" size="10" />
{L_PASSWORD}:
<input class="post" type="password" name="password" size="10" />
{L_AUTO_LOGIN}
<input class="text" type="checkbox" name="autologin" />
<input type="submit" class="mainoption" name="login" value="{L_LOGIN}" />
</span> </td>
</tr>
</table>
</form>
<!-- END switch_user_logged_out -->
Y lo reemplazamos por esto:
Código PHP:
<!-- BEGIN switch_user_logged_out -->
<form method="post" action="{S_LOGIN_ACTION}">
<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
<tr>
<td class="catHead" height="28"><a name="login"></a><span class="cattitle">{L_LOGIN_LOGOUT}</span></td>
</tr>
<tr>
<td class="row1" align="center" valign="middle" height="28"><span class="gensmall">{L_USERNAME}:
<input class="post" type="text" name="username" size="10" />
{L_PASSWORD}:
<input class="post" type="password" name="password" size="10" />
{L_AUTO_LOGIN}
<input class="text" type="checkbox" name="autologin" value="ON" />
<input type="submit" class="mainoption" name="login" value="{L_LOGIN}" />
</span> </td>
</tr> </form>
<tr>
<td class="catHead" height="28"><a name="login"></a><span class="cattitle">{L_SELECT_LANG}</span></td>
</tr>
<tr>
<td class="row1" align="center" valign="middle" height="28"><span class="gensmall">
<form method="post" action="{U_INDEX}">{LANGUAGE_SELECT}
<input type="submit" class="mainoption" name="cangenow" value="{L_CHANGE_NOW}" />
</span></td>
</tr> </form>
</table>
<!-- END switch_user_logged_out -->
Fíjate en lo que añadimos en la segunda parte. Pusimos un campo select para que el usuario elija idioma. Puedes cambiar este formulario de sitio si, p. ej., quieres ponerlo arriba en vez de abajo...
Lo que hemos hecho es crear una cookie para que el usuario visite nuestra página en el idioma elegido. Sólo funcionará en el ordenador de esa persona (el resto de visitas verán el foro en el idioma preestablecido). La cookie dura 12 horas, pero si quieres cambiar la duración, edita lo de 60*60*12 y pon la duración (en segundos) que quieras.
Saludos