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