??? ??? ??? ??????? ??????? ???? ??? ?????
???? ??? ??? ????? ??????? ??? ??? ????? ?? phpmyadmin
كود: تحديد الكل
ALTER TABLE phpbb_sessions ADD session_lang varchar(30) DEFAULT 'en' NOT NULL;
???? : includes/sessions.php
???? ?? :
كود: تحديد الكل
'session_viewonline' => ($viewonline) ? 1 : 0,
??? ?????
كود: تحديد الكل
'session_lang' => (string) lang_selector::guess_lang($this->data),
???? ??
كود: تحديد الكل
if ($this->data['user_id'] != ANONYMOUS)
{
$this->lang_name = (file_exists($phpbb_root_path . 'language/' . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($config['default_lang']);
$this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/';
$this->date_format = $this->data['user_dateformat'];
$this->timezone = $this->data['user_timezone'] * 3600;
$this->dst = $this->data['user_dst'] * 3600;
}
else
{
$this->lang_name = basename($config['default_lang']);
$this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/';
$this->date_format = $config['default_dateformat'];
$this->timezone = $config['board_timezone'] * 3600;
$this->dst = $config['board_dst'] * 3600;
/**
* If a guest user is surfing, we try to guess his/her language first by obtaining the browser language
* If re-enabled we need to make sure only those languages installed are checked
* Commented out so we do not loose the code.
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$accept_lang_ary = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach ($accept_lang_ary as $accept_lang)
{
// Set correct format ... guess full xx_YY form
$accept_lang = substr($accept_lang, 0, 2) . '_' . strtoupper(substr($accept_lang, 3, 2));
$accept_lang = basename($accept_lang);
if (file_exists($phpbb_root_path . 'language/' . $accept_lang . "/common.$phpEx"))
{
$this->lang_name = $config['default_lang'] = $accept_lang;
$this->lang_path = $phpbb_root_path . 'language/' . $accept_lang . '/';
break;
}
else
{
// No match on xx_YY so try xx
$accept_lang = substr($accept_lang, 0, 2);
$accept_lang = basename($accept_lang);
if (file_exists($phpbb_root_path . 'language/' . $accept_lang . "/common.$phpEx"))
{
$this->lang_name = $config['default_lang'] = $accept_lang;
$this->lang_path = $phpbb_root_path . 'language/' . $accept_lang . '/';
break;
}
}
}
}
*/
}
?????? ??
كود: تحديد الكل
lang_selector::set_user_lang($this);
if ($this->data['user_id'] != ANONYMOUS)
{
$this->date_format = $this->data['user_dateformat'];
$this->timezone = $this->data['user_timezone'] * 3600;
$this->dst = $this->data['user_dst'] * 3600;
}
else
{
$this->date_format = $config['default_dateformat'];
$this->timezone = $config['board_timezone'] * 3600;
$this->dst = $config['board_dst'] * 3600;
}
???? ??
??? ?????
كود: تحديد الكل
class lang_selector
{
function guess_lang($userdata)
{
global $phpbb_root_path, $phpEx, $config, $db;
$sql = 'SELECT *
FROM ' . LANG_TABLE;
$result = $db->sql_query($sql, 3600);
$languages = array();
while ($row = $db->sql_fetchrow($result))
{
$languages[$row['lang_dir']] = $row;
}
if ($userdata['user_id'] == ANONYMOUS)
{
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $lang)
{
// Set correct format ... guess full xx_YY form
$lang = substr($lang, 0, 2) . '_' . strtoupper(substr($lang, 3, 2));
if (isset($languages[basename($lang)]))
{
return $lang;
}
// No match on xx_YY so try xx
$lang = substr($lang, 0, 2);
if (isset($languages[basename($lang)]))
{
return $lang;
}
}
}
}
else if (isset($languages[$userdata['user_lang']]))
{
return $userdata['user_lang'];
}
return basename($config['default_lang']);
}
function set_user_lang(&$user)
{
global $phpbb_root_path;
$user->lang_name = lang_selector::get_session_lang($user->data);
$user->lang_path = "{$phpbb_root_path}language/{$user->lang_name}/";
if ($user->lang_name != $userdata['user_lang'] && $userdata['user_id'] != ANONYMOUS)
{
lang_selector::change_user_lang($user->data['user_id'], $user->lang_name);
}
}
function get_session_lang($userdata)
{
global $phpbb_root_path, $phpEx;
$lang = request_var('lang', '', false, true);
if (empty($lang) || $lang == $userdata['session_lang'])
{
return $userdata['session_lang'];
}
if (!file_exists("{$phpbb_root_path}language/$lang/common.$phpEx"))
{
return $userdata['session_lang'];
}
lang_selector::change_session_lang($userdata['session_id'], $lang);
if ($userdata['user_id'] != ANONYMOUS)
{
lang_selector::change_user_lang($userdata['user_id'], $lang);
}
return $lang;
}
function change_session_lang($session_id, $lang)
{
global $db;
$sql = 'UPDATE ' . SESSIONS_TABLE . '
SET session_lang = "' . $lang . '"
WHERE session_id = "' . $session_id . '"';
$db->sql_query($sql);
}
function change_user_lang($user_id, $lang)
{
global $db;
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_lang = "' . $lang . '"
WHERE user_id = ' . $user_id;
$db->sql_query($sql);
}
}
? ??? ??? ??????? lang=ar , lang=en
? ????? ???????
?? ???? ??????