# HG changeset patch # User IBBoard # Date 1270670105 0 # Node ID f45d28dc1d6a3357b8a2f0c669acda5a91de3b09 # Parent b1ae6fce2e3fddd20ee80d6597ad690b017a85e7 Re #35: Add multi-level cascading of translations * Restructure translations so that implementations define how parent translations are set TODO: Stop looping definition of parent (en-GB inherits from en inherits from en-GB, or more indirect) diff -r b1ae6fce2e3f -r f45d28dc1d6a Lang/AbstractTranslationSet.cs --- a/Lang/AbstractTranslationSet.cs Wed Apr 07 19:34:38 2010 +0000 +++ b/Lang/AbstractTranslationSet.cs Wed Apr 07 19:55:05 2010 +0000 @@ -15,23 +15,11 @@ { private TranslationLanguage language; protected Dictionary translations; - private TranslationLanguage parentLang; - public AbstractTranslationSet(string languageCode) : this(languageCode, "") - { - //Do nothing extra - } - - public AbstractTranslationSet(string languageCode, string parentLanguageCode) + public AbstractTranslationSet(string languageCode) { language = new TranslationLanguage(languageCode); translations = new Dictionary(); - - if (parentLanguageCode != null && !parentLanguageCode.Trim().Equals("")) - { - ParentLanguage = new TranslationLanguage(parentLanguageCode); - } - } @@ -55,7 +43,7 @@ { string translation = DictionaryUtils.GetValue(translations, key); - if (parentLang != null && translation == null) + if (translation == null) { translation = GetParentTranslation(key); } @@ -94,8 +82,18 @@ public TranslationLanguage ParentLanguage { - get { return parentLang; } - protected set { parentLang = value; } + get + { + TranslationLanguage parentLang = null; + AbstractTranslationSet parentTranslations = GetParentTranslations(); + + if (parentTranslations != null) + { + parentLang = parentTranslations.Language; + } + + return parentLang; + } } public override bool Equals(object obj) diff -r b1ae6fce2e3f -r f45d28dc1d6a Lang/ModifiableTranslationSet.cs --- a/Lang/ModifiableTranslationSet.cs Wed Apr 07 19:34:38 2010 +0000 +++ b/Lang/ModifiableTranslationSet.cs Wed Apr 07 19:55:05 2010 +0000 @@ -14,12 +14,7 @@ { private AbstractTranslationSet parentTranslationSet; - public ModifiableTranslationSet(string languageCode) : this(languageCode, "") - { - //Do nothing extra - } - - public ModifiableTranslationSet(string languageCode, string parentLanguageCode) : base(languageCode, parentLanguageCode) + public ModifiableTranslationSet(string languageCode) : base(languageCode) { //Do nothing extra } @@ -31,7 +26,6 @@ public void SetParentTranslations(ModifiableTranslationSet parentTranslations) { - ParentLanguage = parentTranslations.Language; parentTranslationSet = parentTranslations; }