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
- "Lanzamiento de la función de variantes"v9.0.012/6/2026
- "`variant` ahora acepta una cadena o un objeto — los antiguos `meta` / registros dinámicos se declaran como variantes de objeto"v9.1.026/6/2026
El contenido de esta página ha sido traducido con una IA.
Ver la última versión del contenido original en inglésIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Variantes
Una variante es un conjunto de archivos de contenido que comparten la misma clave de diccionario (key) pero llevan cada uno un valor variant diferente. Intlayer sirve el archivo adecuado según el selector pasado a useIntlayer.
El valor de variant puede adoptar dos formas:
- Una cadena — una única alternativa con nombre (pruebas A/B, banners de temporada, feature flags).
- Un objeto — un discriminador estructurado direccionado por un conjunto de campos (registros de CMS, contenido específico de usuario, cualquier contenido indexado por un ID opaco). El objeto completo es la identidad: el selector debe proporcionar un objeto igual para resolver la entrada.
La forma de objeto sustituye al antiguo campometa. Donde antes escribíameta: { id, … }, escribavariant: { id, … }, y selecciónela con{ variant: { id, … } }.
Variantes con nombre (cadena)
Cada archivo representa una alternativa con nombre. Omitir variant (o establecerlo en "default") lo marca como el valor de reserva.
Copiar el código al portapapeles
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "hero-banner",
variant: "default",
content: {
headline: t({
en: "Build faster with Intlayer",
fr: "Développez plus vite avec Intlayer",
}),
cta: t({ en: "Get started", fr: "Commencer" }),
},
} satisfies Dictionary;
export default dictionary;Copiar el código al portapapeles
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "hero-banner",
variant: "black_friday",
content: {
headline: t({
en: "50 % off — today only",
fr: "−50 % — aujourd'hui seulement",
}),
cta: t({ en: "Shop now", fr: "Acheter maintenant" }),
},
} satisfies Dictionary;
export default dictionary;Consumir variantes con nombre
Variante por defecto
Copiar el código al portapapeles
import { useIntlayer } from "react-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → variante por defecto
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};Variante con nombre
Copiar el código al portapapeles
const { headline, cta } = useIntlayer("hero-banner", { variant: "black_friday",});Variante con nombre con locale explícito
Copiar el código al portapapeles
const content = useIntlayer("hero-banner", { variant: "black_friday", locale: "fr",});Variantes de objeto (estructuradas)
Una variante de objeto direcciona el contenido mediante un conjunto arbitrario de pares clave-valor declarados en el campo variant — lo que permite modelar registros de CMS, contenido específico de usuario o cualquier contenido cuya clave sea un ID opaco. El objeto completo es la identidad: el selector debe proporcionar un objeto igual para que la entrada se resuelva.
Copiar el código al portapapeles
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "product",
variant: { 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;Copiar el código al portapapeles
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "product",
variant: { 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 variantes de objeto
Pase el objeto coincidente a variant. Cada campo declarado en el diccionario debe proporcionarse e ser igual; de lo contrario el resultado es null. El orden de los campos no importa.
Copiar el código al portapapeles
import { useIntlayer } from "react-intlayer";
export const Product = ({
productId,
userId,
}: {
productId: string;
userId: string;
}) => {
const content = useIntlayer("product", {
variant: { id: productId, userId },
});
if (!content) return null;
return <p>{content.description}</p>;
};Con locale explícito
Copiar el código al portapapeles
const content = useIntlayer("product", { variant: { id: "prod_abc", userId: "user_123" }, locale: "fr",});Campo faltante — sin coincidencia
Copiar el código al portapapeles
// Devuelve null: falta `userId`, por lo que el objeto no coincide con la variante declaradaconst content = useIntlayer("product", { variant: { id: "prod_abc" } });Modo de carga
Las variantes de objeto suelen cargarse de forma diferida. Establezca importMode en el diccionario para controlarlo:
Copiar el código al portapapeles
const dictionary = {
key: "product",
importMode: "fetch", // or "dynamic"
variant: { id: "prod_abc", userId: "user_123" },
content: { … },
} satisfies Dictionary;
export default dictionary;Consulte optimización del bundle para detalles sobre los modos static, dynamic y fetch.
Casos de uso típicos
- Pruebas A/B de texto dirigidas por una clave de experimento
- Banners de temporada o promocionales
- Mensajería con feature flag
- Campañas de marketing específicas por locale
- Copia de marketing por producto gestionada en un CMS
- Contenido específico de usuario o de cuenta
- Cualquier contenido indexado por un ID opaco en tiempo de ejecución