Building the English patch — Summer Time Rendering: Another Horizon (Switch)
What “compile” means here
The patch is produced by running the prebuilt helper EXE from inside the
localization repo. It reads texts/<lang>/*.json + original_files/Switch +
files/fonts/*.ttf, repacks the game’s scrpt.cpk / metadata / assets, and
writes the Switch LayeredFS patch to: out/01005940182ec000/
Key paths
- Localization repo:
<STRAHLocalization repo> - Helper EXE:
tools\STRAHLocalizationHelper.exe(a self-contained copy mirrored here by..\STRAHLocalizationHelper\build.ps1; the canonical build output is..\STRAHLocalizationHelper\dist\) - Helper Release: easiest way to get
tools\on a fresh machine — no SDK needed. DownloadSTRAHLocalizationHelper-v1.0.0-win-x64.zipfrom github.com/Dream-Cypher/STRAHLocalizationHelper/releases and extract intotools\(see Moving to another PC).
Two critical English specifics
- Both the HELPER EXE and
convert_csv_to_json.pydefault to English now. The HELPER EXE readstools\config.json(next to the exe), which ships with"language": "en".convert_csv_to_json.pydefaults toenand also accepts a--language/-lflag (e.g.--language zh_Hans). For both tools,$env:XZ_LANGUAGEis still honored as an override if set (e.g. for the Chinese build,XZ_LANGUAGE=zh_Hans) — forconvert_csv_to_json.pythe precedence is:--languageflag >$env:XZ_LANGUAGE>"en". - Run everything with the working directory set to the localization repo
(
<STRAHLocalization repo>). All paths are relative to it.
Input status (as of last check)
- [OK] Helper EXE is already built (no need to compile the tool) and
mirrored to
tools\(self-contained — no .NET runtime install needed on this machine). NOTE:tools\is a build artifact and is gitignored — it is NOT part of a fresh clone. On a new machine, the easiest fix is to download the helper repo’s GitHub Release (STRAHLocalizationHelper-v1.0.0-win-x64.zip, no .NET SDK needed) and unzip intotools\— see Moving to another PC below. (Building it yourself via..\STRAHLocalizationHelper\build.ps1is the alternative — see Rebuilding the helper.) - [OK]
texts/en/*.json(generated byconvert_csv_to_json.py) - [OK]
original_files/Switch(+Switch.zipauto-extracts if needed) - [OK] Fonts: NO replacement by default (the original JP font has Latin glyphs, so English renders natively). Optional Inter available — see Font note.
Commands (PowerShell — run from the localization repo)
cd <STRAHLocalization repo>
# XZ_GAME / XZ_PLATFORM env vars are OPTIONAL — tools\config.json already
# defaults to STRAH / Switch / en for the helper EXE (step 3).
# 1. Fonts: SKIP for default (no replacement, native JP font renders English).
# Only if you want the Western font: scripts\download_fonts_inter.ps1
# (revert anytime by deleting files\fonts\*.ttf)
# 2. CSV -> JSON (regenerates texts/en/*.json from the CSVs)
# Defaults to English; no env var needed. (For Chinese: add
# --language zh_Hans or set $env:XZ_LANGUAGE = "zh_Hans".)
python scripts\convert_csv_to_json.py
# 3. Build the patch (the EXE uses THIS repo as its working directory)
& "tools\STRAHLocalizationHelper.exe"
# 4. Zip the patch into a versioned deliverable. Prompts to increment / enter /
# reuse the version (latest is auto-detected from dist\). No timestamped
# archive copies are kept - the versioned zips ARE the history.
scripts\zip_patch.ps1
# Non-interactive: scripts\zip_patch.ps1 -Version 0.05
Output
out\01005940182ec000\— the patch folder (LayeredFS); also where the helper writes its build-time scratch files (.csv/.json) — transient working areadist\STRAH_en_patch_switch_<ver>.zip— the versioned deliverable (the only zip kept), laid out asatmosphere\contents\01005940182ec000\...ready to extract to the SD card root
Install (Switch + Atmosphere CFW)
- (Updating?) Delete any existing
SD:/atmosphere/contents/01005940182ec000first. - Extract
STRAH_en_patch_switch_<ver>.zipdirectly to the root of the SD card (it already contains theatmosphere\contents\...folder structure). Final path:SD:/atmosphere/contents/01005940182ec000/ - Boot/reboot the Switch into Atmosphere CFW (hold Volume-Up if needed).
Font note (font replacement is OPTIONAL — default is OFF)
Default: NO font replacement. The original game font (FOT-NEWRODINPRO-DB = FONTWORKS New Rodin Pro) is a Japanese font that already bundles full Latin glyphs, so English renders in the game’s native typography. (The Chinese build needed MiSans only because the JP font lacks Simplified-Chinese hanzi.)
Font scripts (run from the repo, then rebuild):
scripts/download_fonts.ps1— default note; ensures no replacementscripts/download_fonts_inter.ps1— OPT IN to Inter (Western). Uses the TTFs staged infiles/_optional_fonts/, else downloads Inter v4.1.scripts/download_fonts_misans.ps1— original Chinese MiSans setup
Revert to original font anytime: delete files/fonts/*.ttf and rebuild.
Staged Inter TTFs live in: files/_optional_fonts/ (SemiBold + Medium).
Rebuilding the helper (only if the EXE is ever missing)
If you just need to run the helper (haven’t changed its source), it’s simpler to grab the prebuilt Release instead — see Moving to another PC step 4(a): https://github.com/Dream-Cypher/STRAHLocalizationHelper/releases
To compile from source, requires the .NET 8+ SDK.
cd ..\STRAHLocalizationHelper
.\build.ps1
This cleans old output, publishes a self-contained win-x64 build to
..\STRAHLocalizationHelper\dist\, and mirrors it into this repo’s tools\
folder (the destination defaults to ..\STRAHLocalization; pass -DestRepo
to point elsewhere, or -DestRepo '' to skip the copy).
Moving to another PC
To build the patch on a different machine you need, beyond Python:
- Windows x64. REQUIRED. The helper is compiled net8.0-windows / win-x64; it will NOT run on macOS, Linux, or ARM.
- Nothing else for the .NET side to run the helper — it’s a self-contained build (bundles its own .NET runtime). No .NET Desktop Runtime install needed just to run it.
- Python 3.10+ (
convert_csv_to_json.pyis pure stdlib — no pip packages). tools\(the prebuilt helper: exe,config.json,x64\,*.pdb) is gitignored — it does NOT come with a clone of either repo. Get it one of three ways:- a) Download the Release (recommended, no SDK):
https://github.com/Dream-Cypher/STRAHLocalizationHelper/releases
→ grab
STRAHLocalizationHelper-v1.0.0-win-x64.zipand extract it soSTRAHLocalizationHelper.exe,config.json, andx64\end up directly undertools\(if the zip nests them in a subfolder, move the contents up). One-liner:$u = "https://github.com/Dream-Cypher/STRAHLocalizationHelper/releases/download/v1.0.0/STRAHLocalizationHelper-v1.0.0-win-x64.zip" Invoke-WebRequest $u -OutFile tools.zip Expand-Archive tools.zip -DestinationPath tools -Force Remove-Item tools.zip - b) Build it: clone
..\STRAHLocalizationHelperas a sibling and run itsbuild.ps1(.NET 8+ SDK required). This publishes a self-contained win-x64 build to itsdist\and mirrors it into this repo’stools\— see Rebuilding the helper above. Use this if you’ve changed the helper’s source. - c) Copy an existing
tools\folder (whole folder, incl.x64\) from a machine that already has it — then no SDK is needed at all.
- a) Download the Release (recommended, no SDK):
https://github.com/Dream-Cypher/STRAHLocalizationHelper/releases
→ grab
- Clone
STRAHLocalization\itself (texts,scripts,files\sprites,files\_optional_fonts,original_files\Switch+Switch.zip).
You do not need a C compiler / .NET SDK to run the helper at all —
download the Release (option a) or copy an existing tools\ (option c). The
SDK is only needed to produce tools\ yourself from source (option b).
Troubleshooting
- Got the Chinese patch? → Two possible causes:
- (a) step 2:
$env:XZ_LANGUAGEor a--languageflag was set to something other than"en"when you ranconvert_csv_to_json.py, so it wrotetexts/zh_Hans/instead oftexts/en/— re-run step 2 without it. - (b) step 3:
tools\config.json"language"isn’t"en", orXZ_LANGUAGEis set to something other than"en"(env var overridesconfig.json).
- (a) step 2:
- “file not found” errors → you’re not running from the localization repo
(
cdinto<STRAHLocalization repo>). - “DllNotFoundException: Texture2DDecoderNative” →
tools\x64\folder is missing or wasn’t copied alongside the exe; re-download the Release zip and extractx64\intotools\, or re-run..\STRAHLocalizationHelper\build.ps1(or copydist\wholesale, includingx64\). - Want the Western font? → run
scripts\download_fonts_inter.ps1, then rebuild. Default (nofiles\fonts\*.ttf) keeps the native font.