e66ce54d3e
Phase 2 (mod skeleton) + Phase 3 (import English source): - manifest.json / SlovakTranslation.cs / ILocalizationAPI.cs registering "Slovenčina" via xen.LocalizationUtility (Interplanetary Polyglot). - SlovakTranslation.csproj / .sln building net48 against the OWML and OuterWildsGameLibs NuGet packages — no game install needed to compile. - assets/Translation.xml: English source template (896 KB, 2424 entries, keys == values) to be translated into Slovak. - Project docs (README/PLAN/CLAUDE) and .gitignore. Build verified: dotnet build -c Release stages a loadable mod folder. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
100 lines
4.8 KiB
Markdown
100 lines
4.8 KiB
Markdown
# CLAUDE.md — Outer Wilds SK Translation Mod
|
|
|
|
Working context for Claude Code (and human contributors) in this repository.
|
|
|
|
## What this repo is
|
|
|
|
An **unofficial Slovak (slovenčina) translation mod for *Outer Wilds*** — base
|
|
game **and** the *Echoes of the Eye* DLC. It is primarily a **data/translation
|
|
project**, not a conventional codebase: the bulk of the work is one large XML file
|
|
of translated strings, wrapped in a thin C# mod shell.
|
|
|
|
- **Not affiliated with Mobius Digital / Annapurna.** Game text is © Mobius
|
|
Digital, used under their Fan Content Policy. This project's own code and
|
|
translation are MIT (see [`LICENSE`](LICENSE) and [`README.md`](README.md)).
|
|
- Roadmap and phase status live in [`PLAN.md`](PLAN.md). Update it as phases land.
|
|
|
|
## How the mod works
|
|
|
|
It is an [OWML](https://github.com/ow-mods/owml) mod that depends on **xen-42's
|
|
Localization Utility / Interplanetary Polyglot** (`xen.LocalizationUtility`, MIT).
|
|
The utility does all the heavy lifting; this mod just:
|
|
|
|
1. Declares the dependency in `manifest.json`:
|
|
`"dependencies": ["xen.LocalizationUtility"]`.
|
|
2. In its `ModBehaviour.Start()`, grabs the API and registers a new language:
|
|
```csharp
|
|
var api = ModHelper.Interaction.TryGetModApi<ILocalizationAPI>("xen.LocalizationUtility");
|
|
api.RegisterLanguage(this, "Slovenčina", "assets/Translation.xml");
|
|
```
|
|
3. Ships the translated strings in `assets/Translation.xml`.
|
|
|
|
**No game files are needed to build the mod.** The English source
|
|
`Translation.xml` is published by the utility repo and used as the template.
|
|
|
|
Slovak is a Latin-script language, so **no `AddLanguageFixer`** (that's for RTL
|
|
scripts) is needed. A custom font via `AddLanguageFont` (Unity **2019.4.27f1**
|
|
asset bundle) is only required if the stock game font is missing Slovak glyphs —
|
|
to be verified during in-game testing (Phase 6/7).
|
|
|
|
## Planned repo layout
|
|
|
|
```
|
|
Outer-Wilds-SK-Translation-Mod/
|
|
├── manifest.json # OWML manifest (uniqueName, deps, entry DLL)
|
|
├── SlovakTranslation.cs # ModBehaviour: registers the language
|
|
├── ILocalizationAPI.cs # interface copied from the utility
|
|
├── SlovakTranslation.csproj # build against OWML/game refs
|
|
├── SlovakTranslation.sln
|
|
├── assets/
|
|
│ └── Translation.xml # THE translation (English keys, Slovak values)
|
|
├── docs/
|
|
│ └── glossary.md # fixed SK terms for proper nouns
|
|
├── README.md · CLAUDE.md · PLAN.md · LICENSE
|
|
```
|
|
|
|
Model the C#/manifest scaffold on the community Czech mod
|
|
([`shippy/outer-wilds-czech`](https://github.com/shippy/outer-wilds-czech)).
|
|
|
|
## Translation conventions (important)
|
|
|
|
`Translation.xml` is a **flat** `<TranslationTable_XML>` of repeated `<entry>`
|
|
blocks, each with a `<key>` and a `<value>`. Rules:
|
|
|
|
- **Never edit `<key>`.** It is the exact English source string the game matches
|
|
on — changing it silently breaks that string's translation.
|
|
- **Translate only `<value>`.** Start from a copy of the English file (key == value)
|
|
and replace each value with Slovak.
|
|
- **Preserve inline markup verbatim**, including XML-escaped tags:
|
|
`<color=orange>…</color>`, `<i>…</i>`, `</color>`,
|
|
and raw entities `< > &`. Translate the words, keep the tags.
|
|
- **Keep speaker prefixes** (e.g. `POKE:`, `CLARY:`) and any leading labels.
|
|
- **Use the glossary** (`docs/glossary.md`) for proper nouns and recurring terms so
|
|
Nomai / the Eye / Ash Twin Project / etc. render identically everywhere.
|
|
- Watch text length: Nomai text walls and UI have limited space — prefer concise
|
|
phrasings where the English is terse.
|
|
|
|
**Translation production:** machine-assisted first pass (clean-room, no third-party
|
|
text) followed by a Slovak-speaking review pass. Phase by category for shippable
|
|
increments: **UI/menus → dialogue/text walls → ship log**.
|
|
|
|
## Build & test
|
|
|
|
- Toolchain present locally: `dotnet 6.0.400`, `git`. **The game and the Outer
|
|
Wilds Mod Manager are NOT installed on this machine** — in-game testing (Phase 7)
|
|
requires installing *Outer Wilds* + Mod Manager + OWML first.
|
|
- Build: `dotnet build` (the `.csproj` references OWML/game DLLs — see the Czech
|
|
mod for the exact reference setup).
|
|
- Test: load via the Mod Manager, select **Slovenčina**, and verify menus,
|
|
dialogue, and the ship log render correctly (including diacritics
|
|
á ä č ď é í ĺ ľ ň ó ô ŕ š ť ú ý ž).
|
|
|
|
## Repo / process notes
|
|
|
|
- This is a **standalone project repo** (Gitea `Homer/Outer-Wilds-SK-Translation-Mod`),
|
|
independent of `~/Agent/Systems`. Changes here do **not** require a system
|
|
changelog entry — unless we install system tooling (game, Mod Manager, a Unity
|
|
version) to support it, in which case record that in `~/Agent` docs as usual.
|
|
- Commit as the Gitea identity (Homer <admin@ecoposta.sk>). Don't commit/push
|
|
unless asked.
|