aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Localizer.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2017-10-14 16:12:07 -0700
committerRob Mensching <rob@firegiant.com>2017-10-14 16:12:07 -0700
commitdbde9e7104b907bbbaea17e21247d8cafc8b3a4c (patch)
tree0f5fbbb6fe12c6b2e5e622a0e18ce4c5b4eb2b96 /src/WixToolset.Core/Localizer.cs
parentfbf986eb97f68396797a89fc7d40dec07b775440 (diff)
downloadwix-dbde9e7104b907bbbaea17e21247d8cafc8b3a4c.tar.gz
wix-dbde9e7104b907bbbaea17e21247d8cafc8b3a4c.tar.bz2
wix-dbde9e7104b907bbbaea17e21247d8cafc8b3a4c.zip
Massive refactoring to introduce the concept of IBackend
Diffstat (limited to 'src/WixToolset.Core/Localizer.cs')
-rw-r--r--src/WixToolset.Core/Localizer.cs51
1 files changed, 25 insertions, 26 deletions
diff --git a/src/WixToolset.Core/Localizer.cs b/src/WixToolset.Core/Localizer.cs
index 63ead24a..72d0955b 100644
--- a/src/WixToolset.Core/Localizer.cs
+++ b/src/WixToolset.Core/Localizer.cs
@@ -8,11 +8,12 @@ namespace WixToolset
8 using WixToolset.Data; 8 using WixToolset.Data;
9 using WixToolset.Data.Rows; 9 using WixToolset.Data.Rows;
10 using WixToolset.Core.Native; 10 using WixToolset.Core.Native;
11 using WixToolset.Extensibility;
11 12
12 /// <summary> 13 /// <summary>
13 /// Parses localization files and localizes database values. 14 /// Parses localization files and localizes database values.
14 /// </summary> 15 /// </summary>
15 public sealed class Localizer 16 public sealed class Localizer : ILocalizer
16 { 17 {
17 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; 18 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl";
18 private static string XmlElementName = "WixLocalization"; 19 private static string XmlElementName = "WixLocalization";
@@ -55,7 +56,28 @@ namespace WixToolset
55 /// Gets the codepage. 56 /// Gets the codepage.
56 /// </summary> 57 /// </summary>
57 /// <value>The codepage.</value> 58 /// <value>The codepage.</value>
58 public int Codepage { get; private set; } 59 public int Codepage { get; }
60
61 /// <summary>
62 /// Get a localized data value.
63 /// </summary>
64 /// <param name="id">The name of the localization variable.</param>
65 /// <returns>The localized data value or null if it wasn't found.</returns>
66 public string GetLocalizedValue(string id)
67 {
68 return this.variables.TryGetValue(id, out var wixVariableRow) ? wixVariableRow.Value : null;
69 }
70
71 /// <summary>
72 /// Get a localized control.
73 /// </summary>
74 /// <param name="dialog">The optional id of the control's dialog.</param>
75 /// <param name="control">The id of the control.</param>
76 /// <returns>The localized control or null if it wasn't found.</returns>
77 public LocalizedControl GetLocalizedControl(string dialog, string control)
78 {
79 return this.localizedControls.TryGetValue(LocalizedControl.GetKey(dialog, control), out var localizedControl) ? localizedControl : null;
80 }
59 81
60 /// <summary> 82 /// <summary>
61 /// Loads a localization file from a path on disk. 83 /// Loads a localization file from a path on disk.
@@ -97,36 +119,13 @@ namespace WixToolset
97 } 119 }
98 120
99 /// <summary> 121 /// <summary>
100 /// Get a localized data value.
101 /// </summary>
102 /// <param name="id">The name of the localization variable.</param>
103 /// <returns>The localized data value or null if it wasn't found.</returns>
104 public string GetLocalizedValue(string id)
105 {
106 return this.variables.TryGetValue(id, out var wixVariableRow) ? wixVariableRow.Value : null;
107 }
108
109 /// <summary>
110 /// Get a localized control.
111 /// </summary>
112 /// <param name="dialog">The optional id of the control's dialog.</param>
113 /// <param name="control">The id of the control.</param>
114 /// <returns>The localized control or null if it wasn't found.</returns>
115 public LocalizedControl GetLocalizedControl(string dialog, string control)
116 {
117 LocalizedControl localizedControl;
118 return this.localizedControls.TryGetValue(LocalizedControl.GetKey(dialog, control), out localizedControl) ? localizedControl : null;
119 }
120
121 /// <summary>
122 /// Adds a WixVariableRow to a dictionary while performing the expected override checks. 122 /// Adds a WixVariableRow to a dictionary while performing the expected override checks.
123 /// </summary> 123 /// </summary>
124 /// <param name="variables">Dictionary of variable rows.</param> 124 /// <param name="variables">Dictionary of variable rows.</param>
125 /// <param name="wixVariableRow">Row to add to the variables dictionary.</param> 125 /// <param name="wixVariableRow">Row to add to the variables dictionary.</param>
126 private static void AddWixVariable(IDictionary<string, WixVariableRow> variables, WixVariableRow wixVariableRow) 126 private static void AddWixVariable(IDictionary<string, WixVariableRow> variables, WixVariableRow wixVariableRow)
127 { 127 {
128 WixVariableRow existingWixVariableRow; 128 if (!variables.TryGetValue(wixVariableRow.Id, out var existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable))
129 if (!variables.TryGetValue(wixVariableRow.Id, out existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable))
130 { 129 {
131 variables[wixVariableRow.Id] = wixVariableRow; 130 variables[wixVariableRow.Id] = wixVariableRow;
132 } 131 }