Completa antes de enviar
[site address][audience, for example foreign tourists][brand name, product names, place names][Turkish or English]["tr-TR", "en"][Search Console property]
Mi sitio [site address] en mi servidor de Opus Growth está por ahora solo en turco. Quiero que añadas una versión en inglés y que configures ambos idiomas para que los buscadores y los asistentes de IA los emparejen correctamente. El público de la versión en inglés: [audience, for example foreign tourists]. Nombres que nunca se traducen: [brand name, product names, place names]. El idioma que ve por defecto un visitante de otros países (x-default): [Turkish or English].
1. Mapea el estado actual. Lee site_seo_guide, lista las páginas con site_list_files y anota la versión de restauración con site_versions. Propón una dirección en inglés para cada página en turco y muestra la tabla de correspondencias: el turco se queda en la raíz (/, /hizmetler/), el inglés va bajo /en/ (/en/, /en/services/). Escribe las direcciones con palabras en inglés, en minúsculas, como directorios que terminan en barra. No cambies las direcciones actuales en turco; si alguna tiene que cambiar, redirígela con 301 mediante site_redirects. Espera mi aprobación.
2. Traducción. Escribe cada página en inglés de modo que suene natural para el público, traduciendo el sentido y no frase por frase. Mantén exactamente igual datos como teléfonos, direcciones, precios y horarios, y no añadas afirmaciones nuevas. Títulos de 50 a 60 caracteres, descripciones de 140 a 160, únicos en cada idioma. Ambos idiomas tienen el mismo número de secciones. Cada página en inglés lleva `<html lang="en">` y responde directamente a la pregunta en su primer párrafo.
3. Configuración. Añade un bloque `locales.en` a assets/site.config.js: prefix "/en/", hreflang "en", ogLocale "en_US", la descripción del negocio en inglés, el menú en inglés, la llamada a la acción, la nota del pie y los textos de la interfaz (skip to content, menu, pages, contact). En un bloque `i18n`, escribe el idioma de la raíz, el idioma de x-default, los pares de direcciones en turco e inglés, las palabras que nunca se traducen (keepWords) y un glosario de términos.
4. Escribe un script i18n-stamp.mjs y colócalo en la raíz del sitio. Sus funciones:
1. Imprimir en cada página, entre `<!-- i18n:start -->` y `<!-- i18n:end -->`, las etiquetas absolutas `<link rel="alternate" hreflang="tr-TR">`, `hreflang="en"` y `hreflang="x-default"`.
2. Dentro del bloque que imprime seo-stamp.mjs, poner og:locale en en_US en las páginas en inglés, añadir el otro idioma como og:locale:alternate en ambos idiomas, poner el inLanguage del nodo WebSite en ["tr-TR", "en"] y reemplazar la description del nodo del negocio por la inglesa en las páginas en inglés.
3. Generar sitemap-tr.xml y sitemap-en.xml con alternates xhtml:link para cada dirección y la fecha real de modificación del archivo como lastmod, y convertir sitemap.xml en un sitemapindex que apunte a ambos.
4. Comprobar la traducción y salir con un código distinto de cero si hay errores: una página sin su par, un html lang que no coincide con la carpeta, un número de teléfono o un número largo distinto en los dos idiomas; como advertencias, un número distinto de h2, h3, imágenes o preguntas frecuentes en los dos idiomas, palabras con caracteres turcos en el texto inglés fuera de keepWords y términos del glosario sin usar.
El nodo WebPage de cada página lleva el idioma de esa página como inLanguage. seo-check.mjs solo exime de la exigencia de BreadcrumbList a la página de inicio de la raíz, así que añade un BreadcrumbList de un solo elemento a la página de inicio de /en/.
5. Selector de idioma. El script chrome-stamp.mjs, que imprime el menú y el pie como HTML estático, da a las páginas bajo /en/ el menú y los textos de interfaz de locales.en, y construye el selector de idioma a partir de las etiquetas hreflang de la página, de modo que cada página enlace a SU PROPIA equivalente en el otro idioma y no a la página de inicio. Cada enlace de idioma lleva los atributos hreflang y lang y un área táctil de al menos 44 píxeles. No elijas el idioma mediante una redirección según el idioma del navegador.
6. llms.txt. Escribe el /llms.txt en turco en la raíz y la versión en inglés en /en/llms.txt; cada uno ofrece un resumen breve y exacto del sitio, la lista de páginas en su propio idioma y los datos de contacto, y enlaza con el otro. robots.txt sigue abierto a los rastreadores de IA y apunta solo al índice sitemap.xml.
7. Orden de ejecución tras cada edición: `node seo-stamp.mjs`, `node i18n-stamp.mjs`, `node chrome-stamp.mjs`, la compilación de Tailwind, luego `node seo-check.mjs`, `node design-check.mjs`, `npx --yes html-validate "**/*.html"`. seo-stamp reescribe su propio bloque cada vez que se ejecuta, así que i18n-stamp debe ejecutarse SIEMPRE después. Si el sitio todavía funciona con el CDN de Tailwind Play y fuentes de terceros, pásalo primero a CSS compilado y fuentes autoalojadas.
8. Mide. core_web_vitals en móvil y escritorio para cada página en ambos idiomas; seo_audit para ambas versiones de la página de inicio. Abre las páginas de inicio en turco y en inglés con site_preview en anchos de 360, 390, 768 y 1440 píxeles; los títulos en inglés suelen ser más largos, así que busca con atención cualquier desbordamiento. Criterios: rendimiento móvil de al menos 95 y las otras tres puntuaciones en 100; cero errores de seo-check, i18n-stamp y html-validate.
9. Después de publicar. Confirma las etiquetas hreflang y el selector de idioma en la página de inicio de /en/ con site_read_url. Si mi propiedad de Search Console es [Search Console property], envía sitemap.xml con gsc_submit_sitemap y comprueba la página de inicio de /en/ con gsc_url_inspect.
Resultado: la tabla de correspondencias de direcciones turco-inglés, una tabla de puntuaciones por página e idioma, la salida de la comprobación de i18n-stamp, las advertencias de traducción pendientes y una lista de frases que debería revisar.
Resultado de ejemplo
Un ejemplo del resultado que da este prompt. La estructura procede de la salida real de las herramientas; cifras y nombres son ficticios.
Resultado de ejemplo (en un sitio de demostración ficticio; el negocio es ficticio, pero las puntuaciones se midieron realmente en esta demo)
Se configuró un sitio ficticio de una casa de huéspedes, Liman Taş Ev, con turco en la raíz e inglés bajo /en/, con el inglés como x-default.
| Turco | Inglés |
|---|
| / | /en/ |
| /odalar/ | /en/rooms/ |
| /konum/ | /en/location/ |
| /iletisim/ | /en/contact/ |
| Página | Móvil | Escritorio | LCP en móvil |
|---|
| / | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 2.0 s |
| /odalar/ | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.9 s |
| /konum/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
| /iletisim/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
| /en/ | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 2.0 s |
| /en/rooms/ | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.9 s |
| /en/location/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
| /en/contact/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
Resultado de i18n-stamp: 8 páginas, 2 idiomas, un índice sitemap.xml con sitemap-tr.xml y sitemap-en.xml, 0 errores, 0 advertencias. En la primera ejecución, tres páginas en inglés generaron una advertencia de caracteres turcos por "Ayvalık", "Türkiye" y "Balıkesir"; pasaron a keepWords, porque los nombres de lugares conservan su ortografía turca también en inglés.
Controles: seo-check 0 errores y 0 advertencias, html-validate 0 errores, design-check 0 errores y 1 advertencia (sin animaciones, una decisión de estilo), sin desbordamiento de 360 a 1440 píxeles. Para tu revisión: la redacción en inglés de las condiciones de cancelación, porque es un texto vinculante.