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 :
- L'option dans
universally({...}) - L'environnement du processus
.env.localà la racine du projet Astro, à côté deastro.config.mjs.envdans 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 |