Saltar al contenido
duxt

Localización

La capa trae siete locales, y cada cadena configurada admite tres formas.

Las cadenas del propio tema — etiquetas de navegación, búsqueda, el aviso de versión, el 404 — se entregan traducidas en en-GB, en-US, de-DE, es-ES, fr-FR, pt-PT y pt-BR. Un sitio elige cuáles sirve con locales, y i18n.defaultLocale decide cuál se sirve sin prefijo de URL.

locales se lee en tiempo de compilación: los locales deciden rutas y hreflang, no solo lo que dibuja un componente, así que cambiar la lista exige recompilar.

Cada cadena configurada admite tres formas

Todo lo que escribas en la configuración — una etiqueta, un título, una descripción — puede ser un literal, una clave i18n o un registro con una cadena por locale:

label: 'Repository'                                    // literal
label: 'app.nav.repository'                            // clave propia
label: { 'en-GB': 'Repository', 'es-ES': 'Repositorio' } // por locale

Cuál de ellas es se decide según si la cadena es una clave registrada. Un sitio monolingüe nunca se topa con las otras dos formas, y un sitio con un puñado de cadenas en cinco idiomas no necesita archivos de locale en absoluto — la forma de registro se resuelve por el idioma base, así que pt-PT cubre pt-BR y en-GB cubre en-US.

No toques las claves de la capa

duxt.defaults.* traduce los valores por defecto que la propia capa entrega. Esas claves son internas: renombrar una no es un cambio incompatible de la capa, e i18n responde a una clave inexistente imprimiendo la clave — quien dependa de una se enteraría por un lector, no por una compilación. Usa un literal, una clave propia o la forma de registro.

Rutas y enlaces

Solo las rutas se localizan. useDuxtPath() da la ruta en la que está la documentación, sin el segmento de locale; useDuxtLink() la vuelve a escribir como enlace, añadiendo de nuevo el segmento. Una URL absoluta, un enlace de correo o un ancla suelta pasan intactos. Todo lo que calcule una ruta de documentación debería pasar por ese par en lugar de leer la ruta directamente.

Páginas traducidas

La interfaz y las páginas son dos decisiones separadas. Un sitio que no diga nada sirve un mismo árbol en todos los locales — el entorno cambia de idioma, el Markdown no — y esa es la forma correcta para la mayoría de la documentación.

locales en una fuente añade la segunda mitad:

sources: [{ path: 'docs', locales: ['en-GB', 'es'] }]

El locale por defecto es el árbol de path mismo, sin carpeta propia, así que añadir esta clave nunca mueve una página ya publicada. Cualquier otro idioma es una carpeta dentro — docs/es/ — o algo completamente aparte; véase Varios idiomas.

Cuando una página no tiene traducción

El lector recibe el idioma más cercano que sí la tiene, con un aviso que lo dice, y la página queda fuera del índice bajo noindex con un canonical que apunta al idioma en el que realmente está. La cadena es la que la capa ya aplica a las cadenas de texto:

  1. el propio locale — es-ES lee es-ES
  2. su idioma base — es-ES lee un árbol es, de modo que una carpeta pt/ puede servir tanto a pt-PT como a pt-BR
  3. un hermano del mismo idioma — pt-BR lee pt-PT antes de salirse del portugués
  4. fallbackLocale de vue-i18n, el mismo valor por el que se resuelve una cadena ausente
  5. el original sin traducir

Un 404 queda deliberadamente fuera: un hueco en una traducción es de quien escribe, y responderlo escondiendo la página castiga al lector por ello.

¿Le ha resultado útil esta página?