🌏TEOcean Localization Framework🌎
Also is a language pack
简体ä¸ć–‡ English
---
## 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//localization/` are merged into the corresponding target mod’s `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//`
- **Backup original files (once only)**: Before the first merge, the target mod’s existing `localization/.lua` / `.json` files are copied to `impl/backup//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//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//localization/` — Source of your override/supplemental translations
- `impl/backup//localization/` — Automatic backup of the target mod’s original localization (backed up once only)
- Target write path: `/localization/.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 mod’s `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 mod’s individual license terms. This mod only modifies the target mod’s `localization` files locally; make backups when necessary and obtain the original author’s permission before distribution.