Negotiate language with the user's browser through the
Accept-Language HTTP header or the user's host address.
Language codes are generally in the form "ll" for a language
spoken in only one country, or "ll-CC" for a language spoken in
a particular country. For example, U.S. English is "en-US",
while British English is "en-UK". Portugese as spoken in
Portugal is "pt-PT", while Brazilian Portugese is "pt-BR".
Two-letter country codes can be found in the ISO 3166 standard.
Quantities in the Accept-Language: header are
supported, for example:
This example negotiates with the user agent if any of the
languages, which are specified in supported,
are supported on the user's system. If the negotiation has a
positive result, the language code of the most preferred language
is printed. Otherwise the default language code (en-US) is
printed.
Being able to perform language negotiation is a big help when
developing internationalized website with pages, that are available
in more than one language. Using negotiation, the user will always
get pages in the language which he prefers. (Assuming that their
user agent is configured properly.)
Parameter
array $supported - an
associative array indexed by language codes (country codes)
supported by the application. Values must evaluate to TRUE.
string $default - the default
language that should be used if none of the other languages
are found during negotiation.
Return value
string - a language code
Note
This function can be called
statically.
The returned language is only a hint! Sending the
accepted languages by the client is optional. The language settings
of the browser do not have to meet the user's native language -
for example a german traveller in a spanish internet cafe. You
can improve your result by combining it with the result of the
Net_Geo package. Apart from that, you should
still give the user the chance to manually choose their preferred
language menu.