Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Cronologia delle versioni
- "Introdotto il contenuto basato su selezione"v9.1.030/07/2026
Il contenuto di questa pagina è stato tradotto con un'IA.
Vedi l'ultima versione del contenuto originale in ingleseSe hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.
Collegamento GitHub alla documentazioneCopia il Markdown del documento nella porta-documenti
Contenuto Basato su Selezione / Select in Intlayer
Come funziona Select
In Intlayer, il contenuto basato su selezione si ottiene tramite la funzione select, che mappa valori stringa arbitrari al rispettivo contenuto. È l'equivalente di un messaggio {value, select, …} di ICU, o di un'istruzione switch nel codice della tua applicazione.
Usa select quando il discriminante è una stringa in formato libero: uno stato, un piano, una piattaforma, un ruolo. Per gli altri discriminanti, Intlayer fornisce nodi dedicati:
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Discriminante | Nodo |
|---|---|
| Una quantità | enu() |
| Un booleano | cond() |
| Un genere | gender() |
| Qualsiasi altra stringa | select() |
Impostazione del Contenuto Basato su Selezione
Per impostare il contenuto basato su selezione nel tuo progetto Intlayer, crea un modulo di contenuto che includa le tue definizioni di selezione. Di seguito sono riportati esempi in vari formati.
Copiare il codice nella clipboard
import { select, type Dictionary } from "intlayer";
const myPostContent = {
key: "my_key",
content: {
publishStatus: select({
draft: "This post is a draft",
published: "This post is live",
scheduled: "This post is scheduled",
fallback: "Unknown status", // Opzionale
}),
},
} satisfies Dictionary;
export default myPostContent;
Se non viene dichiarato unfallback, l'ultima chiave dichiarata verrà utilizzata come fallback quando il valore fornito non corrisponde ad alcun caso dichiarato: lo stesso contratto dicond()egender().
Sicurezza dei Tipi
L'argomento accettato viene dedotto dai casi dichiarati:
- Senza un
fallback, sono accettati solo i casi dichiarati: un errore di battitura è un errore di tipo. - Con un
fallback, viene accettata qualsiasi stringa (il fallback copre i valori non corrispondenti), mentre i casi dichiarati offrono comunque l'autocompletamento.
Perché non un semplice oggetto?
È allettante dichiarare un semplice oggetto e indicizzarlo con il valore a runtime:
Copiare il codice nella clipboard
Il compilatore di Intlayer analizza il tuo codice sorgente per eliminare il contenuto inutilizzato e minimizzare le chiavi rimanenti. Un accesso computato dinamico (obj[expr]) non può essere risolto staticamente, per cui l'intero ramo viene contrassegnato come opaco: viene mantenuto nel bundle e le sue chiavi restano non minimizzate.
Con select(), la risoluzione del caso avviene all'interno di una chiamata a funzione anziché come accesso a una proprietà. Il compilatore vede un singolo accesso di campo statico e ottimizza il nodo esattamente come enu(), cond() o gender():
Copiare il codice nella clipboard
Utilizzo del Contenuto Basato su Selezione
Per utilizzare il contenuto basato su selezione all'interno di un componente React, importa e usa l'hook useIntlayer dal pacchetto react-intlayer. Questo hook recupera il contenuto per la chiave specificata e ti consente di passare un valore per selezionare l'output appropriato.
Copiare il codice nella clipboard
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Output: This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Output: This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Output: Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;
Per utilizzare il contenuto basato su selezione all'interno dei componenti client Next.js, recuperalo tramite l'hook useIntlayer. Ecco un esempio:
Copiare il codice nella clipboard
"use client";
import type { FC } from "react";
import { useIntlayer } from "next-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Per utilizzare il contenuto basato su selezione all'interno dei componenti Vue, recuperalo tramite l'hook useIntlayer. Ecco un esempio:
Copiare il codice nella clipboard
Per utilizzare il contenuto basato su selezione all'interno dei componenti Svelte, recuperalo tramite l'hook useIntlayer. Si accede allo store utilizzando $. Ecco un esempio:
Copiare il codice nella clipboard
Per utilizzare il contenuto basato su selezione all'interno dei componenti Preact, recuperalo tramite l'hook useIntlayer. Ecco un esempio:
Copiare il codice nella clipboard
import type { FC } from "preact";
import { useIntlayer } from "preact-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Per utilizzare il contenuto basato su selezione all'interno dei componenti SolidJS, recuperalo tramite l'hook useIntlayer. Ecco un esempio:
Copiare il codice nella clipboard
import type { Component } from "solid-js";
import { useIntlayer } from "solid-intlayer";
const PostStatus: Component = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Per utilizzare il contenuto basato su selezione all'interno dei componenti Angular, recuperalo tramite l'hook useIntlayer. Ecco un esempio:
Copiare il codice nella clipboard
Per utilizzare il contenuto basato su selezione con vanilla-intlayer, recuperalo tramite l'hook useIntlayer. Ecco un esempio:
Copiare il codice nella clipboard
import { installIntlayer, useIntlayer } from "vanilla-intlayer";
installIntlayer();
const content = useIntlayer("my_key").onChange((newContent) => {
document.getElementById("status")!.textContent =
newContent.publishStatus("draft");
});
// Rendering iniziale
document.getElementById("status")!.textContent = content.publishStatus("draft");
Combinare Select con altri nodi
Ciascun caso contiene un nodo di contenuto completo, pertanto select si combina con t(), insert(), md() e gli altri:
Copiare il codice nella clipboard
Copiare il codice nella clipboard
Migrazione da ICU select
I messaggi che utilizzano l'argomento select di ICU vengono importati come nodi select:
Copiare il codice nella clipboard
diventa
Copiare il codice nella clipboard
Il caso ICU other viene rinominato in fallback, che è il nome canonico in Intlayer per il caso catch-all. Il secondo argomento registra il nome della variabile ICU affinché il messaggio ritorni esattamente alla stessa stringa ICU al momento dell'esportazione.
Un ICUselecti cui casi sono valori di genere (male/female/other) viene invece importato come nodogender.
Risorse Aggiuntive
Per informazioni più dettagliate sulla configurazione e l'uso, fai riferimento alle seguenti risorse:
Queste risorse offrono ulteriori approfondimenti sulla configurazione e l'utilizzo di Intlayer in vari ambienti e framework.