Aller au contenu
duxt

Localisation

La couche fournit sept locales, et chaque chaîne configurée prend trois formes.

Les chaînes du thème lui-même — libellés de navigation, recherche, bandeau de version, page 404 — sont livrées traduites en en-GB, en-US, de-DE, es-ES, fr-FR, pt-PT et pt-BR. Un site choisit celles qu’il sert avec locales, et i18n.defaultLocale décide laquelle est servie sans préfixe d’URL.

locales est lu à la compilation : les locales déterminent les routes et hreflang, pas seulement ce qu’un composant dessine — modifier la liste impose donc une recompilation.

Chaque chaîne configurée prend trois formes

Tout ce que vous écrivez dans la configuration — un libellé, un titre, une description — peut être un littéral, une clé i18n, ou un enregistrement d’une chaîne par locale :

label: 'Repository'                                 // littéral
label: 'app.nav.repository'                         // votre propre clé
label: { 'en-GB': 'Repository', 'fr-FR': 'Dépôt' }  // par locale

Laquelle c’est se décide selon que la chaîne est une clé enregistrée. Un site monolingue ne rencontre donc jamais les deux autres formes, et un site avec une poignée de chaînes en cinq langues n’a besoin d’aucun fichier de locale — la forme d’enregistrement se résout par la langue de base : pt-PT couvre pt-BR et en-GB couvre en-US.

N’allez pas puiser dans les clés de la couche

duxt.defaults.* traduit les valeurs par défaut que la couche fournit elle-même. Ces clés sont internes : en renommer une n’est pas un changement cassant de la couche, et i18n répond à une clé absente en affichant la clé — celui qui en dépendrait l’apprendrait d’un lecteur, pas d’une compilation. Utilisez un littéral, une clé à vous, ou la forme d’enregistrement.

Chemins et liens

Seuls les chemins sont localisés. useDuxtPath() donne le chemin où se trouve la documentation, sans le segment de locale ; useDuxtLink() le réécrit en lien en rajoutant le segment. Une URL absolue, un lien mail ou une simple ancre passent intacts. Tout ce qui calcule un chemin de documentation devrait passer par cette paire plutôt que de lire la route directement.

Pages traduites

L’interface et les pages sont deux décisions distinctes. Un site qui ne dit rien sert un même arbre dans toutes les locales — l’habillage change de langue, pas le Markdown — et c’est la bonne forme pour la plupart des documentations.

locales sur une source ajoute la seconde moitié :

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

La locale par défaut est l’arbre de path lui-même, sans dossier propre : ajouter cette clé ne déplace donc jamais une page déjà publiée. Toute autre langue est un dossier à l’intérieur — docs/fr/ — ou se trouve entièrement ailleurs ; voir Plusieurs langues.

Quand une page n’a pas de traduction

Le lecteur reçoit la langue la plus proche qui l’a, avec un bandeau qui le dit, et la page reste hors index sous noindex, avec un canonical pointant vers la langue qui la porte réellement. La chaîne est celle que la couche applique déjà aux chaînes de caractères :

  1. la locale elle-même — fr-FR lit fr-FR
  2. sa langue de base — fr-FR lit un arbre fr, ce qui permet à un dossier pt/ de servir à la fois pt-PT et pt-BR
  3. une sœur de la même langue — pt-BR lit pt-PT avant de sortir du portugais
  4. fallbackLocale de vue-i18n, la valeur même par laquelle se résout une chaîne absente
  5. l’original non traduit

Un 404 en est délibérément absent : un trou dans une traduction appartient à qui l’écrit, et y répondre en cachant la page en punit le lecteur.

Cette page vous a-t-elle été utile ?