2011-04-26 12 views
7

locale_accept_from_http es un envoltorio básico alrededor de la API de ICU uloc_acceptLanguageFromHTTP pero la implementación de PHP/PECL parece fundamentalmente defectuosa, ya que utiliza los sistemas completos de configuraciones regionales en lugar de tomar una lista como parámetro.Cómo utilizar Locale :: acceptFromHttp sin una lista de filtros?

Por ejemplo, un usuario tiene HTTP_ACCEPT_LANGUAGE = zh-HK;q=0.2, fr, es decir, el usuario lee chino tradicional o francés, prefiriendo este último. Tiene, por ejemplo, un sitio de noticias que ofrece artículos, por ejemplo, chino tradicional y chino simplificado. Uso de la API Locale::acceptFromHttp sólo devolverá fr.

<?php 
var_dump (Locale::acceptFromHttp ("zh-HK;q=0.2,fr")); 
?> 

Salidas:

string(2) "fr" 

Respuesta

6

correcta, PHP envuelve UCI de uloc_acceptLanguageFromHTTP y sin la capacidad de pasar la lista de configuración regional. En general, intl extensión es relativamente nuevo (PHP 5.3+) y lo hice encontrar un par de errores a mí mismo que se fijaron rápidamente en la próxima versión.

Lo que podría hacer es:

  • Submit un informe de error/función. Ya hay un error similar reported.

  • formato Accept-Language realmente no es tan compleja, apuesto a que podría escribir su propio analizador dentro de 20 líneas de código. Ver this article para un ejemplo.

+1

Es 2017, y 'Locale :: acceptFromHttp' sigue siendo completamente inútil. – rlanvin

Cuestiones relacionadas