Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección
Al integrar el servidor MCP Intlayer a tu asistente de IA, puedes recuperar todos los documentos directamente desde ChatGPT, DeepSeek, Cursor, VSCode, etc.
Ver la documentación del servidor MCPEl contenido de esta página ha sido traducido con una IA.
Ver la última versión del contenido original en inglésSi tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.
Enlace de GitHub a la documentaciónCopiar el Markdown del documento a la portapapeles
Comenzando con la internacionalización (i18n) usando Intlayer, Vite y Preact
Este paquete está en desarrollo. Consulta el issue para más información. Muestra tu interés en Intlayer para Preact dando like al issue.
Consulta la Plantilla de Aplicación en GitHub.
¿Qué es Intlayer?
Intlayer es una biblioteca innovadora y de código abierto para internacionalización (i18n) diseñada para simplificar el soporte multilingüe en aplicaciones web modernas.
Con Intlayer, puedes:
- Gestionar fácilmente las traducciones usando diccionarios declarativos a nivel de componente.
- Localizar dinámicamente metadatos, rutas y contenido.
- Garantizar soporte para TypeScript con tipos autogenerados, mejorando la autocompletación y la detección de errores.
- Benefíciate de funciones avanzadas, como la detección y el cambio dinámico de la configuración regional.
Guía paso a paso para configurar Intlayer en una aplicación Vite y Preact
Paso 1: Instalar dependencias
Instala los paquetes necesarios usando npm:
Copiar el código al portapapeles
npm install intlayer preact-intlayernpm install vite-intlayer --save-dev
intlayer
intlayer
El paquete principal que proporciona herramientas de internacionalización para la gestión de configuración, traducción, declaración de contenido, transpilación y comandos CLI.
preact-intlayer El paquete que integra Intlayer con la aplicación Preact. Proporciona proveedores de contexto y hooks para la internacionalización en Preact.
vite-intlayer Incluye el plugin de Vite para integrar Intlayer con el empaquetador Vite, así como middleware para detectar la configuración regional preferida del usuario, gestionar cookies y manejar la redirección de URLs.
Paso 2: Configuración de tu proyecto
Crea un archivo de configuración para configurar los idiomas de tu aplicación:
Copiar el código al portapapeles
import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Tus otros locales ], defaultLocale: Locales.ENGLISH, },};export default config;
A través de este archivo de configuración, puedes configurar URLs localizadas, redirección en middleware, nombres de cookies, la ubicación y extensión de tus declaraciones de contenido, deshabilitar los logs de Intlayer en la consola, y más. Para una lista completa de los parámetros disponibles, consulta la documentación de configuración.
Paso 3: Integra Intlayer en tu configuración de Vite
Agrega el plugin de intlayer en tu configuración.
Copiar el código al portapapeles
import { defineConfig } from "vite";import preact from "@preact/preset-vite";import { intlayerPlugin } from "vite-intlayer";// https://vitejs.dev/config/export default defineConfig({ plugins: [preact(), intlayerPlugin()],});
El plugin intlayerPlugin() de Vite se utiliza para integrar Intlayer con Vite. Garantiza la construcción de archivos de declaración de contenido y los supervisa en modo de desarrollo. Define variables de entorno de Intlayer dentro de la aplicación Vite. Además, proporciona alias para optimizar el rendimiento.
Paso 4: Declara Tu Contenido
Crea y administra tus declaraciones de contenido para almacenar traducciones:
Copiar el código al portapapeles
import { t, type Dictionary } from "intlayer";import type { ComponentChildren } from "preact";const appContent = { key: "app", content: { viteLogo: t({ en: "Vite logo", fr: "Logo Vite", es: "Logo Vite", }), preactLogo: t({ en: "Preact logo", fr: "Logo Preact", es: "Logo Preact", }), title: "Vite + Preact", count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es ", }), edit: t<ComponentChildren>({ en: ( <> Edita <code>src/app.tsx</code> y guarda para probar 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: "Haz clic en los logotipos de Vite y Preact para obtener más información", fr: "Cliquez sur les logos Vite et Preact pour en savoir plus", es: "Haz clic en los logotipos de Vite y Preact para obtener más información", }), },} satisfies Dictionary;export default appContent;
Tus declaraciones de contenido pueden definirse en cualquier parte de tu aplicación siempre que estén incluidas en el directorio contentDir (por defecto, ./src). Y coincidan con la extensión de archivo de declaración de contenido (por defecto, .content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}).
Para más detalles, consulta la documentación de declaración de contenido.
Si tu archivo de contenido incluye código TSX, es posible que necesites importar import { h } from "preact"; o asegurarte de que tu pragma JSX esté configurado correctamente para Preact.
Paso 5: Utiliza Intlayer en tu Código
Accede a tus diccionarios de contenido en toda tu aplicación:
Copiar el código al portapapeles
import { useState } from "preact/hooks";import type { FunctionalComponent } from "preact";import preactLogo from "./assets/preact.svg"; // Suponiendo que tienes un preact.svgimport viteLogo from "/vite.svg";import "./app.css"; // Suponiendo que tu archivo CSS se llama app.cssimport { IntlayerProvider, useIntlayer } from "preact-intlayer";const AppContent: FunctionalComponent = () => { const [count, setCount] = useState(0); const content = useIntlayer("app"); return ( <> <div> <a href="https://vitejs.dev" target="_blank"> <img src={viteLogo} class="logo" alt={content.viteLogo.value} /> </a> <a href="https://preactjs.com" target="_blank"> <img src={preactLogo} class="logo preact" alt={content.preactLogo.value} /> </a> </div> <h1>{content.title}</h1> <div class="card"> <button onClick={() => setCount((count) => count + 1)}> {content.count} {count} </button> <p>{content.edit}</p> </div> <p class="read-the-docs">{content.readTheDocs}</p> </> );};const App: FunctionalComponent = () => ( <IntlayerProvider> <AppContent /> </IntlayerProvider>);export default App;
Si desea usar su contenido en un atributo de tipo string, como alt, title, href, aria-label, etc., debe llamar al valor de la función, así:
jsxCopiar códigoCopiar el código al portapapeles
<img src={content.image.src.value} alt={content.image.value} />
Nota: En Preact, className se escribe típicamente como class.
Para aprender más sobre el hook useIntlayer, consulta la documentación (La API es similar para preact-intlayer).
(Opcional) Paso 6: Cambiar el idioma de tu contenido
Para cambiar el idioma de tu contenido, puedes usar la función setLocale proporcionada por el hook useLocale. Esta función te permite establecer la configuración regional de la aplicación y actualizar el contenido en consecuencia.
Copiar el código al portapapeles
import type { FunctionalComponent } from "preact";import { Locales } from "intlayer";import { useLocale } from "preact-intlayer";const LocaleSwitcher: FunctionalComponent = () => { const { setLocale } = useLocale(); return ( <button onClick={() => setLocale(Locales.ENGLISH)}> Cambiar idioma a inglés </button> );};export default LocaleSwitcher;
Para aprender más sobre el hook useLocale, consulta la documentación (La API es similar para preact-intlayer).
(Opcional) Paso 7: Añadir enrutamiento localizado a tu aplicación
El propósito de este paso es crear rutas únicas para cada idioma. Esto es útil para SEO y URLs amigables con SEO. Ejemplo:
Copiar el código al portapapeles
- https://example.com/about- https://example.com/es/about- https://example.com/fr/about
Por defecto, las rutas no tienen prefijo para la configuración regional predeterminada. Si desea prefijar la configuración regional predeterminada, puede establecer la opción middleware.prefixDefault en true en su configuración. Consulte la documentación de configuración para obtener más información.
Para agregar enrutamiento localizado a su aplicación, puede crear un componente LocaleRouter que envuelva las rutas de su aplicación y gestione el enrutamiento basado en la configuración regional. Aquí hay un ejemplo usando preact-iso:
Primero, instale preact-iso:
Copiar el código al portapapeles
npm install preact-iso
Copiar el código al portapapeles
import { type Locales, configuration, getPathWithoutLocale } from "intlayer";import { ComponentChildren, FunctionalComponent } from "preact";import { IntlayerProvider } from "preact-intlayer";import { LocationProvider, useLocation } from "preact-iso";import { useEffect } from "preact/hooks";const { internationalization, middleware } = configuration;const { locales, defaultLocale } = internationalization;const Navigate: FunctionalComponent<{ to: string; replace?: boolean }> = ({ to, replace,}) => { const { route } = useLocation(); useEffect(() => { route(to, replace); }, [to, replace, route]); return null;};/**/** * Un componente que maneja la localización y envuelve a los hijos con el contexto de configuración regional apropiado. * Gestiona la detección y validación de la configuración regional basada en la URL. */const AppLocalized: FunctionalComponent<{ children: ComponentChildren; locale?: Locales;}> = ({ children, locale }) => { const { path: pathname, url } = useLocation(); if (!url) { return null; } const search = url.substring(pathname.length); // Determina la configuración regional actual, usando la predeterminada si no se proporciona const currentLocale = locale ?? defaultLocale; // Elimina el prefijo de la configuración regional del path para construir una ruta base const pathWithoutLocale = getPathWithoutLocale( pathname // Ruta URL actual ); /** * Si middleware.prefixDefault es verdadero, el locale por defecto siempre debe tener prefijo. */ if (middleware.prefixDefault) { // Validar el locale if (!locale || !locales.includes(locale)) { // Redirigir al locale por defecto con la ruta actualizada return ( <Navigate to={`/${defaultLocale}/${pathWithoutLocale}${search}`} replace // Reemplazar la entrada actual del historial con la nueva /> ); } // Envolver los children con IntlayerProvider y establecer el locale actual return ( <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider> ); } else { /** * Cuando middleware.prefixDefault es falso, el locale por defecto no tiene prefijo. * Asegúrese de que la configuración regional actual sea válida y no sea la configuración regional predeterminada. */ if ( currentLocale.toString() !== defaultLocale.toString() && !locales .filter( (loc) => loc.toString() !== defaultLocale.toString() // Excluir la configuración regional predeterminada ) .includes(currentLocale) // Verificar si la configuración regional actual está en la lista de configuraciones regionales válidas ) { // Redirigir a la ruta sin el prefijo de configuración regional return <Navigate to={`${pathWithoutLocale}${search}`} replace />; } // Envolver los hijos con IntlayerProvider y establecer la configuración regional actual return ( <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider> ); }};const RouterContent: FunctionalComponent<{ children: ComponentChildren;}> = ({ children }) => { const { path } = useLocation(); if (!path) { return null; } const pathLocale = path.split("/")[1] as Locales; const isLocaleRoute = locales .filter((locale) => middleware.prefixDefault || locale !== defaultLocale) .some((locale) => locale.toString() === pathLocale); if (isLocaleRoute) { return <AppLocalized locale={pathLocale}>{children}</AppLocalized>; } return ( <AppLocalized locale={!middleware.prefixDefault ? defaultLocale : undefined} > {children} </AppLocalized> );};/** * Un componente de enrutador que configura rutas específicas por locale. * Utiliza preact-iso para gestionar la navegación y renderizar componentes localizados. */export const LocaleRouter: FunctionalComponent<{ children: ComponentChildren;}> = ({ children }) => ( <LocationProvider> <RouterContent>{children}</RouterContent> </LocationProvider>);
Luego, puedes usar el componente LocaleRouter en tu aplicación:
Copiar el código al portapapeles
import { LocaleRouter } from "./components/LocaleRouter";import type { FunctionalComponent } from "preact";// ... Tu componente AppContent (definido en el Paso 5)const App: FunctionalComponent = () => ( <LocaleRouter> <AppContent /> </LocaleRouter>);export default App;
En paralelo, también puedes usar el intLayerMiddlewarePlugin para agregar enrutamiento del lado del servidor a tu aplicación. Este plugin detectará automáticamente la configuración regional actual basada en la URL y establecerá la cookie de configuración regional apropiada. Si no se especifica ninguna configuración regional, el plugin determinará la configuración regional más adecuada según las preferencias de idioma del navegador del usuario. Si no se detecta ninguna configuración regional, redirigirá a la configuración regional predeterminada.
Copiar el código al portapapeles
import { defineConfig } from "vite";import preact from "@preact/preset-vite";import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";// https://vitejs.dev/config/export default defineConfig({ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],});
(Opcional) Paso 8: Cambiar la URL cuando cambia la configuración regional
Para cambiar la URL cuando cambia la configuración regional, puedes usar la propiedad onLocaleChange proporcionada por el hook useLocale. Paralelamente, puedes usar useLocation y route de preact-iso para actualizar la ruta de la URL.
Copiar el código al portapapeles
import { useLocation, route } from "preact-iso";import { Locales, getHTMLTextDir, getLocaleName, getLocalizedUrl,} from "intlayer";import { useLocale } from "preact-intlayer";import type { FunctionalComponent } from "preact";const LocaleSwitcher: FunctionalComponent = () => { const location = useLocation(); const { locale, availableLocales, setLocale } = useLocale({ onLocaleChange: (newLocale) => { const currentFullPath = location.url; // preact-iso proporciona la URL completa // Construir la URL con la configuración regional actualizada // Ejemplo: /es/about?foo=bar const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale); // Actualizar la ruta de la URL route(pathWithLocale, true); // true para reemplazar }, }); return ( <div> <button popovertarget="localePopover">{getLocaleName(locale)}</button> <div id="localePopover" popover="auto"> {availableLocales.map((localeItem) => ( <a href={getLocalizedUrl(location.url, localeItem)} hreflang={localeItem} aria-current={locale === localeItem ? "page" : undefined} onClick={(e) => { e.preventDefault(); setLocale(localeItem); // La navegación programática después de establecer el idioma será manejada por onLocaleChange }} key={localeItem} > <span> {/* Idioma local - por ejemplo FR */} {localeItem} </span> <span> {/* Idioma en su propio idioma local - por ejemplo Français */} {getLocaleName(localeItem, localeItem)} </span> <span dir={getHTMLTextDir(localeItem)} lang={localeItem}> {/* Idioma en el idioma local actual - por ejemplo Francés con el idioma local establecido en Locales.SPANISH */} {getLocaleName(localeItem, locale)} </span> <span dir="ltr" lang={Locales.ENGLISH}> {/* Idioma en inglés - por ejemplo French */} {getLocaleName(localeItem, Locales.ENGLISH)} </span> </a> ))} </div> </div> );};export default LocaleSwitcher;
Referencias de documentación:
-useLocale hook (la API es similar para preact-intlayer)
- getLocaleName hook
- getLocalizedUrl hook
- getHTMLTextDir hook
- atributo hreflang
- atributo lang
- atributo dir
- atributo aria-current
- API Popover la.org/en-US/docs/Web/HTML/Globalattributes/dir)> - atributo aria-current> - [API Popover](https://developer.mozilla.org/en-US/docs/Web/API/PopoverAPI)
A continuación se muestra el Paso 9 actualizado con explicaciones adicionales y ejemplos de código refinados:
(Opcional) Paso 9: Cambiar los atributos de idioma y dirección del HTML
Cuando tu aplicación soporta múltiples idiomas, es crucial actualizar los atributos lang y dir de la etiqueta <html> para que coincidan con la configuración regional actual. Hacer esto garantiza:
- Accesibilidad: Los lectores de pantalla y tecnologías de asistencia dependen del atributo lang correcto para pronunciar e interpretar el contenido con precisión.
- Renderizado de texto: El atributo dir (dirección) asegura que el texto se muestre en el orden adecuado (por ejemplo, de izquierda a derecha para inglés, de derecha a izquierda para árabe o hebreo), lo cual es esencial para la legibilidad.
- SEO: Los motores de búsqueda utilizan el atributo lang para determinar el idioma de su página, ayudando a mostrar el contenido localizado correcto en los resultados de búsqueda.
Al actualizar estos atributos dinámicamente cuando cambia la configuración regional, garantiza una experiencia coherente y accesible para los usuarios en todos los idiomas compatibles.
Implementación del Hook
Cree un hook personalizado para gestionar los atributos HTML. El hook escucha los cambios de configuración regional y actualiza los atributos en consecuencia:
Copiar el código al portapapeles
import { useEffect } from "preact/hooks";import { useLocale } from "preact-intlayer";import { getHTMLTextDir } from "intlayer";/** * Actualiza los atributos `lang` y `dir` del elemento <html> según la configuración regional actual. * - `lang`: Informa a los navegadores y motores de búsqueda sobre el idioma de la página. * - `dir`: Asegura el orden correcto de lectura (por ejemplo, 'ltr' para inglés, 'rtl' para árabe). * * Esta actualización dinámica es esencial para una correcta representación del texto, accesibilidad y SEO. */export const useI18nHTMLAttributes = () => { const { locale } = useLocale(); useEffect(() => { // Actualiza el atributo de idioma al locale actual. document.documentElement.lang = locale; // Establece la dirección del texto según el locale actual. document.documentElement.dir = getHTMLTextDir(locale); }, [locale]);};
Uso del Hook en Tu Aplicación
Integra el hook en tu componente principal para que los atributos HTML se actualicen cada vez que cambie la configuración regional:
Copiar el código al portapapeles
import type { FunctionalComponent } from "preact";import { IntlayerProvider } from "preact-intlayer"; // useIntlayer ya importado si AppContent lo necesitaimport { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";import "./app.css";// Definición de AppContent del Paso 5const AppWithHooks: FunctionalComponent = () => { // Aplicar el hook para actualizar los atributos lang y dir de la etiqueta <html> según la configuración regional. useI18nHTMLAttributes(); // Suponiendo que AppContent es tu componente principal de visualización de contenido del Paso 5 return <AppContent />;};const App: FunctionalComponent = () => ( <IntlayerProvider> <AppWithHooks /> </IntlayerProvider>);export default App;
Al aplicar estos cambios, tu aplicación:
- Asegurará que el atributo de idioma (lang) refleje correctamente la configuración regional actual, lo cual es importante para el SEO y el comportamiento del navegador.
- Ajustará la dirección del texto (dir) según la configuración regional, mejorando la legibilidad y usabilidad para idiomas con diferentes órdenes de lectura.
- Proporcionar una experiencia más accesible, ya que las tecnologías de asistencia dependen de estos atributos para funcionar de manera óptima.
(Opcional) Paso 10: Creación de un Componente de Enlace Localizado
Para asegurar que la navegación de tu aplicación respete la configuración regional actual, puedes crear un componente personalizado Link. Este componente antepone automáticamente a las URLs internas el idioma actual.
Este comportamiento es útil por varias razones:
- SEO y Experiencia de Usuario: Las URLs localizadas ayudan a los motores de búsqueda a indexar correctamente las páginas específicas por idioma y proporcionan a los usuarios contenido en su idioma preferido.
- Consistencia: Al usar un enlace localizado en toda tu aplicación, garantizas que la navegación se mantenga dentro de la configuración regional actual, evitando cambios inesperados de idioma.
- Mantenibilidad: Centralizar la lógica de localización en un solo componente simplifica la gestión de las URLs.
Para Preact con preact-iso, normalmente se usan etiquetas <a> estándar para la navegación, y preact-iso se encarga del enrutamiento. Si necesitas navegación programática al hacer clic (por ejemplo, para realizar acciones antes de navegar), puedes usar la función route de useLocation. Aquí tienes cómo crear un componente de ancla personalizado que localiza las URLs:
Copiar el código al portapapeles
import { getLocalizedUrl } from "intlayer";import { useLocale, useLocation, route } from "preact-intlayer"; // Asumiendo que useLocation y route pueden venir de preact-iso vía preact-intlayer si están reexportados, o importarlos directamente// Si no se reexporta, importar directamente: import { useLocation, route } from "preact-iso";import type { JSX } from "preact"; // Para HTMLAttributesimport { forwardRef } from "preact/compat"; // Para reenviar refsexport interface LocalizedLinkProps extends JSX.HTMLAttributes<HTMLAnchorElement> { href: string; replace?: boolean; // Opcional: para reemplazar el estado del historial}/** * Función utilitaria para verificar si una URL dada es externa. * Si la URL comienza con http:// o https://, se considera externa. */export const checkIsExternalLink = (href?: string): boolean => /^https?:\/\//.test(href ?? "");/** * Un componente Link personalizado que adapta el atributo href según la localidad actual. * Para enlaces internos, utiliza `getLocalizedUrl` para anteponer la URL con la configuración regional (por ejemplo, /fr/about). * Esto asegura que la navegación se mantenga dentro del mismo contexto de idioma. * Utiliza una etiqueta estándar <a> pero puede activar la navegación del lado del cliente usando `route` de preact-iso. */export const LocalizedLink = forwardRef<HTMLAnchorElement, LocalizedLinkProps>( ({ href, children, onClick, replace = false, ...props }, ref) => { const { locale } = useLocale(); const location = useLocation(); // de preact-iso const isExternalLink = checkIsExternalLink(href); const hrefI18n = href && !isExternalLink ? getLocalizedUrl(href, locale) : href; const handleClick = (event: JSX.TargetedMouseEvent<HTMLAnchorElement>) => { if (onClick) { onClick(event); } if ( !isExternalLink && href && // Asegura que href esté definido event.button === 0 && // Clic izquierdo !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey && // Verificación estándar de modificadores !props.target // No apunta a una nueva pestaña/ventana ) { event.preventDefault(); if (location.url !== hrefI18n) { // Navega solo si la URL es diferente route(hrefI18n, replace); // Usa route de preact-iso } } }; return ( <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}> {children} </a> ); });
Cómo Funciona
- Detección de Enlaces Externos:
La función auxiliar checkIsExternalLink determina si una URL es externa. Los enlaces externos se dejan sin cambios. - Obtención de la Configuración Regional Actual:
El hook useLocale proporciona la configuración regional actual. - Localización de la URL:
Para enlaces internos, getLocalizedUrl añade el prefijo de la configuración regional actual a la URL. - Navegación del Lado del Cliente: La función handleClick verifica si es un enlace interno y si se debe prevenir la navegación estándar. Si es así, utiliza la función route de preact-iso (obtenida mediante useLocation o importada directamente) para realizar la navegación del lado del cliente. Esto proporciona un comportamiento similar a una SPA sin recargas completas de la página.
- Devolviendo el Enlace:
El componente devuelve un elemento <a> con la URL localizada y el manejador de clic personalizado.
Configurar TypeScript
Intlayer utiliza la ampliación de módulos para aprovechar los beneficios de TypeScript y fortalecer tu base de código.
Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerados.
Copiar el código al portapapeles
{ // ... Tus configuraciones existentes de TypeScript "compilerOptions": { // ... "jsx": "react-jsx", "jsxImportSource": "preact", // Recomendado para Preact 10+ // ... }, "include": [ // ... Tus configuraciones existentes de TypeScript ".intlayer/**/*.ts", // Incluir los tipos autogenerados ],}
Asegúrate de que tu tsconfig.json esté configurado para Preact, especialmente jsx y jsxImportSource o jsxFactory/jsxFragmentFactory para versiones antiguas de Preact si no usas los valores predeterminados de preset-vite.
Configuración de Git
Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar comprometerlos en tu repositorio Git.
Para hacer esto, puedes agregar las siguientes instrucciones a tu archivo .gitignore:
Copiar el código al portapapeles
# Ignorar los archivos generados por Intlayer.intlayer
Extensión de VS Code
Para mejorar tu experiencia de desarrollo con Intlayer, puedes instalar la Extensión oficial de Intlayer para VS Code.
Instalar desde el Marketplace de VS Code
Esta extensión proporciona:
- Autocompletado para las claves de traducción.
- Detección de errores en tiempo real para traducciones faltantes.
- Vistas previas en línea del contenido traducido.
- Acciones rápidas para crear y actualizar traducciones fácilmente.
Para más detalles sobre cómo usar la extensión, consulta la documentación de la Extensión de Intlayer para VS Code.
Ir Más Allá
Para ir más allá, puedes implementar el editor visual o externalizar tu contenido usando el CMS.
Historial del Documento
- 5.5.10 - 2025-06-29: Historial inicial