OldUnreal / UnrealTournamentPatches

Other
970 stars 29 forks source link

[469b] Suggestion to make better support for a foreign language #748

Open Sergiut99 opened 2 years ago

Sergiut99 commented 2 years ago

dear developers. It's impossible to do a full translation of a game with network play if the fonts are in system files that are checked by server anti-cheat. The file Engine.u contains the font texture:

texture0.pcx - SmallFont texture1.pcx - MedFont texture2.pcx - LargeFont

in order to translate those lines indicated by the arrows in my screenshots, we need to import a new font with the same name (texture0) into the Engine.u file. But then it's impossible to play online.

My suggestion is this. Move these files to UWindowFonts.utx or LadderFonts.utx. change the code in the game to make the game look for these fonts in these texture files. Translators can easily port their fonts to these files and these files are not checked by anti-cheat.

Shot01 Shot02

NeonKnightOA commented 2 years ago

We've talked about this in the UT99 Discord, but I'll leave the things Feralidragon and I told him, for the sake of information.

First, Russian is being taken care of, there's A LOT of work to be done, though. The localization repository for the text strings is located here: https://github.com/NeonKnightOA/unreal-localization

Second, the game already comes with a built-in way to do localizations that DOESN'T involve modifying any binary core file AT ALL. You're supposed to a) get those textures in a SEPARATE pack. (Suppose the package is named LanguageRussian.utx) and THEN reference those files in Engine.rut this way, for example:

[Fonts]
WhiteFont=LanguageRussian.RusWhiteFont
MedFont=LanguageRussian.RusMedFont
LargeFont=LanguageRussian.RusLargeFont
BigFont=LanguageRussian.RusBigFont
SmallFont=LanguageRussian.RusSmallFont

And finally, in System/UnrealTournament.ini, under [Engine.Engine], the line Language=int should be modified into Language=rut.

And that's it!

NeonKnightOA commented 2 years ago

One thing that should be implemented in the game, however, is a language selector like the one Unreal v227 has.

NeonKnightOA commented 2 years ago

And now UT has a proper Russian localization, for which we need testing.