Saltearse al contenido

Componentes SEO

astro-i18n-next incluye tres componentes Astro opcionales que generan etiquetas <head> esenciales para el SEO de sitios multilingües. Importa solo los que necesites.

Componentes

HrefLangs

Genera etiquetas <link rel="alternate" hreflang="..." /> para cada idioma configurado, más una entrada x-default que apunta a la versión del idioma predeterminado.

---
import HrefLangs from '@otrodigital/astro-i18n-next/HrefLangs.astro';
---
<head>
<HrefLangs siteUrl="https://example.com" />
</head>

Resultado (para /about/ con idiomas en + es):

<link rel="alternate" hreflang="en" href="https://example.com/about/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/sobre/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/about/" />

CanonicalURL

Genera una etiqueta <link rel="canonical" /> para la página actual.

---
import CanonicalURL from '@otrodigital/astro-i18n-next/CanonicalURL.astro';
---
<head>
<CanonicalURL siteUrl="https://example.com" />
</head>

Resultado (para /es/sobre/):

<link rel="canonical" href="https://example.com/es/sobre/" />

OpenGraphLocale

Genera <meta property="og:locale" /> para el idioma actual y <meta property="og:locale:alternate" /> para cada idioma alternativo. Los valores usan el formato xx_YY requerido por Open Graph (ej. en_US, es_ES).

---
import OpenGraphLocale from '@otrodigital/astro-i18n-next/OpenGraphLocale.astro';
---
<head>
<OpenGraphLocale siteUrl="https://example.com" />
</head>

Resultado (para /about/ con en como idioma actual):

<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="es_ES" />

Ejemplo completo

Usa los tres componentes juntos en tu layout:

---
import HrefLangs from '@otrodigital/astro-i18n-next/HrefLangs.astro';
import CanonicalURL from '@otrodigital/astro-i18n-next/CanonicalURL.astro';
import OpenGraphLocale from '@otrodigital/astro-i18n-next/OpenGraphLocale.astro';
const siteUrl = 'https://example.com';
---
<html>
<head>
<CanonicalURL siteUrl={siteUrl} />
<HrefLangs siteUrl={siteUrl} />
<OpenGraphLocale siteUrl={siteUrl} />
</head>
<body>
<slot />
</body>
</html>

Props

Los tres componentes aceptan una única prop requerida:

PropTipoDescripción
siteUrlstringLa URL base de tu sitio sin barra final (ej. "https://example.com")

Los componentes detectan automáticamente la ruta actual desde Astro.url.pathname y usan los helpers de rutas de virtual:i18n para generar URLs alternativas correctas con slugs traducidos.