Saltar al contenido

Caso de estudio · Localización completa

Little Witch in the Woods,
tres capas, un motor.

El desarrollo completo del caso resumido en Traducciones Brier: cómo se localizó al español un juego que no tiene español oficial, qué sistemas dentro del motor hubo que tocar uno por uno, qué apareció que los datos no mostraban, y cómo se verificó cada paso antes de cerrar el siguiente.

Punto de partida

El juego no tiene español oficial.

Y ese es precisamente el motivo por el que BrierStudios lo usó como caso de estudio de su servicio de localización: si el juego ya estuviera traducido, no habría nada que demostrar.

Little Witch in the Woods es un juego de rol ligero en el que controlas a Ellie, una aprendiz de bruja que llega por tren a un pueblo y empieza a explorar el bosque. El juego sale al mercado con cinco idiomas oficiales: inglés, coreano, japonés, chino simplificado y chino tradicional. Español no está entre ellos.

El objetivo de este proyecto era producir una localización completa al español — UI, diálogos, diario de misiones, ítems, logros, tutoriales — sobre los propios assets del juego, no sobre un archivo de strings paralelo que el motor no va a leer. Y, al terminar, comprobar que el resultado funcionaba jugando, no solo abriendo archivos.

Capa 1 · UI y menús

La base. 25 tablas, 8.742 entradas.

Todo lo que el jugador ve cuando no está en una conversación: etiquetas de botones, ajustes, inventario, ítems, logros, tutoriales.

El juego usa Unity Localization sobre Addressables como su sistema principal de internacionalización. Cada idioma tiene sus propias tablas de texto, y cada tabla vive dentro de un bundle binario registrado en un catálogo central que le dice al juego qué bundle cargar para cada ruta de texto.

El trabajo, en abstracto: extraer con herramientas de inspección de bundles de Unity, traducir las 8.742 entradas de las 25 tablas, reconstruir bundles nuevos en español con sus propios identificadores binarios únicos, y parchear el catálogo para que el juego los encuentre. Para la validación se usó una herramienta de verificación propia que compara byte a byte contra el catálogo original — así se asegura que nada de lo demás se rompe en el proceso.

El primer obstáculo real

La traducción de UI, aunque técnicamente instalada, no aparecía en el juego — o aparecía encima del inglés en vez de como opción nueva. La causa, tras varias rondas de prueba real en el juego: las tablas de texto en español necesitaban declarar las MISMAS 13 dependencias binarias que las tablas en inglés y en coreano (fuentes, shaders, catálogo de audio, etc.) — el código fuente del juego, por error del estudio original o por simplificación, solo declaraba 3 de esas dependencias para los bundles en español.

Addressables no carga una dependencia que no está declarada. Así que el juego simplemente no encontraba el texto en español, aunque los archivos estuvieran en el sitio correcto.

Una vez corregido — añadiendo las 13 dependencias que faltaban a las tablas en español — la interfaz completa funcionó: menús, ajustes, inventario, todo.

Capa 2 · Diálogos de personajes

El sistema oculto. 48.813 entradas, 45.975 visibles.

Con la UI funcionando, probar el juego real reveló algo que los datos no mostraban: los NPC no hablaban, y una escena cinemática (la apertura en tren) se quedaba en pantalla negra.

La investigación llevó a descubrir que el juego usa un SEGUNDO sistema de localización, completamente aparte del de menús: Dialogue System for Unity (PixelCrushers), con su propia base de datos binaria por idioma, llamada DialogueDB. Nunca se había tocado.

Esta base de datos contiene actores, objetos, palabras clave, variables y conversaciones. En total: 48.813 entradas de diálogo. De esas, 45.975 son texto real visible para el jugador. El resto son etiquetas internas del editor, texto de prueba del propio estudio, o referencias a código — filtradas con criterio, no traducidas a ciegas.

El trabajo fue construir una base de datos en español desde cero: clonar la estructura binaria de la versión en inglés, con identificadores internos nuevos, y registrarla en el catálogo de Addressables igual que las tablas de UI.

El segundo obstáculo

El juego seguía sin cargar el diálogo en español, esta vez con un error de integridad concreto: "CRC Mismatch" en el registro del propio juego al arrancar.

La causa, encontrada comparando el comportamiento con las tablas de UI que sí funcionaban: Unity verifica la integridad de un paquete de datos calculando una suma de verificación sobre el contenido ya descomprimido en memoria, no sobre el archivo tal como está guardado en disco — dos números distintos por diseño del motor.

La solución, que ya se estaba usando sin saberlo en las tablas de UI que funcionaban, es simplemente no forzar esa verificación cuando el paquete es de confianza para la propia herramienta. Corregido, el diálogo completo funcionó: conversaciones de cada personaje, y la cinemática de apertura que antes se quedaba en negro.

Capa 3 · Títulos de misión

El hueco final. 173 entradas en 19 tablas.

Con diálogos y menús funcionando, una revisión completa de todas las pantallas del juego encontró un tercer tipo de texto sin traducir: los títulos de objetivo y misión activa.

Estos títulos mostraban literalmente su identificador interno del proyecto — por ejemplo, newtrain_00_title — en vez de un título legible en la pantalla de diario de misiones.

El resultado fue un TERCER sistema de localización, distinto de los dos anteriores: PixelCrushers.TextTable, una tabla ligera de texto por campo, con 173 entradas repartidas en 19 tablas, usada específicamente para estos títulos.

Y tenía su propia complicación. Estos títulos estaban duplicados en dos lugares del juego:

  • Una copia en el sistema de paquetes seguro (Addressables).
  • Otra copia dentro del archivo de datos central del motor Unity, llamado resources.assets, de 34 MB — el archivo que carga absolutamente todo el juego al arrancar, usado por todos los jugadores sin importar idioma.

El juego, en este caso concreto, leía la segunda copia.

El parche más arriesgado del proyecto

Parchear el archivo central del motor es la operación de mayor riesgo de todo el proyecto: un error ahí puede impedir que el juego arranque para cualquiera. El parche se hizo con la verificación más estricta de todo el trabajo: de los 32.156 objetos internos que contiene ese archivo, se confirmó que los 32.137 objetos que no tenían que ver con la traducción quedaron byte a byte idénticos al original. Solo cambiaron los 19 objetos relevantes, y solo en el campo correspondiente.

El detalle final

Que el menú diga "Español".

Última pieza: el propio selector de idioma del juego no mostraba "Español" como opción seleccionable, aunque el juego ya corría en español por dentro.

La lista de idiomas del menú resultó estar guardada, igual que los títulos de misión, en archivos de datos centrales del motor — no en el sistema de paquetes de la traducción. Para añadir la opción faltante:

  • Una entrada de texto nueva en las seis tablas de idioma de la interfaz: "Español", "Spanish", "스페인어", "スペイン語", "西班牙语" y "西班牙語".
  • Y luego referenciarla desde ambos archivos centrales, con la misma verificación exhaustiva byte a byte que en la capa 3, porque también son archivos que carga absolutamente todo el juego.

El resultado es la captura de evidencia final: el desplegable de Ajustes → Idioma, mostrando "Español" como opción seleccionable real, junto a los otros cinco idiomas oficiales del juego.

Verificación final

Cada capa, probada jugando.

No mirando archivos en disco: jugando.

Capa 1

UI completa

Todos los menús, ajustes, inventario, ítems, logros y tutoriales en español, sin cadenas sin traducir.

Capa 2

Diálogos de cada NPC

Conversaciones con todos los personajes no jugables, incluyendo la cinemática de apertura en tren que estaba en negro.

Capa 3

Diario de misiones

Títulos de objetivo/misión activa con su texto real, no con su identificador interno.

Enciclopedia

Codex interno

Entradas del codex en español, con su tipografía y formato original.

Cinematica

Apertura en tren

La escena de prólogo que se quedaba en pantalla negra — recuperada al arreglar el CRC del DialogueDB.

Compatibilidad

Sobre partidas guardadas

Comprobado también sobre una partida guardada ya existente, no solo sobre una partida nueva.

Evidencia

Capturas reales del juego con la traducción instalada.

Cada imagen es una captura del juego real corriendo, no una maqueta ni una composición. La leyenda apunta a qué parte del trabajo demuestra.

Diálogo de Ellie con Rubrum en el bosque nocturno, en español.
Capa 2 · Diálogo

Ellie y Rubrum conversando en el bosque nocturno: "Genial. Están pegadas al árbol como esperábamos."

Rubrum en su habitación con un diálogo en español.
Capa 2 · Diálogo

Rubrum en su habitación: "No, todavía tengo cosas que hacer."

Texto de Rubrum con la palabra mariposas resaltada en color.
Capa 2 · Token preservado

Rubrum con texto resaltado: "¡Vaya, hay un montón de mariposas brillantes!" — el resaltado rojo de "mariposas" es un token de formato real del juego, preservado por la traducción.

Panel de misión activa con objetivos en español.
Capa 3 · Misión

Panel de misión: "Quita las enredaderas espinosas gigantes" y "Sube a la cima de la montaña con Rubrum y consigue flores de luna."

Panel de misión con el título traducido al español.
Capa 3 · Título

"El misterio del túnel" — el título que antes aparecía crudo como newtrain_00_title en la pantalla.

Aviso emergente en pantalla con el título de la misión.
Capa 3 · Banner

El mismo título, esta vez como aviso emergente en pantalla: "Principal · El misterio del túnel".

Diploma del juego completamente traducido con tipografía latina propia.
Capa 1 · Tipografía

Un diploma del juego completamente traducido, con tipografía y estilo latino propio: "Litterae Completionis... Aprendiz de bruja... Maga Tirocinis". La traducción respeta el tono y formato visual del juego, no solo el texto plano.

HUD de inventario con ítems traducidos durante un diálogo.
Capa 1 · Inventario

HUD de inventario con ítems traducidos: "Flor de luna" x2, durante un diálogo.

Desplegable de idioma del juego mostrando Español como opción seleccionada.
Detalle final · Menú

El desplegable de Ajustes → Idioma mostrando "Español" como opción seleccionada. La pieza final del trabajo.

Lo que esto demuestra

Localizar un juego no es traducir un archivo de strings.

Cada "capa" de texto en un juego puede vivir en un sistema de localización distinto, con su propio formato binario, sus propias reglas de verificación de integridad, y a veces duplicado en lugares que ni la documentación del motor menciona.

Localizar un juego de verdad — no solo un archivo de strings — significa encontrar y tratar cada uno de esos sistemas por separado, con evidencia real (el juego corriendo) en cada paso, no solo datos que parecen correctos sobre el papel.

En este proyecto, eso significó:

  • Tres sistemas distintos dentro del mismo motor, descubiertos uno tras otro.
  • Dos obstáculos reales, no previstos por la documentación, encontrados jugando.
  • Una intervención sobre el archivo central del motor, con verificación byte a byte sobre 32.156 objetos.
  • El añadido final de "Español" como opción real del menú, para que el propio juego la ofreciera sin trucos externos.

El resultado es un juego sin español oficial que ahora corre en español de principio a fin, con la misma carga narrativa que tendría si el equipo original lo hubiera escrito directamente en español.

Descarga

Instala la localización en tu copia del juego.

Un .zip con el instalador y un LEEME. Descomprímelo y ejecuta el instalador: encuentra el juego solo (también en tus bibliotecas de Steam) y te pide confirmación.

El instalador hace backup automático de los originales antes de tocar nada e incluye opción de desinstalar para volver al estado previo. No es un parche oficial del estudio desarrollador: es un proyecto de BrierStudios, verificado jugando de principio a fin sobre Windows.

Comentarios

Comentarios

Si probaste el instalador — especialmente en Mac — cuéntanos aquí.