Czy można łączyć typy węzłów? (np. wiele form liczby mnogiej w jednym zdaniu)
Tak, typy węzłów w Intlayer można ze sobą łączyć. Możesz na przykład zagnieździć plural() wewnątrz innego plural() lub połączyć plural() z insert().
Gdy musisz wyrazić dwie niezależne zmienne liczby mnogiej w jednym zdaniu (na przykład: "1 plik w 2 folderach" vs. "3 pliki w 1 folderze"), istnieją dwa główne podejścia:
- Użycie
insert()z osobnymi kluczamiplural()(Zalecane): Czyste, łatwe w utrzymaniu i zachowujące prawidłowy szyk wyrazów w różnych językach. - Zagnieżdżanie
plural()wewnątrzplural()(Bezpośrednia kompozycja): Prawidłowa składnia, ale może prowadzić do kombinatorycznej eksplozji gałęzi w językach o skomplikowanych regułach liczby mnogiej.
Łączenie insert() z plural()
Najbardziej elastycznym i idiomatycznym wzorcem jest zadeklarowanie osobnych kluczy plural dla każdego terminu i połączenie ich za pomocą szablonu insert().
1. Deklaracja zawartości
src/fileSummary.content.ts
Kopiuj kod
Skopiuj kod do schowka
import { insert, plural, t, type Dictionary } from "intlayer";
const fileSummaryContent = {
key: "file_summary",
content: {
// Szablon wstawiania określa układ elementów w zależności od języka
summary: t({
pl: insert("{{files}} w {{folders}}"),
en: insert("{{files}} in {{folders}}"),
fr: insert("{{files}} dans {{folders}}"),
ja: insert("{{folders}}の中に{{files}}"), // Niestandardowy szyk zdań w języku japońskim
}),
files: t({
pl: plural({
one: "{{count}} plik",
few: "{{count}} pliki",
many: "{{count}} plików",
}),
en: plural({
one: "{{count}} file",
other: "{{count}} files",
}),
fr: plural({
one: "{{count}} fichier",
other: "{{count}} fichiers",
}),
ja: plural({
other: "{{count}} 個のファイル",
}),
}),
folders: t({
pl: plural({
one: "{{count}} folder",
few: "{{count}} foldery",
many: "{{count}} folderów",
}),
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. Wykorzystanie w komponencie
src/components/FileSummary.tsx
Kopiuj kod
Skopiuj kod do schowka
src/components/FileSummary.vue
Kopiuj kod
Skopiuj kod do schowka
src/components/FileSummary.svelte
Kopiuj kod
Skopiuj kod do schowka
Dlaczego to podejście jest zalecane
- Szyk zdania i kolejność słów: Różne języki umieszczają przymiotniki, liczniki i rzeczowniki w różnej kolejności (np. japoński lub niemiecki mogą odwracać kolejność plików i folderów). Szablon
insert()daje tłumaczom pełną kontrolę nad szykiem słów bez wpływu na reguły liczby mnogiej. - Zapobiega eksplozji kombinatorycznej: Jeśli język A ma 2 formy liczby mnogiej (angielski:
one,other), a język B ma 4 formy (polski:one,few,many,other), zagnieżdżanie reguł plural wymaga $4 \times 4 = 16$ gałęzi dla polskiego. W przypadku osobnych kluczy deklaruje się tylko $4 + 4 = 8$ gałęzi. - Możliwość ponownego użycia: Definicje liczby mnogiej
fileslubfoldersmożna wykorzystać w innych częściach interfejsu.