Pieza 25 de 64
LenguaPieza nº 0025 de 64

Parece que hablas enlish

Las 795 páginas que guardamos de la Agencia Española de Seguridad Alimentaria están programadas para hacer lo mismo nada más cargar: parar el navegador y pedirle un cartel al servidor de la Agencia. A quien entra en español, el servidor le contesta en blanco. A quien pide la página en inglés, o sin decir en qué idioma, le manda un cartel que empieza diciéndole que parece «an enlish speaker person».

Dominio
aesan.gob.es
Guardado
31 AGO 2026
Comprobado en vivo
15 SEP 2026
Citas
7 en 2 ficheros guardados
Lectura
unos 5 min
Captura de https://aesan.gob.es/
foto 1La portada de aesan.gob.es el 23 de septiembre de 2026: la Agencia Española de Seguridad Alimentaria y Nutrición.Captura del 23 de septiembre de 2026, 10:17 (hora peninsular)

Un script es un trozo de programa que va dentro de la página y que el navegador ejecuta al abrirla. Este empieza armando una dirección con dos piezas: la ruta de la página donde estás y una cadena con virgulillas que parece una errata. No lo es. La web está hecha con Magnolia, un gestor de contenidos (el programa con el que se escriben y publican las páginas), y esa cadena es su forma de pedir solo un trozo de una página: aquí, el área modalLocation del pie.

Detrás de esa cadena va un añadido, visualize=true. El 23 de septiembre de 2026 pedimos la misma dirección con él y sin él. Con él, el servidor, que es el ordenador de la Agencia que entrega la web, devuelve el cartel. Sin él, devuelve el trozo tal como va dentro de la página: un hueco vacío y el mismo script que lo rellena. El añadido es lo que hace salir el cartel, y el script lo pide en cada página.

1de 7aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologialínea 2 de 16
Copia
archivo
Guardado
31 ago 2026
Peso
637 B
sha256
3cdb549b57fb…
1document.addEventListener("DOMContentLoaded", function(e) {
2      var contentLinkModalCountry = '/seguridad-alimentaria/nuevos-alimentos-y-biotecnologia' + "~mgnlArea=footer,modalLocation~?visualize=true";
3      const existeCookie = document.cookie.split('; ').some(cookie => cookie.startsWith('lang-modal='));
4      if (!existeCookie) {
5        $.ajax({
1La dirección que se arma al vuelo: la ruta de la página, más la orden de Magnolia para pedir solo el área del pie, más visualize=true, el añadido que hace que el servidor devuelva el cartel.

Lo siguiente es una comprobación razonable. El script mira si existe una cookie llamada lang-modal, la nota que un sitio deja guardada en tu navegador para reconocerte la próxima vez, y si la encuentra no pide nada. Con esa nota puesta, el cartel no se vuelve a pedir. Hasta aquí, nada raro. Lo raro está en la forma de pedirlo y en quién pone esa nota, que se cuenta más abajo.

2de 7aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologialínea 3 de 16
Copia
archivo
Guardado
31 ago 2026
Peso
637 B
sha256
3cdb549b57fb…
1document.addEventListener("DOMContentLoaded", function(e) {
2      var contentLinkModalCountry = '/seguridad-alimentaria/nuevos-alimentos-y-biotecnologia' + "~mgnlArea=footer,modalLocation~?visualize=true";
3      const existeCookie = document.cookie.split('; ').some(cookie => cookie.startsWith('lang-modal='));
4      if (!existeCookie) {
5        $.ajax({
6          type: "GET",
2Si ya existe la cookie, no se pide nada. El script solo la lee: no la escribe en ningún sitio.

La petición lleva escrito async: false. Traducido: el navegador se para. No pinta, no responde al ratón, no reacciona al teclado; se queda quieto esperando a que el servidor conteste y solo entonces sigue con lo suyo. Los navegadores aceptan todavía esta forma de pedir datos, pero la marcan como desaconsejada en su consola, la ventana de avisos para quien programa, justo por ese parón.

3de 7aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologialínea 9 de 16
Copia
archivo
Guardado
31 ago 2026
Peso
637 B
sha256
3cdb549b57fb…
6  type: "GET",
7  dataType: "html",
8  url: contentLinkModalCountry,
9  async: false,
10  data: {}
11
12}).done(function(data) {
3La petición que para el navegador hasta que llega la respuesta. Desde nuestro servidor, el 15 de septiembre de 2026, la respuesta tardó 383, 360 y 363 milisegundos.

Lo que tarda el servidor en contestar se puede medir, así que lo medimos. El 15 de septiembre de 2026, desde nuestro servidor, pedimos tres veces la misma dirección: 383, 360 y 363 milisegundos, algo más de un tercio de segundo. Cuánto espera el navegador de cada visitante depende de su conexión, y eso no lo hemos medido. Lo que dice el código es que la espera se repite en cada una de las 795 páginas para quien no tenga la cookie.

Antes de contar qué dice el cartel, lo que no está mal. Esperábamos un servidor que decidiera tu idioma sin mirar, y no lo es. Pedimos la misma dirección diciendo que veníamos en español, en francés y en euskera, y las tres veces contestó seis bytes, lo que ocupa una palabra de seis letras: tres saltos de línea, nada. Con inglés británico o americano contestó el cartel entero, 2.454 bytes.

O sea que la comprobación de idioma existe y funciona. El único caso raro es el de quien no declara idioma: entonces el servidor da por hecho que quiere inglés y le manda el cartel. Un navegador normal siempre dice en qué idioma quiere las páginas, así que quien lo tenga en español no verá el cartel. El 23 de septiembre de 2026 repetimos las seis peticiones y el servidor contestó lo mismo, byte a byte.

Pero no ver el cartel no libra de la espera. Ninguno de los dos scripts que carga la página escribe la cookie lang-modal, y en nuestras peticiones en español del 23 de septiembre ni la página ni la respuesta en blanco la dejaron puesta. Quien entra en español no recibe nada que la ponga, así que su navegador vuelve a parar y a preguntar en cada página que abre, para recibir otra vez tres saltos de línea.

Ahí está el cartel. Arriba, un saludo: «Hello! Where are you visiting us from?». Debajo, la frase que da nombre a esta pieza: «It looks like you're an enlish speaker person». Sobra algo y falta una letra. Sobra person, porque an English speaker ya es una persona. Y falta la ge de English, que la frase siguiente sí escribe bien: «visit the English website».

Captura de https://aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologia
foto 2La página de nuevos alimentos y biotecnología de aesan.gob.es, pedida el 23 de septiembre de 2026 con un navegador que declara inglés británico: sale el cartel. El recuadro es nuestro y señala el cartel entero, tal como lo sirvió el servidor.Captura del 23 de septiembre de 2026, 14:17 (hora peninsular) · el recuadro es nuestro
4de 7aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologia~mgnlArea=footer,modalLocation~línea 8 de 60
Copia
en vivo
Leído
15 sep 2026
Peso
2,5 kB
sha256
b77e6d2f8a22…
5    <p class="language-modal__header-title">Hello! Where are you visiting us from?</p>
6</div>
7  <div class="language-modal__body">
8      <p class="content-text"><p>It looks like you're an enlish speaker person.</p><p>Would you like to visit the English website or continue to actual website?</p></p>
9  </div>
10<div class="language-modal__divider"></div>
11<div class="language-modal__actions">
4El texto del cartel, tal como lo sirvió el servidor: la errata y el falso amigo, y dos párrafos metidos dentro de un tercero, todo en la misma línea.

Esa misma frase acaba ofreciendo «continue to actual website», y el botón blanco de debajo dice «Continue to actual site». En inglés, actual es un falso amigo: se escribe como nuestra palabra y significa real o verdadero. Lo que ofrece ese botón, leído por alguien de Londres, es seguir en la web de verdad, como si la otra fuese un decorado. El otro botón, el verde de encima, apunta a la versión inglesa.

El cartel trae además dos descuidos de construcción que se entienden sin saber programar. El texto va dentro de un párrafo que contiene otros dos, y en HTML, el lenguaje en que se escriben las páginas, eso no se puede hacer: el navegador cierra el primero por su cuenta, sin avisar. Y el enlace al sitio en inglés declara dos veces el atributo class, el dato de su etiqueta que dice con qué estilo se pinta; el navegador se queda con el primero y tira el segundo. Ninguno de los dos rompe la página. Solo hacen que no sea la que se escribió.

5de 7aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologia~mgnlArea=footer,modalLocation~línea 12 de 60
Copia
en vivo
Leído
15 sep 2026
Peso
2,5 kB
sha256
b77e6d2f8a22…
9  </div>
10<div class="language-modal__divider"></div>
11<div class="language-modal__actions">
12…class="btn btn-secondary" title="English web">
13    <span class="aesan-btn__text">English web</span>
14  </a>
15  <button class="aesan-btn aesan-btn--white center" onclick='return setSelection();' type="button" aria-label="Continue to actual site">
5La segunda declaración de estilo (class) del mismo enlace. El navegador ya se quedó con el primero, así que esta no pinta nada.

Dentro del propio cartel viaja más código. Los dos botones vuelven a llamar al servidor, y las dos veces con async: false: otra parada en seco para avisar de que has elegido país, y otra para avisar de que te quedas. Entre medias, en la rama que lleva a la versión inglesa, un console.log("redirect!!!") con tres signos de admiración: un mensaje de depuración, una nota para quien programa que solo se ve abriendo las herramientas del navegador.

6–7de 7aesan.gob.es/seguridad-alimentaria/nuevos-alimentos-y-biotecnologia~mgnlArea=footer,modalLocation~líneas 34–37 de 60
Copia
en vivo
Leído
15 sep 2026
Peso
2,5 kB
sha256
b77e6d2f8a22…
31  dataType: "json",
32  url: contentLinkModalCountry,
33  async: false,
34  data: {"action": "setcountry"6}
35}).done(function(data) {
36  if (data && data.success) {
37    console.log("redirect!!!")7;
38    window.location.href = urlRedirect;
39  }
40});
6El botón de irse al sitio en inglés vuelve a parar el navegador para avisar al servidor.
7Y el mensaje de depuración que se quedó dentro, con sus tres admiraciones.

Quien entra en español espera en cada página un cartel que nunca le llega. Quien lo recibe lee que parece «an enlish speaker person».

Lo que decimos
  • En 795 páginas de aesan.gob.es guardadas el 31 de agosto de 2026 hay un script inline (775 ficheros de programa distintos, porque algunas páginas comparten el suyo) que, si no existe la cookie lang-modal, pide con jQuery y async: false el área modalLocation del pie, con el parámetro visualize=true, y mete la respuesta en la página.
  • El 15 de septiembre de 2026 esa dirección contestó 2.454 bytes si la petición no declara idioma o declara inglés británico o americano, y seis bytes si declara español, francés o euskera; el 23 de septiembre de 2026 contestó lo mismo en los seis casos, con la misma huella digital.
  • Ese día, pedida sin visualize=true, la misma dirección devolvió el hueco vacío y el script que lo rellena, no el cartel.
  • También el 23: la página del caso y la portada, pedidas en español, traían el mismo script; ni ellas ni la respuesta en blanco pusieron la cookie lang-modal, y ninguno de los dos scripts que carga la página la escribe.
  • La respuesta contiene, literalmente, «It looks like you're an enlish speaker person», un párrafo dentro de otro párrafo, un enlace con el atributo class dos veces, dos peticiones más con async: false y la línea console.log("redirect!!!").
  • Las tres mediciones de tiempo que publicamos son del 15 de septiembre, desde nuestro servidor.
Lo que no decimos
  • No decimos que el sitio elija mal el idioma: lo probamos con cinco idiomas declarados y sin ninguno, y la comprobación funciona.
  • No decimos que el cartel se le muestre a quien navega en español, porque a esas peticiones el servidor no les devuelve nada.
  • No decimos cuánto se para el navegador de un visitante cualquiera: lo medido es lo que tarda el servidor en contestar, desde nuestro servidor y en tres intentos.
  • No decimos qué hace el servidor cuando se pulsa uno de los botones del cartel: no los hemos pulsado.
  • Y no decimos quién escribió ese texto ni cuándo: no consta en nada que hayamos guardado.
Procedencia

De dónde sale cada cita

Cada trozo de código de esta ficha está en un fichero guardado tal como lo entregó el servidor, con su huella (sha256) y su hora. Las citas entre «» se comprueban por programa contra ese fichero antes de publicar.

Desgobierno Digital · https://desgobiernodigital.com/piezas/aesan-enlish/ · copia impresa de la edición generada el 19 de octubre de 2026 · Un proyecto de BQuant · correcciones: @Gsnchez