Localización usando LLMs
¿Cómo usamos GPT-4 para localizar Sitecloud?
La localización e internacionalización son, de forma muy general, los procesos de traducir una aplicación, sitio web o blog a otros idiomas. Para ser más específicos, la internacionalización es el proceso de diseñar software para que sea adaptable a múltiples idiomas, mientras que la localización es la adaptación de ese software para una región o idioma específico. Este proceso suele abreviarse con el término i18n.
Como os podéis imaginar, es un proceso clave dentro de cualquier estrategia de mercado, ya que permite alcanzar una audiencia más amplia y ofrecer un mejor servicio a los clientes.
Nuestra web comercial está desarrollada en Astro, uno de nuestros frameworks favoritos. Nos permite combinar componentes en HTML puro o con otros frameworks como React. Además, es fácil de integrar con otros servicios y genera sitios estáticos altamente optimizados.
Un ejemplo de integración en nuestra web es nuestra API de precios. Cada vez que lanzamos una oferta o un nuevo producto, actualizamos nuestros precios y necesitamos que estos cambios se reflejen en el sitio. Es un proceso interno interesante al que le dedicaremos un post en el futuro, pero ahora sigamos con el tema de la localización de nuestros productos.
LLMs para localización
A estas alturas, la mayoría de la gente conoce los LLMs (Large Language Models), o al menos sus versiones más populares, como ChatGPT o DeepSeek. Nosotros utilizamos estas herramientas en varios procesos internos, tanto en estrategias de mercado (go-to-market) como en tareas de ingeniería. Nuestra experiencia nos ha demostrado que son herramientas muy útiles, pero siempre las utilizamos con criterio, sin delegarles el control absoluto.
Por ejemplo, para nuestro blog usamos ChatGPT para editar los textos. Nuestro enfoque es escribir los posts manualmente y luego utilizar un LLM para analizarlos y sugerir mejoras. Hacemos varias iteraciones hasta obtener un resultado con el que estamos satisfechos.
Para la localización seguimos un enfoque similar, pero con scripts. Actualmente, ofrecemos nuestros productos en español e inglés, dos idiomas en los que los modelos de OpenAI realizan traducciones de alta calidad.
¿Cómo localizamos en Sitecloud?
Como mencionamos, utilizamos Astro para nuestra web comercial, que incluye soporte integrado para internacionalización. Puedes conocer más detalles en su documentación: Astro i18n.
Otra herramienta esencial en nuestro toolkit es una utilidad de línea de comandos creada por Simon Willison, llamada simplemente llm. Para instalarla se necesita Python o Brew (si estás en macOS). Esta herramienta permite encadenar comandos y enviar prompts a distintos modelos de lenguaje, como GPT-4o, GPT-3.5 o Llama. En nuestro caso, usamos GPT-4o.
El proceso de localización es bastante sencillo. Primero, escribimos todos los textos en español (somos una empresa de España). Las cadenas de texto están almacenadas en un archivo específico para este idioma. Por ejemplo, la barra de navegación tiene las siguientes claves de localización:
export default {
"navbar.product": "Producto",
"navbar.features": "Características",
"navbar.pricing": "Precios",
"navbar.company": "Empresa",
}
Para traducir este archivo a inglés con GPT-4o desde la línea de comandos, usamos:
cat ./src/i18n/ui.es.ts | llm "Translate to English the following TypeScript localization dictionary. Do not include any headers, just write the new translated dictionary. Do not include markdown." > ./src/i18n/ui.en.ts
En el prompt, le indicamos al modelo que genere únicamente el código traducido, sin encabezados ni decoraciones adicionales. El resultado es un archivo TypeScript válido con la localización en inglés.
Para simplificar el proceso, tenemos un script en Node.js que ejecuta este comando bajo demanda. Luego, hacemos una inspección manual antes de enviar los cambios a nuestro repositorio de código.
Seguridad en la aplicación web
Como mencionamos, realizamos una inspección visual antes de enviar las traducciones al repositorio, ya que el modelo puede cometer errores o generar código inválido. Además, cuando se realiza el bundling con Astro, este verifica que el código sea correcto y falla si detecta errores.
El siguiente paso de validación ocurre antes de hacer el merge en GitHub hacia la rama principal. Esta es nuestra segunda capa de seguridad, en la que revisamos posibles errores de traducción o sintaxis. Una vez aprobados los cambios, se despliegan automáticamente en producción.
Portal comercial
Para el blog seguimos el mismo proceso, pero ajustamos el prompt para manejar archivos en formato MDX de Markdown extendido. Por ejemplo, para traducir un post del blog utilizamos:
cat lanzamiento-wordpress.mdx | llm "Translate the following MDX file to English" > launching-wordpress.mdx
Luego el proceso de inspección sería el mismo, obligandonos siempre a validar la traducción y cualquier error de sintaxis.
Conclusión
Esperamos que estas ideas os sean útiles para la localización de vuestras aplicaciones. Este proceso puede aplicarse a cualquier tipo de proyecto de software. No solo es sencillo, sino también económico, ya que el costo por token en la localización es bajo, dado que solo se traduce contenido nuevo.
Aunque el proceso podría automatizarse por completo, no lo recomendamos. Es fundamental validar las traducciones para asegurarse de que sean precisas y de alta calidad.