Hi! I've made a one way chat translator for Starcraft, where 7 different languages can be used.
Press CTRL + SHIFT + ENTER to open it up.
Press CTRL + ENTER to send a message.
Press CTRL + F12 to quit it.
DemoThe project is open source, and many more details on how to use it can be found right here:
https://github.com/rtyrt7/SC_TRANSLATORThe executable can be downloaded from here:
https://github.com/rtyrt7/SC_TRANSLATOR/releases/download/v1.0.0/SC_TRANSLATOR_1_0_0.exeor you can run it as a script, or even you can compile it to an .exe yourself, more details
here.
It was tested on Windows 10 and Windows 11 64 bit.
Enjoy!
PS:
If you mess up some settings, you can always delete sc_translator_state.json
It would be really nice if someone could make a 2 way translator.
None.

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch
That's cool, but having a 1-way translator that reads other messages and translates them to a language of choice would be a lot more useful I think.
I was trying to make one by running Starcraft in VMWare, where the account would be an observer and where it would use OCR to extract the text. My main account and the observer account would be in the same game. So the extracted text would be translated and be sent to my main account by the observer account. It was so messy I had to quit working on it.
I was also trying to mess around with Cheat Engine to find the text, and although I found it I think I'd have to find the static values, and for that I would need to attach the debugger, which it seems it's not working with Starcraft.
None.

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch
I was also trying to mess around with Cheat Engine to find the text, and although I found it I think I'd have to find the static values, and for that I would need to attach the debugger, which it seems it's not working with Starcraft.
There's EUDs that can read text from chat lines, so finding the addresses should be as simple as looking them up in the
EUD Database.
Another concern would be how's Blizzard's stance towards 3rd party tools that read memory? I've heard cases where accounts got banned for stuff like this, so maybe it's best you keep it to translating input. I'm not aware of the details though, so I might be fearmongering unnecessarily, but I wanted to put out the thought.
There's EUDs that can read text from chat lines, so finding the addresses should be as simple as looking them up in the EUD Database.
Thank you!
I used kLauncher (anti cheat program) in the past, for almost as long as it existed. They had a chat messenger feature for some time, where they also read the memory to get the chat. I was kinda active in their forums, and I never heard of anyone getting banned by Blizzard. So I don't know what to say, but thanks for informing me about it.
None.

Math + Physics + StarCraft = Zoan
This is maybe semi useful, so I'll share it:
#text stuff
next_display_line = EUD_Remastered(186877,0)
letter = []
for i in range(num_of_lines):
letter.append([])
for j in range(54*4+2):
if (256**(((i*(54*4+2))+j+1)%4))-(256**(((i*(54*4+2))+j)%4)) > 0:
bit_mask = (256**(((i*(54*4+2))+j+1)%4))-(256**(((i*(54*4+2))+j)%4))
else:
bit_mask = (256**4)+(256**(((i*(54*4+2))+j+1)%4))-(256**(((i*(54*4+2))+j)%4))-1
letter[i].append(
EUD_Remastered( 186879+(((i*(54*4+2))+j)//4), ((i*(54*4+2))+j)%4,bit_mask) )
It's been awhile, but: the way text works is there is some number of 'lines ' and there's up to 12, I think? So when a message is pushed, it displays the new line for the player, and all others are moved up one. But they exist in the same line index as they were before.
I believe the index for next line in SC is at index 186877 with offset 0, so that goes between 0 and 11.
e.g. at a given time it might be like this displayed on your screen:
line4: mre
line5: mrege
line6: rmewpmer
line7: wee
line8: woo
line9: gerger
line10: REGe
line11: GREGE
line0: GFGRTGR
line1: AGAGA
and if a new message pops up, it would be on line 2.
You can at any time read the letters from each line; every single slot for a letter has its own address. The addresses of the letters are calculated in that 'letters' array I gave. The values at those addresses go from 0 to 255 I think, with 0 being a space, I tihnk.
Post has been edited 1 time(s), last time on Apr 25 2026, 3:12 pm by Zoan.