На интернациональных форумах может оказаться востребованной функция смены языков незарегистрированными пользователями. Добавляя эту возможность, вы существенно облегчите доступ к вашему форуму иностранцам. Им не придется прибегать к использованию переводчиков и других онлайн/оффлайн средств для успешной ориентации по вашему форуму. Ведь даже самое простое действие – регистрация, может вызвать затруднения.
Установка
Стандартными возможностями форума эту функцию не реализовать, придется вносить необходимые изменения в файлы. Перед началом, не забудьте сделать резервные копии изменяемых файлов.
Открываем файл: ./index.php и находим строки:
//--------------------------------
// Did we choose a language?
//--------------------------------
if ( (isset($ipsclass->input['setlanguage']) AND $ipsclass->input['setlanguage']) AND (isset($ipsclass->input['langid']) AND $ipsclass->input['langid']) AND $ipsclass->member['id'] )
{
if ( is_array( $ipsclass->cache['languages'] ) and count( $ipsclass->cache['languages'] ) )
{
foreach( $ipsclass->cache['languages'] as $data )
{
if ( $data['ldir'] == $ipsclass->input['langid'] )
{
$ipsclass->DB->do_update( 'members', array( 'language' => $data['ldir'] ), 'id='.$ipsclass->member['id'] );
$ipsclass->member['language'] = $data['ldir'];
}
}
}
}
Заменяем их на:
//--------------------------------
// Did we choose a language?
//--------------------------------if ( (isset($ipsclass->input['setlanguage']) AND $ipsclass->input['setlanguage']) AND (isset($ipsclass->input['langid']) AND $ipsclass->input['langid']) )
{
if ( is_array( $ipsclass->cache['languages'] ) and count( $ipsclass->cache['languages'] ) )
{
foreach( $ipsclass->cache['languages'] as $data )
{
if ( $data['ldir'] == $ipsclass->input['langid'] )
{
if( $ipsclass->member['id'] == 0 )
{
$ipsclass->my_setcookie( ‘language’, $data['ldir'] );}
else
{
$ipsclass->DB->do_update( ‘members’, array( ‘language’ => $data['ldir'] ), ‘id=’.$ipsclass->member['id'] );
}
$ipsclass->member['language'] = $data['ldir'];
}
}
}
}
Сохраняем внесенные изменения и закрываем файл ./index.php.
Открываем следующий файл ./sources/ipsclass.php и находим строку:
$this->lang_id = isset($this->member['language']) ? $this->member['language'] : $this->vars['default_language'];
Перед ней вставляем код:
if( $this->member['id'] == 0 )
{
$this->member['language'] = $this->my_getcookie( 'language' );
}
Сохраняем внесенные изменения и закрываем файл ./sources/ipsclass.php.
Открываем следующий файл ./sources/classes/class_display.php и находим строки:
//-----------------------------------------
// Showing skin jump?
//-----------------------------------------
if ( $this->ipsclass->member['id'] > 0 )
{
$lang_jump = $this->ipsclass->compiled_templates['skin_global']->global_lang_chooser( $this->_build_language_list() );
}
else
{
$lang_jump = "";
}
Заменяем их на:
//-----------------------------------------
// Showing skin jump?
//-----------------------------------------
$lang_jump = $this->ipsclass->compiled_templates['skin_global']->global_lang_chooser( $this->_build_language_list() );
Сохраняем внесенные изменения и закрываем файл ./sources/classes/class_display.php. После проделанных действий, гостям будет доступна функция выбора языка.
Источник: ipb-faq.ru