Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Init history"v8.8.04.05.2026
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimIf 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
Treści w liczbie mnogiej / Liczba mnoga w Intlayer
Jak działa liczba mnoga
W Intlayer treści w liczbie mnogiej są realizowane za pomocą funkcji plural, która mapuje kategorie liczby mnogiej CLDR, zero, one, two, few, many, other, do odpowiadającej im treści. Prawidłowa kategoria jest wybierana automatycznie na podstawie aktywnego języka i wartości licznika, przy użyciu wbudowanego w platformę API Intl.PluralRules.
W przeciwieństwie do enu, który wybiera treści na podstawie zdefiniowanych przez Ciebie zakresów liczbowych, plural deleguje wybór do reguł CLDR. To właśnie sprawia, że jest on skalowalny dla języków o złożonych regułach pluralizacji, takich jak polski, rosyjski, arabski czy walijski, bez konieczności ręcznego pisania logiki modulo.
Kiedy używać plural vs enu
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Przypadek użycia | Pomocnik |
|---|---|
| Formy gramatyczne liczby mnogiej zależne od języka (jedno jabłko / dwa jabłka / 5 jabłek) | plural |
Niestandardowe zakresy liczbowe (<5, >=10) lub przedziały spoza CLDR | enu |
Jeśli Twoim celem jest tylko język angielski (który ma tylko one / other), oba rozwiązania zadziałają. Dla każdego języka z rozróżnieniem na few / many / two, preferuj plural.
Konfigurowanie treści w liczbie mnogiej
Aby skonfigurować treści w liczbie mnogiej w swoim projekcie Intlayer, utwórz moduł treści korzystający z pomocnika plural. Kategoria other jest wymagana i służy jako rezerwowa, gdy dany język nie definiuje bardziej szczegółowej kategorii.
Skopiuj kod do schowka
import { plural, t, type Dictionary } from "intlayer";
const openingsContent = {
key: "total_openings",
content: {
totalOpenings: t({
en: plural({
one: "{{count}} opening",
other: "{{count}} openings",
}),
pl: plural({
one: "{{count}} wolne miejsce",
few: "{{count}} wolne miejsca",
many: "{{count}} wolnych miejsc",
other: "{{count}} wolnych miejsc",
}),
}),
},
} satisfies Dictionary;
export default openingsContent;Obsługiwane kategorie to
zero,one,two,few,many,other. Musisz zadeklarować tylko te kategorie, których używa Twój język docelowy, Intlayer powraca doother, gdy żadna konkretna kategoria nie pasuje.Symbol zastępczy
{{count}}jest automatycznie zastępowany wartością licznika przekazaną w czasie wykonywania. Możesz również dołączyć inne symbole zastępcze (patrz Niestandardowe symbole zastępcze poniżej).
Używanie treści w liczbie mnogiej z React Intlayer
Aby użyć treści w liczbie mnogiej w komponencie React, pobierz ją za pomocą hooka useIntlayer i wywołaj z licznikiem. Aktywny język i licznik są łączone, aby wybrać pasującą kategorię CLDR.
Skopiuj kod do schowka
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
const { totalOpenings } = useIntlayer("total_openings");
return (
<div>
{/* W języku angielskim: */}
{/* 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;Możesz wywołać zwróconą funkcję na dwa równoważne sposoby:
Skopiuj kod do schowka
totalOpenings(21); // skrót: tylko liczniktotalOpenings({ count: 21 }); // forma jawnaNiestandardowe symbole zastępcze
Ciągi znaków w liczbie mnogiej mogą zawierać symbole zastępcze inne niż {{count}}. Przekaż je w formie obiektu obok count:
Skopiuj kod do schowka
import { plural, type Dictionary } from "intlayer";
const inboxContent = {
key: "inbox_summary",
content: {
summary: plural({
one: "{{name}}, masz {{count}} nową wiadomość",
few: "{{name}}, masz {{count}} nowe wiadomości",
many: "{{name}}, masz {{count}} nowych wiadomości",
other: "{{name}}, masz {{count}} nowych wiadomości",
}),
},
} satisfies Dictionary;
export default inboxContent;Skopiuj kod do schowka
const { summary } = useIntlayer("inbox_summary");
summary({ count: 1, name: "Alice" });
// → "Alice, masz 1 nową wiadomość"
summary({ count: 7, name: "Alice" });
// → "Alice, masz 7 nowych wiadomości"Kategorie CLDR w skrócie
Różne języki używają różnych podzbiorów kategorii CLDR. Kilka typowych przypadków:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Język | Używane kategorie |
|---|---|
Angielski (en) | one, other |
Francuski (fr) | one, many, other |
Rosyjski (ru) | one, few, many, other |
Polski (pl) | one, few, many, other |
Arabski (ar) | zero, one, two, few, many, other |
| Japoński / Chiński | tylko other |
Nie musisz tego zapamiętywać, zadeklaruj kategorie, dla których masz tłumaczenia, a Intlayer w razie potrzeby powróci do other.
Ograniczenie
W przeciwieństwie do innych węzłów, węzeł plural nie może być jeszcze zagnieżdżany z węzłami podrzędnymi.
Przykład:
Prawidłowe:
Skopiuj kod do schowka
totalOpenings: t({ en: plural({ one: "{{count}} opening", other: "{{count}} openings", }), fr: plural({ one: "{{count}} offre", other: "{{count}} offres", }), }),Nieprawidłowe:
Skopiuj kod do schowka
totalOpenings: plural({ one: t({ en: "{{count}} opening", fr: "{{count}} offre", }), other: t({ en: "{{count}} openings", fr: "{{count}} offres", }),}),Dodatkowe zasoby
Aby uzyskać bardziej szczegółowe informacje na temat konfiguracji i użytkowania, zapoznaj się z następującymi zasobami:
- Dokumentacja wyliczeń (Enumeration)
- Dokumentacja wstawiania (Insertion)
- Dokumentacja Intlayer CLI
- Dokumentacja React Intlayer
- Dokumentacja Next Intlayer
Zasoby te oferują dalszy wgląd w konfigurację i użytkowanie Intlayer w różnych środowiskach i frameworkach.