bc1b3f0cb1
204 lines finishing launch day on Timber Hearth: Hal (translator co-inventor, gushing over the new Nomai statue), Gossan (the tough-but- caring flight coach, zero-g training on the "satellite"), and Hornfels (curator/ground control -- launch codes, where the travelers are, Feldspar's story, and the redshift "Observations" exhibit deducing the expanding universe). All genderless Hearthians -> masculine default; travelers masculine. "Stars above" -> Hviezdy nad nami; "hatchlings" -> mláďatá; translator tool -> prekladač. Preserved <Pause>/<Pause/>/<color=grey>/<color=orange> markup and the \n\n signature in 1419. Verified: XML well-formed; keys identical; markup/token parity; ship log/ UI/rest byte-unchanged; mod builds. (3 name labels intentionally kept.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
200 lines
12 KiB
Markdown
200 lines
12 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.
|
||
|
||
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/
|