src/ParseQualityHeaders.php
public function parseArrayOfHeaderAcceptLanguage(?array $headers) : ?array
    {
        $r = null;
        
        if ($headers !== null && count($headers) > 0) {
            $headers = $this->parseRawLineOfQualityHeaders(implode(",", $headers));
            
            $locales = [];
            $languages = [];

            $lang = [];
            foreach ($headers as $k => $val) {
                $uVal = trim($val["value"]);
                
                if (strlen($uVal) === 5) {
                    $locales[] = strtolower($uVal);
                    $lang[] = strtolower(substr($uVal, 0, 2));
                } elseif (strlen($uVal) === 2) {
                    $languages[] = strtolower($uVal);
                }
            }

            $languages = array_merge($languages, $lang);
            $languages = array_unique($languages);

            $r = [
                "locales" => $locales,
                "languages" => $languages
            ];
        }

        return $r;
    }
public function parseArrayOfHeaderAcceptLanguage(?array $headers) : ?array
    {
        $r = null;
        
        if ($headers !== null && count($headers) > 0) {
            $headers = $this->parseRawLineOfQualityHeaders(implode(",", $headers));
            
            $locales = [];
            $languages = [];

            $lang = [];
            foreach ($headers as $k => $val) {
                $uVal = trim($val["value"]);
                
                if (strlen($uVal) === 5) {
                    $locales[] = strtolower($uVal);
                    $lang[] = strtolower(substr($uVal, 0, 2));
                } elseif (strlen($uVal) === 2) {
                    $languages[] = strtolower($uVal);
                }
            }

            $languages = array_merge($languages, $lang);
            $languages = array_unique($languages);

            $r = [
                "locales" => $locales,
                "languages" => $languages
            ];
        }

        return $r;
    }
Trata o valor bruto de um header "AcceptLanguage" e retorna um array.

Retornará um array associativo contendo 2 chaves, "locales" e "languages" sendo
cada uma um array trazendo aquela informação em ordem de prioridade.

Os valores serão retornados todos em lowercase.

<pre>
$headers = [
"pt-BR",
"pt;q=0.8",
"en-US;q=0.5",
"en;q=0.3"
];

$return = [
// string[]   "locales"       Coleção de locales aceitos.
// string[]   "languages"     Coleção de linguagens aceitas.
"locales" => ["pt-br", "en-us"],
"languages" => ["pt", "en"],
];
</pre>

@param       ?array $headers
Valores do header em formato de array.

@return      ?array