Index: /branches/eraser6/CodeReview/Eraser/SettingsPanel.cs
===================================================================
--- /branches/eraser6/CodeReview/Eraser/SettingsPanel.cs	(revision 1793)
+++ /branches/eraser6/CodeReview/Eraser/SettingsPanel.cs	(revision 1794)
@@ -125,6 +125,6 @@
 
 			//Refresh the list of languages
-			IList<Language> languages = LanguageManager.Items;
-			foreach (Language culture in languages)
+			IList<CultureInfo> languages = S.Localisations;
+			foreach (CultureInfo culture in languages)
 				uiLanguage.Items.Add(culture);
 
@@ -145,6 +145,6 @@
 		{
 			EraserSettings settings = EraserSettings.Get();
-			foreach (Object lang in uiLanguage.Items)
-				if (((Language)lang).Name == settings.Language)
+			foreach (CultureInfo lang in uiLanguage.Items)
+				if (lang.Name == settings.Language)
 				{
 					uiLanguage.SelectedItem = lang;
@@ -152,6 +152,6 @@
 				}
 
-			foreach (Object method in eraseFilesMethod.Items)
-				if (((ErasureMethod)method).Guid == ManagerLibrary.Settings.DefaultFileErasureMethod)
+			foreach (ErasureMethod method in eraseFilesMethod.Items)
+				if (method.Guid == ManagerLibrary.Settings.DefaultFileErasureMethod)
 				{
 					eraseFilesMethod.SelectedItem = method;
@@ -159,6 +159,6 @@
 				}
 
-			foreach (Object method in eraseUnusedMethod.Items)
-				if (((ErasureMethod)method).Guid == ManagerLibrary.Settings.DefaultUnusedSpaceErasureMethod)
+			foreach (ErasureMethod method in eraseUnusedMethod.Items)
+				if (method.Guid == ManagerLibrary.Settings.DefaultUnusedSpaceErasureMethod)
 				{
 					eraseUnusedMethod.SelectedItem = method;
@@ -166,6 +166,6 @@
 				}
 
-			foreach (Object prng in erasePRNG.Items)
-				if (((Prng)prng).Guid == ManagerLibrary.Settings.ActivePrng)
+			foreach (Prng prng in erasePRNG.Items)
+				if (prng.Guid == ManagerLibrary.Settings.ActivePrng)
 				{
 					erasePRNG.SelectedItem = prng;
@@ -193,6 +193,6 @@
 			if (uiLanguage.SelectedIndex == -1)
 			{
-				foreach (Object lang in uiLanguage.Items)
-					if (((Language)lang).Name == "en")
+				foreach (CultureInfo lang in uiLanguage.Items)
+					if (lang.Name == "en")
 					{
 						uiLanguage.SelectedItem = lang;
@@ -405,7 +405,7 @@
 			}
 
-			if (CultureInfo.CurrentUICulture.Name != ((Language)uiLanguage.SelectedItem).Name)
-			{
-				settings.Language = ((Language)uiLanguage.SelectedItem).Name;
+			if (CultureInfo.CurrentUICulture.Name != ((CultureInfo)uiLanguage.SelectedItem).Name)
+			{
+				settings.Language = ((CultureInfo)uiLanguage.SelectedItem).Name;
 				MessageBox.Show(this, S._("The new UI language will take only effect when " +
 					"Eraser is restarted."), S._("Eraser"), MessageBoxButtons.OK,
Index: /branches/eraser6/CodeReview/Eraser.Manager/Eraser.Manager.csproj
===================================================================
--- /branches/eraser6/CodeReview/Eraser.Manager/Eraser.Manager.csproj	(revision 1793)
+++ /branches/eraser6/CodeReview/Eraser.Manager/Eraser.Manager.csproj	(revision 1794)
@@ -71,5 +71,4 @@
     <Compile Include="FileSystem.cs" />
     <Compile Include="IRegistrar.cs" />
-    <Compile Include="Language.cs" />
     <Compile Include="ManagerLibrary.cs" />
     <Compile Include="Method.cs" />
Index: anches/eraser6/CodeReview/Eraser.Manager/Language.cs
===================================================================
--- /branches/eraser6/CodeReview/Eraser.Manager/Language.cs	(revision 1793)
+++ 	(revision )
@@ -1,138 +1,0 @@
-/* 
- * $Id$
- * Copyright 2008-2010 The Eraser Project
- * Original Author: Kasra Nassiri <cjax@users.sourceforge.net>
- * Modified By: Joel Low <lowjoel@users.sourceforge.net>
- * 
- * This file is part of Eraser.
- * 
- * Eraser is free software: you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version.
- * 
- * Eraser is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- * 
- * A copy of the GNU General Public License can be found at
- * <http://www.gnu.org/licenses/>.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Globalization;
-using System.Reflection;
-using System.IO;
-
-namespace Eraser.Manager
-{
-	/// <summary>
-	/// Basic language class holding the language-related subset of the CultureInfo class
-	/// </summary>
-	public class Language
-	{
-		/// <summary>
-		/// Constructor.
-		/// </summary>
-		/// <param name="info">The culture information structure to retrieve language
-		/// information from.</param>
-		public Language(CultureInfo info)
-		{
-			culture = info;
-		}
-
-		public override string ToString()
-		{
-			return culture.DisplayName;
-		}
-
-		/// <summary>
-		/// Gets the culture name in the format "&lt;languagecode2&gt;-&lt;country/regioncode2&gt;".
-		/// 
-		/// The culture name in the format "&lt;languagecode2&gt;-&lt;country/regioncode2&gt;", where
-		/// &lt;languagecode2&gt; is a lowercase two-letter code derived from ISO 639-1 and
-		/// &lt;country/regioncode2&gt; is an uppercase two-letter code derived from ISO 3166.
-		/// </summary>
-		public string Name
-		{
-			get { return culture.Name; }
-		}
-
-		/// <summary>
-		/// Gets the culture name in the format "&lt;languagefull&gt; (&lt;country/regionfull&gt;)"
-		/// in the language of the localized version of .NET Framework.
-		/// 
-		/// The culture name in the format "&lt;languagefull&gt; (&lt;country/regionfull&gt;)" in
-		/// the language of the localized version of .NET Framework, where &lt;languagefull&gt;
-		/// is the full name of the language and &lt;country/regionfull&gt; is the full name
-		/// of the country/region.
-		/// </summary>
-		public string DisplayName
-		{
-			get { return culture.DisplayName; }
-		}
-
-		/// <summary>
-		/// Gets the culture name in the format "&lt;languagefull&gt; (&lt;country/regionfull&gt;)"
-		/// in English.
-		/// 
-		/// The culture name in the format "&lt;languagefull&gt; (&lt;country/regionfull&gt;)" in
-		/// English, where &lt;languagefull&gt; is the full name of the language and
-		/// &lt;country/regionfull&gt; is the full name of the country/region.
-		/// </summary>
-		public string EnglishName
-		{
-			get { return culture.EnglishName; }
-		}
-
-		/// <summary>
-		/// Converts the current Language object into a .NET CultureInfo object.
-		/// </summary>
-		/// <param name="lang">The language object being converted.</param>
-		/// <returns>A CultureInfo object, containing the data for the given language.</returns>
-		public static explicit operator CultureInfo(Language lang)
-		{
-			return lang.culture;
-		}
-		
-		public override int GetHashCode()
-		{
-			return culture.GetHashCode();
-		}
-
-		CultureInfo culture;
-	}
-
-	/// <summary>
-	/// A class managing all plugins dealing with languages.
-	/// </summary>
-	public static class LanguageManager
-	{
-		/// <summary>
-		/// Retrieves all present language plugins
-		/// </summary>
-		/// <returns>A list, with an instance of each Language class</returns>
-		public static IList<Language> Items
-		{
-			get
-			{
-				List<Language> result = new List<Language>();
-				foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures))
-				{
-					if (string.IsNullOrEmpty(info.Name))
-						continue;
-					else if (new DirectoryInfo(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) +
-						Path.DirectorySeparatorChar + info.Name).Exists)
-						result.Add(new Language(info));
-				}
-
-				//Last resort
-				if (result.Count == 0)
-					result.Add(new Language(CultureInfo.GetCultureInfo("EN")));
-				return result;
-			}
-		}
-	}
-}
Index: /branches/eraser6/CodeReview/Eraser.Util/Localisation.cs
===================================================================
--- /branches/eraser6/CodeReview/Eraser.Util/Localisation.cs	(revision 1793)
+++ /branches/eraser6/CodeReview/Eraser.Util/Localisation.cs	(revision 1794)
@@ -167,4 +167,29 @@
 				Path.Combine(Path.GetDirectoryName(assembly.Location), culture.Name), //Directory
 				Path.GetFileNameWithoutExtension(assembly.Location) + ".resources.dll"));
+		}
+
+		/// <summary>
+		/// Retrieves all present language plugins
+		/// </summary>
+		/// <returns>A list, with an instance of each Language class</returns>
+		public static IList<CultureInfo> Localisations
+		{
+			get
+			{
+				List<CultureInfo> result = new List<CultureInfo>();
+				Assembly assembly = Assembly.GetEntryAssembly();
+				foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures))
+				{
+					if (string.IsNullOrEmpty(info.Name))
+						continue;
+					else if (LocalisationExists(info, assembly))
+						result.Add(info);
+				}
+
+				//Last resort
+				if (result.Count == 0)
+					result.Add(CultureInfo.GetCultureInfo("EN"));
+				return result.AsReadOnly();
+			}
 		}
 
