diff --git a/Wox.Core/Resource/LocalizationConverter.cs b/Wox.Core/Resource/LocalizationConverter.cs
new file mode 100644
index 000000000..d86bf5f7e
--- /dev/null
+++ b/Wox.Core/Resource/LocalizationConverter.cs
@@ -0,0 +1,37 @@
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Reflection;
+using System.Windows.Data;
+
+namespace Wox.Core
+{
+ public class LocalizationConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (targetType == typeof(string) && value != null)
+ {
+ FieldInfo fi = value.GetType().GetField(value.ToString());
+ if (fi != null)
+ {
+ string localizedDescription = string.Empty;
+ var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
+ if ((attributes.Length > 0) && (!String.IsNullOrEmpty(attributes[0].Description)))
+ {
+ localizedDescription = attributes[0].Description;
+ }
+
+ return (!String.IsNullOrEmpty(localizedDescription)) ? localizedDescription : value.ToString();
+ }
+ }
+
+ return string.Empty;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Wox.Core/Resource/LocalizedDescriptionAttribute.cs b/Wox.Core/Resource/LocalizedDescriptionAttribute.cs
new file mode 100644
index 000000000..ef1257220
--- /dev/null
+++ b/Wox.Core/Resource/LocalizedDescriptionAttribute.cs
@@ -0,0 +1,27 @@
+using System.ComponentModel;
+using Wox.Core.Resource;
+
+namespace Wox.Core
+{
+ public class LocalizedDescriptionAttribute : DescriptionAttribute
+ {
+ private readonly Internationalization _translator;
+ private readonly string _resourceKey;
+
+ public LocalizedDescriptionAttribute(string resourceKey)
+ {
+ _translator = InternationalizationManager.Instance;
+ _resourceKey = resourceKey;
+ }
+
+ public override string Description
+ {
+ get
+ {
+ string description = _translator.GetTranslation(_resourceKey);
+ return string.IsNullOrWhiteSpace(description) ?
+ string.Format("[[{0}]]", _resourceKey) : description;
+ }
+ }
+ }
+}
diff --git a/Wox.Core/Wox.Core.csproj b/Wox.Core/Wox.Core.csproj
index 9d8f1e794..bec5a13a6 100644
--- a/Wox.Core/Wox.Core.csproj
+++ b/Wox.Core/Wox.Core.csproj
@@ -109,6 +109,8 @@
+
+