Cómo traducir un juego de Unity al inglés (texto externalizado)
Una guía paso a paso para traducir juegos de Unity al inglés con RuneTranslate: leer TextAssets, campos de MonoBehaviour y StreamingAssets, por qué solo funciona con texto externalizado y cómo la protección de identificadores evita que rompas el juego.
Unity es el motor detrás de una parte cada vez mayor de los juegos indie y las novelas visuales japonesas, y el más complicado de traducir de entre los motores habituales, porque Unity no tiene un único formato de texto. Los diálogos pueden vivir en bloques TextAsset, en campos de cadena de MonoBehaviour, en scripts sueltos de StreamingAssets o compilados directamente en una DLL de C#. Esta guía te muestra cómo traducir un juego de Unity con RuneTranslate y, lo que es igual de importante, explica la única regla que hace a Unity diferente: solo texto externalizado.
La gran advertencia primero: solo texto externalizado
RuneTranslate traduce el texto de Unity que vive en los datos: archivos de recursos que el motor carga en tiempo de ejecución, incluidos los campos de cadena de los componentes MonoBehaviour (diálogos, nombres, etiquetas). Lo que no traduce es el texto que un desarrollador incrustó directamente en el código C# compilado: la Assembly-CSharp.dll en las compilaciones Mono, o el binario IL2CPP. Los campos de MonoBehaviour se leen en compilaciones tanto Mono como IL2CPP: RuneTranslate obtiene su distribución de tipos de las propias DLL del juego (Mono), o la reconstruye a partir de los metadatos de IL2CPP cuando no hay carpeta Managed/. En la práctica: los juegos que guardan su script en recursos y componentes se traducen bien; los juegos que compilan cada línea en el código solo se traducen parcialmente, y no sabrás cuál tienes hasta que lo abras, que es el primer paso.
Qué necesitas
- RuneTranslate para Windows: gratis, con todos los motores y proveedores desbloqueados.
- Una carpeta de juego de Unity: el directorio con el
.exedel juego y una carpeta<GameName>_Data/(que contiene los archivosglobalgamemanagers,resources.assets,data.unity3dylevel*). - Un idioma de destino: inglés, español, francés, alemán, portugués, ruso, chino, italiano, turco, vietnamita y más de 20 idiomas más.
- Un proveedor de traducción. El Google Translate gratuito funciona de inmediato; DeepL tiene un nivel gratuito; OpenAI, Anthropic, un modelo local y cualquier API compatible con OpenAI requieren tu propia clave.
Paso 1: Abre la carpeta del juego
Inicia RuneTranslate, haz clic en Nuevo proyecto y apúntalo al directorio del juego de Unity. La detección de motor busca la carpeta _Data/ e identifica el proyecto como Unity. Un componente auxiliar de Python UnityPy integrado (incluido en el instalador) abre los archivos de recursos y lista las cadenas legibles en un espacio de trabajo por proyecto ubicado en %APPDATA%/RuneTranslate/unity-workspace/<projectId>/. Tu carpeta de juego original nunca se modifica. Unity es un motor de mejor esfuerzo: verifica que la compilación exportada funcione antes de redistribuirla.
Paso 2: Cómo se extraen las cadenas
RuneTranslate lee el texto de todos los lugares donde Unity lo externaliza:
- TextAssets: bloques de JSON / CSV / script incrustados en
.assetsy AssetBundles, segmentados por un extractor que conoce el formato. - Campos de cadena de MonoBehaviour: texto visible en los componentes (diálogos, nombres, etiquetas), tanto en compilaciones Mono como IL2CPP (la información de tipos proviene de las DLL del juego, o se reconstruye a partir de los metadatos de IL2CPP).
- StreamingAssets: archivos de script sueltos (
.json,.txt,.csv,.ks) recorridos directamente en el disco.
Unity es también donde la traducción excesiva causa más daño, así que RuneTranslate incorpora una protección para ello. Muchas cadenas de MonoBehaviour no son texto visible en absoluto: son identificadores de control y operandos de flujo: nombres de escena que una llamada LoadScene resuelve por cadena, claves de enrutamiento de mensajes, nombres de clips de animación / sonido, nombres de partes de Live2D y los valores de comparación dentro de la lógica If / SetVariable de Fungus (por ejemplo, un indicador como 村落出口). Si traduces esos, el juego se rompe en silencio: el síntoma clásico es una pantalla de «cargando» infinita sin ningún error. RuneTranslate los clasifica automáticamente como excluidos (mostrados en rojo, solo si tú lo activas), de modo que el editor muestra los diálogos y etiquetas genuinos y deja intacta la maquinaria. Las sustituciones {$var} de Fungus y el marcado {color=...} / TMP <...> se enmascaran tras marcadores de posición para que sobrevivan intactos a la traducción.
Paso 3: Traduce y revisa
Elige un proveedor y ejecuta. DeepL o un LLM funcionan mejor para los diálogos; el Google Translate gratuito cubre los menús y los nombres de objetos. Crea primero un glosario con tu reparto y tus términos recurrentes: consulta Glosario 101. Cada línea aparece en el editor junto a su origen; edita en línea (se guarda al perder el foco o con Ctrl+Enter) y ejecuta el refinador de IA opcional para una revisión en una segunda pasada. La versión gratuita de RuneTranslate está limitada a una velocidad ~3–4× más lenta que la de pago, con la misma calidad de resultado.
Paso 4: Exporta una compilación jugable
Haz clic en Exportar. RuneTranslate copia el juego y luego reinserta las cadenas traducidas en los archivos de recursos en su lugar. La misma protección de exclusión se ejecuta al reescribir, de modo que un proyecto antiguo no pueda insertar por accidente un nombre de escena o un operando de flujo traducido al reexportar. El resultado es una copia completa y ejecutable del juego en la ubicación que elijas: inicia el .exe y se reproduce en tu idioma de destino.
Limitaciones conocidas
- Solo texto externalizado: las cadenas incrustadas directamente en el código C# compilado (
Assembly-CSharp.dllen Mono, o el binario IL2CPP) no se traducen. Los campos de datos de MonoBehaviour sí, tanto en compilaciones Mono como IL2CPP. - La lectura de MonoBehaviour en IL2CPP necesita un
global-metadata.datanalizable; los metadatos muy ofuscados pueden no reconstruirse (mejor esfuerzo). - Mejor esfuerzo: confirma que el juego exportado se inicia y se lee correctamente antes de compartirlo.
- El texto en imágenes (logotipos, interfaces dibujadas a mano, subtítulos de CG) no se traduce: queda fuera del alcance de la traducción automática.
Por qué esto es más fácil que el método antiguo
La traducción manual de Unity implicaba desempaquetar recursos con UABE o AssetStudio, buscar qué TextAssets y campos de MonoBehaviour contenían texto real, evitar a mano las cadenas de identificadores que hacen fallar el juego y luego reimportar sin corromper la tabla de recursos. RuneTranslate reúne extraer, clasificar (para que no traduzcas la maquinaria), traducir y reinsertar en su lugar en unos pocos clics, con el editor abierto para que tú controles la redacción.
Consulta la página del motor Unity para ver la lista completa de funciones, lee la guía de TyranoBuilder para un motor basado en HTML, o descarga RuneTranslate y pruébalo con un juego real.
¿Listo para probar RuneTranslate?
El plan gratuito desbloquea todos los motores y todos los proveedores de traducción. Supporter ($3/mo) desbloquea la velocidad completa.
Descargar para Windows