Autor:
    Creación:2026-06-12Última actualización:2026-06-12

    Registros Dinámicos

    Un registro dinámico (dynamic record) es un archivo de contenido cuya identidad no es un índice secuencial o una variante nombrada, sino un conjunto arbitrario de pares clave-valor declarados en un campo meta. Intlayer utiliza esos campos como el selector en tiempo de ejecución, lo que permite direccionar registros de CMS, copias específicas del usuario o cualquier contenido cuyas claves no se conozcan en tiempo de compilación.

    Declarar registros dinámicos

    product-copy.abc.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "product-copy",
      meta: {
        id: "prod_abc",
        userId: "user_123",
      },
      content: {
        name: t({ en: "Widget Pro", fr: "Widget Pro" }),
        description: t({ en: "The best widget.", fr: "Le meilleur widget." }),
      },
    } satisfies Dictionary;
    
    export default dictionary;
    product-copy.abcd.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const dictionary = {
      key: "product-copy",
      meta: {
        id: "prod_abcd",
        userId: "user_123",
      },
      content: {
        name: t({ en: "Widget Lite", fr: "Widget Lite" }),
        description: t({ en: "A lighter option.", fr: "Une option plus légère." }),
      },
    } satisfies Dictionary;
    
    export default dictionary;

    Consumir registros dinámicos

    Todos los campos meta son obligatorios en el selector. Omitir cualquier campo devuelve null y es un error de TypeScript.

    ProductCopy.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const ProductCopy = ({
      productId,
      userId,
    }: {
      productId: string;
      userId: string;
    }) => {
      const content = useIntlayer("product-copy", { id: productId, userId });
      // TypeScript garantiza que se proporcionen tanto `id` como `userId`.
    
      if (!content) return null;
    
      return <p>{content.description}</p>;
    };

    Con configuración regional explícita

    tsx
    const content = useIntlayer("product-copy", {  id: "prod_abc",  userId: "user_123",  locale: "es",});

    Falta el campo meta — error en tiempo de compilación

    ts
    // Error de tipo: falta `userId`const content = useIntlayer("product-copy", { id: "prod_abc" });

    Mode de carga (loading mode)

    Los registros dinámicos suelen cargarse de forma diferida. Establezca importMode en el diccionario para controlar esto:

    ts
    const dictionary = {
      key: "product-copy",
      importMode: "fetch", // o "dynamic"
      meta: { id: "prod_abc", userId: "user_123" },
      content: { … },
    } satisfies Dictionary;
    
    export default dictionary;

    Consulte optimización del bundle para obtener más detalles sobre los modos static, dynamic y fetch.

    Casos de uso típicos

    • Copia de marketing por producto gestionada en un CMS
    • Contenido específico del usuario o de la cuenta
    • Cualquier contenido identificado por un ID de tiempo de ejecución opaco