A CLI tool that generates game mods which localise place names into different languages based on the faction controlling each location.
- Capabilities
- Usage
- Command Reference
- Configuration
- Compatibility
- Development
- Project Structure
- Architecture
- Contributing
- Project Engagement
- License
Generates localised mod files for multiple game engines:
- Crusader Kings II (via
CK2) - Crusader Kings III (via
CK3) - Hearts of Iron IV (via
HOI4) - Imperator: Rome (via
IR)
Basic usage:
./MoreCulturalNamesBuilder \
--lang /data/languages.xml \
--loc /data/locations.xml \
--output /mods/more-cultural-names \
--id more-cultural-names \
--name "More Cultural Names" \
--version 1.0.0 \
--game CK3 \
--game-version "1.18.*"Complete example with all available options:
./MoreCulturalNamesBuilder \
--lang /data/languages.xml \
--loc /data/locations.xml \
--output /mods/more-cultural-names \
--id more-cultural-names \
--name "More Cultural Names" \
--version 1.0.0 \
--game CK3 \
--game-version "1.18.*" \
--landed-titles /game/common/landed_titles/00_landed_titles.txt \
--landed-titles-name landed_titles.txt \
--dep other-mod-id \
--verbose trueNote: Use either --output or --out (required), and either --version or --ver (required).
| Command | Description |
|---|---|
./MoreCulturalNamesBuilder |
Generate mod files based on language and location data |
| Option | Value | Default | Description |
|---|---|---|---|
--lang |
<path> |
— | Path to the languages XML data store (required) |
--loc |
<path> |
— | Path to the locations XML data store (required) |
--output |
<path> |
— | Output directory where the mod will be written (required unless --out is used) |
--out |
<path> |
— | Alias for --output (required unless --output is used) |
--id |
<value> |
— | Mod identifier, e.g. more-cultural-names (required) |
--name |
<value> |
— | Human-readable mod name (required) |
--version |
<value> |
— | Mod version, e.g. 1.0.0 (required unless --ver is used) |
--ver |
<value> |
— | Alias for --version (required unless --version is used) |
--game |
<value> |
— | Target game: CK2, CK3, HOI4, or IR (required) |
--game-version |
<value> |
— | Supported game version, e.g. 1.12.* (required) |
--landed-titles |
<path> |
— | Path to an existing landed titles file to patch (CK2/CK3 only) |
--landed-titles-name |
<value> |
— | File name to use for the output landed titles file |
--dependency |
<value> |
— | Mod ID that this mod depends on |
--dep |
<value> |
— | Alias for --dependency |
--verbose |
true |
false |
Include verbose comments in the generated output |
| Component | Supported Versions | Notes |
|---|---|---|
| .NET Runtime | 10.0+ | Requires .NET 10.0 SDK or compatible runtime |
| Crusader Kings II | All versions | Via CK2 game identifier |
| Crusader Kings III | All versions | Via CK3 game identifier |
| Hearts of Iron IV | All versions | Via HOI4 game identifier |
| Imperator: Rome | All versions | Via IR game identifier |
dotnet builddotnet testThe repository includes release.sh, which delegates to the upstream deployment script used by the project maintainer.
bash ./release.sh 7.1.2This script downloads and executes an external release helper from https://raw.githubusercontent.com/hmlendea/deployment-scripts/master/release/dotnet/10.0.sh.
Note: Piping into bash is an intensely controversial topic. Please review any external scripts before running them in your environment!
The solution comprises two projects:
| Project | Type | Purpose |
|---|---|---|
MoreCulturalNamesBuilder |
Console Application | Generates mod files for supported games |
MoreCulturalNamesBuilder.UnitTests |
Unit Test Suite | Validates configuration parsing and data transformations |
| Directory | Purpose |
|---|---|
MoreCulturalNamesBuilder/Configuration/ |
Settings and argument parsing |
MoreCulturalNamesBuilder/DataAccess/DataObjects/ |
Domain entity definitions |
MoreCulturalNamesBuilder/Service/ |
Business logic and transformations |
MoreCulturalNamesBuilder/Service/Mapping/ |
Data mapping between entities and models |
MoreCulturalNamesBuilder/Service/ModBuilders/ |
Game-specific mod file generation |
MoreCulturalNamesBuilder/Service/Models/ |
Application domain models |
See the ARCHITECTURE.md for the system context, principal components, runtime flows, ownership boundaries, dependencies, constraints, and extension points.
You are welcome to submit any suggestion, feedback, or modification to this project.
When doing so, please:
- Maintain cross-platform compatibility
- Preserve the existing public contract unless a breaking change is intentional
- Submit focused pull requests that conform to the existing code style
- Maintain your branch synchronised with
master - Revise the documentation when functionality changes
- Properly test all modifications, including edge cases and error conditions
- Add tests for additional or modified functionality
Discovered a problem or have a suggestion? Open an issue!
If you find this project useful, consider funding it or starring ⭐️ it on GitHub!
This project is being distributed under the GNU General Public License v3.0 or later.
See LICENSE for further information.
