Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Cronologia delle versioni
- "Init history"v8.8.004/05/2026
Il contenuto di questa pagina è stato tradotto con un'IA.
Vedi l'ultima versione del contenuto originale in ingleseIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Contenuto Plurale / Il plurale in Intlayer
Come funziona il plurale
In Intlayer, il contenuto plurale viene ottenuto tramite la funzione plural, che mappa le categorie plurali CLDR, zero, one, two, few, many, other, al loro contenuto corrispondente. La categoria corretta viene selezionata automaticamente in base alla locale attiva e a un valore di conteggio, utilizzando l'API integrata nella piattaforma Intl.PluralRules.
A differenza di enu, che seleziona il contenuto in base a intervalli numerici definiti da te, plural delega la selezione alle regole CLDR. Questo è ciò che lo rende scalabile per lingue con regole di pluralizzazione complesse, come il russo, il polacco, l'arabo o il gallese, senza dover scrivere manualmente la logica del modulo.
Quando usare plural vs enu
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Caso d'uso | Helper |
|---|---|
| Forme plurali grammaticali basate sulla locale (una mela / due mele / 5 mele) | plural |
Intervalli numerici personalizzati (<5, >=10) o bucket non CLDR | enu |
Se ti rivolgi solo all'inglese o all'italiano (che hanno solo one / other), entrambi funzionano. Per qualsiasi lingua con distinzioni few / many / two, preferisci plural.
Configurazione del contenuto plurale
Per configurare il contenuto plurale nel tuo progetto Intlayer, crea un modulo di contenuto che utilizzi l'helper plural. La categoria other è obbligatoria e viene utilizzata come fallback quando una locale non definisce una categoria più specifica.
Copiare il codice nella clipboard
import { plural, t, type Dictionary } from "intlayer";
const openingsContent = {
key: "total_openings",
content: {
totalOpenings: t({
en: plural({
one: "{{count}} opening",
other: "{{count}} openings",
}),
it: plural({
one: "{{count}} posizione aperta",
other: "{{count}} posizioni aperte",
}),
}),
},
} satisfies Dictionary;
export default openingsContent;Le categorie supportate sono
zero,one,two,few,many,other. Devi solo dichiarare le categorie utilizzate dalla tua lingua di destinazione, Intlayer torna aotherquando nessuna categoria specifica corrisponde.Il segnaposto
{{count}}viene sostituito automaticamente con il conteggio passato in fase di esecuzione. Puoi includere anche altri segnaposto (vedi Segnaposto personalizzati sotto).
Utilizzo del contenuto plurale con React Intlayer
Per utilizzare il contenuto plurale all'interno di un componente React, recuperalo tramite l'hook useIntlayer e chiamalo con un conteggio. La locale attiva e il conteggio vengono combinati per scegliere la categoria CLDR corrispondente.
Copiare il codice nella clipboard
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
const { totalOpenings } = useIntlayer("total_openings");
return (
<div>
{/* In inglese: */}
{/* count=0 → "0 openings" (other) */}
{/* count=1 → "1 opening" (one) */}
{/* count=2 → "2 openings" (other) */}
{/* count=21 → "21 openings" (other) */}
<p>{totalOpenings(count)}</p>
</div>
);
};
export default OpeningsComponent;Puoi chiamare la funzione restituita in due modi equivalenti:
Copiare il codice nella clipboard
totalOpenings(21); // abbreviato: solo conteggiototalOpenings({ count: 21 }); // forma esplicitaSegnaposto personalizzati
Le stringhe plurali possono includere segnaposto diversi da {{count}}. Passali sotto forma di oggetto insieme a count:
Copiare il codice nella clipboard
import { plural, type Dictionary } from "intlayer";
const inboxContent = {
key: "inbox_summary",
content: {
summary: plural({
one: "{{name}}, hai {{count}} nuovo messaggio",
other: "{{name}}, hai {{count}} nuovi messaggi",
}),
},
} satisfies Dictionary;
export default inboxContent;Copiare il codice nella clipboard
const { summary } = useIntlayer("inbox_summary");
summary({ count: 1, name: "Alice" });
// → "Alice, hai 1 nuovo messaggio"
summary({ count: 7, name: "Alice" });
// → "Alice, hai 7 nuovi messaggi"Categorie CLDR a colpo d'occhio
Lingue diverse utilizzano diversi sottoinsiemi delle categorie CLDR. Alcuni casi comuni:
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Lingua | Categorie utilizzate |
|---|---|
Inglese (en) | one, other |
Francese (fr) | one, many, other |
Russo (ru) | one, few, many, other |
Polacco (pl) | one, few, many, other |
Arabo (ar) | zero, one, two, few, many, other |
| Giapponese / Cinese | solo other |
Non è necessario memorizzarlo, dichiara le categorie per le quali hai traduzioni e Intlayer tornerà a other quando necessario.
Limitazione
A differenza di altri nodi, il nodo plural non può ancora essere nidificato con nodi figli.
Esempio:
Valido:
Copiare il codice nella clipboard
totalOpenings: t({ en: plural({ one: "{{count}} opening", other: "{{count}} openings", }), fr: plural({ one: "{{count}} offre", other: "{{count}} offres", }), }),Non valido:
Copiare il codice nella clipboard
totalOpenings: plural({ one: t({ en: "{{count}} opening", fr: "{{count}} offre", }), other: t({ en: "{{count}} openings", fr: "{{count}} offres", }),}),Risorse aggiuntive
Per informazioni più dettagliate sulla configurazione e l'utilizzo, fare riferimento alle seguenti risorse:
- Documentazione sull'enumerazione
- Documentazione sull'inserimento
- Documentazione della CLI Intlayer
- Documentazione React Intlayer
- Documentazione Next Intlayer
Queste risorse offrono ulteriori approfondimenti sulla configurazione e l'utilizzo di Intlayer in vari ambienti e framework.