Diese Seite listet jede Option auf, die Sie an universally({...}) in astro.config.mjs übergeben können, die Umgebungsvariable, die jede Option festlegt, und das Format des Push-Endpunkts.
Optionen
| Option | Umgebungsvariable | Standard | Hinweise |
|---|---|---|---|
modus |
UNIVERSALLY_MODE |
'sdk' |
'sdk' oder 'proxy', Groß-/Kleinschreibung wird nicht beachtet. Jeder andere Wert löst beim Ausführen der Konfiguration einen Fehler aus. Siehe Astro mit Sprach-Subdomains. |
apiKey |
UNIVERSALLY_API_KEY |
keine, erforderlich | Der 64 Zeichen lange Schlüssel von der Setup-Seite des Projekts. Ein sk_-Schlüssel authentifiziert ebenfalls. Ein pk_-Schlüssel schlägt den Sprachenaufruf und den Build fehl. |
apiUrl |
UNIVERSALLY_API_URL |
https://api.universally.com |
Woher Sprachen und Kataloge gelesen werden. |
translatorUrl |
UNIVERSALLY_TRANSLATOR_URL |
https://translator.universally.com |
Wo neue Strings gemeldet werden. |
revalidateSeconds |
UNIVERSALLY_REVALIDATE_SECONDS |
60 |
Kleinster Abstand zwischen zwei Prüfungen auf Dashboard-Bearbeitungen, pro Sprache. 0 oder eine negative Zahl schaltet das Abfragen aus. Ein nicht numerischer Umgebungswert wird ignoriert und der Standardwert angewendet. |
hreflang.format |
keine | 'variant' |
'variant', 'lang' oder eine Funktion. Jeder andere String verhält sich wie 'variant'. |
hreflang.xDefault |
keine | wahr |
Fügt einen x-default-Link zur Quellseite hinzu. Nur false deaktiviert ihn. |
switcher |
keine | wahr |
Rendert das Sprachumschalter-Skript in <UniversallyHead />. Nur false deaktiviert es. |
scriptsUrl |
UNIVERSALLY_SCRIPTS_URL |
https://scripts.universally.com |
Ursprung, von dem das Switcher-Skript geladen wird. |
Ein fehlender Schlüssel löst aus: "setze UNIVERSALLY_API_KEY in .env oder übergib apiKey in den Integrationsoptionen. Der Schlüssel ist der 64 Zeichen lange Site-Schlüssel von deiner Projekt-Setup-Seite."
Woher Werte stammen
Jeder Wert wird in dieser Reihenfolge aufgelöst, der erste Treffer gewinnt:
- Die Option in
universally({...}) - Die Prozessumgebung
.env.localim Astro-Projekt-Root, nebenastro.config.mjs.envim selben Ordner
Ein leerer Wert zählt als fehlend. .env.production und andere Modus-Dateien werden nicht gelesen. Das Lesen der Dateien erfordert Node 20.12 oder neuer; auf älteren Node-Versionen werden sie ohne Fehler übersprungen. Der Schlüssel wird zur Build-Zeit aufgelöst und in das Server-Bundle kompiliert, niemals in das Client-Bundle, daher muss er dort vorhanden sein, wo der Build ausgeführt wird. Siehe Stelle eine Astro-Website mit Universally bereit.
hreflang.format
Für eine Quelle von Englisch (US) mit Französisch (Frankreich) unter /fr/ und Spanisch (Mexiko) unter /es/ wird die Seite /fr/about wie folgt gerendert:
<!-- 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" />
Die Quelle kommt zuerst, dann die Ziele in der Reihenfolge, in der Universally sie zurückgibt, dann x-default. Query-Strings und Hashes werden aus den URLs entfernt. Siehe hreflang-Tags.
Eine Funktion empfängt eine Sprachzeile mit Feldern wie lang, variant, region und url und gibt den Wert zurück. Sie wird nur ausgeführt, wenn die Konfiguration ausgeführt wird:
universally({
hreflang: {
format: (language) => language.variant.toUpperCase()
}
})
Beispiele
// 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' })
Typen und Exporte
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 wird typisiert durch /// <reference types="@universally-sdk/astro/env" /> in src/env.d.ts:
declare namespace App {
interface Locals {
lang?: string;
t: (source: string) => string;
href: (path: string) => string;
}
}
Push-Endpunkt
POST /_universally/revalidate
X-Universally-Signature: v1=<hex>
Content-Type: application/json
{ "siteId": "site_123", "cacheEpoch": 12, "langs": ["fr"], "ts": 1750000000 }
| Feld | Bedeutung |
|---|---|
X-Universally-Signature |
HMAC-SHA256 des rohen Bodys, verschlüsselt mit der privaten Hälfte des Site-Schlüssels (seine letzten 32 Hex-Zeichen), als Kleinbuchstaben-Hex |
langs |
Varianten-Codes oder URL-Präfixe. null oder [] bedeutet jede Sprache. |
ts |
Unix-Sekunden, innerhalb von 5 Minuten der Uhr des Empfängers |
Ein abschließender Schrägstrich im Pfad wird akzeptiert.
| Status | Wann |
|---|---|
200 |
{ "ok": true, "reloaded": [...] }, listet nur Sprachen auf, deren Cache-Epoche sich geändert hat |
401 |
{ "ok": false }: fehlerhafter Body, fehlende oder falsche Signatur, abgelaufenes ts oder ein Schlüssel ohne private Hälfte |
404 |
Proxy-Modus, bei dem der Endpunkt nicht existiert |
405 |
Jede andere Methode als POST |
413 |
Body über 16 KiB, vor der Signatur geprüft |