ea50c6dfa6
The 125-line conversation between the two copies of the player created by the black-hole/white-hole jump inside the Ash Twin Project: confused-memory banter, the dating jokes (Gossan/Slate), the "figment of my imagination" bit, the "we are the Feldspar of weird time stuff" line, the panic-scream sequence, and the post-intro bragging menu. Both speakers are the player -> masculine, mutual ty. The 15 pure-scream onomatopoeia lines left verbatim as language-neutral. <i>/<b>/<Pause/>/<pause> markup and \\n\\n preserved; XML re-verified. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
261 lines
17 KiB
Markdown
261 lines
17 KiB
Markdown
# 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 → human review, by category (UI/menus → dialogue → ship log),
|
||
base + DLC. Preserve all `<color=…>`/`<i>` markup, entities, and speaker
|
||
prefixes. Track progress and any hard-to-translate lines here or in issues.
|
||
|
||
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`, `<!>` input-prompt tokens, `<Profile Name>`
|
||
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) — 🚧 in progress.**
|
||
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 `<color=…>`/`<i>`/`<size=…>` markup,
|
||
template tokens (`<Pause/>`, `<TimeMinutes>`, `<NbTimeloops>`,
|
||
`<…SinceRedGiant>`), `\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
|
||
`<TimeMinutes>`/`<TimeSeconds>` 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
|
||
(`<RemainingMinutes>`…) + `\n` and `<TimeMinutes>`/`<TimeSeconds>`.
|
||
- **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 Clary–Yarrow 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 / Secca–Din (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 `<Pause>`/`<Pause/>`/`<color=grey>` 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 (169–308, 140), **Gabbro
|
||
366–575 ✅**, Feldspar/Chert HUD signs (800–842, 1329–1380, 1822–1840),
|
||
village kids (1459–1752, ~260), Chert campsite (1975–2283, 308), Signalscope
|
||
kid + misc (2360–2421, 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 `<i>`/`<Pause>` 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 `<b>`/`<size=50>` markup) left verbatim as
|
||
language-neutral. Preserved `<i>`/`<b>`/`<Pause/>`/`<pause>`
|
||
markup and `\\n\\n`.
|
||
- **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
|
||
`<size=20>` 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 (`<NbTimeloops>`, `<TimeMinutes>`,
|
||
`<MinutesSinceRedGiant>` 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/
|