https://github.com/againpsychox/openlocalization
Modification for Pharaoh: A New Era (city building) game to add open-sourced localizations.
https://github.com/againpsychox/openlocalization
localization pharaoh pharaoh-a-new-era pharaoh-game unity-mod unity-modding
Last synced: 16 days ago
JSON representation
Modification for Pharaoh: A New Era (city building) game to add open-sourced localizations.
- Host: GitHub
- URL: https://github.com/againpsychox/openlocalization
- Owner: AgainPsychoX
- Created: 2023-02-27T00:03:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-07T12:25:35.000Z (over 3 years ago)
- Last Synced: 2025-03-02T16:49:30.053Z (over 1 year ago)
- Topics: localization, pharaoh, pharaoh-a-new-era, pharaoh-game, unity-mod, unity-modding
- Language: C#
- Homepage:
- Size: 19.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenLocalization
Mod for [Pharaoh: A New Era](https://store.steampowered.com/app/1351080/Pharaoh_A_New_Era/) game that allows loading unofficial localizations.
[Join modding community at Discord!](https://discord.gg/n5phrj222e)
## Features
+ Loading unofficial localizations.
+ Configurable updating from online spreadsheets.
+ Open for new translations and contrubution.
## Notes
+ The game uses `I2Loc` solution for localization.
+ Use with [BepInEx.ConfigurationManager](https://github.com/BepInEx/BepInEx.ConfigurationManager) to see some simple config GUI that includes few buttons for instant update & reload.
+ Structure of external sources:
* Separate folder for each source
* Meta file:
+ Enabled flag
+ Website link
+ Updates related info (frequency, spreadsheet key/macro link)
* CSV files (one per "main category" of localized terms).
* Assumption: There is only one built-in (asset) source for localization. We assume it will stay like that as PANE is not that large game.
* The built-in localization source is converted to the same structure (if folder not found already), as special name: `BuiltIn` with default order value 1. It isn't loaded if `SkipAssets` is false.
### To-do
+ Testing & fixing...
+ Expose `eGoogleUpdateSynchronization` as mode (shared across all sources)
+ One unofficial all-in spreadsheet, community maintained.
+ Think about rewriting the backend code?
+ Patch `I2Loc.LanguageSourceData.Import_Google_CreateWWWcall(bool ForceUpdate, bool justCheck)` and backend to make use of `justCheck` flag,
+ Avoid downloading large amount of data when "just checking" if update is avaliable.
+ Add checking for the update on GUI open/before downloading.
+ Show installed & latest version in the GUI.
+ Add GUI for simple config (hook up to configuration manager private code using reflections).
+ Lazy load actual data from `LocalizationSource` (only if enabled and once set to enabled).
+ Make configuration/GUI compatibile with [alternative configuration manager from `sinai-dev`](https://github.com/sinai-dev/BepInExConfigManager).
+ Maybe try do UI inside Pharaoh options themself? Would be nice to have separate library for that tho, maybe even working the same was as the configuration managers.