Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Init history"v8.8.004.05.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюIf 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
Контент у множині / Множина в Intlayer
Як працює множина
В Intlayer контент у множині реалізується за допомогою функції plural, яка зіставляє категорії множини CLDR, zero, one, two, few, many, other, з відповідним контентом. Правильна категорія вибирається автоматично на основі активної локалі та значення лічильника за допомогою вбудованого в платформу API Intl.PluralRules.
На відміну від enu, який вибирає контент на основі числових діапазонів, визначених вами самостійно, plural делегує вибір правилам CLDR. Це робить його масштабованим для мов зі складними правилами множини, таких як українська, польська, арабська або валлійська, без необхідності вручну писати логіку по модулю.
Коли використовувати plural проти enu
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Варіант використання | Помічник |
|---|---|
| Граматичні форми множини з урахуванням локалі (одне яблуко / два яблука / 5 яблук) | plural |
Спеціальні числові діапазони (<5, >=10) або кошики, що не належать до CLDR | enu |
Якщо ви орієнтуєтеся лише на англійську мову (в якій є лише one / other), підійде будь-який варіант. Для будь-якої мови з розрізненням few / many / two надавайте перевагу plural.
Налаштування контенту у множині
Щоб налаштувати контент у множині у вашому проекті Intlayer, створіть модуль контенту, який використовує помічник plural. Категорія other є обов'язковою і використовується як резервний варіант, коли локаль не визначає більш конкретну категорію.
Скопіюйте код у буфер обміну
import { plural, t, type Dictionary } from "intlayer";
const openingsContent = {
key: "total_openings",
content: {
totalOpenings: t({
en: plural({
one: "{{count}} opening",
other: "{{count}} openings",
}),
uk: plural({
one: "{{count}} вакансія",
few: "{{count}} вакансії",
many: "{{count}} вакансій",
other: "{{count}} вакансій",
}),
}),
},
} satisfies Dictionary;
export default openingsContent;Підтримувані категорії:
zero,one,two,few,many,other. Вам потрібно оголосити лише ті категорії, які використовує ваша цільова мова, Intlayer повертається доother, коли жодна конкретна категорія не підходить.Заповнювач
{{count}}автоматично замінюється лічильником, який ви передаєте під час виконання. Ви також можете включити інші заповнювачі (див. Спеціальні заповнювачі нижче).
Використання контенту у множині з React Intlayer
Щоб використовувати контент у множині всередині компонента React, отримайте його за допомогою хука useIntlayer і викличте його з лічильником. Активна локаль і лічильник поєднуються для вибору відповідної категорії CLDR.
Скопіюйте код у буфер обміну
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
const { totalOpenings } = useIntlayer("total_openings");
return (
<div>
{/* Англійською: */}
{/* 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;Ви можете викликати повернуту функцію двома еквівалентними способами:
Скопіюйте код у буфер обміну
totalOpenings(21); // скорочення: лише лічильникtotalOpenings({ count: 21 }); // явна формаСпеціальні заповнювачі
Рядки у множині можуть включати заповнювачі, відмінні від {{count}}. Передайте їх у формі об'єкта разом із count:
Скопіюйте код у буфер обміну
import { plural, type Dictionary } from "intlayer";
const inboxContent = {
key: "inbox_summary",
content: {
summary: plural({
one: "{{name}}, у вас {{count}} нове повідомлення",
few: "{{name}}, у вас {{count}} нові повідомлення",
many: "{{name}}, у вас {{count}} нових повідомлень",
other: "{{name}}, у вас {{count}} нових повідомлень",
}),
},
} satisfies Dictionary;
export default inboxContent;Скопіюйте код у буфер обміну
const { summary } = useIntlayer("inbox_summary");
summary({ count: 1, name: "Alice" });
// → "Alice, у вас 1 нове повідомлення"
summary({ count: 7, name: "Alice" });
// → "Alice, у вас 7 нових повідомлень"Категорії CLDR з першого погляду
Різні мови використовують різні підмножини категорій CLDR. Кілька поширених випадків:
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Мова | Використовувані категорії |
|---|---|
Англійська (en) | one, other |
Французька (fr) | one, many, other |
Російська (ru) | one, few, many, other |
Українська (uk) | one, few, many, other |
Польська (pl) | one, few, many, other |
Арабська (ar) | zero, one, two, few, many, other |
| Японська / Китайська | лише other |
Вам не потрібно це запам'ятовувати, оголошуйте категорії, для яких у вас є переклади, і Intlayer за потреби повернеться до other.
Обмеження
На відміну від інших вузлів, вузол plural поки що не може бути вкладеним у дочірні вузли.
Приклад:
Дійсно:
Скопіюйте код у буфер обміну
totalOpenings: t({ en: plural({ one: "{{count}} opening", other: "{{count}} openings", }), fr: plural({ one: "{{count}} offre", other: "{{count}} offres", }), }),Недійсно:
Скопіюйте код у буфер обміну
totalOpenings: plural({ one: t({ en: "{{count}} opening", fr: "{{count}} offre", }), other: t({ en: "{{count}} openings", fr: "{{count}} offres", }),}),Додаткові ресурси
Для отримання більш детальної інформації про налаштування та використання зверніться до наступних ресурсів:
- Документація по перерахуванню (Enumeration)
- Документація по вставці (Insertion)
- Документація по Intlayer CLI
- Документація React Intlayer
- Документація Next Intlayer
Ці ресурси пропонують додаткову інформацію про налаштування та використання Intlayer у різних середовищах та фреймворках.