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>
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user