Jeśli chodzi o odczytywanie z nagłówka accept-language, to polecam gotowe klasy. Pełno tego na necie. Ten nagłówek nie jest łatwy do parsowania, łatwo zrobić błędy przez dziką specyfikację RFC:
http://www.w3.org/Protocols/rfc2616/rfc261...14.html#sec14.4One mogą mieć ustawione priorytety, nie muszą być w kolejności od najważniejszego, a nawet jeśli często tak jest, to przy najprostszym sprawdzeniu, tj. dwie pierwsze litery ciągu /zakładając, że są jezyki ang i pol, przy innym języku domyślnie włącza się ang/, może być tak:
de_DE, pl_PL;q=1, fr_FR;q=0.7
Z tego wynika, że użytkownik preferuje na równi niemiecki i polski, potem francuski, a angielskiego w ogóle. Strona przeczyta dwa pierwsze znaki - "de", a że nie ma takiego języka to zaoferuje angielski, zamiast polskiego. Rozwiązanie podane wyżej jest uniwersalne, bo skrypt zgaduje język /lub nie w wersji B/, ale nie przywiązuje na siłę do niego.
Piszę o tym, bo w wielu miejscach spotykam się właśnie ze sposobem "na dwa pierwsze znaki", a jak widać to nie zadziała nie tylko przy przemieszanej kolejności, ale też w dobrej. No i jakbyś na coś takiego trafił, to lepiej nie korzystać.