Fix "NoTranslation" bug for plugins

1. fix #475
2. remove GetLanguagesFolder, part of #468
3. bug introduced since 1f939ff3
This commit is contained in:
bao-qian 2016-02-17 15:49:55 +00:00
parent e885cb6c45
commit 79b4716b95
16 changed files with 30 additions and 85 deletions

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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<Language> LoadAvailableLanguages()

View File

@ -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<IPluginI18n>().
Select(plugin => InternationalizationManager.Instance.GetLanguageFile(((IPluginI18n)plugin.Plugin).GetLanguagesFolder())).
Where(file => !string.IsNullOrEmpty(file)))
foreach (var plugin in PluginManager.GetPluginsForInterface<IPluginI18n>())
{
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.");
}
}
}
}

View File

@ -14,5 +14,9 @@
{
PluginName = pluginName;
}
public WoxPluginException(string msg) : base(msg)
{
}
}
}

View File

@ -32,8 +32,6 @@ namespace Wox.Plugin
/// </summary>
public interface IPluginI18n : IFeatures
{
string GetLanguagesFolder();
string GetTranslatedPluginTitle();
string GetTranslatedPluginDescription();