У гостя есть язык по умолчанию.
Как бы сделать авто-определение?
Чтобы для Россиян был русский, а для остальных английский.
Язык для гостя автоматом
-
- phpBB 1.0.0
- Сообщения: 7
- Стаж: 17 лет
Re: Язык для гостя автоматом
Отвечаю на свой вопрос:
Я взял начало
Select default language
http://mods.db9.dk
Этого достаточно чтобы мод работал.
Дальше я просто разместил в шапочке пару кнопок "Русский" и "Английский".
Я взял начало
Select default language
http://mods.db9.dk
Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------------
#
common.php
#
#-----[ FIND ]------------------------------------------------
#
$board_config[$row['config_name']] =
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Start add - Select default language MOD
if( !isset($board_config['real_default_lang']) )
{
$board_config['real_default_lang'] = $board_config['default_lang'];
}
$language = ( isset($HTTP_POST_VARS['language']) ) ? $HTTP_POST_VARS['language'] : $HTTP_GET_VARS['language'];
if ($language)
{
$language=trim(strip_tags($language));
$board_config['default_lang'] = $language;
setcookie($board_config['cookie_name'].'_default_lang',$language , (time()+21600), $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
} else
{
if (isset($HTTP_COOKIE_VARS[$board_config['cookie_name'].'_default_lang']) )
{
$board_config['default_lang']=$HTTP_COOKIE_VARS[$board_config['cookie_name'].'_default_lang'];
} else
{
$dir = opendir($phpbb_root_path.'language');
$lang_d = array();
while (false !== ($file = readdir($dir)))
{
if ( ereg("^lang_", $file) && !is_file($dirname . "/" . $file) && !is_link($dirname . "/" . $file) )
{
$filename = trim(str_replace("lang_", "", $file));
$displayname = preg_replace("/^(.*?)_(.*)$/", "\\1 [ \\2 ]", $filename);
$displayname = preg_replace("/\[(.*?)_(.*)\]/", "[ \\1 - \\2 ]", $displayname);
$lang_d[$displayname] = '1';
}
}
closedir($dir);
@asort($lang_d);
@reset($lang_d);
while ( list($displayname, $filename) = @each($lang_d) )
{
if (strpos($displayname,$_SERVER['HTTP_ACCEPT_LANGUAGE'])===0)
{
$language = $displayname;
$board_config['default_lang'] = $language;
break;
}
}
}
}
// End add - Select default language MOD
Дальше я просто разместил в шапочке пару кнопок "Русский" и "Английский".
Код: Выделить всё
<form method="post" action="ссылка на текущую страницу">
<INPUT NAME= "language" type="hidden" value="russian" />
<input type="image" src="http://picture.gif" name="tupica" />
</form>
-
- Former team member
- Сообщения: 3942
- Стаж: 19 лет 10 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Re: Язык для гостя автоматом
В целом подход верный, я сделал примерно то же самое. Но обратите внимание, корректно будет работать только для IE. В Опере и Лисе переменная $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'] может иметь другой вид (проверено) и условие не сработает.
Вот мой фрагмент
Вот мой фрагмент
Код: Выделить всё
$accept_lang = $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'];
$dirname = $phpbb_root_path . 'language';
$dir = opendir($dirname);
$lang_d = array();
while (false !== ($file = readdir($dir)))
{
if ( ereg('^lang_', $file) && !is_file($dirname . '/' . $file) && !is_link($dirname . '/' . $file) )
{
$displayname = preg_replace('/^(.*?)_(.*)$/', "\\1 [ \\2 ]", trim(str_replace('lang_', '', $file)));
$displayname = preg_replace('/\[(.*?)_(.*)\]/', "[ \\1 - \\2 ]", $displayname);
$lang_d[$displayname] = '1';
}
}
closedir($dir);
@asort($lang_d);
@reset($lang_d);
while ( list($displayname, $filename) = @each($lang_d) )
{
if ((strpos($displayname, $accept_lang) === 0) || (strpos($accept_lang, substr($displayname, 0, 2)) === 0))
{
$board_config['default_lang'] = $displayname;
break;
}
}
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
-
- phpBB 1.0.0
- Сообщения: 7
- Стаж: 17 лет
Re: Язык для гостя автоматом
Вы правы!
Вот ответ Мазилы: ru,en-us;q=0.7,en;q=0.3
Internet Explorer: ru
Ещё можно прямо в overall_header.tpl через page_header.php вот такой drop-down box приделать:
Вот ответ Мазилы: ru,en-us;q=0.7,en;q=0.3
Internet Explorer: ru
Ещё можно прямо в overall_header.tpl через page_header.php вот такой drop-down box приделать:
Код: Выделить всё
function guest_language_select($default, $select_name = "language", $dirname="language")
{
$lang_select = language_select($default);
$lang_select = str_replace('<select', '<select onChange="this.form.submit()"', $lang_select);
return $lang_select;
}