La mejor solución para la internacionalización (i18n) en aplicaciones de Next.js
¿Buscas expandir tu aplicación Next.js a nuevos mercados? TacoTranslate hace que sea increíblemente fácil localizar tu proyecto Next.js, permitiéndote llegar a una audiencia global sin complicaciones.
¿Por qué elegir TacoTranslate para Next.js?
- Integración fluida: Diseñado específicamente para aplicaciones Next.js, TacoTranslate se integra sin esfuerzo en tu flujo de trabajo existente.
- Recopilación automática de cadenas: Olvídate de gestionar archivos JSON manualmente. TacoTranslate recopila automáticamente las cadenas de tu base de código.
- Traducciones impulsadas por IA: Aprovecha el poder de la IA para ofrecer traducciones contextualmente precisas que se ajusten al tono de tu aplicación.
- Soporte instantáneo de idiomas: Agrega soporte para nuevos idiomas con un solo clic, haciendo que tu aplicación sea accesible a nivel global.
Cómo funciona
A medida que el mundo se globaliza, es cada vez más importante que los desarrolladores web construyan aplicaciones que puedan atender a usuarios de diferentes países y culturas. Una de las formas clave de lograr esto es a través de la internacionalización (i18n), que te permite adaptar tu aplicación a distintos idiomas, monedas y formatos de fecha.
En este tutorial, exploraremos cómo agregar internacionalización a tu aplicación React Next.js, con renderizado del lado del servidor. TL;DR: Consulta el ejemplo completo aquí.
Esta guía es para aplicaciones Next.js que están usando el Pages Router.
Si estás usando el App Router, consulta esta guía en su lugar.
Paso 1: Instalar una biblioteca i18n
Para implementar la internacionalización en tu aplicación Next.js, primero elegiremos una biblioteca i18n. Existen varias bibliotecas populares, incluyendo next-intl. Sin embargo, en este ejemplo usaremos TacoTranslate.
TacoTranslate traduce automáticamente tus cadenas a cualquier idioma usando IA de vanguardia y te libera de la tediosa gestión de archivos JSON.
Instalémosla usando npm en tu terminal:
npm install tacotranslatePaso 2: Crea una cuenta gratuita en TacoTranslate
Ahora que ya tienes el módulo instalado, es momento de crear tu cuenta de TacoTranslate, un proyecto de traducción y las claves API asociadas. Crea una cuenta aquí. Es gratis y no requiere que agregues una tarjeta de crédito.
Dentro de la interfaz de usuario de la aplicación TacoTranslate, crea un proyecto y navega a la pestaña de claves API. Crea una clave read y una clave read/write. Las guardaremos como variables de entorno. La clave read es lo que llamamos public y la clave read/write es secret. Por ejemplo, puedes agregarlas a un archivo .env en la raíz de tu proyecto.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Asegúrate de nunca filtrar la clave API secreta read/write en entornos de producción del lado del cliente.
También agregaremos dos variables de entorno más: TACOTRANSLATE_DEFAULT_LOCALE y TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: El código de localidad predeterminado (fallback). En este ejemplo, lo estableceremos enenpara inglés.TACOTRANSLATE_ORIGIN: La “carpeta” donde se almacenarán tus cadenas, como la URL de tu sitio web. Lee más sobre los orígenes aquí.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comPaso 3: Configuración de TacoTranslate
Para integrar TacoTranslate con tu aplicación, necesitarás crear un cliente usando las claves de API mencionadas anteriormente. Por ejemplo, crea un archivo llamado /tacotranslate-client.js.
const {default: createTacoTranslateClient} = require('tacotranslate');
const tacoTranslate = createTacoTranslateClient({
apiKey:
process.env.TACOTRANSLATE_SECRET_API_KEY ??
process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
process.env.TACOTRANSLATE_API_KEY ??
'',
projectLocale: process.env.TACOTRANSLATE_DEFAULT_LOCALE ?? '',
});
module.exports = tacoTranslate;Pronto definiremos automáticamente TACOTRANSLATE_API_KEY.
Crear el cliente en un archivo separado facilita volver a usarlo más adelante. Ahora, usando un /pages/_app.tsx, agregaremos el proveedor TacoTranslate.
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';
type PageProperties = {
origin: Origin;
locale: Locale;
locales: Locale[];
localizations: Localizations;
};
export default function App({Component, pageProps}: AppProps<PageProperties>) {
const {origin, locale, locales, localizations} = pageProps;
return (
<TacoTranslate
client={tacoTranslate}
origin={origin}
locale={locale}
localizations={localizations}
>
<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
<Component {...pageProps} />
</TacoTranslate>
);
}Si ya tienes pageProps y _app.tsx personalizados, por favor extiende la definición con las propiedades y el código indicados arriba.
Paso 4: Implementación del renderizado del lado del servidor
TacoTranslate permite el renderizado del lado del servidor de tus traducciones. Esto mejora enormemente la experiencia del usuario al mostrar el contenido traducido de inmediato, en lugar de un destello inicial de contenido sin traducir. Además, podemos omitir las solicitudes de red en el cliente, porque ya contamos con todas las traducciones que necesitamos.
Comenzaremos por crear o modificar /next.config.js.
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');
module.exports = async () => {
const config = {};
return withTacoTranslate(config, {
client: tacoTranslateClient,
isProduction:
process.env.TACOTRANSLATE_ENV === 'production' ||
process.env.VERCEL_ENV === 'production' ||
(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
process.env.NODE_ENV === 'production'),
});
};Modifica la comprobación isProduction para ajustarla a tu configuración. Si true, TacoTranslate mostrará la clave pública de la API. Si estamos en un entorno local, de prueba o de staging (isProduction is false), usaremos la clave secreta read/write de la API para asegurarnos de que las nuevas cadenas se envíen para traducción.
Hasta ahora, solo hemos configurado la aplicación Next.js con una lista de idiomas compatibles. Lo siguiente que haremos será obtener las traducciones de todas tus páginas. Para ello, usarás ya sea getTacoTranslateStaticProps o getTacoTranslateServerSideProps según tus requisitos.
Estas funciones toman tres argumentos: un objeto Next.js Static Props Context, la configuración para TacoTranslate y propiedades opcionales de Next.js. Ten en cuenta que revalidate en getTacoTranslateStaticProps está establecido en 60 por defecto, para que tus traducciones se mantengan actualizadas.
Para usar cualquiera de las dos funciones en una página, supongamos que tienes un archivo de página como /pages/hello-world.tsx.
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';
export async function getStaticProps(context) {
return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}
export default function Page() {
return <Translate string="Hello, world!"/>;
}Ahora ya deberías poder usar el componente Translate para traducir cadenas dentro de todos tus componentes de React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Paso 5: ¡Desplegar y probar!
¡Listo! Tu aplicación Next.js ahora se traducirá automáticamente cuando agregues cualquier cadena a un componente Translate. Ten en cuenta que solo los entornos con permisos read/write en la clave de API podrán crear nuevas cadenas para traducir. Recomendamos contar con un entorno de staging cerrado y seguro donde puedas probar tu aplicación de producción con una clave de API así, agregando nuevas cadenas antes de ponerla en vivo. Esto evitará que cualquiera cualquiera robe tu clave de API secreta y, potencialmente, que tu proyecto de traducción se vea hinchado al agregarse cadenas nuevas no relacionadas.
Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the App Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.
TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!