Skip to content

Commit

Permalink
added localization methods
Browse files Browse the repository at this point in the history
  • Loading branch information
davidegironi committed Feb 13, 2019
1 parent dd13e8e commit 14e81d3
Show file tree
Hide file tree
Showing 13 changed files with 535 additions and 209 deletions.
169 changes: 169 additions & 0 deletions AdvancedDataGridView/AdvancedDataGridView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;
using System.Windows.Forms;

namespace Zuby.ADGV
Expand Down Expand Up @@ -53,6 +55,107 @@ public FilterEventArgs()
#endregion


#region translations

/// <summary>
/// Available translation keys
/// </summary>
public enum TranslationKey
{
ADGVSortDateTimeASC,
ADGVSortDateTimeDESC,
ADGVSortBoolASC,
ADGVSortBoolDESC,
ADGVSortNumASC,
ADGVSortNumDESC,
ADGVSortTextASC,
ADGVSortTextDESC,
ADGVAddCustomFilter,
ADGVCustomFilter,
ADGVClearFilter,
ADGVClearSort,
ADGVButtonFilter,
ADGVButtonUndofilter,
ADGVNodeSelectAll,
ADGVNodeSelectEmpty,
ADGVFilterChecklistDisable,
ADGVEquals,
ADGVDoesNotEqual,
ADGVEarlierThan,
ADGVEarlierThanOrEqualTo,
ADGVLaterThan,
ADGVLaterThanOrEqualTo,
ADGVBetween,
ADGVGreaterThan,
ADGVGreaterThanOrEqualTo,
ADGVLessThan,
ADGVLessThanOrEqualTo,
ADGVBeginsWith,
ADGVDoesNotBeginWith,
ADGVEndsWith,
ADGVDoesNotEndWith,
ADGVContains,
ADGVDoesNotContain,
ADGVInvalidValue,
ADGVFilterStringDescription,
ADGVFormTitle,
ADGVLabelColumnNameText,
ADGVLabelAnd,
ADGVButtonOk,
ADGVButtonCancel
}

/// <summary>
/// Internationalization strings
/// </summary>
public static Dictionary<string, string> Translations = new Dictionary<string, string>()
{
{ TranslationKey.ADGVSortDateTimeASC.ToString(), "Sort Oldest to Newest" },
{ TranslationKey.ADGVSortDateTimeDESC.ToString(), "Sort Newest to Oldest" },
{ TranslationKey.ADGVSortBoolASC.ToString(), "Sort by False/True" },
{ TranslationKey.ADGVSortBoolDESC.ToString(), "Sort by True/False" },
{ TranslationKey.ADGVSortNumASC.ToString(), "Sort Smallest to Largest" },
{ TranslationKey.ADGVSortNumDESC.ToString(), "Sort Largest to Smallest" },
{ TranslationKey.ADGVSortTextASC.ToString(), "Sort А to Z" },
{ TranslationKey.ADGVSortTextDESC.ToString(), "Sort Z to A" },
{ TranslationKey.ADGVAddCustomFilter.ToString(), "Add a Custom Filter" },
{ TranslationKey.ADGVCustomFilter.ToString(), "Custom Filter" },
{ TranslationKey.ADGVClearFilter.ToString(), "Clear Filter" },
{ TranslationKey.ADGVClearSort.ToString(), "Clear Sort" },
{ TranslationKey.ADGVButtonFilter.ToString(), "Filter" },
{ TranslationKey.ADGVButtonUndofilter.ToString(), "Cancel" },
{ TranslationKey.ADGVNodeSelectAll.ToString(), "(Select All)" },
{ TranslationKey.ADGVNodeSelectEmpty.ToString(), "(Blanks)" },
{ TranslationKey.ADGVFilterChecklistDisable.ToString(), "Filter list is disabled" },
{ TranslationKey.ADGVEquals.ToString(), "equals" },
{ TranslationKey.ADGVDoesNotEqual.ToString(), "does not equal" },
{ TranslationKey.ADGVEarlierThan.ToString(), "earlier than" },
{ TranslationKey.ADGVEarlierThanOrEqualTo.ToString(), "earlier than or equal to" },
{ TranslationKey.ADGVLaterThan.ToString(), "later than"},
{ TranslationKey.ADGVLaterThanOrEqualTo.ToString(), "later than or equal to" },
{ TranslationKey.ADGVBetween.ToString(), "between" },
{ TranslationKey.ADGVGreaterThan.ToString(), "greater than" },
{ TranslationKey.ADGVGreaterThanOrEqualTo.ToString(), "greater than or equal to" },
{ TranslationKey.ADGVLessThan.ToString(), "less than" },
{ TranslationKey.ADGVLessThanOrEqualTo.ToString(), "less than or equal to" },
{ TranslationKey.ADGVBeginsWith.ToString(), "begins with" },
{ TranslationKey.ADGVDoesNotBeginWith.ToString(), "does not begin with" },
{ TranslationKey.ADGVEndsWith.ToString(), "ends with" },
{ TranslationKey.ADGVDoesNotEndWith.ToString(), "does not end with" },
{ TranslationKey.ADGVContains.ToString(), "contains" },
{ TranslationKey.ADGVDoesNotContain.ToString(), "does not contain" },
{ TranslationKey.ADGVInvalidValue.ToString(), "Invalid Value" },
{ TranslationKey.ADGVFilterStringDescription.ToString(), "Show rows where value {0} \"{1}\"" },
{ TranslationKey.ADGVFormTitle.ToString(), "Custom Filter" },
{ TranslationKey.ADGVLabelColumnNameText.ToString(), "Show rows where value" },
{ TranslationKey.ADGVLabelAnd.ToString(), "And" },
{ TranslationKey.ADGVButtonOk.ToString(), "OK" },
{ TranslationKey.ADGVButtonCancel.ToString(), "Cancel" }
};

#endregion


#region class properties

private List<string> _sortOrderList = new List<string>();
Expand All @@ -77,6 +180,72 @@ public AdvancedDataGridView()
#endregion


#region translations methods

/// <summary>
/// Set translation dictionary
/// </summary>
/// <param name="translations"></param>
public static void SetTranslations(IDictionary<string, string> translations)
{
//set localization strings
if (translations != null)
{
foreach (KeyValuePair<string, string> translation in translations)
{
if (Translations.ContainsKey(translation.Key))
Translations[translation.Key] = translation.Value;
}
}
}

/// <summary>
/// Get translation dictionary
/// </summary>
/// <returns></returns>
public static IDictionary<string, string> GetTranslations()
{
return Translations;
}

/// <summary>
/// Load translations from file
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public static IDictionary<string, string> LoadTranslationsFromFile(string filename)
{
IDictionary<string, string> ret = new Dictionary<string, string>();

if (!String.IsNullOrEmpty(filename))
{
//deserialize the file
try
{
string jsontext = File.ReadAllText(filename);
Dictionary<string, string> translations = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(jsontext);
foreach (KeyValuePair<string, string> translation in translations)
{
if (!ret.ContainsKey(translation.Key) && Translations.ContainsKey(translation.Key))
ret.Add(translation.Key, translation.Value);
}
}
catch { }
}

//add default translations if not in files
foreach (KeyValuePair<string, string> translation in GetTranslations())
{
if (!ret.ContainsKey(translation.Key))
ret.Add(translation.Key, translation.Value);
}

return ret;
}

#endregion


#region Helper methods

/// <summary>
Expand Down
1 change: 1 addition & 0 deletions AdvancedDataGridView/AdvancedDataGridView.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
Expand Down
Loading

0 comments on commit 14e81d3

Please sign in to comment.