diff options
Diffstat (limited to 'src/WixToolset.Core/Localizer.cs')
-rw-r--r-- | src/WixToolset.Core/Localizer.cs | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/WixToolset.Core/Localizer.cs b/src/WixToolset.Core/Localizer.cs index cb9a4406..a545f844 100644 --- a/src/WixToolset.Core/Localizer.cs +++ b/src/WixToolset.Core/Localizer.cs | |||
@@ -11,31 +11,25 @@ namespace WixToolset.Core | |||
11 | using WixToolset.Extensibility; | 11 | using WixToolset.Extensibility; |
12 | using WixToolset.Extensibility.Services; | 12 | using WixToolset.Extensibility.Services; |
13 | 13 | ||
14 | /// <summary> | 14 | internal class Localizer : ILocalizer |
15 | /// Parses localization files and localizes database values. | ||
16 | /// </summary> | ||
17 | public sealed class Localizer | ||
18 | { | 15 | { |
19 | public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; | 16 | public static readonly XNamespace WxlNamespace = "http://wixtoolset.org/schemas/v4/wxl"; |
20 | private static string XmlElementName = "WixLocalization"; | 17 | private static string XmlElementName = "WixLocalization"; |
21 | 18 | ||
22 | /// <summary> | 19 | internal Localizer(IServiceProvider serviceProvider) |
23 | /// Loads a localization file from a path on disk. | 20 | { |
24 | /// </summary> | 21 | this.Messaging = serviceProvider.GetService<IMessaging>(); |
25 | /// <param name="path">Path to localization file saved on disk.</param> | 22 | } |
26 | /// <returns>Returns the loaded localization file.</returns> | 23 | |
27 | public static Localization ParseLocalizationFile(IMessaging messaging, string path) | 24 | private IMessaging Messaging { get; } |
25 | |||
26 | public Localization ParseLocalizationFile(string path) | ||
28 | { | 27 | { |
29 | var document = XDocument.Load(path); | 28 | var document = XDocument.Load(path); |
30 | return ParseLocalizationFile(messaging, document); | 29 | return ParseLocalizationFile(document); |
31 | } | 30 | } |
32 | 31 | ||
33 | /// <summary> | 32 | public Localization ParseLocalizationFile(XDocument document) |
34 | /// Loads a localization file from memory. | ||
35 | /// </summary> | ||
36 | /// <param name="document">Document to parse as localization file.</param> | ||
37 | /// <returns>Returns the loaded localization file.</returns> | ||
38 | public static Localization ParseLocalizationFile(IMessaging messaging, XDocument document) | ||
39 | { | 33 | { |
40 | XElement root = document.Root; | 34 | XElement root = document.Root; |
41 | Localization localization = null; | 35 | Localization localization = null; |
@@ -45,23 +39,23 @@ namespace WixToolset.Core | |||
45 | { | 39 | { |
46 | if (Localizer.WxlNamespace == root.Name.Namespace) | 40 | if (Localizer.WxlNamespace == root.Name.Namespace) |
47 | { | 41 | { |
48 | localization = ParseWixLocalizationElement(messaging, root); | 42 | localization = ParseWixLocalizationElement(this.Messaging, root); |
49 | } | 43 | } |
50 | else // invalid or missing namespace | 44 | else // invalid or missing namespace |
51 | { | 45 | { |
52 | if (null == root.Name.Namespace) | 46 | if (null == root.Name.Namespace) |
53 | { | 47 | { |
54 | messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, Localizer.WxlNamespace.NamespaceName)); | 48 | this.Messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, Localizer.WxlNamespace.NamespaceName)); |
55 | } | 49 | } |
56 | else | 50 | else |
57 | { | 51 | { |
58 | messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, root.Name.LocalName, Localizer.WxlNamespace.NamespaceName)); | 52 | this.Messaging.Write(ErrorMessages.InvalidWixXmlNamespace(sourceLineNumbers, Localizer.XmlElementName, root.Name.LocalName, Localizer.WxlNamespace.NamespaceName)); |
59 | } | 53 | } |
60 | } | 54 | } |
61 | } | 55 | } |
62 | else | 56 | else |
63 | { | 57 | { |
64 | messaging.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, root.Name.LocalName, "localization", Localizer.XmlElementName)); | 58 | this.Messaging.Write(ErrorMessages.InvalidDocumentElement(sourceLineNumbers, root.Name.LocalName, "localization", Localizer.XmlElementName)); |
65 | } | 59 | } |
66 | 60 | ||
67 | return localization; | 61 | return localization; |