ГоловнаПісочницяВітринаДодатокДокументаціяБлог
    • Englishанглійська
      EN
    • русскийросійська
      RU
    • 日本語японська
      JA
    • françaisфранцузька
      FR
    • 한국어корейська
      KO
    • 中文китайська
      ZH
    • españolіспанська
      ES
    • Deutschнімецька
      DE
    • العربيةарабська
      AR
    • italianoіталійська
      IT
    • British Englishанглійська (Велика Британія)
      EN-GB
    • portuguêsпортугальська
      PT
    • हिन्दीгінді
      HI
    • Türkçeтурецька
      TR
    • polskiпольська
      PL
    • Indonesiaіндонезійська
      ID
    • Tiếng Việtвʼєтнамська
      VI
    • українськаукраїнська
      UK
    /
    Фільтрувати документи за фреймворком
    Alt+←
    Чому Intlayer?
    Почати
    Концепція
    • Як працює Intlayer
    • Конфігурація
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Візуальний редактор
    • CMS
    • Інтеграція CI/CD
    • ПерекладМножинаПерелікУмоваРідВставкаФайлВкладеністьMarkdownHTMLОтримання функції
    • Файл для кожної локалі
    • Компілятор
    • Автозаповнення
    • Тестування
    • Оптимізація пакета
    Середовище
    • Next.js 14 та App Router
      Next.js 15
      Next.js без locale URL
      Next.js та Page Router
      Compiler
    • Tanstack Start Solid
    • Astro та React
      Astro та Svelte
      Astro та Vue
      Astro та Solid
      Astro та Preact
      Astro та Lit
      Astro та Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt та Vue
    • Vite та Solid
    • SvelteKit
    • Vite та Preact
    • Vite та Vanilla JS
    • Vite та Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native та Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx та React
    Plugins
    • JSON
    • gettext (.po)
    Розширення VS Code
    Агент
    • Сервер MCP
    • Навички агента
    Релізи
    • v8
    • v7
    • v6
    Бенчмарк
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Блог
    Задати питання
    1. Documentation
    2. Концепція
    3. Оголошення контенту
    4. Множина
    Дата створення:2026-05-04Останнє оновлення:2026-05-04
    Надішліть цей документ вашому улюбленому AI-асистенту
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту

    Історія версій

    1. "Init history"
      v8.8.004.05.2026

    Вміст цієї сторінки перекладено за допомогою штучного інтелекту.

    Переглянути останню версію оригінального вмісту англійською
    Редагувати цей документ

    Якщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.

    Посилання на документацію на GitHub
    Копіювати

    Скопіювати документацію у форматі Markdown в буфер обміну

    Контент у множині / Множина в 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 є обов'язковою і використовується як резервний варіант, коли локаль не визначає більш конкретну категорію.

    **/*.content.ts
    Копіювати код

    Скопіюйте код у буфер обміну

    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.

    **/*.tsx
    Копіювати код

    Скопіюйте код у буфер обміну

    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;

    Ви можете викликати повернуту функцію двома еквівалентними способами:

    tsx
    Копіювати код

    Скопіюйте код у буфер обміну

    totalOpenings(21); // скорочення: лише лічильникtotalOpenings({ count: 21 }); // явна форма

    Спеціальні заповнювачі

    Рядки у множині можуть включати заповнювачі, відмінні від {{count}}. Передайте їх у формі об'єкта разом із count:

    **/*.content.ts
    Копіювати код

    Скопіюйте код у буфер обміну

    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;
    **/*.tsx
    Копіювати код

    Скопіюйте код у буфер обміну

    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 поки що не може бути вкладеним у дочірні вузли.

    Приклад:

    Дійсно:

    ts
    Копіювати код

    Скопіюйте код у буфер обміну

        totalOpenings: t({      en: plural({        one: "{{count}} opening",        other: "{{count}} openings",      }),      fr: plural({        one: "{{count}} offre",        other: "{{count}} offres",      }),    }),

    Недійсно:

    ts
    Копіювати код

    Скопіюйте код у буфер обміну

    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 у різних середовищах та фреймворках.

    Переклад
    Перелік
    Alt+→

    На цій сторінці

      Обговорення анонімні та регулярно переглядаються для вирішення поширених проблем. Не соромтеся ділитися ідеями функцій, відгуками про документацію або будь-чим, що стосується Intlayer, ми використовуємо цю інформацію для формування нашої дорожньої карти та покращення продукту.

      totalOpenings(21); // скорочення: лише лічильникtotalOpenings({ count: 21 }); // явна форма
          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",  }),}),