мод для выбора языка форума. по умолчанию язык выбирается пользователем в личном разделе (после регистрации). но если у вас форум - двуязычный или более? а основной язык не тот, что у пользователя? поймёт ли пользователь, что необходимо делать?
мод очень лёгкий. никаких закачек файлов на форум. только правка нескольких файлов. проверил в работе на последней версии phpbb 3.0. (14).
Итак, установка:
Открыть includes/functions.php
Найти
Заменить найденное на
Код: Выделить всё
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
Заменить найденное на
Код: Выделить всё
// Begin Language Selection Mod
$nlang = strtolower(request_var('nlang', ''));
if (!empty($nlang))
{
$sql = 'SELECT lang_iso
FROM ' . LANG_TABLE . "
WHERE lang_iso = '" . $db->sql_escape($nlang) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$nlang = file_exists($user->lang_path . basename($nlang . '/')) ? $nlang : '';
if (!empty($nlang) && !empty($row))
{
if ($user->data['user_id'] == ANONYMOUS)
{
$cktime = time() + 5259488;
$user->set_cookie('nlang', $nlang, $cktime);
$config['default_lang'] = $nlang;
}
else
{
$sql_ary = array(
'user_lang' => $nlang,
);
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . $user->data['user_id'];
$db->sql_query($sql);
}
}
$redircur = build_url('nlang');
$redirect = redirect($redircur);
}
// END Language Selection Mod
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
// Begin Language Selection Mod
'LANG_ACT' => build_url('nlang'),
'S_LANG_OPTIONS' => language_select($user->data['user_lang']),
// END Language Selection Mod
Открыть includes/session.php
Найти
Заменить найденное на
Код: Выделить всё
$this->lang_name = basename($config['default_lang']);
Заменить найденное на
Код: Выделить всё
// Begin Language Selection Mod
$row = '';
$req_lang = request_var($config['cookie_name'] . '_nlang', 'X', false, true);
if ($req_lang != 'X')
{
$req_language = file_exists($this->lang_path . basename($req_lang) . '/') ? $req_lang : $config['default_lang'];
$sql = 'SELECT lang_iso
FROM ' . LANG_TABLE . "
WHERE lang_iso = '" . $db->sql_escape($req_lang) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
if (!empty($row))
{
$this->lang_name = $req_lang;
$this->data['user_lang'] = $req_lang;
}
else
{
$this->lang_name = basename($config['default_lang']);
}
// END Language Selection Mod
языковые правки
для стилей на основе prosilver
для стилей на основе subsilver2
Всё. после всех правок очистить кэш и можно пользоваться.
Стандартный вывод мода покажет полоску выбора с выпадающим списком.
примерно так:
я у себя сделал упрощённый вариант, упомянутый в оригинале статьи, который выводит просто несколько ссылок для выбора.
получилось так:
Вложение:
Комментарий к файлу: мой вариант в правом верхнем углу страницы
для него не надо языковых правок и стилевая будет такая:
Открыть styles/ваш стиль/template/overall_header.html
Найти (показана только часть строки)
Вставить после найденного
Код: Выделить всё
<body>
Вставить после найденного
Код: Выделить всё
<span style="position:fixed;top:20px;right:20px;"><a href="?nlang=en" title="{L_SELECT_LANGUAGE_EN}">EN </a> | <a href="?nlang=ru" title="{L_SELECT_LANGUAGE_HK}">RUS</a></span>
моя правка закрепляет выбор языка в правом верхнем углу.
оригинальная тема: https://phpbb.com/community/viewtopic.p ... &t=2010825