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:
+11
@@ -0,0 +1,11 @@
|
|||||||
|
# Build output
|
||||||
|
bin/
|
||||||
|
obj/
|
||||||
|
|
||||||
|
# User-specific project files
|
||||||
|
*.user
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
using OWML.ModHelper;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
// Interface copied from xen-42's Localization Utility (MIT), so this mod can
|
||||||
|
// resolve the utility's API through OWML's TryGetModApi<T>. Keep in sync with
|
||||||
|
// https://github.com/xen-42/outer-wilds-localization-utility.
|
||||||
|
namespace SlovakTranslation
|
||||||
|
{
|
||||||
|
public interface ILocalizationAPI
|
||||||
|
{
|
||||||
|
#region Add new language
|
||||||
|
void RegisterLanguage(ModBehaviour mod, string languageName, string translationPath);
|
||||||
|
void RegisterLanguage(ModBehaviour mod, string languageName, string translationPath, string languageToReplace);
|
||||||
|
void AddLanguageFont(ModBehaviour mod, string languageName, string assetBundlePath, string fontPath, out Font font);
|
||||||
|
void AddLanguageFixer(string languageName, Func<string, string> fixer);
|
||||||
|
void SetLanguageDefaultFontSpacing(string languageName, float defaultFontSpacing);
|
||||||
|
void SetLanguageFontSizeModifier(string languageName, float fontSizeModifier);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Add translations to new/existing languages
|
||||||
|
void AddTranslation(ModBehaviour mod, string languageName, string translationPath);
|
||||||
|
void AddTranslation(string languageName, KeyValuePair<string, string>[] regularEntries, KeyValuePair<string, string>[] shipLogEntries, KeyValuePair<int, string>[] uiEntries);
|
||||||
|
|
||||||
|
void AddRegularTranslation(string languageName, string key, string value);
|
||||||
|
void AddRegularTranslation(string languageName, string commonKeyPrefix, params string[] entries);
|
||||||
|
void AddRegularTranslation(string languageName, params KeyValuePair<string, string>[] entries);
|
||||||
|
|
||||||
|
void AddShiplogTranslation(string languageName, string key, string value);
|
||||||
|
void AddShiplogTranslation(string languageName, string commonKeyPrefix, params string[] entries);
|
||||||
|
void AddShiplogTranslation(string languageName, params KeyValuePair<string, string>[] entries);
|
||||||
|
|
||||||
|
void AddUITranslation(string languageName, int key, string value);
|
||||||
|
void AddUITranslation(string languageName, params KeyValuePair<int, string>[] entries);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region obsolete
|
||||||
|
[Obsolete] void AddLanguageFont(ModBehaviour mod, string languageName, string assetBundlePath, string fontPath);
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,2 +1,70 @@
|
|||||||
# Outer-Wilds-SK-Translation-Mod
|
# Outer Wilds — Slovenský preklad / Slovak Translation Mod
|
||||||
|
|
||||||
|
> **Neoficiálny slovenský preklad hry Outer Wilds** (základná hra + rozšírenie
|
||||||
|
> *Echoes of the Eye*). Pridáva do hry jazyk **Slovenčina**.
|
||||||
|
>
|
||||||
|
> *An unofficial Slovak (slovenčina) translation mod for Outer Wilds, covering
|
||||||
|
> the base game and the Echoes of the Eye DLC.*
|
||||||
|
|
||||||
|
**Stav / Status:** 🚧 **Work in progress** — the mod scaffold and translation are
|
||||||
|
being built. See [`PLAN.md`](PLAN.md) for the roadmap.
|
||||||
|
|
||||||
|
Outer Wilds officially ships in 12 languages; Slovak is not one of them. This mod
|
||||||
|
adds it as a new selectable language using the community localization framework —
|
||||||
|
no changes to the game's own files are required.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
The mod is a small [OWML](https://github.com/ow-mods/owml) mod that registers a
|
||||||
|
new language through **[Interplanetary Polyglot / Localization Utility](https://outerwildsmods.com/mods/interplanetarypolyglot/)**
|
||||||
|
(`xen.LocalizationUtility`). All translated text lives in a single
|
||||||
|
`assets/Translation.xml`; the utility swaps the game's strings for the Slovak ones
|
||||||
|
at runtime.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Install the **[Outer Wilds Mod Manager](https://outerwildsmods.com/mod-manager/)**.
|
||||||
|
2. Install this mod through the Mod Manager. Its dependency **Interplanetary
|
||||||
|
Polyglot** (`xen.LocalizationUtility`) will be pulled in automatically.
|
||||||
|
3. Launch the game via the Mod Manager.
|
||||||
|
4. In **Settings → Language**, choose **Slovenčina**.
|
||||||
|
- Tip: the optional [Language Swap](https://outerwildsmods.com/mods/languageswap/)
|
||||||
|
mod lets you switch language in-game with `Ctrl+L`.
|
||||||
|
|
||||||
|
> Until the first release is published, the mod is not yet in the Mod Manager
|
||||||
|
> database — see [`PLAN.md`](PLAN.md) for how to build it from source.
|
||||||
|
|
||||||
|
## Contributing / Prispievanie
|
||||||
|
|
||||||
|
Translation fixes are very welcome — the goal is natural, consistent Slovak.
|
||||||
|
|
||||||
|
- **Report** mistranslations or awkward phrasing as an issue.
|
||||||
|
- **Edit** only the `<value>` of each entry in `assets/Translation.xml`.
|
||||||
|
**Never change the `<key>`** — it is the English identifier the game matches on.
|
||||||
|
- Preserve all inline formatting exactly, e.g. `<color=orange>…</color>`,
|
||||||
|
`<i>`, and speaker prefixes like `POKE:`.
|
||||||
|
- Follow the terminology in `docs/glossary.md` so names (Nomai, the Eye, Ash Twin
|
||||||
|
Project, …) stay consistent across the whole game.
|
||||||
|
|
||||||
|
See [`CLAUDE.md`](CLAUDE.md) for the full conventions and repo layout.
|
||||||
|
|
||||||
|
## License & disclaimer
|
||||||
|
|
||||||
|
The **original mod code and the Slovak translation** in this repository are
|
||||||
|
released under the [MIT License](LICENSE).
|
||||||
|
|
||||||
|
This is an **unofficial** fan project. It is **not affiliated with, approved by, or
|
||||||
|
endorsed by Mobius Digital or Annapurna Interactive.** *Outer Wilds*, its story,
|
||||||
|
dialogue, characters, and other assets are **© Mobius Digital / Annapurna
|
||||||
|
Interactive**; the underlying game text remains their property and is used here
|
||||||
|
under **Mobius Digital's Fan Content Policy**. The MIT license covers only this
|
||||||
|
project's own contributions, not the source material.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
- **Mobius Digital / Annapurna Interactive** — *Outer Wilds*.
|
||||||
|
- **[xen-42](https://github.com/xen-42)** — the Localization Utility /
|
||||||
|
Interplanetary Polyglot framework this mod is built on.
|
||||||
|
- The Outer Wilds modding community.
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using OWML.Common;
|
||||||
|
using OWML.ModHelper;
|
||||||
|
|
||||||
|
namespace SlovakTranslation
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Registers Slovenčina as a selectable language via xen-42's Localization
|
||||||
|
/// Utility (xen.LocalizationUtility). All the heavy lifting lives in the
|
||||||
|
/// utility; this mod just points it at our translated strings.
|
||||||
|
/// </summary>
|
||||||
|
public class SlovakTranslation : ModBehaviour
|
||||||
|
{
|
||||||
|
public static SlovakTranslation Instance;
|
||||||
|
|
||||||
|
/// <summary>Path (relative to the mod folder) to the translated strings.</summary>
|
||||||
|
public static string translationFile = "assets/Translation.xml";
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Instance = this;
|
||||||
|
|
||||||
|
var api = ModHelper.Interaction.TryGetModApi<ILocalizationAPI>("xen.LocalizationUtility");
|
||||||
|
if (api == null)
|
||||||
|
{
|
||||||
|
ModHelper.Console.WriteLine(
|
||||||
|
"Could not find xen.LocalizationUtility — is Interplanetary Polyglot installed?",
|
||||||
|
MessageType.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
api.RegisterLanguage(this, "Slovenčina", translationFile);
|
||||||
|
ModHelper.Console.WriteLine("Registered language: Slovenčina", MessageType.Success);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net48</TargetFramework>
|
||||||
|
<LangVersion>default</LangVersion>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
|
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||||
|
<CopyLocalLockFileAssemblies>false</CopyLocalLockFileAssemblies>
|
||||||
|
<RootNamespace>SlovakTranslation</RootNamespace>
|
||||||
|
<AssemblyName>SlovakTranslation</AssemblyName>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- Lets net48 build on machines without the .NET Framework targeting pack
|
||||||
|
(e.g. Linux / dotnet SDK only). Build-time only. -->
|
||||||
|
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="all" />
|
||||||
|
<PackageReference Include="HarmonyX" Version="2.10.0" />
|
||||||
|
<PackageReference Include="OWML" Version="2.5.2" />
|
||||||
|
<!-- Provides the Outer Wilds / Unity reference DLLs from NuGet, so no game
|
||||||
|
install is needed to compile. -->
|
||||||
|
<PackageReference Include="OuterWildsGameLibs" Version="1.1.12.168" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="manifest.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="default-config.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="assets/Translation.xml">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.30114.105
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SlovakTranslation", "SlovakTranslation.csproj", "{227A7B9F-9B05-4AE7-BDB9-1DE031C15853}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{227A7B9F-9B05-4AE7-BDB9-1DE031C15853}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{227A7B9F-9B05-4AE7-BDB9-1DE031C15853}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{227A7B9F-9B05-4AE7-BDB9-1DE031C15853}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{227A7B9F-9B05-4AE7-BDB9-1DE031C15853}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
+16019
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"filename": "SlovakTranslation.dll",
|
||||||
|
"author": "Jaroslav Beneš",
|
||||||
|
"name": "Slovak Localization / Slovenčina",
|
||||||
|
"uniqueName": "Homer.SlovakTranslation",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"owmlVersion": "2.5.2",
|
||||||
|
"dependencies": [
|
||||||
|
"xen.LocalizationUtility"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user