comparison Lang/XmlTranslationSet.cs @ 80:a23c07137fa4

Re #32: Add staged loading of translations * Move from passing entire document to XmlTranslationSet to just passing XmlNodeList of translation nodes
author IBBoard <dev@ibboard.co.uk>
date Sat, 10 Apr 2010 19:05:26 +0000
parents da339d10c5fe
children
comparison
equal deleted inserted replaced
79:a70d89de1435 80:a23c07137fa4
9 namespace IBBoard.Lang 9 namespace IBBoard.Lang
10 { 10 {
11 public class XmlTranslationSet : AbstractTranslationSet 11 public class XmlTranslationSet : AbstractTranslationSet
12 { 12 {
13 private string parentLanguage; 13 private string parentLanguage;
14 private XmlDocument doc; 14 private XmlNodeList nodes;
15 15
16 public XmlTranslationSet(String languageCode) : base(languageCode) 16 public XmlTranslationSet(String languageCode) : base(languageCode)
17 { 17 {
18 //Do nothing extra 18 //Do nothing extra
19 } 19 }
20 20
21 public override string this[string key] 21 public override string this[string key]
22 { 22 {
23 get 23 get
24 { 24 {
25 if (translations.Count == 0 && doc != null) 25 if (translations.Count == 0 && nodes != null)
26 { 26 {
27 PopulateTranslations(); 27 PopulateTranslations();
28 } 28 }
29 29
30 return base[key]; 30 return base[key];
31 } 31 }
32 } 32 }
33 33
34 private void PopulateTranslations() 34 private void PopulateTranslations()
35 { 35 {
36 Dictionary<string, string> docTranslations = new TranslationXmlExtractor().ExtractTranslationsFromDocument(doc); 36 foreach (XmlElement node in nodes)
37
38 foreach (KeyValuePair<string, string> pair in docTranslations)
39 { 37 {
40 translations.Add(pair.Key, pair.Value); 38 translations.Add(node.GetAttribute("id"), node.InnerText);
41 } 39 }
42 } 40 }
43
44
45 41
46 public void SetParentLanguage(string parentLanguageCode) 42 public void SetParentLanguage(string parentLanguageCode)
47 { 43 {
48 parentLanguage = parentLanguageCode; 44 parentLanguage = parentLanguageCode;
49 } 45 }
51 protected override AbstractTranslationSet GetParentTranslations() 47 protected override AbstractTranslationSet GetParentTranslations()
52 { 48 {
53 return Translation.GetTranslationSet(parentLanguage); 49 return Translation.GetTranslationSet(parentLanguage);
54 } 50 }
55 51
56 public void SetSourceXml(XmlDocument sourceDocument) 52 public void SetTranslationNodes(XmlNodeList translationNodes)
57 { 53 {
58 doc = sourceDocument; 54 nodes = translationNodes;
59 } 55 }
60 } 56 }
61 } 57 }