idioma + valor de región del atributo lang de HTML5

11

Estoy trabajando en un sitio web que ofrecerá contenido localizado siguiendo el language+regionenfoque descrito en esta página de W3.org (por ejemplo, fr-CApara contenido en francés canadiense y fr-FRpara contenido en "francés francés"). Dado que consideramos que el contenido de cada uno language+regiones único, es crucial para nosotros que los motores de búsqueda identifiquen y sirvan el contenido de manera adecuada.

Al buscar en Internet (por ejemplo, esta pregunta ), parece que la mayoría de las personas recomiendan el uso de un código de idioma ISO639 en el langatributo HTML para describir el idioma del contenido. Siguiendo esta recomendación, terminaríamos usando <html lang="fr">lo que no permitiría la diferenciación entre las language+regioncombinaciones antes mencionadas .

Al revisar la especificación HTML4 , parece que usarlo language+regioncomo código de idioma estaría perfectamente bien, ya que el en-USejemplo se da como un valor posible. Sin embargo, no pude encontrar ninguna confirmación de esto en la especificación HTML5 que no parece proporcionar ningún ejemplo en cuanto a los posibles valores permitidos.

A partir de ahí, intenté obtener una respuesta de facto mirando lo que están haciendo los gigantes de la web. Observé lo que Facebook está haciendo: ofrecen versiones de sus sitios web en francés franco y francés con contenido (ligeramente) diferente, mientras que el langvalor HTML sigue siendo el mismo:

fr-CA
URL: http://fr-ca.facebook.com
HTML lang atributo: <html lang="fr">
traducción de la palabra 'correo electrónico':courriel

fr-FR
URL: http://fr-fr.facebook.com/
HTML lang atributo: <html lang="fr">
traducción de la palabra 'correo electrónico':Adresse électronique

¿Cuál es la forma recomendada / estándar de describir el contenido que se localizó utilizando el language+regionenfoque en HTML5?

Max
fuente

Respuestas:

5

El W3C proporciona esta guía muy larga sobre cómo elegir etiquetas / subetiquetas de idioma.

Los bits importantes:

La sintaxis de la etiqueta de idioma está definida por el BCP 47 del IETF . En el pasado era necesario consultar listas de códigos en varios estándares ISO para encontrar las subetiquetas correctas, pero ahora solo necesita buscar en el Registro de subetiquetas de idiomas de la IANA . Describiremos el nuevo registro a continuación.

Este artículo proporciona consejos sobre cómo elegir los componentes de una etiqueta de idioma. Para obtener una descripción general de los conceptos definidos en BCP 47, consulte Etiquetas de idioma en HTML y XML .

...

Hay herramientas disponibles que proporcionan ayuda adicional durante la búsqueda en el registro, como la herramienta de búsqueda de subetiquetas de idioma de Richard Ishida .

...

Asegúrese de tener el idioma correcto. A veces, vale la pena verificar algunas alternativas. Mark Davis, coautor de BCP47, escribe "A menudo no está claro qué identificador de idioma usar. Por ejemplo, lo que la mayoría de la gente llama Punjabi en Pakistán en realidad tiene el código 'lah' y el nombre formal 'Lahnda'. Hay muchos otros casos donde se usa el mismo nombre para diferentes idiomas, o donde el nombre que las personas buscan no figura en el registro de la IANA ".

Puede buscar información sobre el idioma en el Ethnologue del SIL y hacer una referencia cruzada de esa información con Wikipedia . Ethnologue utiliza los mismos códigos de tres letras que BCP47, pero necesitará convertir los códigos de 2 letras BCP47 a su contraparte ISO 639-3 para buscar un idioma por código. ( La herramienta de Richard Ishida hace esto por usted).

Hay un pequeño número de casos en los que hay disponibles diferentes códigos de idioma para lo que muchas personas considerarían como el mismo idioma, por ejemplo. Filipino y tagalo, o Twi y Akan. No hay ninguna indicación en el registro sobre cuál debe usar, pero debe intentar asegurarse de que dentro de una sola aplicación o contexto sea coherente.

(El énfasis es mío).

Cabe señalar que el registro de subetiquetas de idioma IANA es un poco difícil de usar. Con la excepción de las etiquetas protegidas (como en-GB-oed), debe buscar la etiqueta de familia de idiomas y las etiquetas secundarias de región / variante por separado. Y las etiquetas / subetiquetas están organizadas por tipo en lugar de jerarquía. Así que ahorre tiempo y problemas y use la increíble herramienta de búsqueda de Richard Ishida .

Lèse majesté
fuente
2

Usar <html lang="fr-FR">y <html lang="fr-CA">está bien, si corresponden al contenido real. Pero los motores de búsqueda los ignoran, tal como <html lang="fr">están.

HTML5 no significa cambiar el uso de códigos de idioma. El sistema de códigos tal como se define en BCP 47 y sus extensiones es muy elaborado y le permite especificar una variante de idioma con precisión dolorosa. El estado del arte está en niveles mucho, mucho más simples, y fr-FR y fr-CA representan la mejor granularidad que puede lograr en estos días en software; bastante a menudo, solo importa el código principal (aquí, fr).

No hay evidencia de que los motores de búsqueda presten atención a las declaraciones de código de idioma, como los langatributos. Otro software, como guiones, correctores ortográficos, sintetizadores de voz y algoritmos de selección de fuente predeterminados pueden tener langen cuenta los atributos. Pero los motores de búsqueda realizan sus análisis heurísticos basados ​​en el contenido real.

Es difícil culparlos por esto, ya que esto produce mejores resultados que confiar en los langatributos. Por ejemplo, muchas herramientas de autoría se generan automáticamente lang="en"independientemente del contenido real, sin decirle al autor.

Jukka K. Korpela
fuente
2

[Esta no es mi área más fuerte, así que solo estoy citando documentación aquí, pero parece que has pasado por alto algo].

La especificación HTML5 requiere que el langvalor sea una etiqueta BCP 47 válida . En ese documento, el bit relevante parece estar en la sección 3.4:

Por ejemplo, una implementación podría asignar los rangos de idiomas extendidos a los rangos básicos. Otra posibilidad sería que una implementación devuelva la etiqueta coincidente que está primero en orden ASCII. Si el rango de idioma fuera "* -CH" ('CH' representa Suiza) y el conjunto de etiquetas incluye "de-CH" (alemán como se usa en Suiza), "fr-CH" (francés, Suiza) y "it -CH "(italiano, Suiza), luego se devolverá la etiqueta" de-CH ".

... que cuando lo miras es básicamente lo que obtienes de la especificación HTML 4 que cita RFC1766, solo que con mucho más detalle.

Su '
fuente
Tengo dificultades para localizar el párrafo que citó (busqué algunas de sus palabras clave en el enlace que proporcioné y en la sección 3.4 y no pude encontrar nada). ¿Me puede proporcionar un enlace, por favor? (Idealmente con hash tag si es posible).
Max
La especificación HTML 5 solo se refiere al formato requerido. El bit citado proviene del enlace BCP 47, en el que ese formato se definió realmente.
Su '