Locale::acceptFromHttp

locale_accept_from_http

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::acceptFromHttp -- locale_accept_from_httpTenta descobrir a melhor localidade disponível baseado no cabeçalho HTTP "Accept-Language"

Descrição

Estilo orientado a objetos

public static Locale::acceptFromHttp(string $header): string|false

Estilo procedural

locale_accept_from_http(string $header): string|false

Tenta encontrar a localidade que satisfaça a lista de línguas que é requisitada pelo cabeçalho HTTP "Accept-Language".

Parâmetros

header

A string contendo o cabeçalho "Accept-Language" de acordo com o formato RFC 2616.

Valor Retornado

O identificador de localidade correspondente.

Retorna false quendo o comprimento de header exceder INTL_MAX_LOCALE_LEN.

Exemplos

Exemplo #1 Exemplo de locale_accept_from_http()

<?php
$locale
= locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo
$locale;
?>

Exemplo #2 Exemplo OO

<?php
$locale
= Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo
$locale;
?>

O exemplo acima produzirá:

en_US

Veja Também

  • locale_lookup() - Pesquisa a lista de etiquetas de língua pela melhor correspondência à língua

adicione uma nota

Notas Enviadas por Usuários (em inglês) 5 notes

up
47
Adam Lange
12 years ago
It's good to mention that if user browser will not send HTTP_ACCEPT_LANGUAGE, the output from:

Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);

Will be null.

So remember to set up a fail over scenario!
up
12
rasmus at mindplay dot dk
7 years ago
If you're struggling to figure out how to use this function in a project that only supports certain languages, move along.

Unfortunately, this function doesn't let you specify languages supported by your project - and since the internal header parsing and negotiation logic isn't exposed in any other way, you'll most likely want to ditch this function and go for a custom implementation of the same thing:

https://github.com/willdurand/Negotiation
up
1
mollasadra at g dot com
6 years ago
Didn't see this being documented anywhere and the bug hasn't been addressed yet, so to save headache for otherS, this method does a little weird thing with these different locales:

php > echo locale_accept_from_http("zh_TW");
zh
php > echo locale_accept_from_http("zh_CN");
zh
up
0
bill at m$ dot com
1 year ago
A nice way to detect humans. Bots usually dont have this HTTP_ACCEPT_LANGUAGE set.
up
0
bohwaz
2 years ago
Please note that this method can throw IntlException in some cases when the passed header string is invalid AND you have enabled exceptions. For example:

<?php

ini_set
('intl.use_exceptions', 1);

$header = 'fr-FR,fr;q=0.9,fr;q=0.9;q=0.8,en-gb;q=0.8;q=0.7,en;q=0.6,en;q=0.7;q=0.5,*;q=0.5;q=0.4';
var_dump(locale_accept_from_http($header));

?>

Returns:

PHP Warning: Uncaught IntlException: locale_accept_from_http: failed to find acceptable locale in ...
To Top