gt-next@6.2.0
Descripción general
En gt-next 6.2.0, hemos dado un gran paso hacia trasladar el procesamiento del tiempo de ejecución al tiempo de compilación mediante un plugin de SWC. Este enfoque desbloquea nuevas capacidades como hashing en tiempo de compilación, traducciones prerenderizadas y validaciones más estrictas, todo sin añadir sobrecarga en tiempo de ejecución.
Para mantener el enfoque, empezamos con tres mejoras clave.
- Hashing en tiempo de compilación
- Traducción bajo demanda
- Reglas de linting en tiempo de compilación
Hashing en tiempo de compilación
Aunque es una optimización relativamente pequeña, ahora realizamos cálculos de hash en tiempo de compilación en lugar de en tiempo de ejecución.
Funciones como getGT() y el <T> del lado del servidor ya no necesitan calcular y almacenar en caché hashes en cada llamada, lo que se traduce en un rendimiento más consistente.
Traducción bajo demanda
Uno de los mayores dolores de cabeza para los desarrolladores ha sido tener que recargar la página durante el desarrollo para ver actualizaciones de cadenas en tiempo real.
getGT() y useGT() siguen el patrón de i18n habitual:
export default function Page() {
const t = useGT()
// const t = await getGT(); para el lado del servidor
return (
<>
{t('contenido a traducir')}
{t('otro contenido a traducir')}
</>
)
}Mantenemos t() deliberadamente sincrónica para alinearla con otras librerías de i18n.
La desventaja era un proceso de traducción en dos pasos:
- Registrar el texto con la API. 2. Esperar un segundo renderizado para mostrar el resultado traducido.
Ahora, gracias al compilador, el contenido traducible se analiza por adelantado y se pasa directamente a useGT() o getGT() en tiempo de compilación.
Esto significa que las traducciones están disponibles de inmediato en tiempo de ejecución, sin necesidad de recargar la página.
Linting en tiempo de compilación
Antes, detectar el uso incorrecto de componentes <T> requería ejecutar gtx-cli con un linter personalizado.
Esto generaba inconsistencias entre el comportamiento en desarrollo y en producción.
Con la versión 6.2.0, las reglas de linting ahora se aplican directamente en el plugin de SWC.
Si algún contenido traducible no está envuelto en un componente <T>, obtendrás un error en tiempo de compilación, lo que garantiza que los problemas se detecten con antelación.
¿Por qué SWC (por ahora)?
Nuestra transición del tiempo de ejecución al tiempo de compilación aún está en sus primeras etapas. Estamos comenzando con Next.js, pero planeamos dar soporte a otros frameworks pronto. Los plugins de Babel que ofrecen la misma funcionalidad ya están en la hoja de ruta.
gt-next 6.2.0 sienta las bases para un flujo de trabajo de traducción más rápido y confiable.
Al trasladar la lógica al tiempo de compilación, reducimos la complejidad en tiempo de ejecución y hacemos que las traducciones sean más inmediatas y predecibles.