Skip to the content.

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

Two critical English specifics

  1. Both the HELPER EXE and convert_csv_to_json.py default to English now. The HELPER EXE reads tools\config.json (next to the exe), which ships with "language": "en". convert_csv_to_json.py defaults to en and also accepts a --language/-l flag (e.g. --language zh_Hans). For both tools, $env:XZ_LANGUAGE is still honored as an override if set (e.g. for the Chinese build, XZ_LANGUAGE=zh_Hans) — for convert_csv_to_json.py the precedence is: --language flag > $env:XZ_LANGUAGE > "en".
  2. 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)

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

Install (Switch + Atmosphere CFW)

  1. (Updating?) Delete any existing SD:/atmosphere/contents/01005940182ec000 first.
  2. Extract STRAH_en_patch_switch_<ver>.zip directly to the root of the SD card (it already contains the atmosphere\contents\... folder structure). Final path: SD:/atmosphere/contents/01005940182ec000/
  3. 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):

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:

  1. Windows x64. REQUIRED. The helper is compiled net8.0-windows / win-x64; it will NOT run on macOS, Linux, or ARM.
  2. 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.
  3. Python 3.10+ (convert_csv_to_json.py is pure stdlib — no pip packages).
  4. 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.zip and extract it so STRAHLocalizationHelper.exe, config.json, and x64\ end up directly under tools\ (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 ..\STRAHLocalizationHelper as a sibling and run its build.ps1 (.NET 8+ SDK required). This publishes a self-contained win-x64 build to its dist\ and mirrors it into this repo’s tools\ — 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.
  5. 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