Skip to content

Traducir todo el texto traducible: datos, scripts, informe de cobertura y mod de apoyo - #1

Open
Consterna wants to merge 6 commits into
mainfrom
claude/modpack-farming-crossing-messages-214123
Open

Consterna wants to merge 6 commits into
mainfrom
claude/modpack-farming-crossing-messages-214123

Conversation

@Consterna

Copy link
Copy Markdown
Owner

Qué cambia

Tras traducir Farming Crossing 4, parte del chat seguía en inglés: diálogos de NPC, avisos de colección, mensajes de antojos, logros y tips. La app solo buscaba texto en sitios fijos. Este PR hace que traduzca todo lo traducible en cualquier modpack, y que avise de lo que no puede.

  • Datos de texto por estructura: funciones .mcfunction, logros, tips y el mercado de Farming for Blockheads, en kubejs/data, global_packs, datapacks, mundos y zips. Componentes en JSON y SNBT (1.21.5+).
  • KubeJS: texto de tellraw/title/say en runCommand, mensajes armados por partes, métodos de texto según la versión (comprobados en el código de KubeJS 1.12 a 26.x) y funciones propias del script que solo muestran texto (solo en la posición de ese parámetro; si el parámetro se compara, se guarda, va en un id o comando, no se toca nada).
  • Modo exhaustivo opcional para scripts (--exhaustivo y casilla).
  • Informe «Qué queda en inglés» (menú Más y modpackes cobertura): frases de scripts, formatos desconocidos y texto escrito en el código de los mods. Solo lee.
  • Mod de apoyo ModpackES Runtime (Forge 1.20.1, solo cliente, mod-runtime/): muestra en español el texto del código Java de los mods (chat, barra de acción, tooltips) si es idéntico a uno de la tabla que genera la app. Opcional, apagado por defecto; se instala y quita desde la ventana o con modpackes instalar-runtime. El CI lo compila con Java 17 y el .exe lo incluye.
  • Endurecimiento tras revisar toda la app por secciones, con 6 errores corregidos: memoria dañada, gzip truncado en NBT, lectura fuera de carpeta en recursos, espacios de nombres imposibles que cancelaban la traducción, y bytes no UTF-8 en options.txt.

Cómo se probó

  • scripts/verificar.py completo: ruff, pyright estricto, compilación y 642 pruebas pasadas (6 saltadas por falta de datos o de jars descargables).
  • Corpus: 16 modpacks públicos de Modrinth (1.16.5 a 26.x; Forge, NeoForge, Fabric y Quilt) más Farming Crossing 4, siempre sobre copias: JSON, zips y JS (node --check) siguen siendo válidos, repetir no cambia nada y restaurar devuelve los bytes originales.
  • Mod de apoyo: 13 pruebas JUnit; el .exe se construye y su prueba de arranque pasa.
  • No probado: el mod de apoyo dentro del juego (no hay cliente gráfico disponible). Con el mod instalado y el juego en español, /tellraw @s "TPA request expired!" debe salir en español. Las pruebas usan el simulador de traducción, no la API real.

Para quien revise

  • El mod de apoyo existe solo para Forge 1.20.1; NeoForge y Fabric serían proyectos aparte.
  • Queda fuera: pantallas con etiquetas en el código de los mods, funciones de script cuyo texto acaba en comandos de otro mod, y funciones usadas entre archivos. Salen en el informe.
  • scripts/descargar_corpus.py suma modpacks al corpus (se baja a .descargas/, ignorado por Git).

Lista

  • uv run python scripts/verificar.py pasa completo.
  • Agregué o actualicé las pruebas.
  • Anoté el cambio en CHANGELOG.md si el usuario lo nota.

- runCommand/runCommandSilent: traduce el texto de tellraw, title, say, msg, tell y w.
- Mensajes armados por partes (variable que acaba en tell), sus miembros name y
  sus tablas de nombres, incluso si la tabla está en otro archivo.
- Logros y funciones .mcfunction de kubejs/data, con copia de seguridad y en el
  kit para servidores.
… informar de lo que queda

- Funciones, logros y tips se buscan por su estructura (data/<espacio>/function(s)...)
  en cualquier carpeta, sueltos o dentro de .zip, con copia de seguridad.
- Componentes de texto en JSON y en SNBT (1.21.5+).
- notify, kick y los títulos de menús de KubeJS, tomados de su código.
- Más ▸ Qué queda en inglés y `modpackes cobertura`: frases de scripts sin elegir y texto
  escrito en el código de los mods (tabla de constantes de cada clase). Solo lee.
- Pruebas con modpacks públicos de Modrinth y con la instancia propia: validez, idempotencia
  y restauración byte a byte.
…secciones

- Memoria: cierra la conexión si el archivo está dañado y el proceso dice cuál es.
- NBT: un gzip dañado o truncado se convierte siempre en ValueError.
- Carpeta de recursos: rechaza rutas que salen de su raíz.
- Resource pack: un espacio de nombres imposible o reservado de Windows se salta
  y se avisa, en vez de cancelar toda la traducción (mods y libros).
- options.txt: conserva los bytes que no son UTF-8.
- Pruebas de casos límite por sección, línea de comandos real y ventana.
… mods

- Módulo TextoDeJava: traduce las frases del código Java a una tabla del resource pack.
- Mod de cliente ModpackES Runtime (Forge 1.20.1) que cambia chat, barra de acción y
  tooltips cuyo texto es idéntico al de la tabla; con pruebas JUnit.
- Instalar y quitar el mod desde la ventana y con `instalar-runtime`; opción --java.
- scripts/construir_mod.py y paso de CI para compilarlo; el .exe lo incluye.
…ustivo y más corpus

- Métodos de texto de KubeJS según la versión de Minecraft (formatos/kubejs_api.py).
- El informe de cobertura avisa de carpetas con frases cuyo formato no se conoce.
- Formato del mercado de Farming for Blockheads.
- Modo exhaustivo opcional para los scripts (--exhaustivo y casilla).
- Siete modpacks más en el corpus, de 1.16.5 a 26.x con Quilt incluido.
…uestran texto

- Analiza las funciones del script cuyo parámetro solo se muestra (directo, partido en
  líneas o dentro de una plantilla que se muestra) y traduce lo que se les pasa en esa posición.
- Conservador: si el parámetro se compara, busca, guarda, devuelve o va en un id o comando,
  o la función se usa como valor o está repetida, no se toca nada.
- Las cadenas del escáner de JavaScript guardan la posición de su argumento.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-06T07:56:13.149854Z b93c013 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b93c013adb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"""Kit para servidores: archivos traducidos que lee el servidor, el resource pack y unas instrucciones."""
respaldo = Respaldo(juego)
archivos = [r for r in respaldo.registrados() if r.startswith(_DEL_SERVIDOR)]
archivos = [r for r in respaldo.registrados() if r.startswith(_DEL_SERVIDOR) or _es_dato_del_servidor(r)]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include zipped datapacks in the server kit

When a translated datapack is a .zip under global_packs/, this filter classifies the archive’s outer path rather than its entries, so _es_dato_del_servidor returns false and the path is not covered by _DEL_SERVIDOR. The exported kit then omits that modified datapack and its translations; include archives based on their contents or track which archives contain server-side data.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant