bbepis / XUnity.AutoTranslator

MIT License
1.85k stars 284 forks source link

Latest versions targeting IL2CPP (Deprecated) #159

Closed gravydevsupreme closed 2 years ago

gravydevsupreme commented 3 years ago

Closing this issue as I've published v5.0.0.

Releases available here.

--- OUTDATED --- Using this issue to keep track of latest releases for IL2CPP, rather than posting them in various other issues or as a release.

Not using a release because I don't want to constantly provide support for beta/alpha software. XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta13.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta13.zip

Version 5.0.0-beta13 should bring many improvements as the code bases has now been properly merged. It includes support for:

There are still many things missing, however.

. . . XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta12.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta12.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta10.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta10.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta9.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta9.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta7.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta7.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta4.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta4.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta3.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta3.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta2.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta2.zip

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta1.zip (For BepInEx Unity IL2CPP for Windows x64/x86 machines) XUnity.AutoTranslator-MelonMod-5.0.0-beta1.zip (for MelonLoader 0.5.2)

XUnity.AutoTranslator-BepInEx-IL2CPP-4.21.0.zip (For BepInEx Unity IL2CPP for Windows x64/x86 machines) XUnity.AutoTranslator-MelonMod-4.21.0.zip (for MelonLoader 0.5.2)

XUnity.AutoTranslator-BepInEx-IL2CPP-4.18.0.zip (For BepInEx Unity IL2CPP for Windows x64/x86 machines) XUnity.AutoTranslator-MelonMod-4.18.0.zip (for MelonLoader 0.4.3)

XUnity.AutoTranslator-BepInEx-IL2CPP-4.13.0.zip (For BepInEx Unity IL2CPP for Windows x64/x86 machines) XUnity.AutoTranslator-MelonMod-4.13.0.zip (for MelonLoader 0.3.0 ALPHA)

UPDATE (new version for BepInEx): XUnity.AutoTranslator-BepInEx-IL2CPP-4.18.0.zip

This new version is barely tested. Only seen it working in one game. I am currently working on a lot of refactoring to be able to merge the IL2CPP and main branch, but this will take some time. Most important change: shortcuts should now work if the Input API is not trimmed away from the game in question.

yanghoxom commented 3 years ago

@gravydevsupreme can you share source ?

gravydevsupreme commented 3 years ago

Latest source for IL2CPP available here:

https://github.com/bbepis/XUnity.AutoTranslator/tree/il2cpp_update

orangespoons commented 3 years ago

@gravydevsupreme Does it include a function to change the sdf font? It doesn't work for me. OverrideFont=Arial is doesn't work either.

I've tried translate from Japanese to English / Japanese to Chinese (Simplified). translation works fine. Game officially supports English, Japanese, Chinese (Simplified), and Chinese (Traditional). And checked the textures of the sdf font and found that the Korean language was included normally. I think xunity.autotranslator can't load external sdf fonts.

Is it just a bug, or is it a game problem? I attached what I set up.

Thanks.

Game unity version: 2019.4.0f1 / il2cpp


[General] Language=ko FromLanguage=ja ... EnableTextMeshPro=True EnableTextMesh=False ... OverrideFontTextMeshPro=arialuni_sdf_u2019


https://ibb.co/gzs6WnK https://ibb.co/tmjSmDG

gravydevsupreme commented 3 years ago

The current version of the IL2CPP plugin does not support changing fonts.

orangespoons commented 3 years ago

The current version of the IL2CPP plugin does not support changing fonts.

@gravydevsupreme Thank you! I hope the font change will be supported soon! :)

icls1337 commented 3 years ago

[Info :XUnity.AutoTranslator] Loaded XUnity.AutoTranslator into Unity [2019.4.22f1] game. [Warning:XUnity.AutoTranslator] Input API is not available! System.TypeLoadException: Could not resolve type with token 010000a4 from typeref (expected class 'UnityEngine.Input' in assembly 'UnityEngine.CoreModule, Version=3.7.1.6, Culture=neutral, PublicKeyToken=null') at XUnity.AutoTranslator.Plugin.Core.AutoTranslationPlugin.HandleInputSafe () [0x00007] in <855e1b6e49cf4dd88249de51e100ff6e>:0 [Info :XUnity.AutoTranslator] Skipping plugin scan because no plugin-specific translations has been registered.

gravydevsupreme commented 3 years ago

That is more of a warning than an error. That being said, it could probably be fixed. But I have not prioritized fixing it and simply fallen back to disabling user interaction.

cacarasa commented 3 years ago

could someone make a tutorial on how to install these tools?

thank you very much and sorry for my ignorance.

gravydevsupreme commented 3 years ago

Seems I missed this comment by about half a month.

Either way, I am not really doing a lot to keep the above versions updated, so I am probably not going to be making a guide either. BepInEx is probably the easier of the two to setup since it is just a matter of copy-paste the correct versions. Also I am not sure the current MelonLoader release supports the latest version. In fact I doubt it.

dima245 commented 3 years ago

translate.google But it is impossible, in the program, to add scanning of the entire game and at once translation of all the text in the game? analogous to the MTool program https://www.patreon.com/AdventCirno and then, each line to translate, each time, separately, takes a lot of time. especially when the connection to the Internet is not stable, due to the dir-300 router original text а нельзя, в програму, добавить сканирование всей игры и разом перевод всего текста в игре? по аналогу програмы MTool https://www.patreon.com/AdventCirno а то, каждую строчку переводить, каждый раз, отдельно , много времени занимает. особено когда связь с интернетом, не стабильна, изза роутера dir-300

djlaser commented 3 years ago

Hello. And you can't tell me when the tehmeh translation and font support for it will be added to translator icc2.

thesuperfatcat commented 3 years ago

@gravydevsupreme Can you please update the translaslator.dll files? il2cpp targets only work on googletranslate. Watson,bing etc not working.

gravydevsupreme commented 3 years ago

@dima245 - I know the tool by AdventCirno, but that tool, impressive as it is, (probably) works primarily by knowing the resource structures of the games it support (although it is probably more advanced than just that). Doing that with Unity is problematic in many ways.

@djlaser @thesuperfatcat - I have been kinda putting off updating the IL2CPP plugin because of how much it diverges from the original. I may look into getting it updated soonishly.

gravydevsupreme commented 3 years ago

UPDATE: Added highly untested version 4.18.0.

cacarasa commented 3 years ago

I am also looking forward to the new plugin for melonloader which works better than bepinex. Thanks!!!! Great job!!!!

gravydevsupreme commented 3 years ago

UPDATE: Added 4.18.0 for MelonLoader.

thesuperfatcat commented 3 years ago

Thanks for the new update! But still only work google translate. Bing, watson etc. get some errors. Same error appears in bepinex and melonloader. Here error log: [ERROR] A batch operation failed. Disabling batching and restarting failed jobs. [ERROR] 5 or more consecutive errors occurred. Shutting down translator endpoint.

gravydevsupreme commented 3 years ago

And this is not happening in Non-IL2CPP games for you?

Batch operations sometimes fail, though, and that's okay. Are there other translation related errors?

baoenzo commented 2 years ago

Wow, this work for me. But OverrideFont error. image When translated into Vietnamese, it lost "\n" image Game: Story of Seasons Pioneers of Olive town I using MelonLoader because BepInEx not working. Sorry for my bad english @gravydevsupreme

gravydevsupreme commented 2 years ago

The function to obtain the possible fonts seems to be missing, which is why OverrideFont does not work. That's just IL2CPP being IL2CPP.

Newlines in translations are generally removed because if it is sent to the translator the translation will be really bad.

linland-h commented 2 years ago

Hello, when I try to use the plugin with melonMod, these error and warnings occurred:

捕获 捕获1 https://drive.google.com/file/d/1x3rupVzThYEEr3hES1BfltexNEB--hZr/view?usp=sharing

the plugin generates the AutoTranslator folder and the config file, but I'm not able to open Autotranslator UI in game and the game is still in japanese

dima245 commented 2 years ago

XUnity.AutoTranslator-BepInEx-IL2CPP
does not work "OverrideFont=" game RJ278044 Snow Brandia RJ293542 Snow Brandia fairy later

icls1337 commented 2 years ago

sup load external sdf fonts now?

gravydevsupreme commented 2 years ago

Well. The code to support it should be included in beta7, but I have not tested it. But custom TextMesh Pro support is shaky even in the Mono version of the plugin due to the strict version requirements.

icls1337 commented 2 years ago

I can't change fonts in Computer Tycoon using the same version of unityfs

gravydevsupreme commented 2 years ago

This updated version should print out the version of TextMesh Pro the game uses. It should also attempt to print out the version of the font asset used. But in my experience that information is often unavailable in IL2CPP.

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta8.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta8.zip

gravydevsupreme commented 2 years ago

This version adds a new option FallbackFontTextMeshPro that can replace OverrideFontTextMeshPro which may be more reliable. Do not use both at the same time.

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta9.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta9.zip

orangespoons commented 2 years ago

@gravydevsupreme Hello, In-game text hook of the il2cpp game does not work, and I ask you about the error. There seems to be an error in the process of hooking the UGUI. Error log: https://pastebin.com/pBGRNMXv Game: HolyKnightRicca (hentai game) My config.ini: https://pastebin.com/fGLu0NxJ Using MelonLoader x64 0.5.2 + AutoTrnslator-il2cpp-5.0.0-beta9 Font replacement has already been done manually.

The UI part is often not translated at all. Some UIs appear when the UI is reloaded without restart game. ( ex)main menu - setting - main menu... maybe a unity scene change? )

And the main dialogue part is not translated at all. This game can hide or show the dialogue window by right-click button, I have to turn off and on the dialogue window each time for translation to take place.

What should I do if an error like this appears? Thanks.

gravydevsupreme commented 2 years ago

These may work better. XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta10.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta10.zip

You will need to set DisableTextMeshProScrollInEffects=True.

orangespoons commented 2 years ago

hi, I'm having issue with OverrideFontTextMeshPro or FallbackFontTextMeshPro option. I created an AssetBundle by referring to this link, but it didn't work. TMP_Font_AssetBundles.zip also failed because the game unity version is 2020.

I opened the log file to find out what the problem was. [06:32:56.874] Version of TextMesh Pro: 1.4.0. yaay, I figured this was the problem because I found out that the versions of TextMeshPro were different. When I install Unity 2020.3.24, the default installed version of TextMeshPro is 3.0.6. So, referring to this link, I downgraded the version of TextMeshPro to 1.4.0 and tried again. but the error still occurred.

Changing the compression method in the [AssetBundles - Advances Settings] didn't help.

Am I doing something wrong? If the OverrideFontTextMeshPro option is enabled, the text is broken into squares, and if the FallbackFontTextMeshPro option is enabled, AutoTranslator does not work.

Game: HolyKnightRicca (hentai game) Config.ini: https://pastebin.com/dKw6KGi1 Error Log (FallbackFontTextMeshPro): https://pastebin.com/8gEHBZLY Error Log (OverrideFontTextMeshPro) : https://pastebin.com/cySEUt6K AssetBundle file I created(contain English, Korean Character): https://mega.nz/file/rhUwVL6S#MkFYtxsmaLmVFkWLgQth8AwaPmTshFM-ZBxq__Nfp8k

Thanks for help.

gravydevsupreme commented 2 years ago

Seems that this game has stripped away the methods to load asset bundles synchronously. Will probably see if I can fallback to asynchronous loading in t his case.

gravydevsupreme commented 2 years ago

I managed to load your font file in the newly published beta12 using FallbackFontTextMeshPro.

orangespoons commented 2 years ago

I managed to load your font file in the newly published beta12 using FallbackFontTextMeshPro.

hmm. for me, it still doesn't work with some red error lines. (korean chars are broken into squares) Is it correct to set the config.ini file like this? config.ini: https://pastebin.com/0hu4QeJ1 and, log: https://pastebin.com/4wgZ9Jzf MelonLoader x64 0.5.2 + AutoTranslator 5.0.0 beta 12 + ezTransXP

Oh, and when creating an Font AssetBundle, I should follow the TextMeshPro version of the basegame, right? And... does it matter whether the compression method is lzma or lz4?

gravydevsupreme commented 2 years ago

In general I think you should just use the same version as the game if possible. Some versions are probably cross-compatible, though. But I don't know which.

About compression, as long as the unity engine used supports it, it probably does not matter.

I added a new version, but I have not changed anything that should get it working compared to beta12. Your configuration looks correct as well.

I used BepInEx 6, however. Although I do not believe that would have made the difference given the error you got. To me the error simply looks like you're using the wrong version.

XUnity.AutoTranslator-BepInEx-IL2CPP-5.0.0-beta13.zip XUnity.AutoTranslator-MelonMod-IL2CPP-5.0.0-beta13.zip

I do not believe you need to generate a new font. The one you uploaded is working with this game.

image

The log should look like so:

image

orangespoons commented 2 years ago

@gravydevsupreme Jesus, I changed the modloader from MelonLoader to BepinEX and it works fine. Could it be a MelonLoader problem? Anyway, thank you so much! Thank you for your time.

+And, found incompatibility with the BepInEx.MelonLoader.Loader.dll plugin. If use the BepInEx.MelonLoader.Loader.dll plugin, the translation is not working.

icls1337 commented 2 years ago

System.Runtime.Serialization.SerializationException: The constructor to deserialize an object of type 'System.Net.Http.HttpRequestException' was not found. ---> System.Runtime.Serialization.SerializationException: The constructor to deserialize an object of type 'System.Net.Http.HttpRequestException' was not found. at System.Runtime.Serialization.ObjectManager.GetConstructor (System.RuntimeType t) [0x00029] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject (System.Object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00034] in <986ed57b9a8f4699a3c59a69eb05944a>:0 --- End of inner exception stack trace --- at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject (System.Object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00058] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.ObjectManager.FixupSpecialObject (System.Runtime.Serialization.ObjectHolder holder) [0x00088] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.ObjectManager.DoFixups () [0x0005a] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00077] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x000a2] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00000] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) [0x00000] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at System.Runtime.Remoting.RemotingServices.DeserializeCallData (System.Byte[] array) [0x0001c] in <986ed57b9a8f4699a3c59a69eb05944a>:0 at (wrapper xdomain-invoke) BepInEx.IL2CPP.ProxyAssemblyGenerator+AppDomainRunner.GenerateAssembliesInternal(BepInEx.IL2CPP.ProxyAssemblyGenerator/AppDomainListener,string,BepInEx.IL2CPP.ProxyAssemblyGenerator/IL2CPPDumperType) at (wrapper remoting-invoke-with-check) BepInEx.IL2CPP.ProxyAssemblyGenerator+AppDomainRunner.GenerateAssembliesInternal(BepInEx.IL2CPP.ProxyAssemblyGenerator/AppDomainListener,string,BepInEx.IL2CPP.ProxyAssemblyGenerator/IL2CPPDumperType) at BepInEx.IL2CPP.ProxyAssemblyGenerator.GenerateAssemblies () [0x000ab] in :0 at BepInEx.IL2CPP.Preloader.Run () [0x002a6] in :0 at BepInEx.IL2CPP.UnityPreloaderRunner.PreloaderMain (System.String[] args) [0x0007e] in :0 at BepInEx.IL2CPP.DoorstopEntrypoint.Main (System.String[] args) [0x00088] in :0

icls1337 commented 2 years ago

I can't change fonts in Computer Tycoon using the same version of unityfs

use FallbackFontTextMeshPro can

gravydevsupreme commented 2 years ago

Closing this issue because an IL2CPP version has now been "officially" releases. Will no longer track this issue. Create separate issues to get help resolve problems.