Files
Outer-Wilds-SK-Translation-Mod/PLAN.md
T
Jaroslav Beneš 9935bf68fb Translate dialogue batches 19-22: finish the flat list (villagers, Chert/Esker, signs, stragglers)
Completes the machine-assisted first pass of the entire flat dialogue list,
produced in parallel (three translator subagents each emitting a JSON of
translations, applied race-free in the main thread) plus a large main-thread
block:

- Batch 19 - Hearthian village kids/villagers (271): Marl, Tephra, Galena,
  Rutile, Tuff, Spinel, Arkose, Gneiss, Porphy, Mica, model-rocket kid,
  hide-and-seek, ghost-matter kids. Player as mláďa.
- Batch 20 - Chert + Esker + Feldspar's jellyfish journal + Gabbro extras
  (359): Chert the astronomer's supernova breakdown, Esker's Mesačná základňa
  on the Skalka, Ember-Twin research signs, Gneiss the instrument-maker.
- Batch 21 - Giant's Deep signs, Signalscope-kid endgame, credits/epitaph
  signs (backer names kept), museum Nomai-writing signs. ASCII-art left as art.
- Batch 22 - straggler sweep (22): lines the suffix-of-key detector missed due
  to curly/straight-quote drift, found via an English-word heuristic (Gabbro
  bright-flash variants, sap-wine labels, ghost-matter Signáloskop game, ATP
  masks readout at 1964, Tektite's scout note).

Consistency: Hollow's Lantern -> Lampáš (glossary note added), ghost matter ->
prízračná hmota, Hanging City -> Visuté mesto. Whole-file English-leak scan: 0
across flat list, ship log, and UI. dotnet build -c Release succeeds and stages
the loadable mod folder. The entire Translation.xml first pass is now complete;
only the Slovak human review pass remains.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 19:20:46 +02:00

305 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PLAN.md — Slovak translation of Outer Wilds
Roadmap for building the mod. Status markers: ✅ done · 🚧 in progress · ⬜ todo.
## Goal
Add **Slovenčina** as a fully selectable language to *Outer Wilds*, covering the
**base game and the *Echoes of the Eye* DLC**, distributed as an Outer Wilds Mod
Manager mod. Quality target: natural, consistent Slovak — not literal machine
output.
## Approach
- Built on **xen-42's Localization Utility / Interplanetary Polyglot**
(`xen.LocalizationUtility`) — register a new language from one `Translation.xml`.
No game files needed to build.
- **Translation:** machine-assisted first pass (clean-room, no third-party
translation text reused), then a **Slovak-speaking human review pass**. Phased by
category so partial releases are usable: **UI/menus → dialogue/text walls →
ship log**.
- **Scope:** the single ~896 KB `Translation.xml` already contains base game + DLC
strings together, so scope is "everything," sequenced internally by category.
## Phases
### Phase 1 — Repo scaffold & docs ✅
`README.md`, `CLAUDE.md`, `PLAN.md`, and MIT `LICENSE` in place.
### Phase 2 — Mod skeleton ✅
Created the OWML mod shell, modelled on
[`shippy/outer-wilds-czech`](https://github.com/shippy/outer-wilds-czech):
- `manifest.json``author: Homer`, `uniqueName: Homer.SlovakTranslation`,
`name`, `version`, `owmlVersion`, `dependencies: ["xen.LocalizationUtility"]`.
- `ILocalizationAPI.cs` — interface copied from the utility.
- `SlovakTranslation.cs``ModBehaviour` calling
`api.RegisterLanguage(this, "Slovenčina", "assets/Translation.xml")`.
- `SlovakTranslation.csproj` / `.sln`, `.gitignore`, empty `assets/`.
- Optional: GitHub/Gitea release workflow.
### Phase 3 — Import English source ✅
Imported the base English `Translation.xml` (896 KB, 2424 entries, keys == values)
from the utility repo into `assets/`. This is the file to translate.
> Build verified: `dotnet build -c Release` compiles against the `OWML` /
> `OuterWildsGameLibs` NuGet packages (no game install needed) and stages a
> loadable mod folder (`SlovakTranslation.dll` + `manifest.json` +
> `default-config.json` + `assets/Translation.xml`) in `bin/`.
### Phase 4 — Glossary 🚧
First draft of `docs/glossary.md` in place: tone/register locked (informal *ty*),
and SK renderings proposed for the proper nouns and recurring terms below. Rows
marked `❓ review` still need the Slovak-speaking review pass to finalize.
Write `docs/glossary.md` fixing SK renderings (or keep-in-English decisions) for
proper nouns and recurring terms, e.g.: Nomai, Hearthian, the Eye / Eye of the
Universe, Ash Twin Project, Vessel, Black Hole Forge, Quantum Moon, Sun Station,
ship log, Nomai statue, Ember Twin, Ash Twin, Timber Hearth, Brittle Hollow,
Giant's Deep, Dark Bramble, Interloper, Stranger (DLC), Owlk/"Owlks" (DLC).
Decide tone/register (informal *ty* vs. formal) and lock it here.
### Phase 5 — Translate `<value>` entries ✅ (machine-assisted pass complete; human review pending)
Machine-assisted pass → human review, by category (UI/menus → dialogue → ship log),
base + DLC. Preserve all `&lt;color=…&gt;`/`&lt;i&gt;` markup, entities, and speaker
prefixes. Track progress and any hard-to-translate lines here or in issues.
**All three categories now have a complete first-pass translation** (UI 814,
ship log 483, dialogue 2423). Whole-file English-leak scan: 0. Remaining work is
the **Slovak-speaking human review pass** (puns, register, Nomai text-wall length,
the review-flagged lines noted per batch).
Progress by category (source has 3 sections — the flat `<entry>` list = dialogue/
text walls, `<table_shipLog>` = ship log, `<table_ui>` = UI/menus):
- **UI/menus (`<table_ui>`, 814 entries) — ✅ machine-assisted first pass done,
place-name terms reviewed & locked.** All values translated; integer `<key>`
IDs untouched; `\n`, `&lt;!&gt;` input-prompt tokens, `&lt;Profile Name&gt;`
placeholder, and color/italic markup preserved; XML re-verified well-formed.
Casing mirrors the source (ALL-CAPS button labels stay caps). A consistency
re-pass applied the locked glossary terms (Scout → *Skaut*, Signalscope →
*Signáloskop*, Timber Hearth → *Drevený kozub*, Ash/Ember Twin → *Dvojča
Popolu / Dvojča Uhlíka*, etc.). Remaining: a general Slovak review of the
non-proper-noun phrasings.
- **Ship log (`<table_shipLog>`, 483 entries) — ✅ machine-assisted first pass done.**
All values translated (location names + rumor/fact entries); string `<key>`
lookups untouched; plain text (no markup). Narrator voice locked to masculine;
ship-log place names locked in the glossary (§3, §5b). XML re-verified
well-formed; mod builds. **Still needs the Slovak review pass.**
- **Dialogue / text walls (flat `<entry>` list, 2423 entries) — ✅ COMPLETE.**
Every `<value>` is translated; the only remaining `value==key` entries are
proper names (kept in English), the panic-scream onomatopoeia, sick-noises,
Kickstarter backer credits, and the ASCII-art easter eggs — all intentional.
A whole-file English-leak heuristic (English function-words present, no Slovak
diacritics/markers) reports **0** leaks in the flat list, ship log, and UI.
Batched by **content type** (not planet — the flat list is asset-ID ordered):
Nomai lore/wall-text (by speaker) → Hearthian villagers → travelers →
player/system/DLC. Preserve `&lt;color=…&gt;`/`&lt;i&gt;`/`&lt;size=…&gt;` markup,
template tokens (`&lt;Pause/&gt;`, `&lt;TimeMinutes&gt;`, `&lt;NbTimeloops&gt;`,
`&lt;…SinceRedGiant&gt;`), `\n`, speaker prefixes, and per-entry whitespace.
- **Batch 1 — Solanum (70 lines) ✅** — Quantum Moon pilgrim: astronomy-museum
walls, Tower of Quantum Knowledge / Quantum Shrine, Eye philosophy. Feminine
voice. Applied by key; XML re-verified; builds.
- **Batch 2 — Vessel / warp-core debate (29 lines) ✅** — the Nomai clan
debating how to obtain the advanced warp core for the Ash Twin Project
(Oeno, Clary, Poke, Idaea, Avens, Cassava, Spire, Mitis) + Poke's personal
reflections + the Vessel's escape-pod launch / crash computer log. Poke &
Clary feminine, Annona masculine.
- **Batch 3 — Orbital Probe Cannon (50 lines) ✅** — Construction Yard cyclones
(Conoy, Spire, Cassava), building/firing the cannon (Cassava, Daz, Mallow,
Privet, Avens, Yarrow), the "let's send a probe" decision, and the cannon's
damage-report / launch-log system text. Avens masc, Ramie fem. Preserved
`&lt;TimeMinutes&gt;`/`&lt;TimeSeconds&gt;` tokens and the "on the other
appendage" Nomai joke.
- **Batch 4 — Ash Twin Project warp mechanism (53 lines) ✅** — warp-tower
alignment lore, White Hole Station tutorial, tower designs, ore/shell
construction, warp-core-source debate (Yarrow, Clary, Poke, Root, Phlox,
Oeno, Cycad, Annona, Ramie, Ilex). Pye fem, Plume masc. (Sun Station debate,
firing, failure + memory statues still to come.)
- **Batch 5 — Sun Station + memory statues (61 lines) ✅** — the Sun Station
build debate (Idaea/Pye/Ramie/Poke), Pye's supernova/"gas" humor, the firing
orders, the failure aftermath, and the memory statues + masks (Phlox, Daz,
Yarrow, Ramie, Oeno, Root). Idaea masc. Preserved the 1304 countdown tokens
(`&lt;RemainingMinutes&gt;`…) + `\n` and `&lt;TimeMinutes&gt;`/`&lt;TimeSeconds&gt;`.
- **Batch 6 — High Energy Lab (42 lines) ✅** — the negative-time-interval
experiments (Pye & Ramie), the white/black-hole-core setup, the 22-minute
hypothesis, and the High Energy Lab / Sunless City labels + distance markers.
Kept Pye/Ramie's "gas / aeriform" state-of-matter puns (flagged for review)
and Conoy's "lose his head" joke.
- **Batch 7 — Quantum caves (48 lines) ✅** — the quantum shard, the Quantum
Moon locator, the wandering-rock / quantum-travel experiments, Coleus's
disappearance and the search for him, and the Ember Twin shelter-path
directions (Coleus, Melorae, Bur, Annona, Thatch, Plume). Coleus/Melorae
masc. Kept the pre-discovery moon names (*putujúci / prízračný mesiac*) and
Melorae's "my sedimentary friend" geologist humor.
- **Batch 8 — Interloper shuttle + warp-tower scroll-wall (43 lines) ✅** — the
comet crew discovering the exotic/ghost matter in the ruptured stone (Pye,
Poke, Clary — all feminine; Poke & Clary are sisters), plus the leftover
White Hole Station / warp-tower scroll-wall lines that finish the batch-4
conversations (Clary/Poke/Root/Yarrow, incl. the ClaryYarrow romance).
- **Batch 9 — Brittle Hollow / Escape Pod 1 clan saga (94 lines) ✅** — the
crash, the volcanic-moon danger, quantum-grove wandering trees/shard, the
Eye-signal locator, the migration to the northern glacier, and the loss of
loved ones (Plume, Thatch, Filix, Lami, Annona, Rhus, Ilex, Spire, Coleus,
Cassava, Kousa). Filix & Melorae revealed **feminine** ("her note", "Aunt
Melorae") — corrected batch 7's Melorae lines to feminine here.
- **Batch 11 — final Nomai batch (113 lines) ✅ — ALL NOMAI DIALOGUE DONE.**
The warp-window details, mining-sites/native-life (Coleus/Cycad/Oeno), the
new-Vessel debate (Ilex), the memory-statue philosophy (Phlox/Daz/Cassava),
the probe-cannon-origin / Eye-search debate (Avens/Cassava/Plume), the
Sun Station "mission" humor (Idaea), the anglerfish-fossil study
(Melorae/Coleus), and scattered scroll-wall leftovers. Privet revealed
**feminine** ("her brother") — corrected her one masculine line in batch 3.
**Every speaker-prefixed Nomai line is now translated.**
- **Batch 10 — Bells scrolls + kids' game + Escall's clan history (87 lines) ✅**
— the Tower of Quantum Knowledge pilgrimage scrolls (Bells), the Fossil Fish
Cave anglerfish blindfold game (Laevi/Taget/Ilex/Lami), and the ancient
"Disappearance of Escall" myth + Escape Pod 3 / SeccaDin (Canna, Bromi,
Clem, Hyssop, Neem, Escall, Filix, Din). Distant place names translated
(*Súmračná galaxia*, *Čierna skala*, *Jasná iskra*) and flagged.
- **Nomai dialogue: ✅ complete.** Remaining dialogue is the ~1725
Hearthian/player lines (villagers, the travelers, player-facing/system text).
- **Hearthian villagers — 🚧 started.**
- **Batch 12 — Museum + Slate (100 lines) ✅** — the museum signs/exhibits
and Slate the shipbuilder's whole launch-day conversation (ship, launch
codes, ship-log markers, marshmallows, his jabs). First use of **mláďa**
(Hatchling). Player addressed as *ty*; "Stars above" → *Hviezdy nad nami*;
Hearthian names kept (Slate, Hornfels, Gossan, Hal, Mica).
- **Batch 13 — Hal + Gossan + Hornfels (204 lines) ✅** — the rest of launch
day: Hal (translator inventor, the new Nomai statue), Gossan (flight coach,
zero-g training), and Hornfels (curator, launch codes, the travelers'
whereabouts, Feldspar, and his redshift "Observations" exhibit on the
expanding universe). "Stars above" → *Hviezdy nad nami*; translator tool →
*prekladač*; preserved `&lt;Pause&gt;`/`&lt;Pause/&gt;`/`&lt;color=grey&gt;` and `\n\n`.
The village kids (Tephra, Galena, Marl, Rutile…) and other NPCs remain.
- **⚠️ Scope correction (batch 17):** the earlier line-counts under-counted.
A proper scan (a value is untranslated iff it's a suffix of its ID-prefixed
key — e.g. key `MeetGabbro3F…` / value `…`) shows **~1090 dialogue lines
still untranslated**, not the ~730 previously estimated. Remaining blocks
(asset-ID ranges): player-self/duplicate convo (169308, 140), **Gabbro
366575 ✅**, Feldspar/Chert HUD signs (800842, 13291380, 18221840),
village kids (14591752, ~260), Chert campsite (19752283, 308), Signalscope
kid + misc (23602421, 59), plus generic traveler responses interleaved.
- **The travelers — 🚧 started** (Gabbro, Riebeck, Feldspar, Esker, Chert; each a
big campsite conversation).
- **Batch 17 — Gabbro (204 lines) ✅** — the laid-back "time buddy" on
Giant's Deep (*Obrova hlbina*): his surfer-philosopher patter about the
time loop, the memory statues, Statue Island (*Ostrov sôch*, his coinage),
the Orbital Probe Cannon breaking, his quantum poem/art, the meditation
mini-lesson, and the deep-space-satellite ("Ol' Spacey" → **Vesmírko**)
inspection log. Masculine; player as *ty*; Hornfels masculine (per existing
SK). Preserved `&lt;i&gt;`/`&lt;Pause&gt;` markup and the many repeated
menu blocks. **Flag for review:** the "Ol'"-is-affectionate line (465)
references old-ness while the nickname *Vesmírko* carries affection via
diminutive instead — minor disconnect. Remaining travelers: Chert (308),
Esker, Riebeck/Feldspar leftovers.
- **Player / self dialogue — 🚧 started.**
- **Batch 18 — the "two of you" black-hole duplicate convo (125 lines) ✅**
— the meeting between the two copies of the player created by the
black-hole/white-hole jump (Ash Twin Project): the confused-memories
banter, the dating jokes (Gossan/Slate, "Gossan's eye"), the "are you a
figment of my imagination" bit, the *"we are the Feldspar of weird time
stuff"* line, the panic-attack screaming sequence, and the post-intro
bragging menu (first solo trip, Sun-Station landing, "even Riebeck
survived their first launch"). Both speakers are the player → **masculine**;
they address each other as *ty*. The 15 pure-scream onomatopoeia lines
(AAAH, with `&lt;b&gt;`/`&lt;size=50&gt;` markup) left verbatim as
language-neutral. Preserved `&lt;i&gt;`/`&lt;b&gt;`/`&lt;Pause/&gt;`/`&lt;pause&gt;`
markup and `\\n\\n`.
- **Final dialogue sweep (batches 1922) — ✅ done in parallel (subagents +
main), 770 + 22 lines.** The rest of the flat list, produced by three
translator subagents (each writing a JSON of translations, applied
race-free in the main thread) plus a large main-thread block:
- **Batch 19 — Hearthian village kids / villagers (271 lines) ✅** — Marl,
Tephra, Galena, Rutile, Tuff (the sick miner), Spinel, Arkose, Gneiss,
Porphy (sap-wine maker), Mica, the model-rocket kid, hide-and-seek, mayor
Rutile, the ghost-matter kids. Player as *mláďa*; casual kid register.
- **Batch 20 — Chert + Esker + Feldspar's jellyfish journal + Gabbro extras
(359 lines) ✅** — Chert the jittery astronomer on the *Presýpacie
dvojčatá* (star charts, supernovae, his end-of-universe breakdown, the
stargazing campfire finale), **Esker**'s lonely *Mesačná základňa* on the
*Skalka*, Feldspar's jellyfish tasting notes, and Gabbro's statue/"I died"
variant conversations + band-reunion ending. Also the Ember-Twin research
signs, Esker's Signáloskop log, and Gneiss the instrument-maker.
- **Batch 21 — signs, Signalscope kid, endgame + Nomai-writing signs (138
lines) ✅** — Giant's-Deep HUD/observation signs, the Signalscope-kid
endgame scene, the credits/epitaph signs (backer names kept), and the
museum Nomai-writing exhibit signs. ASCII-art easter eggs left as art
(only embedded words like LOADING→*NAČÍTAVA SA* translated).
- **Batch 22 — straggler sweep + consistency (22 lines) ✅** — a whole-file
English-heuristic scan caught 22 lines the *suffix-of-key* detector missed
(curly-vs-straight-quote drift between key and value: Gabbro "bright flash"
variants, the sap-wine labels, the ghost-matter kids' Signáloskop game, two
museum signs, the ATP **masks data-readout** at idx 1964, Tektite's scout
note). **Detection lesson:** "value is a suffix of its ID-prefixed key" is
necessary but not sufficient — always follow up with an English-word / no-
Slovak-diacritic heuristic to catch copied-but-drifted values.
- **Consistency fixes this pass:** Hollow's Lantern → **Lampáš** (not
*Dutinin lampáš*; glossary note added), ghost matter → **prízračná hmota**
(was one *duchová hmota*), Hanging City → **Visuté mesto** (was *Visiace*).
- **Toolchain:** installed `dotnet-sdk` (10.0.110) locally; `dotnet build -c
Release` now **succeeds** (0 warnings/errors) and stages the loadable mod
folder in `bin/Release/` (DLL + manifest + config + assets/Translation.xml).
- **Batch 14 — Feldspar (120 lines) ✅** — the boastful crashed ace in Dark
Bramble (his crash tale, the anglerfish skeleton camp, the "space is
bigger inside the seeds" theory). Masculine; heavy on *mláďa*; kept his
swagger. Remaining travelers: Gabbro (~213), Riebeck (~125), Chert (~150),
Esker (~160).
- **Batch 15 — Riebeck (69 lines) ✅** — the anxious, stammering archaeologist
on Brittle Hollow: loves the Nomai ruins (the Hanging City), terrified of
the "you-know-what" (black hole). Masculine; timid *ehm/uf* voice; kept the
`&lt;size=20&gt;` shrinking-text asides. (His planet's HUD labels + the museum
star/skeleton exhibits interleaved in this range are deferred to their own
batches.) Remaining travelers: Gabbro (~213), Chert (~150), Esker (~160).
- **Batch 16 — Nomai shrines + system/HUD text & location signs (98 lines) ✅**
— a sweep of the player-facing/system and Nomai-shrine text interleaved
through the flat list that earlier speaker-based batches skipped: the
**Eye Shrine** and **Quantum Shrine** wall-text (the *Oko vesmíru* signal
philosophy Q&A), the **Tower of Quantum Knowledge** trial/pilgrimage lines
("Seek the wandering arch", quantum-imaging congratulations), the Brittle
Hollow **location signs** (districts + directional `\\n(sever/juh/…​ N m)`
markers — *Visuté mesto*, *Kováreň čiernych dier*, *Veža kvantového
poznania*, etc.), the **Escape Pod 2/3 flightlogs** + cannon/probe/Sun-tower
system readouts (`&lt;NbTimeloops&gt;`, `&lt;TimeMinutes&gt;`,
`&lt;MinutesSinceRedGiant&gt;` tokens preserved), and scattered UI labels
(RECORDING → *NAHRÁVANIE*, warnings/verdicts, "the Prisoner" → *Väzeň*).
Directions localized (north→sever, below→dole, left→vľavo…); "281,042" →
*281 042*. Left the two ASCII-art easter eggs (LOADING/QR) unchanged. XML
re-verified well-formed. **Only remaining key==value entries are the 22
Hearthian/Nomai character names (kept in English) + those 2 art blocks.**
Terminology change (applied file-wide): **Black Hole Forge → Kováreň čiernych
dier** (was *Zlieváreň čiernej diery*) — 15 occurrences across ship log + dialogue.
### Phase 6 — Diacritic / font check ⬜
Verify the stock game font renders all Slovak glyphs
(á ä č ď é í ĺ ľ ň ó ô ŕ š ť ú ý ž). Only if any are missing: build a font asset
bundle in **Unity 2019.4.27f1** and wire `api.AddLanguageFont(...)`.
### Phase 7 — Build & in-game test ⬜
**Prerequisite:** install *Outer Wilds* + Outer Wilds Mod Manager + OWML (none are
on this machine yet). Then `dotnet build`, load via the Mod Manager, select
Slovenčina, and verify menus, dialogue, and ship log render correctly.
### Phase 8 — Release ⬜
Tag a Gitea release; optionally submit to the Outer Wilds mod database so the mod
appears in the Mod Manager for everyone.
## Open items / risks
- **Font coverage** for Slovak-specific glyphs (ľ ĺ ŕ ô ä) is unverified until
in-game testing (Phase 6/7).
- **Translation volume is the real cost** — ~896 KB of source text. A
Slovak-speaking review pass is essential, especially for DLC/dialogue nuance,
puns, and Nomai text-wall length constraints.
- **In-game testing is blocked** until the game + Mod Manager are installed locally.
- Confirm the tone/register decision (Phase 4) early — reworking it later is costly.
## References
- Localization Utility / Interplanetary Polyglot (framework, MIT, source template):
https://github.com/xen-42/outer-wilds-localization-utility
- Czech mod (structure reference): https://github.com/shippy/outer-wilds-czech
- OWML: https://github.com/ow-mods/owml
- Mod Manager: https://outerwildsmods.com/mod-manager/