Seite 1 von 1

Sprache setzen für Gäste bei 2 Domains [gelöst]

Verfasst: 29.03.2004 17:17
von Balint
Hallo!

GELÖST: Lösung siehe weiter unten!

Ich versuche eine Möglichkeit zu finden, um bei meinem Forum, worauf zwei Domains zeigen, die Sprache je nach Domain für Gäste fest einzustellen.

Ich kenne die Möglichkeiten des "Select default language" MODs von Niels (http://mods.db9.dk/viewforum.php?f=5), allerdings ist mir die Lösung über cookies viel zu unsicher, ich möchte nicht, daß das Forum in der falschen Sprache angezeigt wird.

Folgendes habe ich bisher probiert:

Code: Alles auswählen

if ( $userdata['user_id'] == ANONYMOUS )
	{	
		if ($HTTP_HOST == 'www.domain1.de' || $HTTP_HOST == 'domain1.de')
		{
			$board_config['default_lang'] = 'hungarian';
		}
		elseif ($HTTP_HOST == 'www.domain2.de' || $HTTP_HOST == 'domain2.de')
		{
			$board_config['default_lang'] = 'german';
		}
		else
		{
			$board_config['default_lang'] = 'hungarian';
		}
	}
und auch

Code: Alles auswählen

$domain = $HTTP_HOST;
if ( $userdata['user_id'] == ANONYMOUS )
	{	
	switch($domain) {
	  	case 'www.domain1.de':
	  	case 'domain1.de':
    	$board_config['default_lang'] = 'hungarian';
	    break;

		case 'www.domain2.de':
		case 'domain2.de':
		$board_config['default_lang'] = 'german';
		break;
	}
}
Diese Schnippsel habe ich die functions.php gepackt, VOR dieses Stück Code:

Code: Alles auswählen

	if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx)) )
	{
		$board_config['default_lang'] = 'english';
	}
Ich bin für jede Hilfe dankbar...

DIE LÖSUNG

Code: Alles auswählen

// Language change MOD
	if ($userdata['user_id'] == ANONYMOUS) 
	{
		if (($_SERVER['SERVER_NAME'] == 'www.domain1.de') || ($_SERVER['SERVER_NAME'] == 'domain1.de'))
		{	
			$board_config['default_lang'] = 'german';
		}
		if (($_SERVER['SERVER_NAME'] == 'www.domain2.de') || ($_SERVER['SERVER_NAME'] == 'domain2.de'))
		{	
			$board_config['default_lang'] = 'hungarian';
		}
	}
// Language Change MOD end
Die Variable $HTTP_HOST wurde durch $_SERVER['SERVER_NAME'] ersetzt, schon geht's... oder waren es doch die fehlenden nochmaligen Klammern um die Vergleiche? Ich probier's jetzt nicht mehr aus...


Viele Grüße,
Bálint

Verfasst: 29.03.2004 19:10
von Mister_X
und was funktioniert an dem von dir geposteten Code jetzt nicht? Welche Sprache wird dir angezeigt?

Verfasst: 30.03.2004 00:11
von Balint
Hallo!

Das Wichtigste vergessen *vorStirnschlag*: es wird immer nur ungarisch angezeigt.

Ich habe mit dem Setzen von

Code: Alles auswählen

echo $HTTP_HOST;
in der page_header.php überprüft, ob die Variable unterstützt wird/funktioniert: geht tadellos.


Viele Grüße,
Bálint

Verfasst: 31.03.2004 01:04
von Balint
*bump*

Das Problem ist noch nicht gelöst...

ES MUSS an der Domainüberprüfung liegen,denn

Code: Alles auswählen

// Language change MOD
	if ($userdata['user_id'] == ANONYMOUS)
	{	
		$board_config['default_lang'] = 'german';
	}
geht ohne Probleme...

Ich habe sogar schon sowas versucht:

Code: Alles auswählen

// Language change MOD
	if (($userdata['user_id'] == ANONYMOUS) && ($HTTP_HOST == "www.domain1.de"))
	{	
		$board_config['default_lang'] = 'german';
	}
die Schachtelung weggelassen und die zwei Sachen oben zusammengefaßt. Ganz so neu bin ich auch nicht mehr im Geschäft, aber das bringt mich zum Verzweifeln... :cry:

Könnte bitte jemand eine zündende Idee haben? :) Bitte!

Viele Grüße,
Bálint

Verfasst: 31.03.2004 01:29
von Balint
Hallo!

Thread kann geschlossen werden. Entweder bin ich zu doof oder php.net kann sich nicht ausdrücken... *g*

Lösung siehe erster Beitrag!


Grüße,
Bálint

Verfasst: 20.08.2005 14:13
von mgutt
zwar nicht getestet, aber sollte auch funktionieren:

Code: Alles auswählen

//
// Language change MOD
//
if ($userdata['user_id'] == ANONYMOUS)
{

$server_lang_name = $_SERVER['SERVER_NAME'];

	if (!preg_match("/(.de|.ch|.at)/i", $server_lang_name))
	{
		$board_config['default_lang'] = 'english';
	}
}
//
// Language Change MOD end
//
Erklärung:

Bei allen Domains, außer .de, .ch oder .at wird Englisch als Standardsprache vorgezogen.

Das setzt voraus, dass die Standardsprache des Forums Deutsch ist.