Documentation Universally

Guides étape par étape, conseils de SEO multilingue et meilleures pratiques pour vous aider à traduire et à développer votre site WordPress.

Options d'intégration Astro

Cette page répertorie chaque option que vous pouvez passer à universally({...}) dans astro.config.mjs, la variable d'environnement qui définit chacune d'elles et le format du point d'accès push.

Options

Option Variable d'environnement Défaut Remarques
mode UNIVERSALLY_MODE 'sdk' 'sdk' ou 'proxy', insensible à la casse. Toute autre valeur provoque une erreur lors de l'exécution de la configuration. Voir Astro avec des sous-domaines linguistiques.
apiKey UNIVERSALLY_API_KEY aucun, requis La clé de 64 caractères de la page de configuration du projet. Une clé sk_ authentifie également. Une clé pk_ échoue à l'appel des langues et à la compilation.
apiUrl UNIVERSALLY_API_URL https://api.universally.com D'où les langues et les catalogues sont lus.
translatorUrl UNIVERSALLY_TRANSLATOR_URL https://translator.universally.com Où les nouvelles chaînes sont signalées.
revalidateSeconds UNIVERSALLY_REVALIDATE_SECONDS 60 Plus petit intervalle entre deux vérifications des modifications du tableau de bord, par langue. 0 ou un nombre négatif désactive la surveillance. Une valeur d'environnement non numérique est ignorée et la valeur par défaut s'applique.
hreflang.format aucun 'variant' 'variant', 'lang', ou une fonction. Toute autre chaîne se comporte comme 'variant'.
hreflang.xDefault aucun vrai Ajoute un lien x-default à la page source. Seul false le désactive.
switcher aucun vrai Rend le script du sélecteur de langue dans <UniversallyHead />. Seul false le désactive.
scriptsUrl UNIVERSALLY_SCRIPTS_URL https://scripts.universally.com Origine du script switcher.

Une clé manquante génère une erreur : "définissez UNIVERSALLY_API_KEY dans .env ou passez apiKey dans les options d'intégration. La clé est la clé de site de 64 caractères de la page de configuration de votre projet."

D'où proviennent les valeurs

Chaque valeur est résolue dans cet ordre, la première correspondance l'emporte :

  1. L'option dans universally({...})
  2. L'environnement du processus
  3. .env.local à la racine du projet Astro, à côté de astro.config.mjs
  4. .env dans le même dossier

Une valeur vide est considérée comme manquante. .env.production et d'autres fichiers de mode ne sont pas lus. La lecture des fichiers nécessite Node 20.12 ou plus récent ; sur les versions plus anciennes de Node, ils sont ignorés sans erreur. La clé est résolue au moment de la compilation et intégrée dans le bundle serveur, jamais dans le bundle client, elle doit donc être présente là où la compilation s'exécute. Voir Déployer un site Astro avec Universally.

hreflang.format

Pour une source en anglais (US) avec le français (France) sous /fr/ et l'espagnol (Mexique) sous /es/, la page /fr/about s'affiche ainsi :

<!-- format: 'variant', the default -->
<link rel="alternate" hreflang="en-us" href="https://example.com/about" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
<link rel="alternate" hreflang="es-419" href="https://example.com/es/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/about" />

<!-- format: 'lang' -->
<link rel="alternate" hreflang="en" href="https://example.com/about" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
<link rel="alternate" hreflang="es" href="https://example.com/es/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/about" />

La source vient en premier, puis les cibles dans l'ordre où Universally les renvoie, puis x-default. Les chaînes de requête et les ancres sont supprimées des URL. Voir balises hreflang.

Une fonction reçoit une ligne de langue, avec des champs tels que lang, variant, region et url, et renvoie la valeur. Elle ne s'exécute que lorsque la configuration s'exécute :

universally({
  hreflang: {
    format: (language) => language.variant.toUpperCase()
  }
})

Exemples

// Check for dashboard edits every five minutes
universally({ revalidateSeconds: 300 })

// Place the switcher script yourself
universally({ switcher: false })

// Serve through language subdomains
universally({ mode: 'proxy' })

Types et exportations

import universally, {
  REVALIDATE_PATH,            // '/_universally/revalidate'
  DEFAULT_REVALIDATE_SECONDS, // 60
  DEFAULT_SCRIPTS_URL         // 'https://scripts.universally.com'
} from '@universally-sdk/astro';
import type {
  HreflangOptions,
  ResolvedHreflang,
  UniversallyMode,
  UniversallyOptions,
  ResolvedUniversallyOptions
} from '@universally-sdk/astro';
import { UniversallyHead } from '@universally-sdk/astro/components';

Astro.locals est typé par /// <reference types="@universally-sdk/astro/env" /> dans src/env.d.ts :

declare namespace App {
  interface Locals {
    lang?: string;
    t: (source: string) => string;
    href: (path: string) => string;
  }
}

Point de terminaison push

POST /_universally/revalidate
X-Universally-Signature: v1=<hex>
Content-Type: application/json

{ "siteId": "site_123", "cacheEpoch": 12, "langs": ["fr"], "ts": 1750000000 }
Champ Signification
X-Universally-Signature HMAC-SHA256 du corps brut, indexé avec la moitié privée de la clé du site (ses 32 derniers caractères hexadécimaux), en hexadécimal minuscule
langues Codes de variante ou préfixes d'URL. null ou [] signifie toutes les langues.
ts Secondes Unix, dans les 5 minutes de l'horloge du récepteur

Une barre oblique finale sur le chemin est acceptée.

Statut Quand
200 { "ok": true, "reloaded": [...] }, listant uniquement les langues dont l'époque de cache a changé
401 { "ok": false } : corps malformé, signature manquante ou incorrecte, ts expiré, ou une clé sans moitié privée
404 Mode proxy, où le point de terminaison n'existe pas
405 Toute méthode autre que POST
413 Corps de plus de 16 KiB, vérifié avant la signature
Est-ce que cela vous a été utile ?