1
0

Add mleaf233@TEOcean (#501)

A lightweight localization framework for mods in the Balatro/SMODS,
which also functions as a language pack.
This commit is contained in:
Efe
2025-12-22 21:42:54 +01:00
committed by GitHub
2 changed files with 84 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
<div align="center">
<h1> 🌏TEOcean Localization Framework🌎 </h1>
<p>Also is a language pack</p>
<p><a href="https://github.com/mleaf233/TEOcean/blob/main/README_zh_CN.md">简体中文</a> &nbsp;&nbsp; English</p>
<img src="https://img.shields.io/github/license/mleaf233/TEOcean">
<a href="https://github.com/mleaf233/TEOcean/issues"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat"></a>
</div>
---
## Introdution
A lightweight localization framework for mods in the Balatro/SMODS, which also functions as a language pack.
## Use Cases
- Fill in missing localization for a mod
- Override the original translations of a mod
- Apply a unified translation across multiple mods
- When a target mod is still under active development and its localization files change frequently, making PRs inconvenient
## How It Works
Translation files under `impl/mods/<modid>/localization/` are merged into the corresponding target mods `localization/` directory, allowing unified translations to override or supplement the originals in-game.
## Features
- **Merge by modid**: Iterates over `SMODS.mod_list` and only performs merging for mods that exist in the workspace at `impl/mods/<modid>/`
- **Backup original files (once only)**: Before the first merge, the target mods existing `localization/<lang>.lua` / `.json` files are copied to `impl/backup/<modid>/localization/`. If a backup already exists, it is skipped to ensure the backup always represents the “original” localization files
- **Skip meaningless writes**: Before writing, the merged result is normalized for newlines and trailing whitespace and compared with the existing file. If they are identical, no write or backup is performed
- **Hot reload**: Supports execution when clicking the “Manual Reload” button in the mod configuration menu in-game
## How to Use
### Method 1
- Like any other mod, simply copy the entire project folder into `%AppData%/Balatro/mods`
### Method 2 (Hot Reload)
1. Launch the game.
2. Open the main menu → Mods.
3. Select the mod(this mod itself is **The Eighth Ocean**) and enter the `Config` tab.
4. Click the **Manual Reload** button to trigger merging and reload.
> Note: The initial backup preserves the original files of the target mod at the moment it is triggered.
> To force a fresh backup of the original files, manually delete the corresponding backup files under
> `impl/backup/<modid>/localization/`, then click Manual Reload again.
## Development
- The merge logic is implemented in `mod.lua`, in the function `merge_impl_mod_localizations()`, which handles reading, merging, serialization, and writing.
- To support additional mods, create a new folder under `impl/mods/` according to the modid. Refer to the existing examples for details.
- It is recommended to ensure this mod loads with higher priority than the mods it adapts.
## Directory Structure
- `impl/mods/<modid>/localization/` — Source of your override/supplemental translations
- `impl/backup/<modid>/localization/` — Automatic backup of the target mods original localization (backed up once only)
- Target write path: `<target_mod_path>/localization/<lang>.lua`
## Troubleshooting
- If no backup or output is generated after clicking the button, check the game startup logs (console output) for entries prefixed with `[TEOcean Language Packs]`.
- Ensure the target mods `localization/` directory is writable.
- If the localization still does not take effect after merging, confirm that the selected in-game language (`G.SETTINGS.language`) matches the merged language file (e.g. `zh_CN.lua`).
## License
- This project is licensed under GPLv3.
- Please comply with each mods individual license terms. This mod only modifies the target mods `localization` files locally; make backups when necessary and obtain the original authors permission before distribution.

View File

@@ -0,0 +1,12 @@
{
"title": "TEOcean",
"requires-steamodded": true,
"requires-talisman": false,
"categories": ["Quality of Life"],
"author": "mleaf233",
"repo": "https://github.com/mleaf233/TEOcean",
"downloadURL": "https://github.com/mleaf233/TEOcean/archive/refs/heads/main.zip",
"folderName": "TEOcean",
"version": "1.0.5",
"automatic-version-check": true
}