Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Init history"v8.8.004.05.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Контент во множественном числе / Множественное число в Intlayer
Как работает множественное число
В Intlayer контент во множественном числе реализуется с помощью функции plural, которая сопоставляет категории множественного числа CLDR, zero, one, two, few, many, other, с соответствующим контентом. Нужная категория выбирается автоматически на основе активной локали и значения счётчика с использованием встроенного в платформу API Intl.PluralRules.
В отличие от enu, который выбирает контент на основе заданных вами числовых диапазонов, plural делегирует выбор правилам CLDR. Именно это позволяет масштабировать его на языки со сложными правилами множественного числа, такие как русский, польский, арабский или валлийский, без необходимости вручную писать логику с остатком от деления.
Когда использовать plural вместо enu
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Вариант использования | Хелпер |
|---|---|
| Грамматические формы множественного числа для языка (яблоко / яблока / яблок) | 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",
}),
ru: 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>
<p>{totalOpenings(count)}</p>
</div>
);
};
export default OpeningsComponent;
Чтобы использовать контент во множественном числе в Next.js Client Components, получите его через хук useIntlayer и вызовите его с параметром count. Вот пример:
Копировать код в буфер обмена
"use client";
import type { FC } from "react";
import { useIntlayer } from "next-intlayer";
const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
const { totalOpenings } = useIntlayer("total_openings");
return (
<div>
<p>{totalOpenings(count)}</p>
</div>
);
};
export default OpeningsComponent;
Чтобы использовать множественное содержимое в Vue компонентах, извлеките его через hook useIntlayer и вызовите его с count. Вот пример:
Копировать код в буфер обмена
Для использования множественного контента в компонентах Svelte получите его через hook useIntlayer и вызовите его с count. На store осуществляется доступ с $. Вот пример:
Копировать код в буфер обмена
Для использования содержимого множественного числа в компонентах Preact получите его через hook useIntlayer и вызовите его с count. Вот пример:
Копировать код в буфер обмена
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;
Для использования множественного контента в компонентах SolidJS получите его через хук useIntlayer и вызовите с количеством. Вот пример:
Копировать код в буфер обмена
import type { Component } from "solid-js";
import { useIntlayer } from "solid-intlayer";
const OpeningsComponent: Component<{ count: number }> = (props) => {
const { totalOpenings } = useIntlayer("total_openings");
return (
<div>
<p>{totalOpenings(props.count)}</p>
</div>
);
};
export default OpeningsComponent;
Чтобы использовать pluralized контент в Angular компонентах, получите его через hook useIntlayer и вызовите с count. Вот пример:
Копировать код в буфер обмена
Вы можете вызвать возвращаемую функцию двумя эквивалентными способами:
Копировать код в буфер обмена
Пользовательские заполнители
Строки во множественном числе могут включать заполнители, отличные от {{count}}. Передайте их в форме объекта вместе с count:
Копировать код в буфер обмена
import { plural, type Dictionary } from "intlayer";
const inboxContent = {
key: "inbox_summary",
content: {
summary: plural({
one: "{{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 |
Польский (pl) | one, few, many, other |
Арабский (ar) | zero, one, two, few, many, other |
| Японский / Китайский | только other |
Вам не нужно это запоминать, объявляйте категории, для которых у вас есть переводы, и Intlayer при необходимости вернется к other.
Ограничение
В отличие от других узлов, узел plural пока не может быть вложен в дочерние узлы.
Пример:
Действительно:
Копировать код в буфер обмена
Недействительно:
Копировать код в буфер обмена
Дополнительные ресурсы
Для получения более подробной информации о настройке и использовании обратитесь к следующим ресурсам:
Эти ресурсы предлагают дополнительную информацию о настройке и использовании Intlayer в различных средах и фреймворках.
