Upload README.md
Browse files
README.md
CHANGED
|
@@ -63,10 +63,10 @@ layouts are detected automatically.
|
|
| 63 |
|
| 64 |
### What gets translated
|
| 65 |
|
| 66 |
-
|
| 67 |
-
bindings, asset filenames and engine identifiers in the same
|
| 68 |
-
lines an actor speaks, and translating one of those breaks the
|
| 69 |
-
than mistranslating it.
|
| 70 |
|
| 71 |
| event code | content | translated |
|
| 72 |
|---|---|---|
|
|
@@ -77,10 +77,25 @@ than mistranslating it.
|
|
| 77 |
| 356 / 357 | Plugin Command | no |
|
| 78 |
| 320 / 324 / 325 | Change Name / Nickname / Profile | no |
|
| 79 |
|
| 80 |
-
|
| 81 |
-
|
| 82 |
|
| 83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
|
| 85 |
- **Message boxes stay whole.** A run of consecutive 401 commands is one box
|
| 86 |
split across lines, not separate sentences, so the run is merged and
|
|
@@ -92,15 +107,19 @@ Three details make the output safe to ship:
|
|
| 92 |
whole project: in a real game an 800-slot map set collapses to ~150 unique
|
| 93 |
strings, and a "Yes" that appears 300 times costs one generation. It also
|
| 94 |
keeps a 102 choice and its 402 mirror automatically identical.
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
|
|
|
|
|
|
| 101 |
|
| 102 |
Untranslated strings keep their source text, so the download is a playable
|
| 103 |
-
game at any point, not just when the run finishes.
|
|
|
|
|
|
|
| 104 |
|
| 105 |
### Project endpoints
|
| 106 |
|
|
@@ -108,7 +127,7 @@ game at any point, not just when the run finishes.
|
|
| 108 |
|---|---|---|
|
| 109 |
| `POST` | `/project/upload` | multipart zip; unpacks, detects MV/MZ, indexes dialogue |
|
| 110 |
| `POST` | `/project/{id}/start` | begin (or resume) translating; body `{"target_lang":"tr"}` |
|
| 111 |
-
| `GET` | `/project/{id}/status` | overall %, per-file %,
|
| 112 |
| `POST` | `/project/{id}/cancel` | stop after in-flight strings finish |
|
| 113 |
| `GET` | `/project/{id}/download` | rebuilt zip, same folder layout |
|
| 114 |
| `DELETE` | `/project/{id}` | remove immediately |
|
|
|
|
| 63 |
|
| 64 |
### What gets translated
|
| 65 |
|
| 66 |
+
Dialogue and interface text, and nothing else. RPG Maker keeps executable
|
| 67 |
+
script, plugin bindings, asset filenames and engine identifiers in the same
|
| 68 |
+
arrays as the lines an actor speaks, and translating one of those breaks the
|
| 69 |
+
game rather than mistranslating it.
|
| 70 |
|
| 71 |
| event code | content | translated |
|
| 72 |
|---|---|---|
|
|
|
|
| 77 |
| 356 / 357 | Plugin Command | no |
|
| 78 |
| 320 / 324 / 325 | Change Name / Nickname / Profile | no |
|
| 79 |
|
| 80 |
+
Plus the interface text in `System.json` — the menu and options screens
|
| 81 |
+
wrapped around that dialogue:
|
| 82 |
|
| 83 |
+
| System.json key | content | translated |
|
| 84 |
+
|---|---|---|
|
| 85 |
+
| `terms.commands` | New Game, Continue, Save, Options, Attack, Buy/Sell | **yes** |
|
| 86 |
+
| `terms.messages` | BGM/SE Volume, Always Dash, battle log templates | **yes** |
|
| 87 |
+
| `terms.basic` / `terms.params` | Level, HP, MP, Attack, Defense … | **yes** |
|
| 88 |
+
| `elements`, `equipTypes`, `skillTypes`, `weaponTypes`, `armorTypes` | equip and status screen labels | **yes** |
|
| 89 |
+
| `gameTitle` | the game's name | no — a proper name, like character names |
|
| 90 |
+
| `currencyUnit` | usually a one-letter symbol (`G`) | no |
|
| 91 |
+
| `switches`, `variables` | developer labels the player never sees | no |
|
| 92 |
+
|
| 93 |
+
Null and empty entries are left as they are: RPG Maker pads these arrays to a
|
| 94 |
+
fixed length and index 0 is normally blank, so writing text into one would put
|
| 95 |
+
stray words in the menu. Database files (`Actors.json`, `Items.json`, …) and
|
| 96 |
+
`plugins.js` are untouched.
|
| 97 |
+
|
| 98 |
+
Two details make the output safe to ship:
|
| 99 |
|
| 100 |
- **Message boxes stay whole.** A run of consecutive 401 commands is one box
|
| 101 |
split across lines, not separate sentences, so the run is merged and
|
|
|
|
| 107 |
whole project: in a real game an 800-slot map set collapses to ~150 unique
|
| 108 |
strings, and a "Yes" that appears 300 times costs one generation. It also
|
| 109 |
keeps a 102 choice and its 402 mirror automatically identical.
|
| 110 |
+
|
| 111 |
+
Translations are written exactly as the model returns them. An earlier
|
| 112 |
+
revision compared each translation's control codes against the source and held
|
| 113 |
+
back any string where they differed, but Hy-MT2 carries `\C[2]`, `\N[1]` and
|
| 114 |
+
the rest through on its own, so in practice that gate withheld good
|
| 115 |
+
translations more often than it caught bad ones. The only response still
|
| 116 |
+
refused is an empty one, which would blank a line in-game; strings that are
|
| 117 |
+
*only* control codes never reach the model at all.
|
| 118 |
|
| 119 |
Untranslated strings keep their source text, so the download is a playable
|
| 120 |
+
game at any point, not just when the run finishes. `failed_units` in the
|
| 121 |
+
status counts strings where the backend itself errored — those keep their
|
| 122 |
+
source line too.
|
| 123 |
|
| 124 |
### Project endpoints
|
| 125 |
|
|
|
|
| 127 |
|---|---|---|
|
| 128 |
| `POST` | `/project/upload` | multipart zip; unpacks, detects MV/MZ, indexes dialogue |
|
| 129 |
| `POST` | `/project/{id}/start` | begin (or resume) translating; body `{"target_lang":"tr"}` |
|
| 130 |
+
| `GET` | `/project/{id}/status` | overall %, per-file %, failure count |
|
| 131 |
| `POST` | `/project/{id}/cancel` | stop after in-flight strings finish |
|
| 132 |
| `GET` | `/project/{id}/download` | rebuilt zip, same folder layout |
|
| 133 |
| `DELETE` | `/project/{id}` | remove immediately |
|