Questa pagina elenca ogni opzione che puoi passare a universally({...}) in astro.config.mjs, la variabile d'ambiente che imposta ciascuna di esse e il formato dell'endpoint di push.
Opzioni
| Opzione | Variabile d'ambiente | Predefinito | Note |
|---|---|---|---|
modalità |
UNIVERSALLY_MODE |
'sdk' |
'sdk' o 'proxy', non fa distinzione tra maiuscole e minuscole. Qualsiasi altro valore genera un errore all'esecuzione della configurazione. Vedi Astro con sottodomini linguistici. |
apiKey |
UNIVERSALLY_API_KEY |
nessuno, obbligatorio | La chiave di 64 caratteri dalla pagina di configurazione del progetto. Anche una chiave sk_ autentica. Una chiave pk_ causa un errore nella chiamata delle lingue e nella build. |
apiUrl |
UNIVERSALLY_API_URL |
https://api.universally.com |
Da dove vengono lette le lingue e i cataloghi. |
translatorUrl |
UNIVERSALLY_TRANSLATOR_URL |
https://translator.universally.com |
Dove vengono segnalate le nuove stringhe. |
revalidateSeconds |
UNIVERSALLY_REVALIDATE_SECONDS |
60 |
Intervallo minimo tra due controlli per le modifiche alla dashboard, per lingua. 0 o un numero negativo disattiva il polling. Un valore di ambiente non numerico viene ignorato e si applica il valore predefinito. |
hreflang.format |
nessuno | 'variant' |
'variant', 'lang', o una funzione. Qualsiasi altra stringa si comporta come 'variant'. |
hreflang.xDefault |
nessuno | true |
Aggiunge un link x-default alla pagina sorgente. Solo false lo disabilita. |
switcher |
nessuno | true |
Renderizza lo script dello switcher linguistico in <UniversallyHead />. Solo false lo disabilita. |
scriptsUrl |
UNIVERSALLY_SCRIPTS_URL |
https://scripts.universally.com |
Origine da cui viene caricato lo script switcher. |
Una chiave mancante genera: "imposta UNIVERSALLY_API_KEY in .env o passa apiKey nelle opzioni di integrazione. La chiave è la chiave del sito di 64 caratteri dalla pagina di configurazione del tuo progetto."
Da dove provengono i valori
Ogni valore viene risolto in questo ordine, il primo che corrisponde vince:
- L'opzione in
universally({...}) - L'ambiente di processo
.env.localnella root del progetto Astro, accanto aastro.config.mjs.envnella stessa cartella
Un valore vuoto viene considerato mancante. .env.production e altri file di modalità non vengono letti. La lettura dei file richiede Node 20.12 o versioni più recenti; su Node più vecchi vengono saltati senza errori. La chiave viene risolta al momento della compilazione e incorporata nel bundle del server, mai nel bundle del client, quindi deve essere presente dove viene eseguita la compilazione. Vedi Distribuisci un sito Astro con Universally.
hreflang.format
Per una sorgente di inglese (US) con francese (Francia) sotto /fr/ e spagnolo (Messico) sotto /es/, la pagina /fr/about viene renderizzata:
<!-- 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 sorgente viene prima, poi i target nell'ordine in cui Universally li restituisce, poi x-default. Le stringhe di query e gli hash vengono rimossi dagli URL. Vedi tag hreflang.
Una funzione riceve una riga di lingua, con campi come lang, variant, region e url, e restituisce il valore. Viene eseguita solo quando viene eseguita la configurazione:
universally({
hreflang: {
format: (language) => language.variant.toUpperCase()
}
})
Esempi
// 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' })
Tipi ed esportazioni
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 è tipizzato da /// <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;
}
}
Endpoint push
POST /_universally/revalidate
X-Universally-Signature: v1=<hex>
Content-Type: application/json
{ "siteId": "site_123", "cacheEpoch": 12, "langs": ["fr"], "ts": 1750000000 }
| Campo | Significato |
|---|---|
X-Universally-Signature |
HMAC-SHA256 del corpo grezzo, con chiave la metà privata della chiave del sito (i suoi ultimi 32 caratteri esadecimali), come esadecimale minuscolo |
langs |
Codici varianti o prefissi URL. null o [] significa ogni lingua. |
ts |
Secondi Unix, entro 5 minuti dall'orologio del ricevitore |
Viene accettato uno slash finale sul percorso.
| Stato | Quando |
|---|---|
200 |
{ "ok": true, "reloaded": [...] }, elencando solo le lingue la cui epoca della cache è cambiata |
401 |
{ "ok": false }: corpo malformato, firma mancante o errata, ts scaduto, o una chiave senza metà privata |
404 |
Modalità proxy, dove l'endpoint non esiste |
405 |
Qualsiasi metodo diverso da POST |
413 |
Corpo superiore a 16 KiB, controllato prima della firma |