InicioEntorno de pruebasExhibiciónAppDocBlog
    • Englishinglés
      EN
    • русскийruso
      RU
    • 日本語japonés
      JA
    • françaisfrancés
      FR
    • 한국어coreano
      KO
    • 中文chino
      ZH
    • españolespañol
      ES
    • Deutschalemán
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglés británico
      EN-GB
    • portuguêsportugués
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolaco
      PL
    • Indonesiaindonesio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentación por framework
    Alt+←
    ¿Por qué Intlayer?
    Empezar
    Concepto
    • Cómo funciona Intlayer
    • Configuración
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integración CI/CD
    • TraducciónPluralEnumeraciónCondiciónGéneroInserciónArchivoAnidaciónMarkdownHTMLObtención de función
    • Archivo por locale
    • Compilador
    • Autocompletado
    • Pruebas
    • Optimización de bundle
    Entornos
    • Next.js 14 y App Router
      Next.js 15
      Next.js sin locale URL
      Next.js y Page Router
      Compiler
    • Tanstack Start Solid
    • Astro y React
      Astro y Svelte
      Astro y Vue
      Astro y Solid
      Astro y Preact
      Astro y Lit
      Astro y Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt y Vue
    • Vite y Solid
    • SvelteKit
    • Vite y Preact
    • Vite y Vanilla JS
    • Vite y Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native y Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx y React
    Plugins
    • JSON
    • gettext (.po)
    Extensión VS Code
    Agente
    • Servidor MCP
    • Habilidades del agente
    Versiones
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Preguntar una pregunta
    1. Documentation
    2. Concepto
    3. Declaración de contenido
    4. Plural
    Creación:2026-05-04Última actualización:2026-05-04
    Referencia esta doc a tu asistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección

    Historial de versiones

    1. "Init history"
      v8.8.04/5/2026

    El contenido de esta página ha sido traducido con una IA.

    Ver la última versión del contenido original en inglés
    Editar esta documentación

    Si tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.

    Enlace de GitHub a la documentación
    Copiar

    Copiar el Markdown del documento a la portapapeles

    Contenido en Plural / El plural en Intlayer

    Cómo funciona el plural

    En Intlayer, el contenido en plural se logra a través de la función plural, que asigna las categorías de plural de CLDR, zero, one, two, few, many, other, a su contenido correspondiente. La categoría correcta se selecciona automáticamente según la configuración regional activa y un valor de conteo, utilizando la API integrada de la plataforma Intl.PluralRules.

    A diferencia de enu, que selecciona contenido según rangos numéricos que tú mismo defines, plural delega la selección a las reglas de CLDR. Esto es lo que lo hace escalable a idiomas con reglas de pluralización complejas, como el ruso, el polaco, el árabe o el galés, sin tener que escribir manualmente lógica de módulo.

    Cuándo usar plural vs enu

    Mostrar todo el contenido de la tabla

    Abrir la tabla en una ventana flotante para ver todo el contenido claramente

    Caso de uso Ayudante
    Formas plurales gramaticales adaptadas a la configuración regional (una manzana / dos manzanas / 5 manzanas) plural
    Rangos numéricos personalizados (<5, >=10) o categorías no pertenecientes a CLDR enu

    Si solo te diriges al inglés o español (que solo tienen one / other), cualquiera de los dos funciona. Para cualquier idioma con distinciones few / many / two, prefiere plural.

    Configuración del contenido en plural

    Para configurar el contenido en plural en tu proyecto Intlayer, crea un módulo de contenido que utilice el ayudante plural. La categoría other es obligatoria y se utiliza como respaldo cuando una configuración regional no define una categoría más específica.

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

    Copiar el código al portapapeles

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

    Las categorías admitidas son zero, one, two, few, many, other. Solo necesitas declarar las categorías que utiliza tu idioma de destino; Intlayer recurre a other cuando no coincide ninguna categoría específica.

    El marcador de posición {{count}} se reemplaza automáticamente con el conteo que pases en tiempo de ejecución. También puedes incluir otros marcadores de posición (consulta Marcadores de posición personalizados a continuación).

    Uso de contenido en plural con React Intlayer

    Para usar contenido en plural dentro de un componente de React, recupéralo a través del gancho useIntlayer y llámalo con un conteo. La configuración regional activa y el conteo se combinan para elegir la categoría CLDR coincidente.

    **/*.tsx
    Copiar código

    Copiar el código al portapapeles

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

    Puedes llamar a la función devuelta de dos maneras equivalentes:

    tsx
    Copiar código

    Copiar el código al portapapeles

    totalOpenings(21); // forma abreviada: solo conteototalOpenings({ count: 21 }); // forma explícita

    Marcadores de posición personalizados

    Las cadenas en plural pueden incluir marcadores de posición distintos de {{count}}. Pásalos en forma de objeto junto con count:

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

    Copiar el código al portapapeles

    import { plural, type Dictionary } from "intlayer";
    
    const inboxContent = {
      key: "inbox_summary",
      content: {
        summary: plural({
          one: "{{name}}, tienes {{count}} mensaje nuevo",
          other: "{{name}}, tienes {{count}} mensajes nuevos",
        }),
      },
    } satisfies Dictionary;
    
    export default inboxContent;
    **/*.tsx
    Copiar código

    Copiar el código al portapapeles

    const { summary } = useIntlayer("inbox_summary");
    
    summary({ count: 1, name: "Alice" });
    // → "Alice, tienes 1 mensaje nuevo"
    
    summary({ count: 7, name: "Alice" });
    // → "Alice, tienes 7 mensajes nuevos"

    Categorías CLDR de un vistazo

    Diferentes idiomas utilizan diferentes subconjuntos de las categorías CLDR. Algunos casos comunes:

    Mostrar todo el contenido de la tabla

    Abrir la tabla en una ventana flotante para ver todo el contenido claramente

    Idioma Categorías utilizadas
    Inglés (en) one, other
    Francés (fr) one, many, other
    Ruso (ru) one, few, many, other
    Polaco (pl) one, few, many, other
    Árabe (ar) zero, one, two, few, many, other
    Japonés / Chino solo other

    No necesitas memorizar esto: declara las categorías para las que tienes traducciones e Intlayer recurrirá a other cuando sea necesario.

    Limitación

    A diferencia de otros nodos, el nodo plural aún no se puede imbricar con nodos hijos.

    Ejemplo:

    Válido:

    ts
    Copiar código

    Copiar el código al portapapeles

        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 el código al portapapeles

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

    Recursos adicionales

    Para obtener información más detallada sobre la configuración y el uso, consulta los siguientes recursos:

    • Documentación de Enumeración
    • Documentación de Inserción
    • Documentación de la CLI de Intlayer
    • Documentación de React Intlayer
    • Documentación de Next Intlayer

    Estos recursos ofrecen más información sobre la configuración y el uso de Intlayer en diversos entornos y marcos.

    Traducción
    Enumeración
    Alt+→

    En esta página

      Las conversaciones son anónimas y se revisan regularmente para abordar problemas comunes. No dudes en compartir ideas de funcionalidades, comentarios sobre la documentación o cualquier cosa relacionada con Intlayer, usamos esta información para definir nuestra hoja de ruta y mejorar el producto.

      totalOpenings(21); // forma abreviada: solo conteototalOpenings({ 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",  }),}),