How to get Steam client language via UnrealScript?

I don’t see anything in the Steam interface classes. Currently, the first time a player opens my game from Steam it’s always English. I’d like to be able to set the appropriate language based on what they have set in the Steam client. But I don’t see any functions to check this.

Any ideas?

1 Like

I was thinking about when game starts. Check windows for the language they are using then send that in to script thru a dll. Then you could set it easy with a few functions in script.

I remember looking for a function for that. I just looked again. I’m pretty sure the Steam API won’t tell you what language the Steam client is running in. I also just make the player select the language, and it starts in English by default.

@Nathaniel3W The latest Steam Api does expose the language that the Steam client is running, however i’m pretty sure the one used with UDK does not. Swapping out the steam.api with the latest, and then attempting to use the extra endpoints via dll’s would work, but there are some incompatibility issues with the native UE3 code. Pretty annoying not being able to use the latest api. If anyone figure out how to use it, I’d love to know.

I recently saw ISteamApps Interface (Steamworks Documentation) “This falls back to the Steam UI language if the user hasn’t explicitly picked a language for the title.” There’s also ISteamUtils Interface (Steamworks Documentation). I don’t know when they added these, but I’m pretty sure they’re older than the Steam dll that ships with UDK.

What I did was copy the up-to-date Steamworks SDK into my game’s source code, compiled, fixed errors, compiled, fixed errors, compiled, and fixed errors until it worked. I think there are a couple of functions that just aren’t there any more, and there are a bunch that now return qwords instead of dword ints. It wasn’t too bad for me because my game is entirely single-player and I didn’t really care about any of the netcode. It might be more complicated for you.

@Nathaniel3W I’m assuming you’re referring to compiling native code?

Yeah. Native code. Weren’t you the one who said you bought the full UE3 license? Maybe I was mistaken and it was Chosker or someone else. But yeah, using the new dll requires recompiling the native code. Mostly the problem was a bunch of functions that now return uint64s instead of ints. If you have to declare a 64-bit integer in UnrealScript, declare it as qword (which in UnrealScript is a struct containing two ints), and the Unreal Build Tool magically connects your UScript qwords to C++ uint64s.

AFAIK only you @Nathaniel3W from around here bought the full UE3 license
back then I could see native UE3 code at work because it was used for a project there. I was able to look at things which proved useful to understand many things but I never compiled native code for my personal projects