Those strings are mostly taken from OS. We'll check which ones are not and can be translated. Thanks for the hint!
Actually that's not the problem, 99% of the strings are actually from our own code (such as KM_Networking.pas and KM_NetServer.pas). The problem is making the text appear correct for each player, we can't just send the text out to all the player's in the user's locale.
Say I run my game in English and I join a lobby hosted by a Polish player, if we directly translated network messages I would receive everything from the host in Polish (e.g. "Krom joined the lobby" would be in Polish). Some messages also come from the dedicated server which does not even have a locale or LIBX files. Because of these problems I decided to leave everything in English to begin with, and it's never been changed since then.
What we really need is a markup or something similar that gets replaced with the user's locale. Say [#32] means "replace that with text 32 from the user's locale". Then we can just put those things hard coded and let it be decoded when the user receives it. For example the text "(team)" which goes a message you send to your team could be done like this:
ToSend := Name+' [#123] '+Message //fTextLibrary[123] = '(team)'
In some cases we probably also want to use Format to add parameters into the text, for example "Player has disconnected: %s" because maybe in Polish you have to write it "Player %s disconnected" or something. That means our markup needs to allow for parameters too, and it gets quite complicated to implement ([#123|Lewin] or something? What about multiple parameters? What about strings that contain ] or |?).
We also need to decide at what level we apply the locale. Probably after a message of type mk_Text is received the client can parse the text for markup and translate it before displaying, since we probably only need this markup across the network (not like the color markup which works everywhere)