È possibile comporre i tipi di nodo? (es. più plurali in una sola frase)
Sì, i tipi di nodo in Intlayer possono essere composti. Ad esempio, puoi annidare un plural() all'interno di un altro plural(), oppure comporre plural() con insert().
Quando devi esprimere due variabili di plurale indipendenti in un'unica frase (ad esempio: "1 file in 2 cartelle" rispetto a "3 file in 1 cartella"), ci sono due approcci principali:
- Usare
insert()con chiaviplural()separate (Consigliato): Pulito, manutenibile e preserva il corretto ordine delle parole tra le diverse lingue. - Annidare
plural()all'interno diplural()(Composizione diretta): Sintassi valida, ma può portare a un'esplosione combinatoria di rami per le lingue con regole di plurale complesse.
Comporre insert() con plural()
Il pattern più flessibile e idiomatico consiste nel dichiarare chiavi plural separate per ciascun termine al plurale e combinarle con un template insert().
1. Dichiarare il contenuto
src/fileSummary.content.ts
Copiare il codice
Copiare il codice nella clipboard
import { insert, plural, t, type Dictionary } from "intlayer";
const fileSummaryContent = {
key: "file_summary",
content: {
// Il template di inserimento definisce la disposizione degli elementi per lingua
summary: t({
it: insert("{{files}} in {{folders}}"),
en: insert("{{files}} in {{folders}}"),
fr: insert("{{files}} dans {{folders}}"),
ja: insert("{{folders}}の中に{{files}}"), // Ordine personalizzato per il giapponese
}),
files: t({
it: plural({
one: "{{count}} file",
other: "{{count}} file",
}),
en: plural({
one: "{{count}} file",
other: "{{count}} files",
}),
fr: plural({
one: "{{count}} fichier",
other: "{{count}} fichiers",
}),
ja: plural({
other: "{{count}} 個のファイル",
}),
}),
folders: t({
it: plural({
one: "{{count}} cartella",
other: "{{count}} cartelle",
}),
en: plural({
one: "{{count}} folder",
other: "{{count}} folders",
}),
fr: plural({
one: "{{count}} dossier",
other: "{{count}} dossiers",
}),
ja: plural({
other: "{{count}} 個のフォルダー",
}),
}),
},
} satisfies Dictionary;
export default fileSummaryContent;
2. Utilizzare nel componente
src/components/FileSummary.tsx
Copiare il codice
Copiare il codice nella clipboard
src/components/FileSummary.vue
Copiare il codice
Copiare il codice nella clipboard
src/components/FileSummary.svelte
Copiare il codice
Copiare il codice nella clipboard
Perché questo approccio è consigliato
- Struttura della frase e ordine delle parole: Lingue diverse dispongono aggettivi, numeri e oggetti in ordini differenti (ad esempio il giapponese o il tedesco possono invertire l'ordine di file e cartelle). Un template
insert()offre ai traduttori il pieno controllo sull'ordine delle parole senza interferire con le regole del plurale. - Previene l'esplosione combinatoria: Se la lingua A ha 2 forme di plurale (inglese:
one,other) e la lingua B ne ha 4 (russo:one,few,many,other), annidare i plurali richiede $4 \times 4 = 16$ rami per il russo. Con chiavi separate, si dichiarano solo $4 + 4 = 8$ rami. - Riutilizzabilità: Puoi riutilizzare le definizioni di plurale
filesofoldersin altre parti della tua interfaccia.