Problems with PHP's HTTP::negotiateLanguage
The latest version of PEAR’s HTTP::negotiateLanguage is improved, but still fails on one of the three simple criteria given below. My version can be found as part of the mySociety source code.
General language tags should match more specific documents
- HTTP Accept-Language: en, fr;q=0.8
- Languages of document: en-gb, fr
- Language decided by HTTP::negotiateLanguage : fr
- Language decided by my negotiateLanguage : en-gb
Accept-Language should be case-insensitive
- HTTP Accept-Language: EN;q=1, fr;q=0.8
- Languages of document: en, fr, ru
- Language decided by HTTP::negotiateLanguage : en
- Language decided by my negotiateLanguage : en
Space before a comma should be ignored
- HTTP Accept-Language: en , fr;q=0.8
- Languages of document: en, fr
- Language decided by HTTP::negotiateLanguage : en
- Language decided by my negotiateLanguage : en