patriksletmo / Dota2Translator

Program used to translate messages received in Dota 2 and show them in-game.
102 stars 17 forks source link

No longer translating? #22

Open wardigi opened 9 years ago

wardigi commented 9 years ago

Not sure if google changed on their side on something has stopped working for me. The chat seems to go through to the translator and the in-game display is working but the chinese isnt being translated

patriksletmo commented 9 years ago

Yes, Google has added a human verification system to the url the program is using. I'm considering switching to another translation service or applying for paid API access, but there is currently no solution to the problem.

jzell commented 9 years ago

https://www.bing.com/translator/ produces usable results from what i've heard.

jansenfuller commented 8 years ago

I have been looking into a possible solution to this and might have found something. The previously used Google API allowed 2m characters per month. I have just found the Microsoft translator API that also allows 2m characters for free per month. I am currently working on converting the current Google API translation to the Microsoft one.

Links for "proof" Microsoft translator HTTP interface for translation

patriksletmo commented 8 years ago

Thanks for your input @jansenfuller! I would have to implement a server-side part of the translator in order to use the Microsoft API without exposing my access token, and I'm not sure how many characters will be used by the users of this program. One idea could be to require users to obtain a token themselves but I'm afraid it might be a bit too complicated.

I've had some mail contact with various persons regarding the Google API that the translator is using and found that there was a small change of format for the endpoint used. I think that this fork implements the required changes for the translation to function https://github.com/LithiumGN/Dota2Translator. The main reason I've not implemented this in this repository is because internal changes in the game engine while transitioning to Reborn made the program unusable.

I will spend some time this summer to rewrite the client completely and I might even add CS:GO support if possible. If the Google API is still working by then I will continue using it, but I'll probably implement a fall-back for the Microsoft API as well.

patriksletmo commented 8 years ago

Minor update: I've found another endpoint for Google Translate and it works just as good as before! I'll be integrating it into the new version of the translator which will probably end up in a new repository as soon as I've got something partly working.

XenSide commented 8 years ago

Any updates? we really want this back.

patriksletmo commented 8 years ago

It appears there is some form of encryption or encoding done to the data stream which I believe is an anti-cheat measure introduced after a map-hack in CS:GO using a similar technique as the translator. I don't have the article at hand but the bypass involves extracting a key from the client after every update.

There might be other ways to extract the chat data other than watching or hooking recv_from but I haven't found anything that works yet. I will not develop a solution that can also be used for cheating purposes but I will try to investigate further.

FlorianWendelborn commented 8 years ago

@patriksletmo AFAIK reading memory from the client is VAC ban-able.

patriksletmo commented 8 years ago

@dodekeract That is correct. There are however other ways of achieving the desired functionality apart from reading memory directly from the client or watching the network stream, I just need some more time to investigate these methods.

AetherCollective commented 7 years ago

How goes the hunt? Have you mad any progress since your last update? Looking forward to the next release!

patriksletmo commented 7 years ago

@BetaLeaf I haven't had the opportunity to look into this at all. It's not certain if I will attempt to actually update this program further, which is partly because of the changes to the network protocol but also due to the fact that I don't play Dota 2 anymore. I think it's a very interesting subject to investigate but the effort I have to put into it seems simply not worth it, I'm afraid.

XenSide commented 7 years ago

How could you say it's not worth it!? It's a game changer, I'd pay for it! Atleast, if you don't feel like updating it, find someone that would enjoy taking your project and working on it, it was a fantastic piece of software and seeying it die like this makes me angry.

patriksletmo commented 7 years ago

I simply don't have the time, and I don't feel I would gain anything personally by prioritizing this above the many other occupations I have. I would estimate the required time to at least 100 hours and I don't have that time. Anyone is free to continue this project or use the information from the project for something new, as specified in the license, and many people have forked the project already. I don't know anyone personally who would have the motivation and knowledge to continue working on this. I hope you understand.

drobati commented 7 years ago

Thanks for the update. When I was playing DotA2 this was a very cool project. Thank you for your work and best of luck.

witzatom commented 7 years ago

Hey @patriksletmo, what other methods of reading the chat did you have in mind when assesing the time requirements? I might pickup the project but could use some direction you were thinking about going in. I cant think about anything elegant other than network sniffing and reading memory, both of which seem not viable. Screen grabbing triggered by the recv_from hook and OCR come to mind, but that seems annoying at best.

EDIT: I quickly checked in wireshark and i cant seem to even identify the packets with chat, am I missing something, or is that impossible too. I was hoping they would at least keep the headers in.

patriksletmo commented 7 years ago

@Tommassino I have only tried to find chat data in the network stream and using memory reading since Reborn was released, both without success.

You are correct that it is no longer possible to use Wireshark to identify chat messages as they are currently encoded. This is partly what stopped me from continuing the project, as I was not able to decode the content of the packets on wire.

With this said, there have recently been advances by another developer who has released a new translator application. You can read more about it on their website http://dotatranslatorweb.azurewebsites.net/ or in the announcing reddit thread https://www.reddit.com/r/DotA2/comments/5xiprv/dota_translator_reborn_proof_more_in_comments/.

Depending on my available time after the upcoming exam period I might attempt to implement their decoding method in this project but I can't promise anything.

witzatom commented 7 years ago

Hey, thats pretty cool, I didnt know about that translator reborn. I wouldnt mind taking some time to fork and implement the decode myself, unfortunately the reborn translator seems closed source and I have no idea how they decoded it. Ill see what I can find out, but I doubt Ill be very successful, and to be honest if there is a good alternative it might not be worth my time :)