Files
Outer-Wilds-SK-Translation-Mod/CLAUDE.md
T
Jaroslav Beneš e66ce54d3e Add OWML mod skeleton and import English translation template
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>
2026-07-20 10:12:10 +02:00

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:
`&lt;color=orange&gt;…&lt;/color&gt;`, `&lt;i&gt;…&lt;/i&gt;`, `&lt;/color&gt;`,
and raw entities `&lt; &gt; &amp;`. 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.