Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Init history"v8.8.004.05.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Контент во множественном числе / Множественное число в Intlayer
Как работает множественное число
To use plural content in Next.js Client Components, retrieve it via the useIntlayer hook and call it with a count. Here's an example:
To use plural content in Angular components, retrieve it via the useIntlayer hook and call it with a count. Here's an example:
Когда использовать 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 пока не может быть вложен в дочерние узлы.
Пример:
Действительно:
Копировать код в буфер обмена
Недействительно:
Копировать код в буфер обмена
Дополнительные ресурсы
Для получения более подробной информации о настройке и использовании обратитесь к следующим ресурсам:
- Документация по перечислению (Enumeration)
- Документация по вставке (Insertion)
- Документация по Intlayer CLI
- Документация React Intlayer
- Документация Next Intlayer
Эти ресурсы предлагают дополнительную информацию о настройке и использовании Intlayer в различных средах и фреймворках.
