aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Localizer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/Localizer.cs')
-rw-r--r--src/WixToolset.Core/Localizer.cs35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/WixToolset.Core/Localizer.cs b/src/WixToolset.Core/Localizer.cs
index 72d0955b..a19c32fb 100644
--- a/src/WixToolset.Core/Localizer.cs
+++ b/src/WixToolset.Core/Localizer.cs
@@ -18,7 +18,7 @@ namespace WixToolset
18 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; 18 public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl";
19 private static string XmlElementName = "WixLocalization"; 19 private static string XmlElementName = "WixLocalization";
20 20
21 private Dictionary<string, WixVariableRow> variables; 21 private Dictionary<string, BindVariable> variables;
22 private Dictionary<string, LocalizedControl> localizedControls; 22 private Dictionary<string, LocalizedControl> localizedControls;
23 23
24 /// <summary> 24 /// <summary>
@@ -27,7 +27,7 @@ namespace WixToolset
27 public Localizer(IEnumerable<Localization> localizations) 27 public Localizer(IEnumerable<Localization> localizations)
28 { 28 {
29 this.Codepage = -1; 29 this.Codepage = -1;
30 this.variables = new Dictionary<string, WixVariableRow>(); 30 this.variables = new Dictionary<string, BindVariable>();
31 this.localizedControls = new Dictionary<string, LocalizedControl>(); 31 this.localizedControls = new Dictionary<string, LocalizedControl>();
32 32
33 foreach (var localization in localizations) 33 foreach (var localization in localizations)
@@ -37,9 +37,9 @@ namespace WixToolset
37 this.Codepage = localization.Codepage; 37 this.Codepage = localization.Codepage;
38 } 38 }
39 39
40 foreach (WixVariableRow wixVariableRow in localization.Variables) 40 foreach (var variable in localization.Variables)
41 { 41 {
42 Localizer.AddWixVariable(this.variables, wixVariableRow); 42 Localizer.AddWixVariable(this.variables, variable);
43 } 43 }
44 44
45 foreach (KeyValuePair<string, LocalizedControl> localizedControl in localization.LocalizedControls) 45 foreach (KeyValuePair<string, LocalizedControl> localizedControl in localization.LocalizedControls)
@@ -86,7 +86,7 @@ namespace WixToolset
86 /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param> 86 /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param>
87 /// <param name="suppressSchema">Suppress xml schema validation while loading.</param> 87 /// <param name="suppressSchema">Suppress xml schema validation while loading.</param>
88 /// <returns>Returns the loaded localization file.</returns> 88 /// <returns>Returns the loaded localization file.</returns>
89 public static Localization ParseLocalizationFile(string path, TableDefinitionCollection tableDefinitions) 89 public static Localization ParseLocalizationFile(string path)
90 { 90 {
91 XElement root = XDocument.Load(path).Root; 91 XElement root = XDocument.Load(path).Root;
92 Localization localization = null; 92 Localization localization = null;
@@ -96,7 +96,7 @@ namespace WixToolset
96 { 96 {
97 if (Localizer.WxlNamespace == root.Name.Namespace) 97 if (Localizer.WxlNamespace == root.Name.Namespace)
98 { 98 {
99 localization = ParseWixLocalizationElement(root, tableDefinitions); 99 localization = ParseWixLocalizationElement(root);
100 } 100 }
101 else // invalid or missing namespace 101 else // invalid or missing namespace
102 { 102 {
@@ -123,7 +123,7 @@ namespace WixToolset
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, BindVariable> variables, BindVariable wixVariableRow)
127 { 127 {
128 if (!variables.TryGetValue(wixVariableRow.Id, out var existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable)) 128 if (!variables.TryGetValue(wixVariableRow.Id, out var existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable))
129 { 129 {
@@ -139,7 +139,7 @@ namespace WixToolset
139 /// Parses the WixLocalization element. 139 /// Parses the WixLocalization element.
140 /// </summary> 140 /// </summary>
141 /// <param name="node">Element to parse.</param> 141 /// <param name="node">Element to parse.</param>
142 private static Localization ParseWixLocalizationElement(XElement node, TableDefinitionCollection tableDefinitions) 142 private static Localization ParseWixLocalizationElement(XElement node)
143 { 143 {
144 int codepage = -1; 144 int codepage = -1;
145 string culture = null; 145 string culture = null;
@@ -171,7 +171,7 @@ namespace WixToolset
171 } 171 }
172 } 172 }
173 173
174 Dictionary<string, WixVariableRow> variables = new Dictionary<string,WixVariableRow>(); 174 Dictionary<string, BindVariable> variables = new Dictionary<string, BindVariable>();
175 Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>(); 175 Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>();
176 176
177 foreach (XElement child in node.Elements()) 177 foreach (XElement child in node.Elements())
@@ -181,7 +181,7 @@ namespace WixToolset
181 switch (child.Name.LocalName) 181 switch (child.Name.LocalName)
182 { 182 {
183 case "String": 183 case "String":
184 Localizer.ParseString(child, variables, tableDefinitions); 184 Localizer.ParseString(child, variables);
185 break; 185 break;
186 186
187 case "UI": 187 case "UI":
@@ -206,7 +206,7 @@ namespace WixToolset
206 /// Parse a localization string into a WixVariableRow. 206 /// Parse a localization string into a WixVariableRow.
207 /// </summary> 207 /// </summary>
208 /// <param name="node">Element to parse.</param> 208 /// <param name="node">Element to parse.</param>
209 private static void ParseString(XElement node, IDictionary<string, WixVariableRow> variables, TableDefinitionCollection tableDefinitions) 209 private static void ParseString(XElement node, IDictionary<string, BindVariable> variables)
210 { 210 {
211 string id = null; 211 string id = null;
212 bool overridable = false; 212 bool overridable = false;
@@ -251,12 +251,15 @@ namespace WixToolset
251 251
252 if (!Messaging.Instance.EncounteredError) 252 if (!Messaging.Instance.EncounteredError)
253 { 253 {
254 WixVariableRow wixVariableRow = new WixVariableRow(sourceLineNumbers, tableDefinitions["WixVariable"]); 254 var variable = new BindVariable
255 wixVariableRow.Id = id; 255 {
256 wixVariableRow.Overridable = overridable; 256 SourceLineNumbers = sourceLineNumbers,
257 wixVariableRow.Value = value; 257 Id = id,
258 Overridable = overridable,
259 Value = value,
260 };
258 261
259 Localizer.AddWixVariable(variables, wixVariableRow); 262 Localizer.AddWixVariable(variables, variable);
260 } 263 }
261 } 264 }
262 265