Mercurial > repos > IBBoard
diff Lang/TranslationXmlLoader.cs @ 115:de0ed24eb961
* Reimplement 7ca4acc659bbdd/IBBoard without the excess noise
* Clean up code (and some automatic changes)
* Use XML resources in TranslationXmlLoader
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 26 Jun 2012 20:06:50 +0100 |
parents | e32b5ccda410 |
children |
line wrap: on
line diff
--- a/Lang/TranslationXmlLoader.cs Sun Jun 24 15:48:25 2012 +0100 +++ b/Lang/TranslationXmlLoader.cs Tue Jun 26 20:06:50 2012 +0100 @@ -19,33 +19,33 @@ { private XmlReaderSettings settings; private TranslationXmlExtractor extractor; - + public TranslationXmlLoader() { extractor = new TranslationXmlExtractor(); } - + public AbstractTranslationSet LoadTranslations(string path) { FileInfo file = new FileInfo(path); - + if (!file.Exists) { throw new TranslationLoadException("Translation file " + file.FullName + " did not exist"); } - + XmlDocument doc = LoadTranslationDocument(file); XmlTranslationSet translations = new XmlTranslationSet(extractor.GetLanguageOfDocument(doc)); translations.SetParentLanguage(extractor.GetParentLanguageOfDocument(doc)); translations.SetTranslationNodes(extractor.GetTranslationNodes(doc)); return translations; } - + private XmlDocument LoadTranslationDocument(FileInfo file) { XmlDocument doc = new XmlDocument(); XmlReader valReader = XmlReader.Create(file.OpenRead(), GetReaderSettings()); - + try { doc.Load(valReader); @@ -66,10 +66,10 @@ { valReader.Close(); } - + return doc; } - + /// <summary> /// Lazy-getter for XML reader settings. May throw a <see cref="TranslationLoadException"/> if there is a problem with the translation schema. /// </summary> @@ -87,7 +87,7 @@ settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings; settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventMethod); XmlSchemaSet cache = new XmlSchemaSet(); - cache.Add("http://ibboard.co.uk/translation", new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("IBBoard.schemas.translation.xsd"))); + XmlTools.AddSchemaToSetFromResource(cache, "http://ibboard.co.uk/translation", Assembly.GetExecutingAssembly(), "IBBoard.schemas.translation.xsd"); settings.Schemas.Add(cache); } catch (DirectoryNotFoundException ex) @@ -103,10 +103,10 @@ throw new TranslationLoadException("Problem reading data for schema: " + ex.Message, ex); } } - + return settings; } - + private void ValidationEventMethod(object sender, ValidationEventArgs e) { throw new TranslationLoadException("Problem validating schema for translation: " + e.Exception.Message, e.Exception);