private IEnumerator HookTranslator()
        {
            Logger.Log("Waiting for hook...",Level.Info);
            yield return new WaitForEndOfFrame();

            var success = true;

            try
            {
                success = HookHelper.HookTranslationEvent(this);
            }
            catch (Exception e)
            {
                Logger.LogError("Exception while hooking:",e);
                success = false;
            }
            if (!success)
            {
                Destroy(this);
                yield break;
            }
            Logger.Log("Hook successful!",Level.Info);
        }
        public void Awake()
        {
            Logger.Init(this.DataPath, Preferences);
            try
            {
                DontDestroyOnLoad(this);
                LoadConfig();
                Logger.Log($"Starting {CoreUtil.PLUGIN_NAME} v{CoreUtil.PLUGIN_VERSION}", Level.General);
                if (!_pluginActive)
                {
                    Logger.Log("Plugin is disabled.", Level.General);
                    if (CoreUtil.FinishLoadingConfig())
                    {
                        SaveConfig();
                    }
                    Destroy(this);
                    return;
                }

                var success = LoadTranslator();
                if (!success)
                {
                    Logger.LogError($"Failed to load Translation module '{_activeTranslator}'");
                    if (CoreUtil.FinishLoadingConfig())
                    {
                        SaveConfig();
                    }
                    Destroy(this);
                    return;
                }

                Translator.LoadConfig();
                _preprocessor.LoadConfig();
                if (CoreUtil.FinishLoadingConfig())
                {
                    SaveConfig();
                }

                LoadIgnores();

                var translatorPlugin = HookHelper.DetectTranslationPlugin();
                if (translatorPlugin == HookHelper.ParentTranslationPlugin.None)
                {
                    var bldr = new StringBuilder("Found none of the supported translation plugins!\n");
                    bldr.AppendLine("Make sure, that one of the following is installed:");
                    bldr.AppendLine(" - Yet Another Translator (recommended)");
                    bldr.AppendLine(" - Unified Translation loader (only for ReiPatcher)");
                    bldr.AppendLine(" - Translation Plus (only for Sybaris)");
                    Logger.LogError(bldr.ToString());
                    Destroy(this);
                    return;
                }

                Logger.Log($"Initializing Module {_activeTranslator}", Level.Info);
                success = Translator.Init();
                if (!success)
                {
                    Logger.LogError($"Failed to load Translation module {_activeTranslator}");
                    Destroy(this);
                    return;
                }

                StartCoroutine(HookTranslator());

                Logger.Log($"Using translation cache file @: {TranslationFilePath}", Level.Info);
                LoadCacheFromDisk();

                if (_dumpCache && _cacheDumpFrequenzy == CacheDumpFrequenzy.Periodic)
                {
                    StartCoroutine(PeriodicDumpCache());
                }

                if (_preprocessor.Init(DataPath))
                {
                    Logger.Log("Successfully loaded text preprocessor", Level.Info);
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
                Destroy(this);
            }
        }