Sprache des Benutzers oder Browsers erkennen (PHP)

Es gibt eine Menge Scripts im Web, die die Brwosersprache mithilfe von PHP erkennen lassen wollen. Die meisten davon sind recht zweckmäßig, allerdings vernachlässigen sie einige Fälle. Zum Beispiel gehen diese Scripts oft davon aus, dass die erste übermittelte Sprache in den Accept-Headers auch die bevorzugte Sprache ist. Das muss aber nicht zwingend sein. Zudem werden auch Gewichtungen oft nicht beachtet.

Mit der unten stehenden Funktion ermitteln Sie zuverlässig die bevorzugte Sprache des Nutzers, sofern der Accept-Language-Header gesetzt ist. Die Funktion beachtet die Gewichtung (sofern nicht vorhanden wird sie gemäß RFC 2616 auf 1.0 gesetzt) und die Reihenfolge spielt keine Rolle.

Die Funktion gibt immer die beiden Buchstaben zurück, die die Sprache bestimmen. Also beispielsweise „de“ wenn der Accept-Language-Header „de-de“ oder auch „de“ als höchste Gewichtung gesetzt hat. Wenn Sie die volle Bezeichnung wünschen, entfernen Sie einfach die Substr-Funktion in Zeile 16.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * Detect Browser Language
 */
function getPreferredLanguage(){
 
	$acceptedLanguages = @explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	$preferredLanguage = null;
	$maxWeight = 0.0;
 
	foreach((array)$acceptedLanguages as $acceptedLanguage){
 
		$weight = (float)@substr(explode(';', $acceptedLanguage)[1], 2);
		if(!$weight){$weight = 1.0;}
 
		if($weight > $maxWeight){
			$preferredLanguage =  substr($acceptedLanguage, 0, 2);
			$maxWeight = $weight;
		}
	}
 
	return $preferredLanguage;
}

Kommentare wieder aktiviert

Nachdem ich mit Spam überflutet wurde (13k Nachrichten in 2 Wochen) und die Gegenmaßnahmen nicht fruchteten, hatte ich das Kommentar-System deaktiviert. Ich starte jetzt einen neuen Versuch – diesmal mit Disqus – und die Kommentarfunktion ist bis auf weiteres wieder aktiviert. Mal sehen, wie es läuft.

Happy Commenting.

Drupal installiert

Ich habe mich endlich dazu durchringen können, meine Website neu aufzusetzen. Ist ja schlimm wenn man als Entwickler mit inzwischen gut 7 Jahren Erfahrung in Web-Programmierung nicht einmal eine anständige Seite hat. Nachdem ich etwas überlegt hatte fiel meine Wahl auf ein CMS als Plattform. Dann muss man nicht jedes Mal von Hand das HTML der Seiten ändern wenn man etwas hinzufügt etc., zumal ich auch gern mehrsprachige Artikel anbieten will.

Die Wahl des Content-Management-Systems fällt schon viel schwerer – schließlich gibt es gefühlte 50.000 davon. Joomla, Typo3 und WordPress kannte ich schon. Jedes dieser Systeme hat irgendwelche kleinen Macken bzw. bei Typo stößt mich einfach der gewaltige Aufwand ab. WordPress ist wiederum nicht so gut geeignet um statische Websites zu präsentieren, obwohl das mit Version 2.8 schon ganz gut klappt. Um mal was Neues zu probieren habe ich mich dann für Drupal – ebenfalls eins der bekanntesten 4 (Typo3, Joomla, WP und Drupal) – entschieden. Die Installation lief leicht von der Hand, das System ist danach erfreulich schnell (deutlich schneller als WP, zu Joomla fehlen mir auf meinem eigenen Server die Vergleichsdaten). Lediglich eine .htaccess musste ich nach der (direkt an der richtigen Stelle verlinkten) Anleitung erstellen schon funktionierte auch SEO. Das einzige was mich bisher etwas irritiert ist, dass ich zwar Deutsch bei der Installation auswählen konnte, jetzt aber trotzdem alles auf Englisch ist… na ja man kann nicht alles haben 😉