php - ¿Es en_UK una localidad ilegal?
zend-framework locale (5)
Implementaciones imperfectas
A partir de 1985, los códigos ISO 3166-1 alpha-2 se han utilizado en el Sistema de nombres de dominio como dominios de nivel superior de código de país (ccTLD). La Autoridad de Asignación de Números de Internet actualmente asigna los ccTLD en su mayoría siguiendo los códigos alfa-2, pero con algunas excepciones. [9] Por ejemplo, el Reino Unido, cuyo código alfa-2 es GB, usa .uk en lugar de .gb como su ccTLD, ya que actualmente el Reino Unido está excepcionalmente reservado en ISO 3166-1 a solicitud del Reino Unido.
De acuerdo con wikipedia http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 .
Entonces, aparentemente, es algo viejo que se ha trabado o algo así.
EDITAR: Martin Clayton encontró una mejor respuesta.
Hasta ahora siempre había usado ''en_UK'' para inglés británico. Hoy recibí un error al usarlo con Zend Framework porque la configuración regional no está incluida en la larga lista de configuraciones regionales reconocidas.
Aquí hay solo un breve extracto de esa lista:
''ee_GH'' => true, ''ee_TG'' => true, ''ee'' => true, ''el_CY'' => true, ''el_GR'' => true,
''el'' => true, ''en_AS'' => true, ''en_AU'' => true, ''en_BE'' => true, ''en_BW'' => true,
''en_BZ'' => true, ''en_CA'' => true, ''en_GB'' => true, ''en_GU'' => true, ''en_HK'' => true,
''en_IE'' => true, ''en_IN'' => true, ''en_JM'' => true, ''en_MH'' => true, ''en_MP'' => true,
''en_MT'' => true, ''en_NA'' => true, ''en_NZ'' => true, ''en_PH'' => true, ''en_PK'' => true,
''en_SG'' => true, ''en_TT'' => true, ''en_UM'' => true, ''en_US'' => true, ''en_VI'' => true,
''en_ZA'' => true, ''en_ZW'' => true, ''en'' => true, ''eo'' => true, ''es_AR'' => true,
''es_BO'' => true, ''es_CL'' => true, ''es_CO'' => true, ''es_CR'' => true, ''es_DO'' => true,
Como puede ver, hay todo tipo de territorios con idioma inglés y también hay una entrada ''en_GB'' que supongo representa a Gran Bretaña ... pero no hay ''en_UK''. ¿Es solo un ''error'' en Zend Framework o hay otra razón para eso?
¡No puedes simplemente inventar locales! Ellos ya están definidos. Entonces "en-gb" es inglés británico, mientras que "en-us" es inglés americano. Si usa "en-uk", solo está inventando un código.
En cuanto a por qué el código oficial es "en-gb" y no "en-uk", creo que básicamente porque no existe el inglés británico. La variante de idioma es británica. Tenga en cuenta que la diferencia entre Gran Bretaña y el Reino Unido es:
Reino Unido = GB + Irlanda del Norte
Por lo tanto, al nombrar la variante "en-UK" es como si dijera que desea incluir la forma en que hablan en Irlanda del Norte dentro de esta categoría. Pero, ¿por qué querrías hacer eso? Desde una perspectiva lingüística, no tiene sentido, ya que el inglés de Irlanda del Norte está más cerca del inglés irlandés (en-IE) que del inglés británico.
De hecho, es un error común (?). en_UK está mal. El código de país ISO para el Reino Unido es GB, por lo que la etiqueta de idioma es_GB.
El código de país correcto es en_GB
. Los entornos locales usan ISO 3166-1 para los códigos de país. La descripción de la wikipedia incluye:
Los códigos se eligen, según ISO 3166 / MA, "para reflejar el componente significativo y único del nombre del país a fin de permitir una asociación visual entre el nombre del país y el código del país". [7] Por esta razón, los componentes comunes de los nombres de países como "República", "Reino", "Unido", "Federal" o "Demócrata" normalmente no se utilizan para derivar los elementos del código. Como consecuencia, por ejemplo, al Reino Unido se le asigna oficialmente el código alfa-2 GB en lugar del Reino Unido, basado en su nombre oficial "Reino Unido de Gran Bretaña e Irlanda del Norte" (aunque el Reino Unido está reservado a petición del Reino Unido). )
el código de país correcto en ISO 3166 para el Reino Unido de Gran Bretaña e Irlanda del Norte es por alguna razón "GB", por lo que el código de localidad debe ser en_GB, y no en_UK como se indica here .
en_GB también es utilizado por glibc, gnome, kde, etc.
También me gusta el hecho de que muchas correcciones de errores anteriores en proyectos de código abierto están relacionadas con esto, como en apache http 1.3 y el proyecto roundcube