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.
El array locales de i18n se combina entre capas en lugar de reemplazar, así
que declarar ['de-DE'] allí no añade ni quita nada: los otros seis siguen
enrutados, indexados y anunciados en hreflang. duxt.locales es la clave que
realmente la reduce.
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.
/es-ES/guides/deploying y /guides/deploying son la misma ruta de contenido en
dos colecciones. El segmento pertenece al enrutado de i18n, nunca a una
colección — por eso cambiar de idioma mantiene al lector en la misma página, y
por eso una traducción ausente se resuelve con una consulta más y no con una
redirección.
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:
- el propio locale —
es-ESleees-ES - su idioma base —
es-ESlee un árboles, de modo que una carpetapt/puede servir tanto apt-PTcomo apt-BR - un hermano del mismo idioma —
pt-BRleept-PTantes de salirse del portugués fallbackLocalede vue-i18n, el mismo valor por el que se resuelve una cadena ausente- 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.