Ingame texts translation

Get some cool tips about how to tweak your UT graphic, gameplay, and much more!
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Ingame texts translation

Post by n][c][o »

Hello :) (I was away for some months, but didn't forget on you!)

I am interested in the modification of any of the texts in the game - either to create a translation of the help or of the game settings into my language or to customize the annoying ingame messages for example. (I mean, I'm quite pissed of too long and badly readable msgs like "Alarik's minigun turned n][c][o into a lucky piece of meat". I'm gonna change it into something like Alarik --[minigun]--> n][c][o )

Okey. How to do that? I was looking a bit around in the forums, but haven't found much similar topics..
I found out, that some of the texts are written just as the plaintext in the .int files in my unrealtournament/system directory.
Is there anything I should aware of? Or something I should take care of? Anyway, I need to find out first some basic things like if the game supports special characters from my language (Czech) or if the translation can be longer than the original text..

Step two. Are all of the texts placed only in those easily modified .int files? I saw that programs which even don't have their texts placed in files as plaintext, can be translated too. The texts can be modified by utilities like ResHack etc..

So if you have any idea, opinion or anything else to contribute, I will gladly read that.
Thanks.
nicio
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Re: Ingame texts translation

Post by n][c][o »

btw, I also heard, that the polite translator always reads the EULA (does UT have also some?) and looks for program modification and translation permission or writes an email to creator and asks for permission..
But I have no idea whom to write - "Hello, Epic developers, does your email still work? Do you remember the UT you created years ago? I would like to.." :D :D
nicio
User avatar
Feralidragon
Godlike
Posts: 5493
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: Ingame texts translation

Post by Feralidragon »

You can translate it, it's a "modification" after all, plus they give direct suport for multilanguage afaik (and yes, they have a EULA, I have read it and I didn't found anything that could affect translations).

The following are just assumptions of mine, so it's better for more people to reply to either confirm or correct me in some way:
.int files are just the "common" type, I think if you want to do something in your language, you just have to copy a file .int and change that copied file extension to your country extension (in your case I guess it's .cz), and then translate its content.
Then I think the game can recognize the .cz files if you set the game language to such.

Again, I am not sure about this though, I am not aware if this is the right procedure and where you can change your language, but I do know the game has suport for multilanguage (hence the need to make all the string variables in a new mod "localized", so they can be translated, something some modders don't bother to do making their mods impossible to translate unfortunatelly).

Either ways, it's better for you to wait for replies from someone who knows more about UT translations.
User avatar
EvilGrins
Godlike
Posts: 9698
Joined: Thu Jun 30, 2011 8:12 pm
Personal rank: God of Fudge
Location: Palo Alto, CA
Contact:

Re: Ingame texts translation

Post by EvilGrins »

Have you tried interpretive dance? Pig-latin?

Kidding!
http://unreal-games.livejournal.com/
Image
medor wrote:Replace Skaarj with EvilGrins :mrgreen:
Smilies · viewtopic.php?f=8&t=13758
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Re: Ingame texts translation

Post by n][c][o »

Feralidragon wrote:.int files are just the "common" type, I think if you want to do something in your language, you just have to copy a file .int and change that copied file extension to your country extension (in your case I guess it's .cz), and then translate its content.
Then I think the game can recognize the .cz files if you set the game language to such.
That sounds great!
I was afraid that I would have to make a backup of all the original .int files and then modify them and.. :?
But the idea that I can just switch between the translations in some .ini file, sounds pretty comfortable and - looks true. I haven't found any information about the UT99 (why the hell there are no language packs for UT99 in the internet?), but in some forums there was a guide for newer UTs and it worked similarly.

First of all, I found out that there is a line "Language=int" in files Default.ini and UnrealTournament.ini.
So I simply tried to change them to "Language=cze" (but I guess that there can be any word - don't think UT has a list of countries hidden somewhere..), then copied all the .int files and renamed them into *.cze.

And the result?
As everything in UT, it's not that easy. :D :?
I modified some ingame texts there, but no change appeared in game. So I removed the .int files and let only those .cze files be there. And UT just ignored them. Menu disappeared and some other things were screwed.

(For those who will also try that - menu and all is OK till you start deeper exploring it. Crash came in my case when accessed Preferences and pressed Esc - closed them. Aware, that putting back the original files isn't enough to put the UT back into work - I had to access the Preferences and press Esc again. Such a magic. :D )

OK, menu was screwed, but - the game texts, helps etc. still worked! I was like WTF? UT ignores the .cze files but uses the content from them? No. When I removed all the .cze files (so there were no language files, neither .int nor .cze), UT still worked properly and the same as before. Some menus disappeared, but I played a game with no problems and with all the texts. Because, OMG, most of the texts are copied in the .u files.
And I ask - for god's sake, why? And more, if you do nothing else than just modifying the original .int file, the UT will ignore the modification and will use the version from the .u file. So I wonder what are the .int files for. They seem pretty useless. (?)

So the translation looks a bit more complicated. :?
I would like to know if there is just some more settings in some .ini file that makes it work more user-friendly or I will have to modify all the binary .u files with some hex editor..
Thanks anyone if you know more about it and sorry for such a long post :)
nicio
User avatar
Feralidragon
Godlike
Posts: 5493
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: Ingame texts translation

Post by Feralidragon »

Absolutelly all the text needs to be defined beforehand in .u files, that's the origin of all the text since they are all string variables within the .u files, by removing ints you just remove the engine knowledgement about mutators, gametypes, players, etc, but everything which does not rely on .int public settings, will be get from those .u files indeed.

Either ways, just took 2 minutes making a small search on google, and I found this:
http://wiki.beyondunreal.com/Legacy:INT ... n_Sections

And I could made it actually work in the next 2 minutes, so I will explain how to do it:
1 - Change the language in the UnrealTournament.ini: unreal [Engine.Engine], there's Language=int, change it to the extension your translation files will have (which you already did: Language=cze, so we will use cze as an example here);
2 - Copy (NOT move) all the int files to another seperate folder (just to organize);
3 - Change their extensions to your extension (in this case .int to.cze), but be sure to NOT change the name (if it was Botpack.int, it shall be Botpack.cze now, NOT something like MyBotpack.cze or Botpack_cze.cze, nor anything like that).
4 - Now, start translating the texts in the Description field ONLY, but do not remove any line.

5 - For other kinds of translations (weapon descriptions for example, viewable in the menu Weapons from the main menu), you will have to know the variables which hold the text in the .u file.
For example, the pulsegun:
The class of the pulsegun is PulseGun;
The package is Botpack;
The variable containing the weapon description is called WeaponDescription.

So you go to the .cze respective, in this case the Botpack.cze, and you add the following lines to the very bottom of the file:

Code: Select all

[PulseGun]
WeaponDescription="Classification: This weapon pwns with its green beam"
Of course, that text is just a placeholder for your actual translation.

6 - After making the needed .cze files (or another country extension), you copy them to the System itself, and once you start UT you should see the whole or part of the game translated.
NOTE: Do NOT remove the .int files from there, they should stay.
NOTE 2: When the game doesn't find a particular .cze file, it will look for the .int one instead, and if it doesn't find any, mutators and menus may be not there anymore and any text will be retrieved from the .u file.

I hope this helps now (this time I am not assuming, this time I already had my "hands in the dirt" so it should work this way).
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Re: Ingame texts translation

Post by n][c][o »

Feralidragon wrote:Absolutelly all the text needs to be defined beforehand in .u files, that's the origin of all the text since they are all string variables within the .u files, by removing ints you just remove the engine knowledgement about mutators, gametypes, players, etc, but everything which does not rely on .int public settings, will be get from those .u files indeed.
Now I see that I really need to find some more time and explore deeper how UT works and what is his structure, because I will keep getting stuck on these basic incomprehensions otherwise.
And that link to BeyondUnreal looks like a great opportunity to start..

To your guide:
Steps 1 - 3 are evident and I did them so also first time I tried that.
But I may imagined the process of translation too easily - I thought that I can just open the UnrealI.cze for example and there lines:

Code: Select all

[FlakCannon]
PickupMessage=You got the Flak Cannon
ItemName=Flak Cannon
DeathMessage=%o was ripped to shreds by %k's %w.
simply modify into:

Code: Select all

[FlakCannon]
PickupMessage=You got the Flak Cannon
ItemName=Flak Cannon
DeathMessage=%k --[ %w ]--> %o.
, but this naive idea seemed not to work. (btw, is there any explanation, why it can't be so simple? :) )

As I said, I may not hurry with modifying files that I barely understand structure of, and rather make a small insight into the UT inside. I am a bit into coding so I hope it will not be.. unbeatable. The only pity is, that there is no such a book as "An official Epic games comprehensive guide of the UT code", just some individual texts that people are trying to collect from the dying websites.. :?

PS.: I will be away for some days from tomorrow, but then I will take some time to try to understand the whole thing about the variables etc. I will then respond if your guide worked for me.
Thanks for all the help that you wrote here!
nicio
User avatar
rohitggarg
Adept
Posts: 400
Joined: Wed Mar 12, 2008 7:18 am
Personal rank: The name is Bu||et
Location: India
Contact:

Re: Ingame texts translation

Post by rohitggarg »

Well.. I think I got the idea,

Just try putting that into Botpack.cze for a change. The reason might be the package which contains FlakCannon class. The fact could be, Unreal1 package has all the weapons that were present in the earlier version of UT, now things have changed a little bit(if I am correct).

Ferali to comment more...
Regards,
Rohit

CATCH ME IF YOU CAN.............
Image

My website : http://www.appointmentagent.com
User avatar
Feralidragon
Godlike
Posts: 5493
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: Ingame texts translation

Post by Feralidragon »

Well, like rohitggarg said, FlakCannon class is an UnrealI package class, not BotPack class.
The UT version of the flakcannon is called: UT_FlakCannon

Since some UT weapons are pretty much Unreal remakes, and since the class would end with the same name, they added the "UT_" prefix to the class names.
The following are the UT classes for weapons you should use:
ChainSaw
Enforcer
DoubleEnforcer
ImpactHammer
Minigun2
PulseGun
Ripper
ShockRifle
SuperShockRifle
SniperRifle
Translocator
UT_BioRifle
UT_Eightball
UT_FlakCannon
WarHeadLauncher


Also, although in the wiki they show the translation text without double quotes, I strongly advice to not do it that way, it's actually a very bad practise, since many worldwide systems use/need double quotes in strings, so even if a file doesn't need them, you should add them anyway if it works as well, and as you can see the original int files also have double quotes in all its "descriptions".

So do NOT do this:
PickupMessage=You got the Flak Cannon

Do this instead:
PickupMessage="You got the Flak Cannon"


For instance, in a worldwide used web language like PHP, translation files (.mo and .po files) require double quotes to work properlly, JSON needs double quoting as well, and in most of the high-level languages in the world (C++, Java, PHP, etc), new lines (\n), carriage returns (\r) and even tabs (\t) are only escaped as such when double quoting them: "\n".
For instance, in the weapon description, you need to use \n chars to indicate a new line, let's see the PulseGun for instance:

Code: Select all

WeaponDescription="Classification: Plasma Rifle\n\nPrimary Fire: Medium sized, fast moving plasma balls are fired at a fast rate of fire.\n\nSecondary Fire: A bolt of green lightning is expelled for 100 meters, which will shock all opponents.\n\nTechniques: Firing and keeping the secondary fire's lightning on an opponent will melt them in seconds."
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Re: Ingame texts translation

Post by n][c][o »

(I'm finally back to my PC)
Feralidragon wrote:FlakCannon class is an UnrealI package class, not BotPack class.
The UT version of the flakcannon is called: UT_FlakCannon.
First of all I should explain my idea again, because there happened to be a tiny misunderstanding.
I roughly know that stuff about unreal1 remakes and, that UT version of flak cannon is called UT_FlakCannon, but I was thinking this way:
  • There is some string appearing during the game: n][c][o was ripped to shreds by Alarik's Flak Cannon.
  • I decided to change that string so I was looking for any file that contains the string "was ripped to shreds".
  • I found out, that among all the INT files there is only one which contains that string and it's the UnrealI.int file, which I mentioned above.
  • Code: Select all

    [FlakCannon]
    PickupMessage=You got the Flak Cannon
    ItemName=Flak Cannon
    DeathMessage=%o was ripped to shreds by %k's %w.
    This is the only appearance of that string among the int files.

    --
    btw, the flak cannon itself with some lines appears also in UnrealShare.int and looks like this:

    Code: Select all

    [FlakCannon]
    PickupMessage=You got the Flak Cannon
    ItemName=Flak Cannon
    (why the hell are the lines same in both files?), but no "was ripped to shreds" is here this time so thats not in our focus.
So if the game takes that string from the int file, then this is the place it takes that from. So I simply tried to modify that string. Just to change one letter. But nothing worked, so it seems that it can't be done that simply.
Just to explain that FlakCannon vs. UT_FlakCannon misunderstanding.

I have so much more to reply to your other ideas and advices, but need just a bit more time to go through them, so don't worry. :)
nicio
Cemini
Novice
Posts: 11
Joined: Thu Feb 24, 2011 9:45 am

Re: Ingame texts translation

Post by Cemini »

See this listing of Botpack.int here:
http://doemsa.wordpress.com/2010/03/03/ ... -messages/



Here you find the lines

Code: Select all

[UT_FlakCannon]
DeathMessage=%o was ripped to shreds by %k's %w.
WeaponDescription=Classification: Heavy Shrapnel\n\nPrimary Fire: White hot chunks of scrap metal are sprayed forth, shotgun style.\n\nSecondary Fire: A grenade full of shrapnel is lobbed at the enemy.\n\nTechniques: The Flak Cannon is far more useful in close range combat situations.
PickupMessage=You got the Flak Cannon.
ItemName=Flak Cannon
So if you add with changed text (%o = victim / %k = killer / %w = weapon)

Code: Select all

[UT_FlakCannon]
DeathMessage=*whatever text with %o,%k,%w*
to your Botpack.int file, you get the desired text in your UT.



I use this in UnrealTournament.ini

Code: Select all

[Engine.Engine]
....
Language=int
and change the texts as needed in my Botpack.int and it works.
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Re: Ingame texts translation

Post by n][c][o »

doemsa.wordpress.com wrote:Now the complete default list of Botpack.int:
Okay, now srsly, WTF?!?

Why my Botpack.int file looks totally different from the default one, listed in that site? This is how my Botpack.int looks like.
I never deleted anything there, if I recall correctly.

Can I ask any of you to show me how your Botpack.int file looks like?
nicio
Cemini
Novice
Posts: 11
Joined: Thu Feb 24, 2011 9:45 am

Re: Ingame texts translation

Post by Cemini »

LOL
it just shows you what you can change there.
Why should all this be in your normal Botpack.int as the classes know their defaults?

Better start adding & changing what you desire.
UT99.org

Re: Ingame texts translation

Post by UT99.org »

medor wrote:custom ur botpack.int messages http://unrealtournament.99.free.fr/foru ... f=10&t=501
User avatar
n][c][o
Average
Posts: 33
Joined: Sun May 31, 2009 7:48 pm
Personal rank: New generation
Contact:

Re: Ingame texts translation

Post by n][c][o »

Cemini wrote:LOL
it just shows you what you can change there.
Eh, now I look like a total newb, huh? :D :?
Sry, at first I just expected, that "translating" means changing the original strings into my language, so I couldn't understand why in UT it means adding some new lines into some botpack and letting the original strings untouched..

Anyway, thx for help. I also found some link and they explain it the same as you. So I will rather stop thinking about how the heck the UT actually works and finally try some translating.
nicio
Post Reply