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; } }
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(); }