InícioAmbiente de testeVitrineAppDocBlog
    • Englishinglês
      EN
    • русскийrusso
      RU
    • 日本語japonês
      JA
    • françaisfrancês
      FR
    • 한국어coreano
      KO
    • 中文chinês
      ZH
    • españolespanhol
      ES
    • Deutschalemão
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglês (Reino Unido)
      EN-GB
    • portuguêsportuguês
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolonês
      PL
    • Indonesiaindonésio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentação por framework
    Alt+←
    Por que Intlayer?
    Começar
    Conceito
    • Como o Intlayer funciona
    • Configuração
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integração CI/CD
    • TraduçãoPluralEnumeraçãoCondiçãoGêneroInserçãoArquivoAninhamentoMarkdownHTMLBusca de função
    • Arquivo por locale
    • Compilador
    • Preenchimento automático
    • Testes
    • Otimização de bundle
    Ambiente
    • Next.js 14 e App Router
      Next.js 15
      Next.js sem locale URL
      Next.js e Page Router
      Compiler
    • Tanstack Start Solid
    • Astro e React
      Astro e Svelte
      Astro e Vue
      Astro e Solid
      Astro e Preact
      Astro e Lit
      Astro e Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt e Vue
    • Vite e Solid
    • SvelteKit
    • Vite e Preact
    • Vite e Vanilla JS
    • Vite e Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native e Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx e React
    Plugins
    • JSON
    • gettext (.po)
    Extensão VS Code
    Agente
    • Servidor MCP
    • Habilidades do agente
    Versões
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Faça uma pergunta
    1. Documentation
    2. Conceito
    3. Declaração de conteúdo
    4. Plural
    Criação:2026-05-04Última atualização:2026-05-04
    Referência esta documentação ao seu assistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha

    Histórico de versões

    1. "Init history"
      v8.8.004/05/2026

    O conteúdo desta página foi traduzido com uma IA.

    Veja a última versão do conteúdo original em inglês
    Editar esta documentação

    Se você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.

    Link do GitHub para a documentação
    Copiar

    Copiar o Markdown do documento para a área de transferência

    Conteúdo Plural / Plural no Intlayer

    Como o Plural Funciona

    No Intlayer, o conteúdo plural é alcançado através da função plural, que mapeia as categorias plurais do CLDR, zero, one, two, few, many, other, ao seu conteúdo correspondente. A categoria correta é selecionada automaticamente com base na localidade ativa e em um valor de contagem, usando a API Intl.PluralRules integrada à plataforma.

    Ao contrário do enu, que seleciona o conteúdo com base em intervalos numéricos definidos por você mesmo, o plural delega a seleção às regras do CLDR. É isso que o torna escalável para idiomas com regras complexas de pluralização, como russo, polonês, árabe ou galês, sem ter que escrever manualmente a lógica de módulo.

    Quando usar plural vs enu

    Mostrar todo o conteúdo da tabela

    Abrir a tabela em um modal para ver todo o conteúdo claramente

    Caso de uso Auxiliar
    Formas plurais gramaticais sensíveis à localidade (uma maçã / duas maçãs / 5 maçãs) plural
    Intervalos numéricos personalizados (<5, >=10) ou buckets não-CLDR enu

    Se você visa apenas o inglês ou o português (que têm apenas one / other), ambos funcionam. Para qualquer idioma com distinções de few / many / two, prefira o plural.

    Configurando Conteúdo Plural

    Para configurar o conteúdo plural no seu projeto Intlayer, crie um módulo de conteúdo que use o auxiliar plural. A categoria other é obrigatória e é usada como fallback quando uma localidade não define uma categoria mais específica.

    **/*.content.ts
    Copiar código

    Copiar o código para a área de transferência

    import { plural, t, type Dictionary } from "intlayer";
    
    const openingsContent = {
      key: "total_openings",
      content: {
        totalOpenings: t({
          en: plural({
            one: "{{count}} opening",
            other: "{{count}} openings",
          }),
          pt: plural({
            one: "{{count}} vaga",
            other: "{{count}} vagas",
          }),
        }),
      },
    } satisfies Dictionary;
    
    export default openingsContent;

    As categorias suportadas são zero, one, two, few, many, other. Você só precisa declarar as categorias que seu idioma de destino usa, o Intlayer volta para other quando nenhuma categoria específica corresponde.

    O marcador {{count}} é substituído automaticamente pela contagem que você passa em tempo de execução. Você também pode incluir outros marcadores (veja Marcadores personalizados abaixo).

    Usando Conteúdo Plural com React Intlayer

    Para usar conteúdo plural dentro de um componente React, recupere-o através do hook useIntlayer e chame-o com uma contagem. A localidade ativa e a contagem são combinadas para escolher a categoria CLDR correspondente.

    **/*.tsx
    Copiar código

    Copiar o código para a área de transferência

    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
      const { totalOpenings } = useIntlayer("total_openings");
    
      return (
        <div>
          {/* Em inglês:                                  */}
          {/*  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;

    Você pode chamar a função retornada de duas maneiras equivalentes:

    tsx
    Copiar código

    Copiar o código para a área de transferência

    totalOpenings(21); // atalho: apenas contagemtotalOpenings({ count: 21 }); // forma explícita

    Marcadores personalizados

    Strings plurais podem incluir marcadores diferentes de {{count}}. Passe-os na forma de objeto junto com count:

    **/*.content.ts
    Copiar código

    Copiar o código para a área de transferência

    import { plural, type Dictionary } from "intlayer";
    
    const inboxContent = {
      key: "inbox_summary",
      content: {
        summary: plural({
          one: "{{name}}, você tem {{count}} nova mensagem",
          other: "{{name}}, você tem {{count}} novas mensagens",
        }),
      },
    } satisfies Dictionary;
    
    export default inboxContent;
    **/*.tsx
    Copiar código

    Copiar o código para a área de transferência

    const { summary } = useIntlayer("inbox_summary");
    
    summary({ count: 1, name: "Alice" });
    // → "Alice, você tem 1 nova mensagem"
    
    summary({ count: 7, name: "Alice" });
    // → "Alice, você tem 7 novas mensagens"

    Categorias CLDR em um relance

    Diferentes idiomas usam diferentes subconjuntos das categorias CLDR. Alguns casos comuns:

    Mostrar todo o conteúdo da tabela

    Abrir a tabela em um modal para ver todo o conteúdo claramente

    Idioma Categorias usadas
    Inglês (en) one, other
    Francês (fr) one, many, other
    Russo (ru) one, few, many, other
    Polonês (pl) one, few, many, other
    Árabe (ar) zero, one, two, few, many, other
    Japonês / Chinês apenas other

    Você não precisa memorizar isso, declare as categorias para as quais você tem traduções, e o Intlayer voltará para other quando necessário.

    Limitação

    Em comparação com outros nós, o plural ainda não pode ser aninhado com nós filhos.

    Exemplo:

    Válido:

    ts
    Copiar código

    Copiar o código para a área de transferência

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

    Inválido:

    ts
    Copiar código

    Copiar o código para a área de transferência

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

    Recursos Adicionais

    Para informações mais detalhadas sobre configuração e uso, consulte os seguintes recursos:

    • Documentação de Enumeração
    • Documentação de Inserção
    • Documentação da CLI do Intlayer
    • Documentação do React Intlayer
    • Documentação do Next Intlayer

    Estes recursos oferecem mais insights sobre a configuração e o uso do Intlayer em vários ambientes e frameworks.

    Tradução
    Enumeração
    Alt+→

    Nesta página

      As discussões são anônimas e regularmente revisadas para resolver problemas comuns. Sinta-se à vontade para compartilhar ideias de funcionalidades, feedback sobre a documentação ou qualquer coisa relacionada ao Intlayer, usamos essas informações para moldar nosso roadmap e melhorar o produto.

      totalOpenings(21); // atalho: apenas contagemtotalOpenings({ count: 21 }); // forma explícita
          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",  }),}),