Topic on Talk:Dishonored
Well, here we are again 8 years later quite further down the rabbit hole... And the locale logic truly is FUBAR.
First of all, the aforementioned HKLM key doesn't actually seem to do anything. Yes, steamservice.exe writes to it on every start (well, every one initiated from Steam at least, running the exe directly doesn't trigger installscript). But nothing reads from it ever. Maybe it used to be useful in an older version of the game (if not during development), or perhaps it's just some kind of neglected quirk from non-Steam versions.
Regardless, also thanks to some idiot ball with the steam api that I still quite couldn't put my finger on (also Ghidra), I believe this is the chain of linguistical dependence:
[Engine.Engine]Language
inDishonoredEngine.ini
- if the steam api is detected and initialized, use its GetCurrentGameLanguage function.. I couldn't directly log this call tbf, but:
- the language strings names in the game are literally the same used there
- their actual setting (as opposed to just "acceptance") is not defined anywhere in the executable
- having the Steam client open is the only thing that can avoid certain
Dishonored!AK::StreamMgr::CreateDevice
crash - given all other things should stay the same if not manually tampered, I seriously cannot think to another selection mechanism the user-facing language options could act upon
-
DishonoredGame\CookedPCConsole\COOKEDLANGUAGES
is parsed (a list of language codes is to be found inside, but its purpose is unclear)
- if that's not found
DishonoredGame\CookedPCConsole\DEFAULTLANGUAGE
is searched instead
- Last but not least
LANGUAGE=
is picked up from the command line (there's alsoLANGUAGEFORCOOKING
lost somewhere else completely in the code, but just like in XCOM you would wonder how much its presence is an oversight)
I haven't really tested what each of those precisely control then (to be sure 2 isn't perfectly overlapping with 1 or 5, and I don't know if Windows's LCID couldn't also play a role given the references in Core.XXX files), but figuring this out was already enough of a PITA.