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; |
