Comenzando con Intlayer y vite + react
Configurar Intlayer en una aplicación de Create React App es sencillo:
Paso 1: Instalar Dependencias
Instala los paquetes necesarios utilizando npm:
npm install intlayer react-intlayer
yarn add intlayer react-intlayer
pnpm add intlayer react-intlayer
Paso 2: Configuración de tu Proyecto
Crea un archivo de configuración para configurar los idiomas de tu aplicación:
// intlayer.config.ts
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH,
// Tus otros idiomas
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
Para ver todos los parámetros disponibles, consulta la documentación de configuración aquí.
Paso 3: Integrar Intlayer en tu Configuración de Vite
Añade el plugin de intlayer en tu configuración.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import { intLayerPlugin } from "react-intlayer/vite-plugin";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(), intLayerPlugin()],
});
Paso 4: Declarar tu Contenido
Crea y gestiona tus diccionarios de contenido:
// src/app.content.tsx
import { t, type DeclarationContent } from "intlayer";
import { type ReactNode } from "react";
const appContent = {
key: "app",
content: {
viteLogo: t({
en: "Vite logo",
fr: "Logo Vite",
es: "Logo Vite",
}),
reactLogo: t({
en: "React logo",
fr: "Logo React",
es: "Logo React",
}),
title: "Vite + React",
count: t({
en: "count is ",
fr: "le compte est ",
es: "el recuento es ",
}),
edit: t<ReactNode>({
// No olvides importar React si usas un React node en tu contenido
en: (
<>
Edit <code>src/App.tsx</code> and save to test HMR
</>
),
fr: (
<>
Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
</>
),
es: (
<>
Edita <code>src/App.tsx</code> y guarda para probar HMR
</>
),
}),
readTheDocs: t({
en: "Click on the Vite and React logos to learn more",
fr: "Cliquez sur les logos Vite et React pour en savoir plus",
es: "Haga clic en los logotipos de Vite y React para obtener más información",
}),
},
} satisfies DeclarationContent;
export default appContent;
Consulta cómo declarar tus archivos de declaración de Intlayer.
Paso 5: Utilizar Intlayer en tu Código
Accede a tus diccionarios de contenido en toda tu aplicación:
import { useState } from "react";
import reactLogo from "./assets/react.svg";
import viteLogo from "/vite.svg";
import "./App.css";
import { LocaleSwitcher } from "./components/LangSwitcherDropDown";
import { IntlayerProvider, useIntlayer } from "react-intlayer";
function AppContent() {
const [count, setCount] = useState(0);
const content = useIntlayer("app");
return (
<>
<div>
<a href="https://vitejs.dev" target="_blank">
<img src={viteLogo} className="logo" alt={content.viteLogo.value} />
</a>
<a href="https://react.dev" target="_blank">
<img
src={reactLogo}
className="logo react"
alt={content.reactLogo.value}
/>
</a>
</div>
<h1>{content.title}</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
{content.count}
{count}
</button>
<p>{content.edit}</p>
</div>
<p className="read-the-docs">{content.readTheDocs}</p>
<div className="absolute bottom-5 right-5 z-50">
<LocaleSwitcher />
</div>
</>
);
}
function App() {
return (
<IntlayerProvider>
<AppContent />
</IntlayerProvider>
);
}
export default App;
Nota: Si deseas utilizar tu contenido en un atributo de tipo string, como alt, title, href, aria-label, etc., debes llamar al valor de la función, como:
<img src={content.image.src.value} alt={content.image.value} />
(Opcional) Paso 6: Cambiar el idioma de tu contenido
Para cambiar el idioma de tu contenido, puedes utilizar la función setLocale proporcionada por el useLocale hook. Esta función te permite establecer el idioma de la aplicación y actualizar el contenido de acuerdo.
import { Locales } from "intlayer";
import { useLocale } from "react-intlayer";
const MyComponent = () => {
const { setLocale } = useLocale();
return (
<button onClick={() => setLocale(Locales.English)}>
Change Language to English
</button>
);
};
Configurar TypeScript
Intlayer usa la ampliación de módulos para aprovechar TypeScript y fortalecer tu base de código.
Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerados.
// tsconfig.json
{
// tu configuración personalizada
include: [
"src",
"types", // <- Incluir los tipos autogenerados
],
}
Configuración de Git
Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar commitearlos en tu repositorio de Git.
Para hacerlo, puedes agregar las siguientes instrucciones a tu archivo .gitignore:
# Ignorar los archivos generados por Intlayer
.intlayer