Ich vermute einfach das es beim ersten laden des Scriptes Probleme gibt das richtige Verzeichnis "zu nehmen", den es ist ja nicht willkürlich mal geht's mal geht es nicht, sondern immer beim ersten aufrufen der Session wenn einen neue gestartet wird.
Habe hier mal den Hauptteile des MOD's reingepackt (hoffe es geht noch grad so von der länge her, sonst muss ich es nochmal als txt anhängen).
Code: Alles auswählen
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;
}
[...]
}