kostenloser Webspace werbefrei: lima-city


PHP-Sprachweiche

lima-cityForumSonstigesSpam und sonstiges Unvergütetes

  1. Autor dieses Themas

    coder-0x1

    Kostenloser Webspace von coder-0x1, auf Homepage erstellen warten

    coder-0x1 hat kostenlosen Webspace.

    Hallo zusammen,
    ich hab für meine Webside eine Sprachweiche geschrieben.
    Sie funktioniert sehr gut (wie ich finde) und wollte sie euch nicht vorenthalten,
    da vielleich jmd. anderes auch mal eine Sprachweiche sucht...

    Also hier der tag/code">Code:
    <?php
    	// Array mit den verfügbaren Sprachen
    	// Die Sprachen sind die ISO 639-1 Sprachtags
    	// Liste der ISO 639-1 und ISO 639-2 Sprachtags auf:
    	// http://www.loc.gov/standards/iso639-2/php/code_changes.php
    	$languages = array('de', 'en');
    	// Mit GET abfragen, ob eine Sprache angegeben wurde
    	$lang = $_GET["lang"];
    	// prüfen, ob die Sprache verfügbar ist
    	if( $lang == "" || !in_array( $lang, $languages ) )
    	{
    		// wenn nicht, dann das HTTP-Sprachfeld auslesen
    		$langs = " ".$_SERVER['HTTP_ACCEPT_LANGUAGE'];
    		// die gesendeten Sprachtags ermitteln (bevorzugte Sprachen des Browsers)
    		foreach($languages as $code)
    		{
    			$pos = strpos($langs, $code);
    			if(intval($pos) != 0)
    			{
    				$position[$code] = intval($pos);
    			}
    		}
    		// eine default-Sprache der Webside festlegen
    		$bestLanguage = 'en';
    		// den ersten unterstützten Sprachtag ermitteln
    		// sollte keine Sprache unterstützt werden, so wird $bestLanguage nicht überschrieben
    		if(!empty($position))
    		{
    			foreach($languages as $code)
    			{
    				if(isset($position[$code]) && $position[$code] == min($position))
    				{
                        $bestLanguage = $code;
    				}
    			}
    		}
    		// das vom Browser angefragte Script auslesen
    		$url = $_SERVER["REQUEST_URI"];
    		// prüfen, ob schon GET-Felder vorhanden sind 
    		$pos = strpos( $url, "?" );
    		$questionmarkAdded = false;
    		if( $pos === false )
    		{
    			// wenn nicht, dann ein "?" an die URL anhängen
    			$url .= "?";
    			$questionmarkAdded = true;
    		}
    		// prüfen, ob das "lang" Feld schon verhanden ist
    		if( preg_match( "/lang=../" , $url ) == 1 )
    		{
    			// versuchen dieses Feld zu überschreiben
    			$buffer = preg_replace( "/lang=../", "lang=$bestLanguage", $url );
    			if( $buffer == NULL || strlen( $lang ) != 2 )
    			{
    				// wenn das Überschreiben fehlgeschalgen ist
    				// oder das lang-Tag zu viele Zeichen hat,
    				// dann den an die URL angehängten String neu erstellen
    				$buffer = "";
    				foreach( $_GET as $key => $value )
    				{
    					if( $key == "lang" )
    					{
    						$buffer .= "$key=$bestLanguage&";
    					}
    					else
    					{
    						$buffer .= "$key=$value&";
    					}
    				}
    				// letztes Zeichen entfernen, da es ein überflüssiges "&" ist
    				$buffer = substr( $buffer, 0, -1 );
    				// den erstellten string an die URL anhängen
    				$url = substr( $url, 0, strpos( $url, "?" ) + 1 ) . $buffer;
    			}
    			else
    			{	
    				// wenn das Überschreiben erfolgreich war, dann $buffer in $url schreiben
    				$url = $buffer;
    			}
    		}
    		else
    		{
    			// ist kein "lang" Feld vorhanden
    			if( !$questionmarkAdded ) 
    			{
    				// wenn kein "?" an die URL angehängt wurde ein "&" anhängen
    				$url .= "&";
    			}
    			// "lang" Feld an die URL anhängen
    			$url .= "lang=$bestLanguage";
    		}
    		// Browser auf die neue URL umleiten
    		header( "Location: $url" );
    		// und script beenden
    		exit;
    	}
    	// hier oder nach dem schließenden PHP-Tag kommt nun der normale Seitentext
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!