Switch Language auch für Registrierte

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Switch Language auch für Registrierte

Beitrag von Faser »

Hallo nochmal!

Kennt jemand einen switch_language-Mod, der nicht nur bei Gästen funktioniert? Jeder soll die Language im Header über zwei Flaggen ändern können.

Mit dem bisherigen Mod habe ich zwar ein wenig rumgespielt, schaffe es aber nicht, dass die Sprache nach dem Login erhalten bleibt...

Vielen Dank schon mal für Antworten!!
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Beitrag von Faser »

keiner 'ne Idee?
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Benutzeravatar
Chaze
Ehemaliges Teammitglied
Beiträge: 2035
Registriert: 31.01.2003 12:20
Wohnort: Hannover

Beitrag von Chaze »

Das Problem wird sein, dass auf jeder Seite in der die User-Infos abgerufen werden die Sprache wieder auf den Wert in der DB gesetzt wird. Du müßtest eigentlich 'nur' einen Link setzen um die Sprache für den jeweiligen User in der DB zu ändern.
by[t]e,
Chaze
!!!--> Kein Support per PN oder Mail <--!!!
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Beitrag von Faser »

Jo, ich hatte es mal mit folgendem Code in der page_header.php versucht:

Code: Alles auswählen

//
// Switch language
if ( isset($lang) )
{
	$sql = "UPDATE " . USERS_TABLE . "
		SET user_lang = german
		WHERE user_id = $userdata[user_id]";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
	}
}
// Switch language
//
Sollte ja dann eigentlich immer, wenn die Variable $lang gesetzt wurde (z.B. beim Dateinamen: index.php?lang=german), die USERS_TABLE updaten und user_lang auf die Variable setzen...

Allerdings passiert folgendes: Sobald man auf der Seite rumklickt, springt die Sprache auf Englisch, egal, ob etwas angegeben wurde, oder nicht :-|

Hat jemand 'ne Idee, was da falsch sein könnte??
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

sicher ich würde so eine abfrage eher in die common oder in die init_userprefs funktion in der functions.php einbauen...

ah
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Beitrag von Faser »

Hmm, aus irgendeinem mir unerdenklichen Grunde bekomme ich dann einen Parse Error:
Parse error: parse error in /var/www/html/i-study/forum/includes/functions.php on line 227
in folgender Zeile:

Code: Alles auswählen

	   $sql = "UPDATE " . USERS_TABLE . " 
:-?
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

machs doch einfach so:
function init_userprefs($userdata)
{
global $board_config, $theme, $images;
global $template, $lang, $phpEx, $phpbb_root_path, $db, $HTTP_GET_VARS;

if ( $userdata['user_id'] != ANONYMOUS )
{
if ( !empty($userdata['user_lang']))
{
$board_config['default_lang'] = $userdata['user_lang'];
}
if ( !empty($HTTP_GET_VARS['lang']) )
{
$board_config['default_lang'] = $HTTP_GET_VARS['lang'];
$sql = "UPDATE ". USER_TABLE . "
SET user_lang = '" . $HTTP_GET_VARS['lang'] . "'
WHERE user_id = '" . $userdata['user_id'] . "'";
if ( !($db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update user language');
}
}
das rote ist neu

ah
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Beitrag von Faser »

Vielen Dank, so funktioniert's ;-)

Für alle, die nicht ganz mitgekommen sind: Nur die komplette function init_userprefs in der includes/functions.php mit der hier ersetzen:

Code: Alles auswählen

//
// Initialise user settings on page load
function init_userprefs($userdata) 
{ 
	global $board_config, $theme, $images; 
	global $template, $lang, $phpEx, $phpbb_root_path, $db, $HTTP_GET_VARS; 

	if ( $userdata['user_id'] != ANONYMOUS ) 
	{ 
		if ( !empty($userdata['user_lang'])) 
		{ 
			$board_config['default_lang'] = $userdata['user_lang']; 
		} 

		//
		// Switch language
		if ( !empty($HTTP_GET_VARS['lang']) ) 
		{ 
			$board_config['default_lang'] = $HTTP_GET_VARS['lang']; 
			$sql = "UPDATE ". USERS_TABLE . " 
				SET user_lang = '" . $HTTP_GET_VARS['lang'] . "' 
				WHERE user_id = '" . $userdata['user_id'] . "'"; 
			if ( !($db->sql_query($sql)) ) 
			{ 
				message_die(GENERAL_ERROR, 'Could not update user language'); 
			} 
		}
		// Switch language
		//
		
		if ( !empty($userdata['user_dateformat']) )
		{
			$board_config['default_dateformat'] = $userdata['user_dateformat'];
		}

		if ( isset($userdata['user_timezone']) )
		{
			$board_config['board_timezone'] = $userdata['user_timezone'];
		}
	}

	if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx)) )
	{
		$board_config['default_lang'] = 'english';
	}

	include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx);

	if ( defined('IN_ADMIN') )
	{
		if( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.'.$phpEx)) )
		{
			$board_config['default_lang'] = 'english';
		}

		include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx);
	}

	include_attach_lang();

	//
	// Set up style
	//
	if ( !$board_config['override_user_style'] )
	{
		if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
		{
			if ( $theme = setup_style($userdata['user_style']) )
			{
				return;
			}
		}
	}

	$theme = setup_style($board_config['default_style']);

	return;
}
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“