changeset 140:60c795eca8de WarFoundry_v0.1beta8_Winforms

Re #265: Add language preference UI * Add initial preferences dialog with translation options * Re-translate main form when language changes * Save translation for later use Only known bug on initial quick implementation is that open unit dialogs become named "{0}" (which should be replaced by unit name), but this should be quite a simple fix
author IBBoard <dev@ibboard.co.uk>
date Sun, 11 Apr 2010 19:55:03 +0000
parents b3eec7735006
children 4aabe514c868
files FrmMain.cs FrmPreferences.Designer.cs FrmPreferences.cs FrmPreferences.resx IBBoard.WarFoundry.GUI.WinForms.csproj translations/en.translation translations/se.translation translations/sv.translation
diffstat 8 files changed, 824 insertions(+), 461 deletions(-) [+]
line wrap: on
line diff
--- a/FrmMain.cs	Tue Apr 06 13:54:37 2010 +0000
+++ b/FrmMain.cs	Sun Apr 11 19:55:03 2010 +0000
@@ -89,7 +89,9 @@
 		private IBBToolStripSplitButton bttnUndo;
 		private IBBToolStripSplitButton bttnRedo;
 		private ToolStrip catToolStrip;
-		private ToolStripPanel toolStripPanel;
+		private ToolStripPanel toolStripPanel;
+		private ToolStripSeparator toolStripSeparator4;
+		private ToolStripMenuItem miPreferences;
 		private IBBToolStripMenuItem miAbout;
 
 		/// <summary>
@@ -130,12 +132,11 @@
 			{
 				log.Error("Translation loading failed for language " + Preferences["language"].ToString(), ex);
 				MessageBox.Show(this, "Translation loading failed for language " + Preferences["language"].ToString(), "Translation failure", MessageBoxButtons.OK, MessageBoxIcon.Error);
-			}
-
-			ControlTranslator.TranslateControls(Controls);
-			ControlTranslator.TranslateComponents(components.Components);
-			ControlTranslator.TranslateComponent(openArmyDialog);
-			ControlTranslator.TranslateComponent(saveArmyDialog);
+			}
+
+			Translation.TranslationChanged += new MethodInvoker(TranslationChanged);
+
+			TranslateControls();
 			unitWindows = new Dictionary<string, FrmUnit>();
 
 			WarFoundryCore.GameSystemChanged+= new GameSystemChangedDelegate(FrmMain_GameSystemChanged);
@@ -159,6 +160,19 @@
             WarFoundryLoader.GetDefault().RegisterFactory(WarFoundryXmlFactory.GetFactory());
 			WarFoundryLoader.GetDefault().FileLoadingFinished += FileLoadingFinished;
 			WarFoundrySaver.SetFileSaver(new WarFoundryXmlSaver());
+		}
+
+		private void TranslateControls()
+		{
+			ControlTranslator.TranslateControls(Controls);
+			ControlTranslator.TranslateComponents(components.Components);
+			ControlTranslator.TranslateComponent(openArmyDialog);
+			ControlTranslator.TranslateComponent(saveArmyDialog);
+		}
+
+		void TranslationChanged()
+		{
+			TranslateControls();
 		}
 
 		public static string DataPath
@@ -211,363 +225,379 @@
 		/// the contents of this method with the code editor.
 		/// </summary>
 		private void InitializeComponent()
-		{
-			this.components = new System.ComponentModel.Container();
-			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
-			this.undoMenu = new System.Windows.Forms.ContextMenu();
-			this.redoMenu = new System.Windows.Forms.ContextMenu();
-			this.mainMenu = new System.Windows.Forms.MainMenu(this.components);
-			this.openArmyDialog = new System.Windows.Forms.OpenFileDialog();
-			this.saveArmyDialog = new System.Windows.Forms.SaveFileDialog();
-			this.statusBarTimer = new System.Windows.Forms.Timer(this.components);
-			this.menuStrip = new System.Windows.Forms.MenuStrip();
-			this.menuFile = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miNewArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miOpenArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miSaveArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miSaveArmyAs = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miExportArmyAs = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miExportArmyAsBasicHTML = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miCloseArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
-			this.miReloadFiles = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
-			this.miExit = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.menuEdit = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miUndo = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miRedo = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.menuHelp = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.miAbout = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
-			this.mainToolStrip = new System.Windows.Forms.ToolStrip();
-			this.bttnNewArmy = new IBBoard.Windows.Forms.IBBToolStripButton();
-			this.bttnOpenArmy = new IBBoard.Windows.Forms.IBBToolStripButton();
-			this.bttnSaveArmy = new IBBoard.Windows.Forms.IBBToolStripButton();
-			this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
-			this.bttnUndo = new IBBoard.Windows.Forms.IBBToolStripSplitButton();
-			this.bttnRedo = new IBBoard.Windows.Forms.IBBToolStripSplitButton();
-			this.catToolStrip = new System.Windows.Forms.ToolStrip();
-			this.statusBar = new IBBoard.Windows.Forms.ColorableStatusBar();
-			this.sbMainPanel = new IBBoard.Windows.Forms.ColorableStatusBarPanel();
-			this.sbErrorPanel = new IBBoard.Windows.Forms.ColorableStatusBarPanel();
-			this.sbPointsPanel = new IBBoard.Windows.Forms.ColorableStatusBarPanel();
-			this.toolStripPanel = new System.Windows.Forms.ToolStripPanel();
-			this.menuStrip.SuspendLayout();
-			this.mainToolStrip.SuspendLayout();
-			((System.ComponentModel.ISupportInitialize) (this.sbMainPanel)).BeginInit();
-			((System.ComponentModel.ISupportInitialize) (this.sbErrorPanel)).BeginInit();
-			((System.ComponentModel.ISupportInitialize) (this.sbPointsPanel)).BeginInit();
-			this.SuspendLayout();
-			// 
-			// saveArmyDialog
-			// 
-			this.saveArmyDialog.Title = "Translatable:saveArmyDialog";
-			// 
-			// statusBarTimer
-			// 
-			this.statusBarTimer.Interval = 5000;
-			this.statusBarTimer.Tick += new System.EventHandler(this.statusBarTimer_Tick);
-			// 
-			// menuStrip
-			// 
-			this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.menuFile,
-            this.menuEdit,
-            this.menuHelp});
-			this.menuStrip.Location = new System.Drawing.Point(0, 0);
-			this.menuStrip.Name = "menuStrip";
-			this.menuStrip.Size = new System.Drawing.Size(790, 24);
-			this.menuStrip.TabIndex = 6;
-			this.menuStrip.Text = "menuStrip1";
-			// 
-			// menuFile
-			// 
-			this.menuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.miNewArmy,
-            this.miOpenArmy,
-            this.miSaveArmy,
-            this.miSaveArmyAs,
-            this.miExportArmyAs,
-            this.miCloseArmy,
-            this.toolStripSeparator1,
-            this.miReloadFiles,
-            this.toolStripSeparator2,
-            this.miExit});
-			this.menuFile.Name = "menuFile";
-			this.menuFile.Size = new System.Drawing.Size(33, 20);
-			this.menuFile.Text = "&file";
-			// 
-			// miNewArmy
-			// 
-			this.miNewArmy.Name = "miNewArmy";
-			this.miNewArmy.Size = new System.Drawing.Size(164, 22);
-			this.miNewArmy.Text = "&new army";
-			this.miNewArmy.Click += new System.EventHandler(this.miNewArmy_Click);
-			// 
-			// miOpenArmy
-			// 
-			this.miOpenArmy.Name = "miOpenArmy";
-			this.miOpenArmy.Size = new System.Drawing.Size(164, 22);
-			this.miOpenArmy.Text = "&open army";
-			this.miOpenArmy.Click += new System.EventHandler(this.miOpenArmy_Click);
-			// 
-			// miSaveArmy
-			// 
-			this.miSaveArmy.Enabled = false;
-			this.miSaveArmy.Name = "miSaveArmy";
-			this.miSaveArmy.Size = new System.Drawing.Size(164, 22);
-			this.miSaveArmy.Text = "&save army";
-			this.miSaveArmy.Click += new System.EventHandler(this.miSaveArmy_Click);
-			// 
-			// miSaveArmyAs
-			// 
-			this.miSaveArmyAs.Enabled = false;
-			this.miSaveArmyAs.Name = "miSaveArmyAs";
-			this.miSaveArmyAs.Size = new System.Drawing.Size(164, 22);
-			this.miSaveArmyAs.Text = "save army &as...";
-			this.miSaveArmyAs.Click += new System.EventHandler(this.miSaveArmyAs_Click);
-			// 
-			// miExportArmyAs
-			// 
-			this.miExportArmyAs.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.miExportArmyAsBasicHTML});
-			this.miExportArmyAs.Enabled = false;
-			this.miExportArmyAs.Name = "miExportArmyAs";
-			this.miExportArmyAs.Size = new System.Drawing.Size(164, 22);
-			this.miExportArmyAs.Text = "export army as...";
-			// 
-			// miExportArmyAsBasicHTML
-			// 
-			this.miExportArmyAsBasicHTML.Name = "miExportArmyAsBasicHTML";
-			this.miExportArmyAsBasicHTML.Size = new System.Drawing.Size(130, 22);
-			this.miExportArmyAsBasicHTML.Text = "&basic html";
-			this.miExportArmyAsBasicHTML.Click += new System.EventHandler(this.miExportArmyAsBasicHTML_Click);
-			// 
-			// miCloseArmy
-			// 
-			this.miCloseArmy.Enabled = false;
-			this.miCloseArmy.Name = "miCloseArmy";
-			this.miCloseArmy.Size = new System.Drawing.Size(164, 22);
-			this.miCloseArmy.Text = "&close army";
-			this.miCloseArmy.Click += new System.EventHandler(this.miCloseArmy_Click);
-			// 
-			// toolStripSeparator1
-			// 
-			this.toolStripSeparator1.Name = "toolStripSeparator1";
-			this.toolStripSeparator1.Size = new System.Drawing.Size(161, 6);
-			// 
-			// miReloadFiles
-			// 
-			this.miReloadFiles.Name = "miReloadFiles";
-			this.miReloadFiles.Size = new System.Drawing.Size(164, 22);
-			this.miReloadFiles.Text = "&reload files";
-			this.miReloadFiles.Click += new System.EventHandler(this.miReloadFiles_Click);
-			// 
-			// toolStripSeparator2
-			// 
-			this.toolStripSeparator2.Name = "toolStripSeparator2";
-			this.toolStripSeparator2.Size = new System.Drawing.Size(161, 6);
-			// 
-			// miExit
-			// 
-			this.miExit.Name = "miExit";
-			this.miExit.Size = new System.Drawing.Size(164, 22);
-			this.miExit.Text = "e&xit";
-			this.miExit.Click += new System.EventHandler(this.miExit_Click);
-			// 
-			// menuEdit
-			// 
-			this.menuEdit.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.miUndo,
-            this.miRedo});
-			this.menuEdit.Name = "menuEdit";
-			this.menuEdit.Size = new System.Drawing.Size(36, 20);
-			this.menuEdit.Text = "&edit";
-			// 
-			// miUndo
-			// 
-			this.miUndo.Enabled = false;
-			this.miUndo.Name = "miUndo";
-			this.miUndo.Size = new System.Drawing.Size(106, 22);
-			this.miUndo.Text = "&undo";
-			this.miUndo.Click += new System.EventHandler(this.miUndo_Click);
-			// 
-			// miRedo
-			// 
-			this.miRedo.Enabled = false;
-			this.miRedo.Name = "miRedo";
-			this.miRedo.Size = new System.Drawing.Size(106, 22);
-			this.miRedo.Text = "&redo";
-			this.miRedo.Click += new System.EventHandler(this.miRedo_Click);
-			// 
-			// menuHelp
-			// 
-			this.menuHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.miAbout});
-			this.menuHelp.Name = "menuHelp";
-			this.menuHelp.Size = new System.Drawing.Size(39, 20);
-			this.menuHelp.Text = "&help";
-			// 
-			// miAbout
-			// 
-			this.miAbout.Name = "miAbout";
-			this.miAbout.Size = new System.Drawing.Size(109, 22);
-			this.miAbout.Text = "&about";
-			this.miAbout.Click += new System.EventHandler(this.miAbout_Click);
-			// 
-			// mainToolStrip
-			// 
-			this.mainToolStrip.Dock = System.Windows.Forms.DockStyle.None;
-			this.mainToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.bttnNewArmy,
-            this.bttnOpenArmy,
-            this.bttnSaveArmy,
-            this.toolStripSeparator3,
-            this.bttnUndo,
-            this.bttnRedo});
-			this.mainToolStrip.Location = new System.Drawing.Point(0, 24);
-			this.mainToolStrip.Name = "mainToolStrip";
-			this.mainToolStrip.Size = new System.Drawing.Size(151, 25);
-			this.mainToolStrip.TabIndex = 8;
-			// 
-			// bttnNewArmy
-			// 
-			this.bttnNewArmy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.bttnNewArmy.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.document_new;
-			this.bttnNewArmy.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.bttnNewArmy.Name = "bttnNewArmy";
-			this.bttnNewArmy.Size = new System.Drawing.Size(23, 22);
-			this.bttnNewArmy.Text = "new army";
-			this.bttnNewArmy.Click += new System.EventHandler(this.miNewArmy_Click);
-			// 
-			// bttnOpenArmy
-			// 
-			this.bttnOpenArmy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.bttnOpenArmy.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.document_open;
-			this.bttnOpenArmy.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.bttnOpenArmy.Name = "bttnOpenArmy";
-			this.bttnOpenArmy.Size = new System.Drawing.Size(23, 22);
-			this.bttnOpenArmy.Text = "open army";
-			this.bttnOpenArmy.Click += new System.EventHandler(this.miOpenArmy_Click);
-			// 
-			// bttnSaveArmy
-			// 
-			this.bttnSaveArmy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.bttnSaveArmy.Enabled = false;
-			this.bttnSaveArmy.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.document_save;
-			this.bttnSaveArmy.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.bttnSaveArmy.Name = "bttnSaveArmy";
-			this.bttnSaveArmy.Size = new System.Drawing.Size(23, 22);
-			this.bttnSaveArmy.Text = "save army";
-			this.bttnSaveArmy.Click += new System.EventHandler(this.miSaveArmy_Click);
-			// 
-			// toolStripSeparator3
-			// 
-			this.toolStripSeparator3.Name = "toolStripSeparator3";
-			this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
-			// 
-			// bttnUndo
-			// 
-			this.bttnUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.bttnUndo.Enabled = false;
-			this.bttnUndo.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.edit_undo;
-			this.bttnUndo.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.bttnUndo.Name = "bttnUndo";
-			this.bttnUndo.Size = new System.Drawing.Size(32, 22);
-			this.bttnUndo.Text = "undo";
-			this.bttnUndo.ButtonClick += new System.EventHandler(this.miUndo_Click);
-			// 
-			// bttnRedo
-			// 
-			this.bttnRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.bttnRedo.Enabled = false;
-			this.bttnRedo.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.edit_redo;
-			this.bttnRedo.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.bttnRedo.Name = "bttnRedo";
-			this.bttnRedo.Size = new System.Drawing.Size(32, 22);
-			this.bttnRedo.Text = "redo";
-			this.bttnRedo.ButtonClick += new System.EventHandler(this.miRedo_Click);
-			// 
-			// catToolStrip
-			// 
-			this.catToolStrip.Dock = System.Windows.Forms.DockStyle.None;
-			this.catToolStrip.Location = new System.Drawing.Point(161, 24);
-			this.catToolStrip.Name = "catToolStrip";
-			this.catToolStrip.Size = new System.Drawing.Size(111, 25);
-			this.catToolStrip.TabIndex = 9;
-			this.catToolStrip.Visible = false;
-			// 
-			// statusBar
-			// 
-			this.statusBar.Location = new System.Drawing.Point(0, 586);
-			this.statusBar.Name = "statusBar";
-			this.statusBar.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
-            this.sbMainPanel,
-            this.sbErrorPanel,
-            this.sbPointsPanel});
-			this.statusBar.ShowPanels = true;
-			this.statusBar.Size = new System.Drawing.Size(790, 22);
-			this.statusBar.TabIndex = 1;
-			this.statusBar.PanelClick += new System.Windows.Forms.StatusBarPanelClickEventHandler(this.statusBar_PanelClick);
-			this.statusBar.DrawItem += new System.Windows.Forms.StatusBarDrawItemEventHandler(this.statusBar_DrawItem);
-			// 
-			// sbMainPanel
-			// 
-			this.sbMainPanel.AutoSize = System.Windows.Forms.StatusBarPanelAutoSize.Spring;
-			this.sbMainPanel.Color = System.Drawing.SystemColors.WindowText;
-			this.sbMainPanel.Name = "sbMainPanel";
-			this.sbMainPanel.Style = System.Windows.Forms.StatusBarPanelStyle.OwnerDraw;
-			this.sbMainPanel.Width = 473;
-			// 
-			// sbErrorPanel
-			// 
-			this.sbErrorPanel.Color = System.Drawing.SystemColors.WindowText;
-			this.sbErrorPanel.Name = "sbErrorPanel";
-			this.sbErrorPanel.Style = System.Windows.Forms.StatusBarPanelStyle.OwnerDraw;
-			this.sbErrorPanel.Width = 150;
-			// 
-			// sbPointsPanel
-			// 
-			this.sbPointsPanel.Color = System.Drawing.SystemColors.WindowText;
-			this.sbPointsPanel.Name = "sbPointsPanel";
-			this.sbPointsPanel.Style = System.Windows.Forms.StatusBarPanelStyle.OwnerDraw;
-			this.sbPointsPanel.ToolTipText = "current points total";
-			this.sbPointsPanel.Width = 150;
-			// 
-			// toolStripPanel
-			// 
-			this.toolStripPanel.Dock = System.Windows.Forms.DockStyle.Top;
-			this.toolStripPanel.Location = new System.Drawing.Point(0, 24);
-			this.toolStripPanel.Name = "toolStripPanel";
-			this.toolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
-			this.toolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
-			this.toolStripPanel.Size = new System.Drawing.Size(790, 0);
-			// 
-			// FrmMain
-			// 
-			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
-			this.ClientSize = new System.Drawing.Size(790, 608);
-			this.Controls.Add(this.mainToolStrip);
-			this.Controls.Add(this.toolStripPanel);
-			this.Controls.Add(this.statusBar);
-			this.Controls.Add(this.catToolStrip);
-			this.Controls.Add(this.menuStrip);
-			this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon")));
-			this.IsMdiContainer = true;
-			this.MainMenuStrip = this.menuStrip;
-			this.Menu = this.mainMenu;
-			this.Name = "FrmMain";
-			this.Text = "WarFoundry";
-			this.Load += new System.EventHandler(this.FrmMain_Load);
-			this.menuStrip.ResumeLayout(false);
-			this.menuStrip.PerformLayout();
-			this.mainToolStrip.ResumeLayout(false);
-			this.mainToolStrip.PerformLayout();
-			((System.ComponentModel.ISupportInitialize) (this.sbMainPanel)).EndInit();
-			((System.ComponentModel.ISupportInitialize) (this.sbErrorPanel)).EndInit();
-			((System.ComponentModel.ISupportInitialize) (this.sbPointsPanel)).EndInit();
-			this.ResumeLayout(false);
-			this.PerformLayout();
-
+		{
+			this.components = new System.ComponentModel.Container();
+			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
+			this.undoMenu = new System.Windows.Forms.ContextMenu();
+			this.redoMenu = new System.Windows.Forms.ContextMenu();
+			this.mainMenu = new System.Windows.Forms.MainMenu(this.components);
+			this.openArmyDialog = new System.Windows.Forms.OpenFileDialog();
+			this.saveArmyDialog = new System.Windows.Forms.SaveFileDialog();
+			this.statusBarTimer = new System.Windows.Forms.Timer(this.components);
+			this.menuStrip = new System.Windows.Forms.MenuStrip();
+			this.menuFile = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miNewArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miOpenArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miSaveArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miSaveArmyAs = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miExportArmyAs = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miExportArmyAsBasicHTML = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miCloseArmy = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+			this.miReloadFiles = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+			this.miExit = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.menuEdit = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miUndo = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miRedo = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.menuHelp = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.miAbout = new IBBoard.Windows.Forms.IBBToolStripMenuItem();
+			this.mainToolStrip = new System.Windows.Forms.ToolStrip();
+			this.bttnNewArmy = new IBBoard.Windows.Forms.IBBToolStripButton();
+			this.bttnOpenArmy = new IBBoard.Windows.Forms.IBBToolStripButton();
+			this.bttnSaveArmy = new IBBoard.Windows.Forms.IBBToolStripButton();
+			this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+			this.bttnUndo = new IBBoard.Windows.Forms.IBBToolStripSplitButton();
+			this.bttnRedo = new IBBoard.Windows.Forms.IBBToolStripSplitButton();
+			this.catToolStrip = new System.Windows.Forms.ToolStrip();
+			this.statusBar = new IBBoard.Windows.Forms.ColorableStatusBar();
+			this.sbMainPanel = new IBBoard.Windows.Forms.ColorableStatusBarPanel();
+			this.sbErrorPanel = new IBBoard.Windows.Forms.ColorableStatusBarPanel();
+			this.sbPointsPanel = new IBBoard.Windows.Forms.ColorableStatusBarPanel();
+			this.toolStripPanel = new System.Windows.Forms.ToolStripPanel();
+			this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+			this.miPreferences = new System.Windows.Forms.ToolStripMenuItem();
+			this.menuStrip.SuspendLayout();
+			this.mainToolStrip.SuspendLayout();
+			((System.ComponentModel.ISupportInitialize) (this.sbMainPanel)).BeginInit();
+			((System.ComponentModel.ISupportInitialize) (this.sbErrorPanel)).BeginInit();
+			((System.ComponentModel.ISupportInitialize) (this.sbPointsPanel)).BeginInit();
+			this.SuspendLayout();
+			// 
+			// saveArmyDialog
+			// 
+			this.saveArmyDialog.Title = "Translatable:saveArmyDialog";
+			// 
+			// statusBarTimer
+			// 
+			this.statusBarTimer.Interval = 5000;
+			this.statusBarTimer.Tick += new System.EventHandler(this.statusBarTimer_Tick);
+			// 
+			// menuStrip
+			// 
+			this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menuFile,
+            this.menuEdit,
+            this.menuHelp});
+			this.menuStrip.Location = new System.Drawing.Point(0, 0);
+			this.menuStrip.Name = "menuStrip";
+			this.menuStrip.Size = new System.Drawing.Size(790, 24);
+			this.menuStrip.TabIndex = 6;
+			this.menuStrip.Text = "menuStrip1";
+			// 
+			// menuFile
+			// 
+			this.menuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.miNewArmy,
+            this.miOpenArmy,
+            this.miSaveArmy,
+            this.miSaveArmyAs,
+            this.miExportArmyAs,
+            this.miCloseArmy,
+            this.toolStripSeparator1,
+            this.miReloadFiles,
+            this.toolStripSeparator2,
+            this.miExit});
+			this.menuFile.Name = "menuFile";
+			this.menuFile.Size = new System.Drawing.Size(33, 20);
+			this.menuFile.Text = "&file";
+			// 
+			// miNewArmy
+			// 
+			this.miNewArmy.Name = "miNewArmy";
+			this.miNewArmy.Size = new System.Drawing.Size(164, 22);
+			this.miNewArmy.Text = "&new army";
+			this.miNewArmy.Click += new System.EventHandler(this.miNewArmy_Click);
+			// 
+			// miOpenArmy
+			// 
+			this.miOpenArmy.Name = "miOpenArmy";
+			this.miOpenArmy.Size = new System.Drawing.Size(164, 22);
+			this.miOpenArmy.Text = "&open army";
+			this.miOpenArmy.Click += new System.EventHandler(this.miOpenArmy_Click);
+			// 
+			// miSaveArmy
+			// 
+			this.miSaveArmy.Enabled = false;
+			this.miSaveArmy.Name = "miSaveArmy";
+			this.miSaveArmy.Size = new System.Drawing.Size(164, 22);
+			this.miSaveArmy.Text = "&save army";
+			this.miSaveArmy.Click += new System.EventHandler(this.miSaveArmy_Click);
+			// 
+			// miSaveArmyAs
+			// 
+			this.miSaveArmyAs.Enabled = false;
+			this.miSaveArmyAs.Name = "miSaveArmyAs";
+			this.miSaveArmyAs.Size = new System.Drawing.Size(164, 22);
+			this.miSaveArmyAs.Text = "save army &as...";
+			this.miSaveArmyAs.Click += new System.EventHandler(this.miSaveArmyAs_Click);
+			// 
+			// miExportArmyAs
+			// 
+			this.miExportArmyAs.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.miExportArmyAsBasicHTML});
+			this.miExportArmyAs.Enabled = false;
+			this.miExportArmyAs.Name = "miExportArmyAs";
+			this.miExportArmyAs.Size = new System.Drawing.Size(164, 22);
+			this.miExportArmyAs.Text = "export army as...";
+			// 
+			// miExportArmyAsBasicHTML
+			// 
+			this.miExportArmyAsBasicHTML.Name = "miExportArmyAsBasicHTML";
+			this.miExportArmyAsBasicHTML.Size = new System.Drawing.Size(130, 22);
+			this.miExportArmyAsBasicHTML.Text = "&basic html";
+			this.miExportArmyAsBasicHTML.Click += new System.EventHandler(this.miExportArmyAsBasicHTML_Click);
+			// 
+			// miCloseArmy
+			// 
+			this.miCloseArmy.Enabled = false;
+			this.miCloseArmy.Name = "miCloseArmy";
+			this.miCloseArmy.Size = new System.Drawing.Size(164, 22);
+			this.miCloseArmy.Text = "&close army";
+			this.miCloseArmy.Click += new System.EventHandler(this.miCloseArmy_Click);
+			// 
+			// toolStripSeparator1
+			// 
+			this.toolStripSeparator1.Name = "toolStripSeparator1";
+			this.toolStripSeparator1.Size = new System.Drawing.Size(161, 6);
+			// 
+			// miReloadFiles
+			// 
+			this.miReloadFiles.Name = "miReloadFiles";
+			this.miReloadFiles.Size = new System.Drawing.Size(164, 22);
+			this.miReloadFiles.Text = "&reload files";
+			this.miReloadFiles.Click += new System.EventHandler(this.miReloadFiles_Click);
+			// 
+			// toolStripSeparator2
+			// 
+			this.toolStripSeparator2.Name = "toolStripSeparator2";
+			this.toolStripSeparator2.Size = new System.Drawing.Size(161, 6);
+			// 
+			// miExit
+			// 
+			this.miExit.Name = "miExit";
+			this.miExit.Size = new System.Drawing.Size(164, 22);
+			this.miExit.Text = "e&xit";
+			this.miExit.Click += new System.EventHandler(this.miExit_Click);
+			// 
+			// menuEdit
+			// 
+			this.menuEdit.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.miUndo,
+            this.miRedo,
+            this.toolStripSeparator4,
+            this.miPreferences});
+			this.menuEdit.Name = "menuEdit";
+			this.menuEdit.Size = new System.Drawing.Size(36, 20);
+			this.menuEdit.Text = "&edit";
+			// 
+			// miUndo
+			// 
+			this.miUndo.Enabled = false;
+			this.miUndo.Name = "miUndo";
+			this.miUndo.Size = new System.Drawing.Size(152, 22);
+			this.miUndo.Text = "&undo";
+			this.miUndo.Click += new System.EventHandler(this.miUndo_Click);
+			// 
+			// miRedo
+			// 
+			this.miRedo.Enabled = false;
+			this.miRedo.Name = "miRedo";
+			this.miRedo.Size = new System.Drawing.Size(152, 22);
+			this.miRedo.Text = "&redo";
+			this.miRedo.Click += new System.EventHandler(this.miRedo_Click);
+			// 
+			// menuHelp
+			// 
+			this.menuHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.miAbout});
+			this.menuHelp.Name = "menuHelp";
+			this.menuHelp.Size = new System.Drawing.Size(39, 20);
+			this.menuHelp.Text = "&help";
+			// 
+			// miAbout
+			// 
+			this.miAbout.Name = "miAbout";
+			this.miAbout.Size = new System.Drawing.Size(109, 22);
+			this.miAbout.Text = "&about";
+			this.miAbout.Click += new System.EventHandler(this.miAbout_Click);
+			// 
+			// mainToolStrip
+			// 
+			this.mainToolStrip.Dock = System.Windows.Forms.DockStyle.None;
+			this.mainToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.bttnNewArmy,
+            this.bttnOpenArmy,
+            this.bttnSaveArmy,
+            this.toolStripSeparator3,
+            this.bttnUndo,
+            this.bttnRedo});
+			this.mainToolStrip.Location = new System.Drawing.Point(0, 24);
+			this.mainToolStrip.Name = "mainToolStrip";
+			this.mainToolStrip.Size = new System.Drawing.Size(151, 25);
+			this.mainToolStrip.TabIndex = 8;
+			// 
+			// bttnNewArmy
+			// 
+			this.bttnNewArmy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.bttnNewArmy.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.document_new;
+			this.bttnNewArmy.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.bttnNewArmy.Name = "bttnNewArmy";
+			this.bttnNewArmy.Size = new System.Drawing.Size(23, 22);
+			this.bttnNewArmy.Text = "new army";
+			this.bttnNewArmy.Click += new System.EventHandler(this.miNewArmy_Click);
+			// 
+			// bttnOpenArmy
+			// 
+			this.bttnOpenArmy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.bttnOpenArmy.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.document_open;
+			this.bttnOpenArmy.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.bttnOpenArmy.Name = "bttnOpenArmy";
+			this.bttnOpenArmy.Size = new System.Drawing.Size(23, 22);
+			this.bttnOpenArmy.Text = "open army";
+			this.bttnOpenArmy.Click += new System.EventHandler(this.miOpenArmy_Click);
+			// 
+			// bttnSaveArmy
+			// 
+			this.bttnSaveArmy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.bttnSaveArmy.Enabled = false;
+			this.bttnSaveArmy.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.document_save;
+			this.bttnSaveArmy.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.bttnSaveArmy.Name = "bttnSaveArmy";
+			this.bttnSaveArmy.Size = new System.Drawing.Size(23, 22);
+			this.bttnSaveArmy.Text = "save army";
+			this.bttnSaveArmy.Click += new System.EventHandler(this.miSaveArmy_Click);
+			// 
+			// toolStripSeparator3
+			// 
+			this.toolStripSeparator3.Name = "toolStripSeparator3";
+			this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
+			// 
+			// bttnUndo
+			// 
+			this.bttnUndo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.bttnUndo.Enabled = false;
+			this.bttnUndo.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.edit_undo;
+			this.bttnUndo.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.bttnUndo.Name = "bttnUndo";
+			this.bttnUndo.Size = new System.Drawing.Size(32, 22);
+			this.bttnUndo.Text = "undo";
+			this.bttnUndo.ButtonClick += new System.EventHandler(this.miUndo_Click);
+			// 
+			// bttnRedo
+			// 
+			this.bttnRedo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.bttnRedo.Enabled = false;
+			this.bttnRedo.Image = global::IBBoard.WarFoundry.GUI.WinForms.Properties.Resources.edit_redo;
+			this.bttnRedo.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.bttnRedo.Name = "bttnRedo";
+			this.bttnRedo.Size = new System.Drawing.Size(32, 22);
+			this.bttnRedo.Text = "redo";
+			this.bttnRedo.ButtonClick += new System.EventHandler(this.miRedo_Click);
+			// 
+			// catToolStrip
+			// 
+			this.catToolStrip.Dock = System.Windows.Forms.DockStyle.None;
+			this.catToolStrip.Location = new System.Drawing.Point(161, 24);
+			this.catToolStrip.Name = "catToolStrip";
+			this.catToolStrip.Size = new System.Drawing.Size(111, 25);
+			this.catToolStrip.TabIndex = 9;
+			this.catToolStrip.Visible = false;
+			// 
+			// statusBar
+			// 
+			this.statusBar.Location = new System.Drawing.Point(0, 586);
+			this.statusBar.Name = "statusBar";
+			this.statusBar.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
+            this.sbMainPanel,
+            this.sbErrorPanel,
+            this.sbPointsPanel});
+			this.statusBar.ShowPanels = true;
+			this.statusBar.Size = new System.Drawing.Size(790, 22);
+			this.statusBar.TabIndex = 1;
+			this.statusBar.PanelClick += new System.Windows.Forms.StatusBarPanelClickEventHandler(this.statusBar_PanelClick);
+			this.statusBar.DrawItem += new System.Windows.Forms.StatusBarDrawItemEventHandler(this.statusBar_DrawItem);
+			// 
+			// sbMainPanel
+			// 
+			this.sbMainPanel.AutoSize = System.Windows.Forms.StatusBarPanelAutoSize.Spring;
+			this.sbMainPanel.Color = System.Drawing.SystemColors.WindowText;
+			this.sbMainPanel.Name = "sbMainPanel";
+			this.sbMainPanel.Style = System.Windows.Forms.StatusBarPanelStyle.OwnerDraw;
+			this.sbMainPanel.Width = 473;
+			// 
+			// sbErrorPanel
+			// 
+			this.sbErrorPanel.Color = System.Drawing.SystemColors.WindowText;
+			this.sbErrorPanel.Name = "sbErrorPanel";
+			this.sbErrorPanel.Style = System.Windows.Forms.StatusBarPanelStyle.OwnerDraw;
+			this.sbErrorPanel.Width = 150;
+			// 
+			// sbPointsPanel
+			// 
+			this.sbPointsPanel.Color = System.Drawing.SystemColors.WindowText;
+			this.sbPointsPanel.Name = "sbPointsPanel";
+			this.sbPointsPanel.Style = System.Windows.Forms.StatusBarPanelStyle.OwnerDraw;
+			this.sbPointsPanel.ToolTipText = "current points total";
+			this.sbPointsPanel.Width = 150;
+			// 
+			// toolStripPanel
+			// 
+			this.toolStripPanel.Dock = System.Windows.Forms.DockStyle.Top;
+			this.toolStripPanel.Location = new System.Drawing.Point(0, 24);
+			this.toolStripPanel.Name = "toolStripPanel";
+			this.toolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
+			this.toolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
+			this.toolStripPanel.Size = new System.Drawing.Size(790, 0);
+			// 
+			// toolStripSeparator4
+			// 
+			this.toolStripSeparator4.Name = "toolStripSeparator4";
+			this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6);
+			// 
+			// miPreferences
+			// 
+			this.miPreferences.Name = "miPreferences";
+			this.miPreferences.Size = new System.Drawing.Size(152, 22);
+			this.miPreferences.Text = "&preferences";
+			this.miPreferences.Click += new System.EventHandler(this.miPreferences_Click);
+			// 
+			// FrmMain
+			// 
+			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+			this.ClientSize = new System.Drawing.Size(790, 608);
+			this.Controls.Add(this.mainToolStrip);
+			this.Controls.Add(this.toolStripPanel);
+			this.Controls.Add(this.statusBar);
+			this.Controls.Add(this.catToolStrip);
+			this.Controls.Add(this.menuStrip);
+			this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon")));
+			this.IsMdiContainer = true;
+			this.MainMenuStrip = this.menuStrip;
+			this.Menu = this.mainMenu;
+			this.Name = "FrmMain";
+			this.Text = "WarFoundry";
+			this.Load += new System.EventHandler(this.FrmMain_Load);
+			this.menuStrip.ResumeLayout(false);
+			this.menuStrip.PerformLayout();
+			this.mainToolStrip.ResumeLayout(false);
+			this.mainToolStrip.PerformLayout();
+			((System.ComponentModel.ISupportInitialize) (this.sbMainPanel)).EndInit();
+			((System.ComponentModel.ISupportInitialize) (this.sbErrorPanel)).EndInit();
+			((System.ComponentModel.ISupportInitialize) (this.sbPointsPanel)).EndInit();
+			this.ResumeLayout(false);
+			this.PerformLayout();
+
 		}
 		#endregion
 
@@ -1352,6 +1382,12 @@
 		{
 			FrmAbout about = new FrmAbout();
 			about.ShowDialog(this);
+		}
+
+		private void miPreferences_Click(object sender, EventArgs e)
+		{
+			FrmPreferences prefsForm = new FrmPreferences(Preferences);
+			prefsForm.Show(this);
 		}
 	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FrmPreferences.Designer.cs	Sun Apr 11 19:55:03 2010 +0000
@@ -0,0 +1,121 @@
+namespace IBBoard.WarFoundry.GUI.WinForms
+{
+	partial class FrmPreferences
+	{
+		/// <summary>
+		/// Required designer variable.
+		/// </summary>
+		private System.ComponentModel.IContainer components = null;
+
+		/// <summary>
+		/// Clean up any resources being used.
+		/// </summary>
+		/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+		protected override void Dispose(bool disposing)
+		{
+			if (disposing && (components != null))
+			{
+				components.Dispose();
+			}
+			base.Dispose(disposing);
+		}
+
+		#region Windows Form Designer generated code
+
+		/// <summary>
+		/// Required method for Designer support - do not modify
+		/// the contents of this method with the code editor.
+		/// </summary>
+		private void InitializeComponent()
+		{
+			this.preferenceSections = new System.Windows.Forms.TreeView();
+			this.languagesGroup = new System.Windows.Forms.GroupBox();
+			this.lblLanguage = new IBBoard.Windows.Forms.IBBLabel();
+			this.languageList = new System.Windows.Forms.ComboBox();
+			this.bttnOkay = new System.Windows.Forms.Button();
+			this.bttnCancel = new System.Windows.Forms.Button();
+			this.languagesGroup.SuspendLayout();
+			this.SuspendLayout();
+			// 
+			// preferenceSections
+			// 
+			this.preferenceSections.Location = new System.Drawing.Point(12, 12);
+			this.preferenceSections.Name = "preferenceSections";
+			this.preferenceSections.Size = new System.Drawing.Size(159, 340);
+			this.preferenceSections.TabIndex = 0;
+			// 
+			// languagesGroup
+			// 
+			this.languagesGroup.Controls.Add(this.languageList);
+			this.languagesGroup.Controls.Add(this.lblLanguage);
+			this.languagesGroup.Location = new System.Drawing.Point(177, 12);
+			this.languagesGroup.Name = "languagesGroup";
+			this.languagesGroup.Size = new System.Drawing.Size(436, 300);
+			this.languagesGroup.TabIndex = 1;
+			this.languagesGroup.TabStop = false;
+			this.languagesGroup.Text = "languages";
+			// 
+			// lblLanguage
+			// 
+			this.lblLanguage.Location = new System.Drawing.Point(6, 28);
+			this.lblLanguage.Name = "lblLanguage";
+			this.lblLanguage.Size = new System.Drawing.Size(138, 23);
+			this.lblLanguage.TabIndex = 0;
+			this.lblLanguage.Text = "language:";
+			// 
+			// languageList
+			// 
+			this.languageList.FormattingEnabled = true;
+			this.languageList.Location = new System.Drawing.Point(150, 25);
+			this.languageList.Name = "languageList";
+			this.languageList.Size = new System.Drawing.Size(121, 21);
+			this.languageList.TabIndex = 1;
+			// 
+			// bttnOkay
+			// 
+			this.bttnOkay.Enabled = false;
+			this.bttnOkay.Location = new System.Drawing.Point(538, 328);
+			this.bttnOkay.Name = "bttnOkay";
+			this.bttnOkay.Size = new System.Drawing.Size(75, 23);
+			this.bttnOkay.TabIndex = 2;
+			this.bttnOkay.Text = "okay";
+			this.bttnOkay.UseVisualStyleBackColor = true;
+			this.bttnOkay.Click += new System.EventHandler(this.bttnOkay_Click);
+			// 
+			// bttnCancel
+			// 
+			this.bttnCancel.Location = new System.Drawing.Point(457, 329);
+			this.bttnCancel.Name = "bttnCancel";
+			this.bttnCancel.Size = new System.Drawing.Size(75, 23);
+			this.bttnCancel.TabIndex = 3;
+			this.bttnCancel.Text = "cancel";
+			this.bttnCancel.UseVisualStyleBackColor = true;
+			this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click);
+			// 
+			// FrmPreferences
+			// 
+			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.ClientSize = new System.Drawing.Size(625, 364);
+			this.Controls.Add(this.bttnCancel);
+			this.Controls.Add(this.bttnOkay);
+			this.Controls.Add(this.languagesGroup);
+			this.Controls.Add(this.preferenceSections);
+			this.Name = "FrmPreferences";
+			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+			this.Text = "preferences";
+			this.languagesGroup.ResumeLayout(false);
+			this.ResumeLayout(false);
+
+		}
+
+		#endregion
+
+		private System.Windows.Forms.TreeView preferenceSections;
+		private System.Windows.Forms.GroupBox languagesGroup;
+		private System.Windows.Forms.ComboBox languageList;
+		private IBBoard.Windows.Forms.IBBLabel lblLanguage;
+		private System.Windows.Forms.Button bttnOkay;
+		private System.Windows.Forms.Button bttnCancel;
+	}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FrmPreferences.cs	Sun Apr 11 19:55:03 2010 +0000
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Globalization;
+using System.Text;
+using System.Windows.Forms;
+using IBBoard.Lang;
+using IBBoard.Windows.Forms;
+using IBBoard.Windows.Forms.I18N;
+
+namespace IBBoard.WarFoundry.GUI.WinForms
+{
+	public partial class FrmPreferences : IBBForm
+	{
+		private Preferences prefs;
+
+		public FrmPreferences(Preferences preferences)
+		{
+			prefs = preferences;
+			InitializeComponent();
+			TranslateForm();
+			SetValues();
+		}
+
+		private void TranslateForm()
+		{
+			ControlTranslator.TranslateComponent(this);
+			languagesGroup.Text = Translation.GetTranslation("languagesGroup", "language");
+		}
+
+		private void SetValues()
+		{
+			preferenceSections.Nodes.Add(Translation.GetTranslation("languagePrefSection", "language"));
+			ICollection<TranslationLanguage> langs = Translation.GetLanguages();
+			List<TranslationLanguage> sortedLangs = new List<TranslationLanguage>(langs);
+			sortedLangs.Sort(CompareLanguages);
+			languageList.DataSource = sortedLangs;
+			languageList.DisplayMember = "Name";
+			languageList.SelectedItem = Translation.GetTranslationSet(Translation.GetTranslationLanguage()).Language;
+			languageList.SelectedIndexChanged += new EventHandler(languageList_SelectedIndexChanged);
+		}
+
+		private void languageList_SelectedIndexChanged(object sender, EventArgs e)
+		{
+			bttnOkay.Enabled = !(languageList.SelectedItem.Equals(Translation.GetTranslationLanguage()));
+		}
+
+		private void bttnCancel_Click(object sender, EventArgs e)
+		{
+			Close();
+		}
+
+		private void bttnOkay_Click(object sender, EventArgs e)
+		{
+			TranslationLanguage lang = (TranslationLanguage)languageList.SelectedItem;
+			string langCode = lang.Code;
+			Translation.LoadTranslation(langCode);
+			prefs["language"] = langCode;
+			prefs.Save();
+			Close();
+		}
+
+		private int CompareLanguages(TranslationLanguage lang1, TranslationLanguage lang2)
+		{
+			CompareOptions options = CompareOptions.IgnoreCase | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth;
+			return CultureInfo.CurrentCulture.CompareInfo.Compare(lang1.Name, lang2.Name, options);
+		}
+	}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FrmPreferences.resx	Sun Apr 11 19:55:03 2010 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
--- a/IBBoard.WarFoundry.GUI.WinForms.csproj	Tue Apr 06 13:54:37 2010 +0000
+++ b/IBBoard.WarFoundry.GUI.WinForms.csproj	Sun Apr 11 19:55:03 2010 +0000
@@ -140,6 +140,12 @@
     <Compile Include="FrmNewUnitEquipment.cs">
       <SubType>Form</SubType>
     </Compile>
+    <Compile Include="FrmPreferences.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="FrmPreferences.Designer.cs">
+      <DependentUpon>FrmPreferences.cs</DependentUpon>
+    </Compile>
     <Compile Include="FrmReplaceUnitEquipment.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -188,6 +194,10 @@
       <DependentUpon>FrmNewUnitEquipment.cs</DependentUpon>
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="FrmPreferences.resx">
+      <SubType>Designer</SubType>
+      <DependentUpon>FrmPreferences.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="FrmReplaceUnitEquipment.resx">
       <DependentUpon>FrmReplaceUnitEquipment.cs</DependentUpon>
     </EmbeddedResource>
@@ -222,7 +232,7 @@
     <None Include="translations\ru.translation">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="translations\se.translation">
+    <None Include="translations\sv.translation">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="WarFoundry.exe.log4net">
--- a/translations/en.translation	Tue Apr 06 13:54:37 2010 +0000
+++ b/translations/en.translation	Sun Apr 11 19:55:03 2010 +0000
@@ -14,6 +14,7 @@
 	<translation id="miExit">E&amp;xit</translation>
 	<translation id="miUndo">&amp;Undo</translation>
 	<translation id="miRedo">&amp;Redo</translation>
+	<translation id="miPreferences">&amp;Preferences</translation>
 	<translation id="miAbout">&amp;About</translation>
 	<translation id="bttnOkay">OK</translation>
 	<translation id="bttnCancel">Cancel</translation>
@@ -109,4 +110,8 @@
 	<translation id="requirementUnitTypeAtLeastSingle">{1} {0}</translation>
 	<translation id="requirementUnitTypeAtLeastJoiner">{0}, {1}</translation>
 	<translation id="requirementUnitTypeAtLeast">{0} can only be taken if the following are taken: {1}</translation>
+	<translation id="FrmPreferences">Preferences</translation>
+	<translation id="languagePrefSection">Language</translation>
+	<translation id="lblLanguage">Language:</translation>
+	<translation id="languagesGroup">Language</translation>
 </translations>
\ No newline at end of file
--- a/translations/se.translation	Tue Apr 06 13:54:37 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<translations xmlns="http://ibboard.co.uk/translation" lang="se">
-	<translation id="menuFile">&amp;Arkiv</translation>
-	<translation id="menuEdit">&amp;Redigera</translation>
-	<translation id="menuHelp">&amp;Hjälp</translation>
-	<translation id="miNewArmy">&amp;Skapa ny armé</translation>
-	<translation id="miOpenArmy">&amp;Öppna sparad armé</translation>
-	<translation id="miSaveArmy">&amp;Spara armé</translation>
-	<translation id="miSaveArmyAs">Spara armé &amp;som...</translation>
-	<translation id="miExportArmyAs">&amp;Exportera armé</translation>
-	<translation id="miExportArmyAsBasicHTML">Normal HTML</translation>
-	<translation id="miCloseArmy">&amp;Stäng armé</translation>
-	<translation id="miReloadFiles">&amp;Läs in filer på nytt</translation>
-	<translation id="miExit">A&amp;vsluta</translation>
-	<translation id="miUndo">&amp;Återställ</translation>
-	<translation id="miRedo">&amp;Gör om</translation>
-	<translation id="miAbout">&amp;Om</translation>
-	<translation id="bttnOkay">OK</translation>
-	<translation id="bttnCancel">Avbryt</translation>
-	<translation id="bttnNewArmy">Skapa ny armé</translation>
-	<translation id="bttnOpenArmy">Öppna sparad armé</translation>
-	<translation id="bttnSaveArmy">Spara armé</translation>
-	<translation id="ArmyTree">Arméöversikt</translation>
-	<translation id="miDeleteUnit">&amp;Ta bort enhet</translation>
-	<translation id="miEditUnit">&amp;Redigera enhet</translation>
-	<translation id="openArmyDialog">Öppna armé</translation>
-	<translation id="saveArmyDialog">Spara armé</translation>
-	<translation id="armyFileFilter">WarFoundry arméfiler (*.army)</translation>
-	<translation id="statusPanelPoints">{0} poäng / {1} poäng</translation>
-	<translation id="defaultUnitName">Enhet av {0} {1}</translation>
-	<translation id="FrmNewArmy">Skapa ny armé</translation>
-	<translation id="lblGameSystem">Spelsystem:</translation>
-	<translation id="lblRaceList">Raser:</translation>
-	<translation id="lblArmyName">Arménamn:</translation>
-	<translation id="lblArmySize">Armé torlek:</translation>
-	<translation id="bttnSelectRace">Skapa armé</translation>
-	<translation id="FrmNewUnit">Lägg till en ny {0}</translation>
-	<translation id="lblUnitList">Enheter:</translation>
-	<translation id="bttnSelectUnit">Skapa enhet</translation>
-	<translation id="FrmNewUnitEquipment">Ny utrustning för {0}</translation>
-	<translation id="lblAmount">Antal:</translation>
-	<translation id="lblItem">Utrustning:</translation>
-	<translation id="rbEquipAll">Utrusta alla</translation>
-	<translation id="equipPercentageTooLarge">Den numvarande procenten ({0}%) är större än det maximala tillåtna värdet för utrustningen ({1}%). Det maximala värdet kommer att användas istället.</translation>
-	<translation id="equipPercentageTooLargeTitle">Utrustningsprocenten för stor</translation>
-	<translation id="equipPercentageTooSmall"> Den numvarande procenten ({0}%) är mindre än det tillåtna minimivärdet för utrustningen ({1}%). Minimivärdet kommer att användas istället.</translation>
-	<translation id="equipPercentageTooSmallTitle">Utrustningsprocenten för liten</translation>
-	<translation id="equipNumberTooLarge">Det nuvarande antalet ({0}) är större än det maximalt tillåtna antalet för utrustningen ({1}). Det maximala antalet kommer att användas istället.</translation>
-	<translation id="equipNumberTooLargeTitle">Utrustningens antal för stort</translation>
-	<translation id="equipNumberTooSmall"> Det nuvarande antalet ({0}) är mindre än det tillåtna minimiantalet för utrustningen({1}). Minimivärdet kommer att användas istället.</translation>
-	<translation id="equipNumberTooSmallTitle">Utrustningens antal för litet</translation>
-	<translation id="FrmEditUnitEquipment">Ändra {0} för {1}</translation>
-	<translation id="FrmAbout">Om WarFoundry</translation>
-	<translation id="lblVersion">Version: {0}</translation>
-	<translation id="lblDevelopers">Utvecklare:</translation>
-	<translation id="lblThanks">Tack till:</translation>
-	<translation id="FrmUnit">{0}</translation>
-	<translation id="lblUnitSize">Storlek:</translation>
-	<translation id="lblEquip">Utrustning:</translation>
-	<translation id="bttnAddWeapon">Lägg till</translation>
-	<translation id="lblAbilities">Förmågor:</translation>
-	<translation id="lblNotes">Anteckningar:</translation>
-	<translation id="bttnRemoveWeapon">Ta bort</translation>
-	<translation id="bttnReplaceWeapon">Ersätt</translation>
-	<translation id="bttnEditWeapon">Redigera</translation>
-	<translation id="equipmentAmountWithCost">{0} ({1} för {2} poäng var)</translation>
-	<translation id="equipmentAmountWithZeroCost">{0} ({1} gratis)</translation>
-	<translation id="equipmentChoiceAmountAll">För alla ({1})</translation>
-	<translation id="equipmentChoiceAmountPercentage">För {0}% ({1})</translation>
-	<translation id="equipmentChoiceAmountNumber">{0}</translation>
-	<translation id="InvalidRaceFileBoxTitle">Ogiltig rasfil</translation>
-	<translation id="InvalidArmyFileBoxTitle">Ogiltig arméfil</translation>
-	<translation id="SaveChangesQuestion">Armén "{0}" har ändrats.
-Vill du spara ändringarna innan armén stängs?</translation>
-	<translation id="SaveChangesTitle">Osparade förändringar</translation>
-	<translation id="SaveFailed">WarFoundry kunde inte spara filen. Var god och kontrollera loggen för mera detaljer.</translation>
-	<translation id="SaveFailedTitle">Filen kunde inte sparas</translation>
-	<translation id="armyHtmlExportEquipAmountAll">alla ({1})</translation>
-	<translation id="armyHtmlExportEquipAmountPercentage">{0}% ({1})</translation>
-	<translation id="armyHtmlExportEquipAmountRatio">{0} för {1}</translation>
-	<translation id="equipmentAmountAll">alla ({1})</translation>
-	<translation id="equipmentAmountPercentage">{0}% ({1})</translation>
-	<translation id="equipmentAmountNumber">{0}</translation>
-	<translation id="setEquipmentAmountCommandDescription">Ändra {0} amount för {1} till {2}</translation>
-	<translation id="setEquipmentAmountCommandUndoDescription">Ändra {0} amount för {1} till {2}</translation>
-	<translation id="replaceUnitEquipmentCommandDescription">Ersätt {0} med {1} för {2}</translation>
-	<translation id="replaceUnitEquipmentCommandUndoDescription">Ersätt {0} med {1} för {2}</translation>
-	<translation id="createAndAddUnitCommandDescription">Lägg till enhet av {0}</translation>
-	<translation id="createAndAddUnitCommandUndoDescription">Ta bort enhet av {0}</translation>
-	<translation id="removeUnitCommandDescription">Ta bort {0}</translation>
-	<translation id="removeUnitCommandUndoDescription">Lägg till på nytt {0}</translation>
-	<translation id="setUnitNameCommandDescription">Byt namn från "{0}" till "{1}"</translation>
-	<translation id="setUnitNameCommandUndoDescription">Byt namn från "{0}" till "{1}"</translation>
-	<translation id="setUnitSizeCommandDescription">Ändra storleken på {0} till {1}</translation>
-	<translation id="setUnitSizeCommandUndoDescription"> Ändra storleken på {0} till {1}</translation>
-</translations>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/sv.translation	Sun Apr 11 19:55:03 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<translations xmlns="http://ibboard.co.uk/translation" lang="sv">
+	<translation id="menuFile">&amp;Arkiv</translation>
+	<translation id="menuEdit">&amp;Redigera</translation>
+	<translation id="menuHelp">&amp;Hjälp</translation>
+	<translation id="miNewArmy">&amp;Skapa ny armé</translation>
+	<translation id="miOpenArmy">&amp;Öppna sparad armé</translation>
+	<translation id="miSaveArmy">&amp;Spara armé</translation>
+	<translation id="miSaveArmyAs">Spara armé &amp;som...</translation>
+	<translation id="miExportArmyAs">&amp;Exportera armé</translation>
+	<translation id="miExportArmyAsBasicHTML">Normal HTML</translation>
+	<translation id="miCloseArmy">&amp;Stäng armé</translation>
+	<translation id="miReloadFiles">&amp;Läs in filer på nytt</translation>
+	<translation id="miExit">A&amp;vsluta</translation>
+	<translation id="miUndo">&amp;Återställ</translation>
+	<translation id="miRedo">&amp;Gör om</translation>
+	<translation id="miAbout">&amp;Om</translation>
+	<translation id="bttnOkay">OK</translation>
+	<translation id="bttnCancel">Avbryt</translation>
+	<translation id="bttnNewArmy">Skapa ny armé</translation>
+	<translation id="bttnOpenArmy">Öppna sparad armé</translation>
+	<translation id="bttnSaveArmy">Spara armé</translation>
+	<translation id="ArmyTree">Arméöversikt</translation>
+	<translation id="miDeleteUnit">&amp;Ta bort enhet</translation>
+	<translation id="miEditUnit">&amp;Redigera enhet</translation>
+	<translation id="openArmyDialog">Öppna armé</translation>
+	<translation id="saveArmyDialog">Spara armé</translation>
+	<translation id="armyFileFilter">WarFoundry arméfiler (*.army)</translation>
+	<translation id="statusPanelPoints">{0} poäng / {1} poäng</translation>
+	<translation id="defaultUnitName">Enhet av {0} {1}</translation>
+	<translation id="FrmNewArmy">Skapa ny armé</translation>
+	<translation id="lblGameSystem">Spelsystem:</translation>
+	<translation id="lblRaceList">Raser:</translation>
+	<translation id="lblArmyName">Arménamn:</translation>
+	<translation id="lblArmySize">Armé torlek:</translation>
+	<translation id="bttnSelectRace">Skapa armé</translation>
+	<translation id="FrmNewUnit">Lägg till en ny {0}</translation>
+	<translation id="lblUnitList">Enheter:</translation>
+	<translation id="bttnSelectUnit">Skapa enhet</translation>
+	<translation id="FrmNewUnitEquipment">Ny utrustning för {0}</translation>
+	<translation id="lblAmount">Antal:</translation>
+	<translation id="lblItem">Utrustning:</translation>
+	<translation id="rbEquipAll">Utrusta alla</translation>
+	<translation id="equipPercentageTooLarge">Den numvarande procenten ({0}%) är större än det maximala tillåtna värdet för utrustningen ({1}%). Det maximala värdet kommer att användas istället.</translation>
+	<translation id="equipPercentageTooLargeTitle">Utrustningsprocenten för stor</translation>
+	<translation id="equipPercentageTooSmall"> Den numvarande procenten ({0}%) är mindre än det tillåtna minimivärdet för utrustningen ({1}%). Minimivärdet kommer att användas istället.</translation>
+	<translation id="equipPercentageTooSmallTitle">Utrustningsprocenten för liten</translation>
+	<translation id="equipNumberTooLarge">Det nuvarande antalet ({0}) är större än det maximalt tillåtna antalet för utrustningen ({1}). Det maximala antalet kommer att användas istället.</translation>
+	<translation id="equipNumberTooLargeTitle">Utrustningens antal för stort</translation>
+	<translation id="equipNumberTooSmall"> Det nuvarande antalet ({0}) är mindre än det tillåtna minimiantalet för utrustningen({1}). Minimivärdet kommer att användas istället.</translation>
+	<translation id="equipNumberTooSmallTitle">Utrustningens antal för litet</translation>
+	<translation id="FrmEditUnitEquipment">Ändra {0} för {1}</translation>
+	<translation id="FrmAbout">Om WarFoundry</translation>
+	<translation id="lblVersion">Version: {0}</translation>
+	<translation id="lblDevelopers">Utvecklare:</translation>
+	<translation id="lblThanks">Tack till:</translation>
+	<translation id="FrmUnit">{0}</translation>
+	<translation id="lblUnitSize">Storlek:</translation>
+	<translation id="lblEquip">Utrustning:</translation>
+	<translation id="bttnAddWeapon">Lägg till</translation>
+	<translation id="lblAbilities">Förmågor:</translation>
+	<translation id="lblNotes">Anteckningar:</translation>
+	<translation id="bttnRemoveWeapon">Ta bort</translation>
+	<translation id="bttnReplaceWeapon">Ersätt</translation>
+	<translation id="bttnEditWeapon">Redigera</translation>
+	<translation id="equipmentAmountWithCost">{0} ({1} för {2} poäng var)</translation>
+	<translation id="equipmentAmountWithZeroCost">{0} ({1} gratis)</translation>
+	<translation id="equipmentChoiceAmountAll">För alla ({1})</translation>
+	<translation id="equipmentChoiceAmountPercentage">För {0}% ({1})</translation>
+	<translation id="equipmentChoiceAmountNumber">{0}</translation>
+	<translation id="InvalidRaceFileBoxTitle">Ogiltig rasfil</translation>
+	<translation id="InvalidArmyFileBoxTitle">Ogiltig arméfil</translation>
+	<translation id="SaveChangesQuestion">Armén "{0}" har ändrats.
+Vill du spara ändringarna innan armén stängs?</translation>
+	<translation id="SaveChangesTitle">Osparade förändringar</translation>
+	<translation id="SaveFailed">WarFoundry kunde inte spara filen. Var god och kontrollera loggen för mera detaljer.</translation>
+	<translation id="SaveFailedTitle">Filen kunde inte sparas</translation>
+	<translation id="armyHtmlExportEquipAmountAll">alla ({1})</translation>
+	<translation id="armyHtmlExportEquipAmountPercentage">{0}% ({1})</translation>
+	<translation id="armyHtmlExportEquipAmountRatio">{0} för {1}</translation>
+	<translation id="equipmentAmountAll">alla ({1})</translation>
+	<translation id="equipmentAmountPercentage">{0}% ({1})</translation>
+	<translation id="equipmentAmountNumber">{0}</translation>
+	<translation id="setEquipmentAmountCommandDescription">Ändra {0} amount för {1} till {2}</translation>
+	<translation id="setEquipmentAmountCommandUndoDescription">Ändra {0} amount för {1} till {2}</translation>
+	<translation id="replaceUnitEquipmentCommandDescription">Ersätt {0} med {1} för {2}</translation>
+	<translation id="replaceUnitEquipmentCommandUndoDescription">Ersätt {0} med {1} för {2}</translation>
+	<translation id="createAndAddUnitCommandDescription">Lägg till enhet av {0}</translation>
+	<translation id="createAndAddUnitCommandUndoDescription">Ta bort enhet av {0}</translation>
+	<translation id="removeUnitCommandDescription">Ta bort {0}</translation>
+	<translation id="removeUnitCommandUndoDescription">Lägg till på nytt {0}</translation>
+	<translation id="setUnitNameCommandDescription">Byt namn från "{0}" till "{1}"</translation>
+	<translation id="setUnitNameCommandUndoDescription">Byt namn från "{0}" till "{1}"</translation>
+	<translation id="setUnitSizeCommandDescription">Ändra storleken på {0} till {1}</translation>
+	<translation id="setUnitSizeCommandUndoDescription"> Ändra storleken på {0} till {1}</translation>
+</translations>