Ejemplo n.º 1
0
        public static void Configure()
        {
            try
            {
                ApplicationName = Path.GetFileNameWithoutExtension(ApplicationInformation.StartupPath);

                ServiceEndpoint = PluginEnvironment.Current.Preferences.GetOrDefault("Service", "Endpoint", KnownTranslateEndpointNames.GoogleTranslate);

                Language     = string.Intern(PluginEnvironment.Current.Preferences.GetOrDefault("General", "Language", DefaultLanguage));
                FromLanguage = string.Intern(PluginEnvironment.Current.Preferences.GetOrDefault("General", "FromLanguage", DefaultFromLanguage));

                TranslationDirectory = PluginEnvironment.Current.Preferences.GetOrDefault("Files", "Directory", "Translation");
                OutputFile           = PluginEnvironment.Current.Preferences.GetOrDefault("Files", "OutputFile", @"Translation\_AutoGeneratedTranslations.{lang}.txt");

                EnableIMGUI             = PluginEnvironment.Current.Preferences.GetOrDefault("TextFrameworks", "EnableIMGUI", false);
                EnableUGUI              = PluginEnvironment.Current.Preferences.GetOrDefault("TextFrameworks", "EnableUGUI", true);
                EnableNGUI              = PluginEnvironment.Current.Preferences.GetOrDefault("TextFrameworks", "EnableNGUI", true);
                EnableTextMeshPro       = PluginEnvironment.Current.Preferences.GetOrDefault("TextFrameworks", "EnableTextMeshPro", true);
                AllowPluginHookOverride = PluginEnvironment.Current.Preferences.GetOrDefault("TextFrameworks", "AllowPluginHookOverride", true);

                Delay = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "Delay", 0f);
                MaxCharactersPerTranslation   = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "MaxCharactersPerTranslation", 200);
                IgnoreWhitespaceInDialogue    = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "IgnoreWhitespaceInDialogue", true);
                IgnoreWhitespaceInNGUI        = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "IgnoreWhitespaceInNGUI", true);
                MinDialogueChars              = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "MinDialogueChars", 20);
                ForceSplitTextAfterCharacters = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "ForceSplitTextAfterCharacters", 0);
                CopyToClipboard            = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "CopyToClipboard", false);
                MaxClipboardCopyCharacters = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "MaxClipboardCopyCharacters", 1000);
                EnableUIResizing           = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "EnableUIResizing", true);
                EnableBatching             = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "EnableBatching", true);
                UseStaticTranslations      = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "UseStaticTranslations", true);
                OverrideFont             = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "OverrideFont", string.Empty);
                ResizeUILineSpacingScale = PluginEnvironment.Current.Preferences.GetOrDefault <float?>("Behaviour", "ResizeUILineSpacingScale", null);
                ForceUIResizing          = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "ForceUIResizing", false);
                IgnoreTextStartingWith   = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "IgnoreTextStartingWith", "\\u180e;")
                                           ?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(x => JsonHelper.Unescape(x)).ToArray() ?? new string[0];
                TextGetterCompatibilityMode = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "TextGetterCompatibilityMode", false);
                GameLogTextPaths            = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "GameLogTextPaths", string.Empty)
                                              ?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToHashSet() ?? new HashSet <string>();
                GameLogTextPaths.RemoveWhere(x => !x.StartsWith("/")); // clean up to ensure no 'empty' entries
                WhitespaceRemovalStrategy  = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "WhitespaceRemovalStrategy", WhitespaceHandlingStrategy.TrimPerNewline);
                RomajiPostProcessing       = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "RomajiPostProcessing", TextPostProcessing.ReplaceMacronWithCircumflex | TextPostProcessing.RemoveApostrophes);
                TranslationPostProcessing  = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "TranslationPostProcessing", TextPostProcessing.ReplaceMacronWithCircumflex);
                EnableExperimentalHooks    = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "EnableExperimentalHooks", false);
                ForceExperimentalHooks     = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "ForceExperimentalHooks", false);
                CacheRegexLookups          = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "CacheRegexLookups", false);
                CacheWhitespaceDifferences = PluginEnvironment.Current.Preferences.GetOrDefault("Behaviour", "CacheWhitespaceDifferences", true);

                TextureDirectory             = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "TextureDirectory", @"Translation\Texture");
                EnableTextureTranslation     = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "EnableTextureTranslation", false);
                EnableTextureDumping         = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "EnableTextureDumping", false);
                EnableTextureToggling        = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "EnableTextureToggling", false);
                EnableTextureScanOnSceneLoad = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "EnableTextureScanOnSceneLoad", false);
                EnableSpriteRendererHooking  = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "EnableSpriteRendererHooking", false);
                LoadUnmodifiedTextures       = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "LoadUnmodifiedTextures", false);
                DetectDuplicateTextureNames  = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "DetectDuplicateTextureNames", false);
                DuplicateTextureNames        = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "DuplicateTextureNames", string.Empty)
                                               ?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToHashSet() ?? new HashSet <string>();

                TextureHashGenerationStrategy = PluginEnvironment.Current.Preferences.GetOrDefault("Texture", "TextureHashGenerationStrategy", TextureHashGenerationStrategy.FromImageName);

                if (MaxCharactersPerTranslation > MaxMaxCharactersPerTranslation)
                {
                    PluginEnvironment.Current.Preferences["Behaviour"]["MaxCharactersPerTranslation"].Value = MaxMaxCharactersPerTranslation.ToString(CultureInfo.InvariantCulture);
                    MaxCharactersPerTranslation = MaxMaxCharactersPerTranslation;
                }

                UserAgent = PluginEnvironment.Current.Preferences.GetOrDefault("Http", "UserAgent", string.Empty);
                DisableCertificateValidation = PluginEnvironment.Current.Preferences.GetOrDefault("Http", "DisableCertificateValidation", GetInitialDisableCertificateChecks());

                EnablePrintHierarchy = PluginEnvironment.Current.Preferences.GetOrDefault("Debug", "EnablePrintHierarchy", false);
                EnableConsole        = PluginEnvironment.Current.Preferences.GetOrDefault("Debug", "EnableConsole", false);
                EnableDebugLogs      = PluginEnvironment.Current.Preferences.GetOrDefault("Debug", "EnableLog", false);

                EnableMigrations = PluginEnvironment.Current.Preferences.GetOrDefault("Migrations", "Enable", true);
                MigrationsTag    = PluginEnvironment.Current.Preferences.GetOrDefault("Migrations", "Tag", string.Empty);

                AutoTranslationsFilePath   = Path.Combine(PluginEnvironment.Current.TranslationPath, OutputFile.Replace("{lang}", Language)).Replace("/", "\\").Parameterize();
                UsesWhitespaceBetweenWords = LanguageHelper.RequiresWhitespaceUponLineMerging(FromLanguage);



                if (EnableMigrations)
                {
                    Migrate();
                }

                // update tag
                MigrationsTag = PluginEnvironment.Current.Preferences["Migrations"]["Tag"].Value = PluginData.Version;

                Save();
            }
            catch (Exception e)
            {
                XuaLogger.Current.Error(e, "An error occurred during configuration. Shutting plugin down.");

                IsShutdown = true;
            }
        }
Ejemplo n.º 2
0
        public static void Configure()
        {
            try
            {
                // clear configuration from old versions...
                var section = Config.Current.Preferences["AutoTranslator"];
                foreach (var key in section.Keys.ToList())
                {
                    section.DeleteKey(key.Key);
                }

                Config.Current.Preferences.DeleteSection("AutoTranslator");
                Config.Current.Preferences["Service"].DeleteKey("EnableSSL");
            }
            catch { }



            ServiceEndpoint = Config.Current.Preferences["Service"]["Endpoint"].GetOrDefault(KnownEndpointNames.GoogleTranslate, true);

            Language     = Config.Current.Preferences["General"]["Language"].GetOrDefault(DefaultLanguage);
            FromLanguage = Config.Current.Preferences["General"]["FromLanguage"].GetOrDefault(DefaultFromLanguage, true);

            TranslationDirectory = Config.Current.Preferences["Files"]["Directory"].GetOrDefault(@"Translation");
            OutputFile           = Config.Current.Preferences["Files"]["OutputFile"].GetOrDefault(@"Translation\_AutoGeneratedTranslations.{lang}.txt");

            EnableIMGUI             = Config.Current.Preferences["TextFrameworks"]["EnableIMGUI"].GetOrDefault(false);
            EnableUGUI              = Config.Current.Preferences["TextFrameworks"]["EnableUGUI"].GetOrDefault(true);
            EnableNGUI              = Config.Current.Preferences["TextFrameworks"]["EnableNGUI"].GetOrDefault(true);
            EnableTextMeshPro       = Config.Current.Preferences["TextFrameworks"]["EnableTextMeshPro"].GetOrDefault(true);
            EnableUtage             = Config.Current.Preferences["TextFrameworks"]["EnableUtage"].GetOrDefault(true);
            AllowPluginHookOverride = Config.Current.Preferences["TextFrameworks"]["AllowPluginHookOverride"].GetOrDefault(true);

            Delay = Config.Current.Preferences["Behaviour"]["Delay"].GetOrDefault(0f);
            MaxCharactersPerTranslation   = Config.Current.Preferences["Behaviour"]["MaxCharactersPerTranslation"].GetOrDefault(200);
            IgnoreWhitespaceInDialogue    = Config.Current.Preferences["Behaviour"]["IgnoreWhitespaceInDialogue"].GetOrDefault(ClrTypes.AdvEngine == null);
            IgnoreWhitespaceInNGUI        = Config.Current.Preferences["Behaviour"]["IgnoreWhitespaceInNGUI"].GetOrDefault(true);
            MinDialogueChars              = Config.Current.Preferences["Behaviour"]["MinDialogueChars"].GetOrDefault(20);
            ForceSplitTextAfterCharacters = Config.Current.Preferences["Behaviour"]["ForceSplitTextAfterCharacters"].GetOrDefault(0);
            CopyToClipboard            = Config.Current.Preferences["Behaviour"]["CopyToClipboard"].GetOrDefault(false);
            MaxClipboardCopyCharacters = Config.Current.Preferences["Behaviour"]["MaxClipboardCopyCharacters"].GetOrDefault(450);
            EnableUIResizing           = Config.Current.Preferences["Behaviour"]["EnableUIResizing"].GetOrDefault(true);
            EnableBatching             = Config.Current.Preferences["Behaviour"]["EnableBatching"].GetOrDefault(true);
            TrimAllText              = Config.Current.Preferences["Behaviour"]["TrimAllText"].GetOrDefault(ClrTypes.AdvEngine == null);
            UseStaticTranslations    = Config.Current.Preferences["Behaviour"]["UseStaticTranslations"].GetOrDefault(true);
            OverrideFont             = Config.Current.Preferences["Behaviour"]["OverrideFont"].GetOrDefault(string.Empty);
            ResizeUILineSpacingScale = Config.Current.Preferences["Behaviour"]["ResizeUILineSpacingScale"].GetOrDefault <float?>(null, true);
            ForceUIResizing          = Config.Current.Preferences["Behaviour"]["ForceUIResizing"].GetOrDefault(false);
            IgnoreTextStartingWith   = Config.Current.Preferences["Behaviour"]["IgnoreTextStartingWith"].GetOrDefault("\\u180e;", true)
                                       ?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.UnescapeJson()).ToArray() ?? new string[0];

            TextureDirectory             = Config.Current.Preferences["Texture"]["TextureDirectory"].GetOrDefault(@"Translation\Texture");
            EnableTextureTranslation     = Config.Current.Preferences["Texture"]["EnableTextureTranslation"].GetOrDefault(false);
            EnableTextureDumping         = Config.Current.Preferences["Texture"]["EnableTextureDumping"].GetOrDefault(false);
            EnableTextureToggling        = Config.Current.Preferences["Texture"]["EnableTextureToggling"].GetOrDefault(false);
            EnableTextureScanOnSceneLoad = Config.Current.Preferences["Texture"]["EnableTextureScanOnSceneLoad"].GetOrDefault(false);
            LoadUnmodifiedTextures       = Config.Current.Preferences["Texture"]["LoadUnmodifiedTextures"].GetOrDefault(false);
            //DeleteUnmodifiedTextures = Config.Current.Preferences[ "Texture" ][ "DeleteUnmodifiedTextures" ].GetOrDefault( false );
            TextureHashGenerationStrategy = Config.Current.Preferences["Texture"]["TextureHashGenerationStrategy"].GetOrDefault(TextureHashGenerationStrategy.FromImageName);

            // special handling because of enum parsing
            try
            {
                WhitespaceRemovalStrategy = Config.Current.Preferences["Behaviour"]["WhitespaceRemovalStrategy"].GetOrDefault(WhitespaceHandlingStrategy.TrimPerNewline);
            }
            catch (Exception e)
            {
                WhitespaceRemovalStrategy = WhitespaceHandlingStrategy.TrimPerNewline;

                Logger.Current.Warn(e, "An error occurred while configuring 'WhitespaceRemovalStrategy'. Using default.");
            }

            UserAgent = Config.Current.Preferences["Http"]["UserAgent"].GetOrDefault(string.Empty);

            GoogleAPIKey = Config.Current.Preferences["GoogleLegitimate"]["GoogleAPIKey"].GetOrDefault("");

            BingOcpApimSubscriptionKey = Config.Current.Preferences["BingLegitimate"]["OcpApimSubscriptionKey"].GetOrDefault("");

            BaiduAppId     = Config.Current.Preferences["Baidu"]["BaiduAppId"].GetOrDefault("");
            BaiduAppSecret = Config.Current.Preferences["Baidu"]["BaiduAppSecret"].GetOrDefault("");

            YandexAPIKey = Config.Current.Preferences["Yandex"]["YandexAPIKey"].GetOrDefault("");

            WatsonAPIUrl      = Config.Current.Preferences["Watson"]["WatsonAPIUrl"].GetOrDefault("");
            WatsonAPIUsername = Config.Current.Preferences["Watson"]["WatsonAPIUsername"].GetOrDefault("");
            WatsonAPIPassword = Config.Current.Preferences["Watson"]["WatsonAPIPassword"].GetOrDefault("");

            EnablePrintHierarchy = Config.Current.Preferences["Debug"]["EnablePrintHierarchy"].GetOrDefault(false);
            EnableConsole        = Config.Current.Preferences["Debug"]["EnableConsole"].GetOrDefault(false);
            EnableDebugLogs      = Config.Current.Preferences["Debug"]["EnableLog"].GetOrDefault(false);

            EnableMigrations = Config.Current.Preferences["Migrations"]["Enable"].GetOrDefault(true);
            MigrationsTag    = Config.Current.Preferences["Migrations"]["Tag"].GetOrDefault(string.Empty);

            AutoTranslationsFilePath   = Path.Combine(Config.Current.DataPath, OutputFile.Replace("{lang}", Language));
            UsesWhitespaceBetweenWords = TextHelper.RequiresWhitespaceUponLineMerging(FromLanguage);

            if (EnableMigrations)
            {
                Migrate();
            }

            // update tag
            MigrationsTag = Config.Current.Preferences["Migrations"]["Tag"].Value = PluginData.Version;

            Config.Current.SaveConfig();
        }