autorenew

Otras Funciones

Componentes

Dentro de src/components/i18n/, encontrarás varios componentes UI que son útiles para generar sitios multilingües. Siéntete libre de personalizar su contenido e importarlos según sea necesario.

LocaleSelect.astro

Una interfaz de selección para cambiar entre idiomas.

LocaleSelectSingle.astro

Una interfaz de enlace a otro idioma. Úsalo cuando solo soportes dos idiomas.

LocalesHomeList.astro

Devuelve una lista de enlaces a las páginas principales de cada idioma, envueltos en etiquetas <li>.

LocaleSuggest.astro

Muestra una interfaz en la parte superior sugiriendo un enlace al idioma del navegador cuando el usuario accede a una URL diferente al idioma de su navegador.

Por ejemplo, si un usuario con configuración en inglés accede a la URL /ja/[slug], sugiere un enlace a /en/[slug].

Una vez cerrado, la configuración se guarda en localhost y no se mostrará nuevamente.

LocaleHtmlHead.astro

Permite especificar configuraciones de etiqueta <head> para cada idioma. El código de ejemplo carga la Noto Font para cada idioma y aplica el CSS.

NotTranslateCaution.astro

Muestra una advertencia al usuario cuando una página específica solo está disponible en cierto idioma.

La página de ejemplo es Monolingual. Cuando esta página se ve en un idioma que no sea inglés, muestra una interfaz de advertencia al usuario.

El texto para la interfaz de advertencia se configura en /src/const.ts en el código de ejemplo.

404

La página 404 de Astro i18n Starter consiste en dos archivos. Si deseas personalizar el diseño de la página 404, generalmente solo necesitas editar src/pages/[lang]/404.astro.

src/pages/404.astro

Este archivo genera lo siguiente:

/404.html

La mayoría de los servicios de despliegue encontrarán y usarán este archivo cuando no se encuentre una página.

Cuando se accede con Astro i18n Starter, redirige a la siguiente página 404 basada en el idioma del sistema del usuario:

Condiciones Detalladas de Redirección La redirección se realiza según las siguientes condiciones. Para más detalles, consulta el código fuente.

  1. Si la URL contiene /es/... o cualquier otro código de idioma.
  2. Si localStorage.selectedLang contiene el código del idioma.
    • El localStorage.selectedLang se guarda cuando el usuario selecciona un idioma en la interfaz.
  3. Si la página de referencia contiene /es/... o cualquier otro código de idioma.

src/pages/[lang]/404.astro

Este archivo genera dinámicamente lo siguiente:

  • /es/404/index.html
  • /en/404/index.html

En realidad, mediante el proceso history.replaceState() muestra en el navegador la URL a la que el usuario accedió antes de la redirección.

Consejos de CSS

Separando CSS para cada idioma

Puedes separar las definiciones usando solo CSS escribiendo de la siguiente manera:

:lang(es) :lang(ar)

Sin embargo, en este caso, todo el CSS de los idiomas se cargará simultáneamente, resultando en un desperdicio de recursos.

Si estás escribiendo dentro de archivos .astro, considera escribir de la siguiente manera o separar las definiciones dentro de LocaleHtmlHead.astro.

---
import { type Lang } from "@/i18n";
const locale = Astro.currentLocale as Lang;
---

{
    locale === "es" ? (
        <style>
            /* Estilos para Español */
        </style>
    )
    : locale === "ar" ? (
        <style>
             /* Estilos para Árabe */
        </style>
    )
    : null
}

Espaciado entre letras para Árabe

En algunos diseños, es posible que desees ajustar el espaciado entre letras para títulos y otros elementos. Sin embargo, es importante no añadir espaciado para el texto en árabe.

Estilizado de derecha a izquierda

Por lo tanto, ten en cuenta que Astro i18n Starter define lo siguiente en src/styles/base.css:

Iconos RTL

En idiomas RTL (de derecha a izquierda), los iconos como las flechas necesitan ser reflejados.

Derecha a izquierda | Documentación de Apple Developer

Astro i18n Starter usa Material Icon, y lo siguiente está definido en src/styles/base.css:

<span class="material-icons-sharp dir">arrow_forward</span>

Visualización actual: arrow_forward open_in_new