From 79b4716b95c5ebb974c0f38c821b6138b67161e3 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Wed, 17 Feb 2016 15:49:55 +0000 Subject: [PATCH] Fix "NoTranslation" bug for plugins 1. fix #475 2. remove GetLanguagesFolder, part of #468 3. bug introduced since 1f939ff3 --- Plugins/Wox.Plugin.CMD/CMD.cs | 6 ---- Plugins/Wox.Plugin.Caculator/Calculator.cs | 8 ------ Plugins/Wox.Plugin.Color/Color.cs | 6 ---- .../Wox.Plugin.ControlPanel/ControlPanel.cs | 5 ---- Plugins/Wox.Plugin.Everything/Main.cs | 6 ---- Plugins/Wox.Plugin.Folder/FolderPlugin.cs | 6 ---- .../PluginIndicator.cs | 7 ----- Plugins/Wox.Plugin.PluginManagement/Main.cs | 6 ---- Plugins/Wox.Plugin.Program/Programs.cs | 4 --- Plugins/Wox.Plugin.Sys/Sys.cs | 6 ---- Plugins/Wox.Plugin.Url/UrlPlugin.cs | 7 ----- .../Wox.Plugin.WebSearch/WebSearchPlugin.cs | 7 ----- Wox.Core/Resource/Internationalization.cs | 7 +++-- Wox.Core/Resource/ResourceMerger.cs | 28 +++++++++++++++---- .../Exception/WoxPluginException.cs | 4 +++ Wox.Plugin/Feature.cs | 2 -- 16 files changed, 30 insertions(+), 85 deletions(-) diff --git a/Plugins/Wox.Plugin.CMD/CMD.cs b/Plugins/Wox.Plugin.CMD/CMD.cs index d1f6220efb..fe6d29e3f7 100644 --- a/Plugins/Wox.Plugin.CMD/CMD.cs +++ b/Plugins/Wox.Plugin.CMD/CMD.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Windows.Forms; using WindowsInput; using WindowsInput.Native; -using Wox.Infrastructure; using Wox.Infrastructure.Hotkey; using Wox.Infrastructure.Logger; using Control = System.Windows.Controls.Control; @@ -200,11 +199,6 @@ namespace Wox.Plugin.CMD return new CMDSetting(); } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_cmd_plugin_name"); diff --git a/Plugins/Wox.Plugin.Caculator/Calculator.cs b/Plugins/Wox.Plugin.Caculator/Calculator.cs index 6a496666fe..315ffd2db0 100644 --- a/Plugins/Wox.Plugin.Caculator/Calculator.cs +++ b/Plugins/Wox.Plugin.Caculator/Calculator.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.IO; using System.Runtime.InteropServices; using System.Text.RegularExpressions; using System.Windows; -using Wox.Infrastructure; using YAMP; namespace Wox.Plugin.Caculator @@ -93,12 +91,6 @@ namespace Wox.Plugin.Caculator this.context = context; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_caculator_plugin_name"); diff --git a/Plugins/Wox.Plugin.Color/Color.cs b/Plugins/Wox.Plugin.Color/Color.cs index 2f45ce7836..7ae6f453ad 100644 --- a/Plugins/Wox.Plugin.Color/Color.cs +++ b/Plugins/Wox.Plugin.Color/Color.cs @@ -5,7 +5,6 @@ using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Windows; -using Wox.Infrastructure; namespace Wox.Plugin.Color { @@ -109,11 +108,6 @@ namespace Wox.Plugin.Color } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_color_plugin_name"); diff --git a/Plugins/Wox.Plugin.ControlPanel/ControlPanel.cs b/Plugins/Wox.Plugin.ControlPanel/ControlPanel.cs index 1d403f468b..f0b7cfe883 100644 --- a/Plugins/Wox.Plugin.ControlPanel/ControlPanel.cs +++ b/Plugins/Wox.Plugin.ControlPanel/ControlPanel.cs @@ -82,11 +82,6 @@ namespace Wox.Plugin.ControlPanel return false; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_controlpanel_plugin_name"); diff --git a/Plugins/Wox.Plugin.Everything/Main.cs b/Plugins/Wox.Plugin.Everything/Main.cs index 447c7db7cd..73956de8c1 100644 --- a/Plugins/Wox.Plugin.Everything/Main.cs +++ b/Plugins/Wox.Plugin.Everything/Main.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Runtime.InteropServices; using System.ServiceProcess; using System.Windows; -using Wox.Infrastructure; using Wox.Plugin.Everything.Everything; namespace Wox.Plugin.Everything @@ -256,11 +255,6 @@ namespace Wox.Plugin.Everything return directory; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return _context.API.GetTranslation("wox_plugin_everything_plugin_name"); diff --git a/Plugins/Wox.Plugin.Folder/FolderPlugin.cs b/Plugins/Wox.Plugin.Folder/FolderPlugin.cs index dc2905accb..9fe2491019 100644 --- a/Plugins/Wox.Plugin.Folder/FolderPlugin.cs +++ b/Plugins/Wox.Plugin.Folder/FolderPlugin.cs @@ -5,7 +5,6 @@ using System.IO; using System.Linq; using System.Windows; using System.Windows.Controls; -using Wox.Infrastructure; namespace Wox.Plugin.Folder { @@ -244,11 +243,6 @@ namespace Wox.Plugin.Folder return results; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_folder_plugin_name"); diff --git a/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs b/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs index be2ec2990e..63f0c2e186 100644 --- a/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs +++ b/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using Wox.Core.Plugin; using Wox.Core.UserSettings; -using Wox.Infrastructure; namespace Wox.Plugin.PluginIndicator { @@ -39,11 +37,6 @@ namespace Wox.Plugin.PluginIndicator this.context = context; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_pluginindicator_plugin_name"); diff --git a/Plugins/Wox.Plugin.PluginManagement/Main.cs b/Plugins/Wox.Plugin.PluginManagement/Main.cs index 3a0b203be9..1f333d650d 100644 --- a/Plugins/Wox.Plugin.PluginManagement/Main.cs +++ b/Plugins/Wox.Plugin.PluginManagement/Main.cs @@ -7,7 +7,6 @@ using System.Text; using System.Threading; using System.Windows; using Newtonsoft.Json; -using Wox.Infrastructure; namespace Wox.Plugin.PluginManagement { @@ -242,11 +241,6 @@ namespace Wox.Plugin.PluginManagement this.context = context; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_plugin_management_plugin_name"); diff --git a/Plugins/Wox.Plugin.Program/Programs.cs b/Plugins/Wox.Plugin.Program/Programs.cs index dc74d164ea..dae6cfb37d 100644 --- a/Plugins/Wox.Plugin.Program/Programs.cs +++ b/Plugins/Wox.Plugin.Program/Programs.cs @@ -175,10 +175,6 @@ namespace Wox.Plugin.Program #endregion - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_program_plugin_name"); diff --git a/Plugins/Wox.Plugin.Sys/Sys.cs b/Plugins/Wox.Plugin.Sys/Sys.cs index 2484911891..ab1b8c7f93 100644 --- a/Plugins/Wox.Plugin.Sys/Sys.cs +++ b/Plugins/Wox.Plugin.Sys/Sys.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Forms; @@ -190,11 +189,6 @@ namespace Wox.Plugin.Sys }); } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_sys_plugin_name"); diff --git a/Plugins/Wox.Plugin.Url/UrlPlugin.cs b/Plugins/Wox.Plugin.Url/UrlPlugin.cs index 5a19028fc8..191b17dfca 100644 --- a/Plugins/Wox.Plugin.Url/UrlPlugin.cs +++ b/Plugins/Wox.Plugin.Url/UrlPlugin.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Text.RegularExpressions; -using Wox.Infrastructure; namespace Wox.Plugin.Url { @@ -103,11 +101,6 @@ namespace Wox.Plugin.Url this.context = context; } - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return context.API.GetTranslation("wox_plugin_url_plugin_name"); diff --git a/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs b/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs index 10fc03fa2a..4a4c6a1f66 100644 --- a/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs +++ b/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Linq; using System.Windows.Controls; -using Wox.Infrastructure; using Wox.Plugin.WebSearch.Annotations; using Wox.Plugin.WebSearch.SuggestionSources; @@ -90,11 +88,6 @@ namespace Wox.Plugin.WebSearch #endregion - public string GetLanguagesFolder() - { - return Path.Combine(WoxDirectroy.Executable, "Languages"); - } - public string GetTranslatedPluginTitle() { return Context.API.GetTranslation("wox_plugin_websearch_plugin_name"); diff --git a/Wox.Core/Resource/Internationalization.cs b/Wox.Core/Resource/Internationalization.cs index 14aad3c1f3..dbadcf094b 100644 --- a/Wox.Core/Resource/Internationalization.cs +++ b/Wox.Core/Resource/Internationalization.cs @@ -15,10 +15,10 @@ namespace Wox.Core.Resource public Internationalization() { DirectoryName = "Languages"; - MakesureThemeDirectoriesExist(); + MakesureDirectoriesExist(); } - private void MakesureThemeDirectoriesExist() + private void MakesureDirectoriesExist() { if (!Directory.Exists(DirectoryPath)) { @@ -73,10 +73,11 @@ namespace Wox.Core.Resource public override ResourceDictionary GetResourceDictionary() { - return new ResourceDictionary + var dictionary = new ResourceDictionary { Source = new Uri(GetLanguageFile(DirectoryPath), UriKind.Absolute) }; + return dictionary; } public List LoadAvailableLanguages() diff --git a/Wox.Core/Resource/ResourceMerger.cs b/Wox.Core/Resource/ResourceMerger.cs index 61f3485ae6..1f17dd7b53 100644 --- a/Wox.Core/Resource/ResourceMerger.cs +++ b/Wox.Core/Resource/ResourceMerger.cs @@ -1,9 +1,11 @@ using System; using System.IO; using System.Linq; +using System.Reflection; using System.Windows; using Wox.Core.Plugin; using Wox.Plugin; +using Wox.Infrastructure.Exception; namespace Wox.Core.Resource { @@ -33,14 +35,28 @@ namespace Wox.Core.Resource internal static void UpdatePluginLanguages() { RemoveResource(PluginManager.DirectoryName); - foreach (var languageFile in PluginManager.GetPluginsForInterface(). - Select(plugin => InternationalizationManager.Instance.GetLanguageFile(((IPluginI18n)plugin.Plugin).GetLanguagesFolder())). - Where(file => !string.IsNullOrEmpty(file))) + foreach (var plugin in PluginManager.GetPluginsForInterface()) { - Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary + var location = Assembly.GetAssembly(plugin.Plugin.GetType()).Location; + var directoryName = Path.GetDirectoryName(location); + if (directoryName != null) { - Source = new Uri(languageFile, UriKind.Absolute) - }); + var internationalization = InternationalizationManager.Instance; + var folder = Path.Combine(directoryName, internationalization.DirectoryName); + var file = internationalization.GetLanguageFile(folder); + if (!string.IsNullOrEmpty(file)) + { + Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary + { + Source = new Uri(file, UriKind.Absolute) + }); + } + } + else + { + throw new WoxPluginException(plugin.Metadata.Name, "Can't find plugin location."); + } + } } } diff --git a/Wox.Infrastructure/Exception/WoxPluginException.cs b/Wox.Infrastructure/Exception/WoxPluginException.cs index b68af28ab0..d94788b4db 100644 --- a/Wox.Infrastructure/Exception/WoxPluginException.cs +++ b/Wox.Infrastructure/Exception/WoxPluginException.cs @@ -14,5 +14,9 @@ { PluginName = pluginName; } + + public WoxPluginException(string msg) : base(msg) + { + } } } diff --git a/Wox.Plugin/Feature.cs b/Wox.Plugin/Feature.cs index c69e30c4e1..2b21a336b2 100644 --- a/Wox.Plugin/Feature.cs +++ b/Wox.Plugin/Feature.cs @@ -32,8 +32,6 @@ namespace Wox.Plugin /// public interface IPluginI18n : IFeatures { - string GetLanguagesFolder(); - string GetTranslatedPluginTitle(); string GetTranslatedPluginDescription();