Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. public static class RubberduckLocalization
  2. {
  3. private static readonly Dictionary<LocalizationResource, object> localizationResources = new Dictionary<LocalizationResource, object>()
  4. {
  5. { LocalizationResource.RubberduckUI, new RubberduckUI() }
  6. };
  7. private static readonly Dictionary<LocalizationResource, ResourceDictionary> resourceDictionaries = new Dictionary<LocalizationResource, ResourceDictionary>();
  8.  
  9. public static ResourceDictionary GetResourceDictionary(LocalizationResource translationResource)
  10. {
  11. Refresh(translationResource);
  12. return resourceDictionaries[translationResource];
  13. }
  14.  
  15. public static void Refresh(LocalizationResource translationResource)
  16. {
  17. ResourceDictionary resourceDictionary;
  18. if (!resourceDictionaries.TryGetValue(translationResource, out resourceDictionary))
  19. {
  20. resourceDictionary = new ResourceDictionary();
  21. resourceDictionaries.Add(translationResource, resourceDictionary);
  22. }
  23. else
  24. {
  25. resourceDictionary.Clear();
  26. }
  27. object source = localizationResources[translationResource];
  28. foreach (PropertyInfo property in source.GetType().GetProperties(BindingFlags.Public | BindingFlags.Static))
  29. {
  30. if (property.PropertyType == typeof(string))
  31. {
  32. string name = property.Name;
  33. string value = (string)property.GetValue(source);
  34. resourceDictionary.Add("TEXT_" + name, value);
  35. }
  36. }
  37. }
  38. }
  39.  
  40. public enum LocalizationResource
  41. {
  42. RubberduckUI
  43. }
  44.  
  45. // Example WPF GUI ctor
  46. public InspectionResultsControl()
  47. {
  48. InitializeComponent();
  49.  
  50. Resources.MergedDictionaries.Add(RubberduckLocalization.GetResourceDictionary(LocalizationResource.RubberduckUI));
  51.  
  52. _inspectionTypeGroupsViewSource = (CollectionViewSource)FindResource("InspectionTypeGroupViewSource");
  53. _inspectionTypeGroupsTemplate = (DataTemplate)FindResource("InspectionTypeGroupsTemplate");
  54.  
  55. _moduleGroupsViewSource = (CollectionViewSource)FindResource("CodeModuleGroupViewSource");
  56. _moduleGroupsTemplate = (DataTemplate)FindResource("CodeModuleGroupsTemplate");
  57.  
  58. Loaded += InspectionResultsControl_Loaded;
  59. }
  60.  
  61. // Changes to App.cs
  62. RubberduckUI.Culture = CultureInfo.GetCultureInfo(_config.UserSettings.LanguageSetting.Code);
  63. RubberduckLocalization.Refresh(LocalizationResource.RubberduckUI);
  64. _appMenus.Localize();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement