Seite 1 von 3
Quickly Change Your Language
Verfasst: 06.11.2007 23:33
von Swat
Hi,
habe diesen Mod verbaut, nun bekomme ich immer einen Fehlermeldung beim starten einer Session. Leider konnte mir bei phpBB.com nicht geholfen werden (da keine Antwort). Ich hoffe hier hat jemand eine Idee woran es liegen könnte.
Link zum Themen:
*klick*
Beim ersten Besuch einer Session erhalte ich folgende Meldung
Language file /common.php couldn't be opened.
Da der Mod ja in der Session.php verbaut ist um die Language für die Session zu bestimmen vermute ich das es beim ersten laden noch nicht so klappt wie es soll. Nach drücken von F5 läuft alles super und es klappt dann auch weiterhin ohne Problem.
Wäre echt super wenn sich jemand das mal anschauen könnte und ggf. einen Idee hat wie man das umgehen kann, denn so erfüllt der Mod seine Aufgabe (nach F5) perfekt.
Danke
Verfasst: 08.11.2007 08:57
von djchrisnet
hast du den angegebenen Dateipfad zur common.php mal überprüft, ob die richtig ist. ich kann mir nicht vorstellen, das die common.php (was ja nunmal die meisten sprachvariablen enthält) mal da ist und mal nicht verfügbar. Also angegebenen dateipfad zur commom.php checken, bzw, mal ausm code raussuchen und posten.
Verfasst: 08.11.2007 19:32
von Swat
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;
}
[...]
}
Verfasst: 12.11.2007 07:54
von Twisterchen
So hallo
Ich switch mal von dem
Thread hier dazu, denn ich bin auf der gleichen suche sowas in das PHPBB3 einzufügen.
Ich bin leider noch nicht dazu gekommen den MOD mal selber einzubauen aber gibt es schon erfolge ?
Währe Super
Gruss
Twister
Verfasst: 13.11.2007 18:41
von Twisterchen
Leider klappt der MOD bei mir auch nicht währe SUPER wenn hier jemand mal einen Blick darauf werfen könnte das ist echt ein Feature das im phpbb fehlt.
Vielen Dank
Verfasst: 16.11.2007 21:40
von Swat
*schieb*
Verfasst: 20.11.2007 00:08
von Swat
Ich glaub ich habe eine Lösung, ist wohl nicht die beste und nicht die schönste aber mir klappt es ...
Finde das
ersetze mit dem
Code: Alles auswählen
if ($userdata['user_id'] == ANONYMOUS && $userdata['session_lang'] == '')
{
$lang = request_var('lang', 'de', false, true);
}
else
{
$lang = request_var('lang', '', false, true);
}
das 'de' kann durch einen beliebige installierte Sprache ersetzt werden, diese wird dann für den "Gast" als erste angezeigt
Verfasst: 21.11.2007 17:55
von Twisterchen
und in welcher datei hast du das gemacht ?
Gruss
Twister
Verfasst: 22.11.2007 20:09
von Swat
Twisterchen hat geschrieben:und in welcher datei hast du das gemacht ?
Gruss
Twister
sorry ... includes/session.php da wo der Mod auch rein muss

Verfasst: 23.11.2007 14:01
von Swat
und läuft es? würde mich mal interessieren ob es läuft oder nur ein glückstreffer bei mir war
