diff Lang/AbstractTranslationSet.cs @ 69:b5d7e8b93205

Re #30: Improve Translations API * Add translation sets * Add reset method to translations * Fix translations where API documentation (contract) didn't match behaviour
author IBBoard <dev@ibboard.co.uk>
date Tue, 06 Apr 2010 15:41:20 +0000
parents
children cec6c4c0892d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lang/AbstractTranslationSet.cs	Tue Apr 06 15:41:20 2010 +0000
@@ -0,0 +1,51 @@
+// This file (AbstractTranslationSet.cs) is a part of the IBBoard project and is copyright 2010 IBBoard
+// 
+// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
+
+using System;
+using System.Collections.Generic;
+
+namespace IBBoard.Lang
+{
+	/// <summary>
+	/// A collection of translations for a given language. The abstract class must be extended by implementations that
+	/// provide different ways of loading the data.
+	/// </summary>
+	public class AbstractTranslationSet
+	{
+		private string langCode;
+		protected Dictionary<string, string> translations;
+		
+		public AbstractTranslationSet(string languageCode)
+		{
+			langCode = languageCode;
+			translations = new Dictionary<string, string>();
+		}
+		
+		/// <summary>
+		/// Gets the language code that this translation claims to be for
+		/// </summary>
+		public string LanguageCode
+		{
+			get { return langCode; }
+		}
+		
+		/// <summary>
+		/// Gets a translation from the translation set, or <code>null</code> if the translation doesn't exist.
+		/// </summary>
+		/// <param name="key">
+		/// The key (ID) of the translation to retrieve
+		/// </param>
+		public string this[string key]
+		{
+			set
+			{
+				translations[key] = value;
+			}
+			get
+			{
+				return DictionaryUtils.GetValue(translations, key);
+			}
+		}	
+	}
+}