Quellcode durchsuchen

support for multiple root folders for plugins, translation and config

randoman vor 6 Jahren
Ursprung
Commit
e99f5306ba

+ 10 - 3
src/XUnity.AutoTranslator.Plugin.BepIn-5x/AutoTranslatorPlugin.cs

@@ -19,8 +19,11 @@ namespace XUnity.AutoTranslator.Plugin.BepIn_5x
 
       public AutoTranslatorPlugin()
       {
-         DataPath = @"BepInEx\plugins\XUnity.AutoTranslator";
-         _configPath = Path.Combine( DataPath, "AutoTranslatorConfig.ini" );
+         PluginPath = @"BepInEx\plugins\XUnity.AutoTranslator";
+         ConfigPath = @"BepInEx\config";
+         TranslationPath = @"BepInEx";
+
+         _configPath = Path.Combine( ConfigPath, "AutoTranslatorConfig.ini" );
          XuaLogger.Current = new BepInLogger();
       }
 
@@ -32,7 +35,11 @@ namespace XUnity.AutoTranslator.Plugin.BepIn_5x
          }
       }
 
-      public string DataPath { get; }
+      public string PluginPath { get; }
+
+      public string ConfigPath { get; }
+
+      public string TranslationPath { get; }
 
       public IniFile ReloadConfig()
       {

+ 8 - 3
src/XUnity.AutoTranslator.Plugin.BepIn/AutoTranslatorPlugin.cs

@@ -16,11 +16,12 @@ namespace XUnity.AutoTranslator.Plugin.BepIn
    {
       private IniFile _file;
       private string _configPath;
+      private readonly string _dataPath;
 
       public AutoTranslatorPlugin()
       {
-         DataPath = "BepInEx";
-         _configPath = Path.Combine( DataPath, "AutoTranslatorConfig.ini" );
+         _dataPath = "BepInEx";
+         _configPath = Path.Combine( _dataPath, "AutoTranslatorConfig.ini" );
          XuaLogger.Current = new BepInLogger();
       }
 
@@ -32,7 +33,11 @@ namespace XUnity.AutoTranslator.Plugin.BepIn
          }
       }
 
-      public string DataPath { get; }
+      public string PluginPath => _dataPath;
+
+      public string TranslationPath => _dataPath;
+
+      public string ConfigPath => _dataPath;
 
       public IniFile ReloadConfig()
       {

+ 2 - 2
src/XUnity.AutoTranslator.Plugin.Core/Configuration/Settings.cs

@@ -16,7 +16,7 @@ namespace XUnity.AutoTranslator.Plugin.Core.Configuration
    {
       // cannot be changed
       public static readonly int MaxFailuresForSameTextPerEndpoint = 3;
-      public static readonly string PluginFolder = "Translators";
+      public static readonly string TranslatorsFolder = "Translators";
       public static readonly int MaxMaxCharactersPerTranslation = 500;
       public static readonly string DefaultLanguage = "en";
       public static readonly string DefaultFromLanguage = "ja";
@@ -174,7 +174,7 @@ namespace XUnity.AutoTranslator.Plugin.Core.Configuration
             EnableMigrations = PluginEnvironment.Current.Preferences.GetOrDefault( "Migrations", "Enable", true );
             MigrationsTag = PluginEnvironment.Current.Preferences.GetOrDefault( "Migrations", "Tag", string.Empty );
 
-            AutoTranslationsFilePath = Path.Combine( PluginEnvironment.Current.DataPath, OutputFile.Replace( "{lang}", Language ) ).Replace( "/", "\\" ).Parameterize();
+            AutoTranslationsFilePath = Path.Combine( PluginEnvironment.Current.TranslationPath, OutputFile.Replace( "{lang}", Language ) ).Replace( "/", "\\" ).Parameterize();
             UsesWhitespaceBetweenWords = LanguageHelper.RequiresWhitespaceUponLineMerging( FromLanguage );
 
 

+ 5 - 7
src/XUnity.AutoTranslator.Plugin.Core/DefaultPluginEnvironment.cs

@@ -27,13 +27,11 @@ namespace XUnity.AutoTranslator.Plugin.Core
          }
       }
 
-      public string DataPath
-      {
-         get
-         {
-            return _dataFolder;
-         }
-      }
+      public string PluginPath => _dataFolder;
+
+      public string TranslationPath => _dataFolder;
+
+      public string ConfigPath => _dataFolder;
 
       public void SaveConfig()
       {

+ 1 - 1
src/XUnity.AutoTranslator.Plugin.Core/Endpoints/InitializationContext.cs

@@ -33,7 +33,7 @@ namespace XUnity.AutoTranslator.Plugin.Core.Endpoints
       /// </summary>
       public string DestinationLanguage { get; }
 
-      public string PluginDirectory => PluginEnvironment.Current.DataPath;
+      public string PluginDirectory => PluginEnvironment.Current.PluginPath;
 
       public void DisableCertificateChecksFor( params string[] hosts )
       {

+ 11 - 1
src/XUnity.AutoTranslator.Plugin.Core/IPluginEnvironment.cs

@@ -17,7 +17,17 @@ namespace XUnity.AutoTranslator.Plugin.Core
       /// <summary>
       /// Gets the path the plugin is located at.
       /// </summary>
-      string DataPath { get; }
+      string PluginPath { get; }
+
+      /// <summary>
+      /// Gets or sets the path representing the root of the translations.
+      /// </summary>
+      string TranslationPath { get; }
+
+      /// <summary>
+      /// Gets or sets the path representing the config directory.
+      /// </summary>
+      string ConfigPath { get; }
 
       /// <summary>
       /// Gets the preferences file.

+ 2 - 2
src/XUnity.AutoTranslator.Plugin.Core/TextTranslationCache.cs

@@ -34,7 +34,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
 
       private static IEnumerable<string> GetTranslationFiles()
       {
-         return Directory.GetFiles( Path.Combine( PluginEnvironment.Current.DataPath, Settings.TranslationDirectory ).Parameterize(), $"*.txt", SearchOption.AllDirectories )
+         return Directory.GetFiles( Path.Combine( PluginEnvironment.Current.TranslationPath, Settings.TranslationDirectory ).Parameterize(), $"*.txt", SearchOption.AllDirectories )
             .Select( x => x.Replace( "/", "\\" ) );
       }
 
@@ -45,7 +45,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
             var startTime = Time.realtimeSinceStartup;
             lock( _writeToFileSync )
             {
-               Directory.CreateDirectory( Path.Combine( PluginEnvironment.Current.DataPath, Settings.TranslationDirectory ).Parameterize() );
+               Directory.CreateDirectory( Path.Combine( PluginEnvironment.Current.TranslationPath, Settings.TranslationDirectory ).Parameterize() );
                Directory.CreateDirectory( Path.GetDirectoryName( Settings.AutoTranslationsFilePath ) );
 
                var mainTranslationFile = Settings.AutoTranslationsFilePath;

+ 3 - 3
src/XUnity.AutoTranslator.Plugin.Core/TextureTranslationCache.cs

@@ -22,7 +22,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
 
       private IEnumerable<string> GetTextureFiles()
       {
-         return Directory.GetFiles( Path.Combine( PluginEnvironment.Current.DataPath, Settings.TextureDirectory ).Parameterize(), $"*.png", SearchOption.AllDirectories )
+         return Directory.GetFiles( Path.Combine( PluginEnvironment.Current.TranslationPath, Settings.TextureDirectory ).Parameterize(), $"*.png", SearchOption.AllDirectories )
             .Select( x => x.Replace( "/", "\\" ) );
       }
 
@@ -36,7 +36,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
 
                _translatedImages.Clear();
                _untranslatedImages.Clear();
-               Directory.CreateDirectory( Path.Combine( PluginEnvironment.Current.DataPath, Settings.TextureDirectory ).Parameterize() );
+               Directory.CreateDirectory( Path.Combine( PluginEnvironment.Current.TranslationPath, Settings.TextureDirectory ).Parameterize() );
                foreach( var fullFileName in GetTextureFiles() )
                {
                   RegisterImageFromFile( fullFileName );
@@ -107,7 +107,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
       internal void RegisterImageFromData( string textureName, string key, byte[] data )
       {
          var name = textureName.SanitizeForFileSystem();
-         var root = Path.Combine( PluginEnvironment.Current.DataPath, Settings.TextureDirectory ).Parameterize();
+         var root = Path.Combine( PluginEnvironment.Current.TranslationPath, Settings.TextureDirectory ).Parameterize();
          var originalHash = HashHelper.Compute( data );
 
          // allow hash and key to be the same; only store one of them then!

+ 1 - 1
src/XUnity.AutoTranslator.Plugin.Core/TranslationManager.cs

@@ -100,7 +100,7 @@ namespace XUnity.AutoTranslator.Plugin.Core
 
       public void CreateEndpoints( GameObject go, InitializationContext context )
       {
-         var pluginFolder = Path.Combine( PluginEnvironment.Current.DataPath, Settings.PluginFolder );
+         var pluginFolder = Path.Combine( PluginEnvironment.Current.PluginPath, Settings.TranslatorsFolder );
          var dynamicTypes = AssemblyLoader.GetAllTypesOf<ITranslateEndpoint>( pluginFolder );
 
          foreach( var type in dynamicTypes )

+ 8 - 3
src/XUnity.AutoTranslator.Plugin.IPA/AutoTranslatorPlugin.cs

@@ -16,11 +16,12 @@ namespace XUnity.AutoTranslator.Plugin.IPA
    {
       private IniFile _file;
       private string _configPath;
+      private readonly string _dataPath;
 
       public AutoTranslatorPlugin()
       {
-         DataPath = "Plugins";
-         _configPath = Path.Combine( DataPath, "AutoTranslatorConfig.ini" );
+         _dataPath = "Plugins";
+         _configPath = Path.Combine( _dataPath, "AutoTranslatorConfig.ini" );
       }
 
       public IniFile Preferences
@@ -31,7 +32,11 @@ namespace XUnity.AutoTranslator.Plugin.IPA
          }
       }
 
-      public string DataPath { get; }
+      public string PluginPath => _dataPath;
+
+      public string TranslationPath => _dataPath;
+
+      public string ConfigPath => _dataPath;
 
       public IniFile ReloadConfig()
       {

+ 6 - 0
src/XUnity.AutoTranslator.Plugin.UnityInjector/AutoTranslatorPlugin.cs

@@ -14,6 +14,12 @@ namespace XUnity.AutoTranslator.Plugin.UnityInjector
    [PluginName( PluginData.Name ), PluginVersion( PluginData.Version )]
    public class AutoTranslatorPlugin : PluginBase, IPluginEnvironment
    {
+      public string PluginPath => DataPath;
+
+      public string TranslationPath => DataPath;
+
+      public string ConfigPath => DataPath;
+
       void IPluginEnvironment.SaveConfig()
       {
          SaveConfig();