diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml
new file mode 100644
index 0000000..6a67878
--- /dev/null
+++ b/.github/workflows/build_test.yml
@@ -0,0 +1,43 @@
+name: Build on release
+on:
+ release:
+ types: created
+
+jobs:
+ build:
+ runs-on: windows-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install Net
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+ cache: true
+
+ - name: Dowmload Powertoys
+ run: |
+ curl -L https://github.com/microsoft/PowerToys/releases/download/v0.84.0/PowerToysUserSetup-0.84.0-x64.exe -o powertoys.exe
+ run powertoys.exe -install -quiet -norestart
+ timeout /t 15
+ mkdir lib
+ copy "%LOCALAPPDATA%\PowerToys\PowerToys.Common.UI.dll" "lib\PowerToys.Common.UI.dll"
+ copy "%LOCALAPPDATA%\PowerToys\PowerToys.ManagedCommon.dll" "lib\PowerToys.ManagedCommon.dll"
+ copy "%LOCALAPPDATA%\PowerToys\PowerToys.Settings.UI.Lib.dll" "lib\PowerToys.Settings.UI.Lib.dll"
+ copy "%LOCALAPPDATA%\PowerToys\Wox.Infrastructure.dll" "lib\Wox.Infrastructure.dll"
+ copy "%LOCALAPPDATA%\PowerToys\Wox.Plugin.dll" "lib\Wox.Plugin.dll"
+
+ - name: Package
+ run: dotnet pack
+
+ - name: Upload
+ uses: actions/upload-artifact@v4
+ with:
+ # Artifact name
+ name: Translator_x64
+ # A file, directory or wildcard pattern that describes what to upload
+ path: "bin/out"
diff --git a/.gitignore b/.gitignore
index c003b4b..1fb58d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
obj
bin
*.dll
-lib
.vs/
-src/lib
\ No newline at end of file
+src/lib
+.idea
diff --git a/readme.md b/README.md
similarity index 100%
rename from readme.md
rename to README.md
diff --git a/Translater.csproj b/Translater.csproj
index 1111d94..fe42675 100644
--- a/Translater.csproj
+++ b/Translater.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
false
false
true
diff --git a/lib.bat b/lib.bat
index 8f14bb8..8920887 100644
--- a/lib.bat
+++ b/lib.bat
@@ -1,5 +1,11 @@
-copy "C:\Program Files\PowerToys\PowerToys.Common.UI.dll" "lib\PowerToys.Common.UI.dll"
-copy "C:\Program Files\PowerToys\PowerToys.ManagedCommon.dll" "lib\PowerToys.ManagedCommon.dll"
-copy "C:\Program Files\PowerToys\PowerToys.Settings.UI.Lib.dll" "lib\PowerToys.Settings.UI.Lib.dll"
-copy "C:\Program Files\PowerToys\Wox.Infrastructure.dll" "lib\Wox.Infrastructure.dll"
-copy "C:\Program Files\PowerToys\Wox.Plugin.dll" "lib\Wox.Plugin.dll"
\ No newline at end of file
+mkdir -p -e lib
+copy "C:\Program Files\PowerToys\PowerToys.Common.UI.dll" "lib\PowerToys.Common.UI.dll" /y
+copy "C:\Program Files\PowerToys\PowerToys.ManagedCommon.dll" "lib\PowerToys.ManagedCommon.dll" /y
+copy "C:\Program Files\PowerToys\PowerToys.Settings.UI.Lib.dll" "lib\PowerToys.Settings.UI.Lib.dll" /y
+copy "C:\Program Files\PowerToys\Wox.Infrastructure.dll" "lib\Wox.Infrastructure.dll" /y
+copy "C:\Program Files\PowerToys\Wox.Plugin.dll" "lib\Wox.Plugin.dll" /y
+copy "%LOCALAPPDATA%\PowerToys.Common.UI.dll" "lib\PowerToys.Common.UI.dll" /y
+copy "%LOCALAPPDATA%\PowerToys.ManagedCommon.dll" "lib\PowerToys.ManagedCommon.dll" /y
+copy "%LOCALAPPDATA%\PowerToys.Settings.UI.Lib.dll" "lib\PowerToys.Settings.UI.Lib.dll" /y
+copy "%LOCALAPPDATA%\Wox.Infrastructure.dll" "lib\Wox.Infrastructure.dll" /y
+copy "%LOCALAPPDATA%\Wox.Plugin.dll" "lib\Wox.Plugin.dll" /y
\ No newline at end of file
diff --git a/lib/.gitignore b/lib/.gitignore
new file mode 100644
index 0000000..5fb03d0
--- /dev/null
+++ b/lib/.gitignore
@@ -0,0 +1 @@
+./*
\ No newline at end of file
diff --git a/packages.lock.json b/packages.lock.json
new file mode 100644
index 0000000..f9ae177
--- /dev/null
+++ b/packages.lock.json
@@ -0,0 +1,6 @@
+{
+ "version": 1,
+ "dependencies": {
+ "net8.0-windows7.0": {}
+ }
+}
\ No newline at end of file
diff --git a/src/SettingHelper.cs b/src/SettingHelper.cs
index 6b08f24..963f9c3 100644
--- a/src/SettingHelper.cs
+++ b/src/SettingHelper.cs
@@ -4,27 +4,62 @@ namespace Translator
{
public class SettingHelper
{
- public static readonly List languagesKeys = new List { "auto", "zh-CHS", "zh-CHT", "en", "ja", "ko", "ru", "fr", "es", "ar", "de", "it", "he" };
- public static readonly List languagesOptions = new List { "auto", "Chinese (Simplified)", "Chinese (Traditional)", "English", "Japanese", "Korean", "Russian", "French", "Spanish", "Arabic", "German", "Italian", "Hebrew" };
- public static readonly List dictUrlPatternKeys = new List { "Youdao", "Oxford", "Cambridge" };
- public static readonly List dictUrlPatternValues = new List { "https://www.youdao.com/result?word={0}&lang=en", "https://www.oed.com/search/dictionary/?scope=Entries&q={0}", "https://dictionary.cambridge.org/us/dictionary/english/{0}" };
- public static readonly List pluginAdditionalOptions = GetAdditionalOptions();
- public string defaultLanguageKey = "auto";
- public bool enableSuggest = true;
- public bool enableAutoRead = false;
- public bool enableSecondLanuage = false;
- public string secondLanuageKey = "auto";
- public bool showOriginalQuery = false;
- public bool enableJumpToDict = false;
- public string dictUtlPattern = dictUrlPatternValues[0];
+ public static readonly List DictUrlPatternKeys = new List { "Youdao", "Oxford", "Cambridge" };
+ public static readonly List DictUrlPatternValues = new List { "https://www.youdao.com/result?word={0}&lang=en", "https://www.oed.com/search/dictionary/?scope=Entries&q={0}", "https://dictionary.cambridge.org/us/dictionary/english/{0}" };
+ public static readonly List PluginAdditionalOptions = GetAdditionalOptions();
+ public string DefaultLanguageKey = "auto";
+ public bool EnableSuggest = true;
+ public bool EnableAutoRead = false;
+ public bool EnableSecondLanuage = false;
+ public string SecondLanuageKey = "auto";
+ public bool ShowOriginalQuery = false;
+ public bool EnableJumpToDict = false;
+ public string DictUtlPattern = DictUrlPatternValues[0];
- public static List GetAdditionalOptions()
+ public abstract class Languages
{
- var lanuageItems = languagesOptions.Select((val, idx) =>
+ private static readonly Dictionary LanguageContrast = new Dictionary
{
- return new KeyValuePair(val, idx.ToString());
- }).ToList();
- var dictItems = dictUrlPatternKeys.Select((val, idx) =>
+ { "auto", "auto" },
+ { "zh-CHS", "Chinese (Simplified)" },
+ { "zh-CHT", "Chinese (Traditional)" },
+ { "en", "English" },
+ { "ja", "Japanese" },
+ { "ko", "Korean" },
+ { "ru", "Russian" },
+ { "fr", "French" },
+ { "es", "Spanish" },
+ { "ar", "Arabic" },
+ { "de", "German" },
+ { "it", "Italian" },
+ { "he", "Hebrew" },
+ };
+
+ private static readonly Dictionary LanguageAbbreviation = new Dictionary
+ {
+ { "zhs", "zh-CHS" },
+ { "zht", "zh-CHT" },
+ };
+
+ public static string MatchLanguageCode(string languageKey)
+ {
+ string defaultLanguageCode = "auto";
+ languageKey = languageKey is null ? defaultLanguageCode : languageKey;
+ LanguageAbbreviation.TryGetValue(languageKey, out languageKey);
+ LanguageContrast.TryGetValue(languageKey, out defaultLanguageCode);
+ return defaultLanguageCode;
+ }
+
+ public static List> ContrastList()
+ {
+ return LanguageContrast.ToList();
+ }
+ }
+
+ public static List GetAdditionalOptions()
+ {
+ var lanuageItems = Languages.ContrastList();
+ var dictItems = DictUrlPatternKeys.Select((val, idx) =>
{
return new KeyValuePair(val, idx.ToString());
}).ToList();
diff --git a/src/TranslateHelper.cs b/src/TranslateHelper.cs
index 54031a3..47d5174 100644
--- a/src/TranslateHelper.cs
+++ b/src/TranslateHelper.cs
@@ -2,6 +2,8 @@
using Wox.Plugin.Logger;
using Translator.Utils;
using System.Windows.Media;
+using Translator.Youdao;
+
namespace Translator;
public class TranslateFailedException : Exception
@@ -16,6 +18,11 @@ public class TranslateHelper
{
public struct TranslateTarget
{
+ public TranslateTarget(string source, string target)
+ {
+ src = source;
+ target = SettingHelper.Languages.MatchLanguageCode(target);
+ }
public string src;
public string toLan;
}
@@ -24,7 +31,7 @@ public struct TranslateTarget
private object initLock = new Object();
private long lastInitTime = 0;
private IPublicAPI publicAPI;
- private List translators;
+ private List translators;
private List translatorTypes;
private bool isSpeaking = false;
private bool isIniting = false;
@@ -35,7 +42,7 @@ public TranslateHelper(IPublicAPI publicAPI, string defaultLanguageKey = "auto")
null, null, null
};
translatorTypes = new List{
- typeof(Youdao.V2.YoudaoTranslator),
+ typeof(Translator),
typeof(Youdao.old.YoudaoTranslator),
typeof(Youdao.Backup.BackUpTranslator)
};
@@ -72,7 +79,7 @@ public List QueryTranslate(string raw, string translateFrom = "user
var target = ParseRawSrc(raw);
string src = target.src;
string toLan = toLanuage ?? target.toLan;
- Youdao.ITranslateResult? translateResult = null;
+ Translator.Youdao.ITranslateResult? translateResult = null;
int idx = 0;
translateResult = this.translators.FirstNotNoneCast((it) =>
{
@@ -199,7 +206,7 @@ public bool InitTranslater()
try
{
var tran = tp.GetConstructor(Type.EmptyTypes)?.Invoke(null);
- this.translators[idx] = tran as Youdao.ITranslator;
+ this.translators[idx] = tran as Translator.Youdao.ITranslator;
}
catch (Exception ex)
{
diff --git a/src/Translator.cs b/src/Translator.cs
index 6c50034..5ac3edb 100644
--- a/src/Translator.cs
+++ b/src/Translator.cs
@@ -25,7 +25,7 @@ public class Translator : IPlugin, IDisposable, IDelayedExecutionPlugin, ISettin
public string Name => "Translator";
public static string PluginID => "EY1EBAMTNIWIVLYM039DSOS5MWITDJOD";
public string Description => "A simple translation plugin, based on Youdao Translation";
- public IEnumerable AdditionalOptions => SettingHelper.pluginAdditionalOptions;
+ public IEnumerable AdditionalOptions => SettingHelper.PluginAdditionalOptions;
public PluginMetadata? queryMetaData = null;
public IPublicAPI? publicAPI = null;
public const int delayQueryMillSecond = 500;
@@ -186,7 +186,7 @@ public List Query(Query query, bool delayedExecution)
// get suggest in other thread
Task>? suggestTask = null;
- if (settingHelper.enableSuggest)
+ if (settingHelper.EnableSuggest)
{
suggestTask = Task.Run(() =>
{
@@ -196,11 +196,11 @@ public List Query(Query query, bool delayedExecution)
// get second translate result in other thread
Task>? secondTranslateTask = null;
- if (settingHelper.enableSecondLanuage && settingHelper.secondLanuageKey != null)
+ if (settingHelper.EnableSecondLanuage && settingHelper.SecondLanuageKey != null)
{
secondTranslateTask = Task.Run(() =>
{
- return translateHelper!.QueryTranslate(querySearch, toLanuage: settingHelper.secondLanuageKey);
+ return translateHelper!.QueryTranslate(querySearch, toLanuage: settingHelper.SecondLanuageKey);
});
}
@@ -220,7 +220,7 @@ public List Query(Query query, bool delayedExecution)
res.AddRange(suggest);
}
- if (settingHelper.showOriginalQuery)
+ if (settingHelper.ShowOriginalQuery)
{
res.Add(new ResultItem
{
@@ -243,7 +243,7 @@ public List Query(Query query, bool delayedExecution)
});
}
- if (settingHelper.enableAutoRead)
+ if (settingHelper.EnableAutoRead)
{
this.translateHelper?.Read(res.FirstOrDefault()?.Title);
}
@@ -273,7 +273,7 @@ public void Init(PluginInitContext context)
publicAPI = context.API;
var translaTask = Task.Factory.StartNew(() =>
{
- translateHelper = new TranslateHelper(publicAPI, this.settingHelper.defaultLanguageKey);
+ translateHelper = new TranslateHelper(publicAPI, this.settingHelper.DefaultLanguageKey);
});
suggestHelper = new Suggest.SuggestHelper(publicAPI);
historyHelper = new History.HistoryHelper();
@@ -306,7 +306,7 @@ public void UpdateSettings(PowerLauncherPluginSettings settings)
this.settingHelper.UpdateSettings(settings);
if (this.translateHelper != null)
- this.translateHelper.defaultLanguageKey = this.settingHelper.defaultLanguageKey;
+ this.translateHelper.defaultLanguageKey = this.settingHelper.DefaultLanguageKey;
}
public List LoadContextMenus(Result selectedResult)
{
@@ -340,7 +340,7 @@ public List LoadContextMenus(Result selectedResult)
}
};
- if (settingHelper.enableJumpToDict)
+ if (settingHelper.EnableJumpToDict)
{
contextMenu.Add(
new ContextMenuResult
@@ -348,7 +348,7 @@ public List LoadContextMenus(Result selectedResult)
Title = "Go to dictionary",
Action = context =>
{
- Helper.OpenInShell(string.Format(settingHelper.dictUtlPattern, selectedResult.Title));
+ Helper.OpenInShell(string.Format(settingHelper.DictUtlPattern, selectedResult.Title));
return false;
},
Glyph = "\xE721",
diff --git a/src/Youdao/YoudaoTranslatorV2.cs b/src/Youdao/YoudaoTranslatorV2.cs
index 79920a7..0eba714 100644
--- a/src/Youdao/YoudaoTranslatorV2.cs
+++ b/src/Youdao/YoudaoTranslatorV2.cs
@@ -8,7 +8,7 @@
using Translator.Utils;
using Wox.Plugin.Logger;
-namespace Translator.Youdao.V2;
+namespace Translator.Youdao;
public class KeyResponse
{