changeset 92:58779fcd0166

Re #308: Make GTK# UI translatable * Switch lots of labels to translatable versions * Swap some default text to lower-case to make it easier to spot missing translations
author IBBoard <dev@ibboard.co.uk>
date Fri, 31 Dec 2010 12:01:18 +0000
parents 986fc923c0fa
children e40d892a2298
files FrmAddEquipment.cs FrmEditEquipment.cs Widgets/UnitDisplayWidget.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmEditEquipment.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmNewUnit.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmReplaceEquipment.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.Widgets.UnitDisplayWidget.cs gtk-gui/gui.stetic translations/en.translation
diffstat 10 files changed, 277 insertions(+), 234 deletions(-) [+]
line wrap: on
line diff
--- a/FrmAddEquipment.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/FrmAddEquipment.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -10,30 +10,38 @@
 using IBBoard.WarFoundry.GUI.GTK.UIControl.Interfaces;
 using IBBoard.WarFoundry.GUI.GTK.Util;
 using log4net;
+using IBBoard.Lang;
 
 namespace IBBoard.WarFoundry.GUI.GTK
 {
 	public partial class FrmAddEquipment : TranslatableDialog, IAddEquipmentUI
 	{
 		private static ILog log = LogManager.GetLogger(typeof(FrmAddEquipment));
+
 		public event SingleArgMethodInvoker<UnitEquipmentItem> UnitEquipmentItemChoiceChanged;
 		public event MethodInvoker UnitEquipmentAmountTypeChanged;
 		public event MethodInvoker UnitEquipmentAmountChanged;
 
 		private bool isRatioLimited;
-		
+
 		public FrmAddEquipment()
 		{
 			this.Build();
 			lstEquipment.Selection.Changed += OnSelectionChanged;
 			TreeViewColumn equipColumn = new TreeViewColumn();
-			equipColumn.Title = "Equipment";
 			CellRendererText equipCell = new CellRendererText();
 			equipColumn.PackStart(equipCell, true);
 			equipColumn.SetCellDataFunc(equipCell, GtkWarFoundryUtil.RenderWarFoundryObjectName);
-			lstEquipment.AppendColumn(equipColumn);			
+			lstEquipment.AppendColumn(equipColumn);
+			Translate();
 		}
-		
+
+		protected override void Translate()
+		{
+			base.Translate();
+			lstEquipment.Columns[0].Title = Translation.GetTranslation("frmAddEquipmentColumnTitle", "equipment");
+		}
+
 		private void OnUnitEquipmentAmountChanged()
 		{
 			if (UnitEquipmentAmountChanged != null)
@@ -41,7 +49,7 @@
 				UnitEquipmentAmountChanged();
 			}
 		}
-		
+
 		private void OnUnitEquipmentAmountTypeChanged()
 		{
 			if (UnitEquipmentAmountChanged != null)
@@ -49,7 +57,7 @@
 				UnitEquipmentAmountTypeChanged();
 			}
 		}
-		
+
 		protected void OnSelectionChanged(object o, EventArgs e)
 		{
 			if (UnitEquipmentItemChoiceChanged != null)
@@ -108,41 +116,41 @@
 			this.Hide();
 			return okayClicked;
 		}
-		
+
 		protected virtual void CancelButtonClicked(object sender, System.EventArgs e)
 		{
 			log.Debug("Cancel clicked");
 			Respond(ResponseType.Cancel);
 		}	
-		
+
 		protected virtual void OkayButtonClicked(object sender, System.EventArgs e)
 		{
 			log.Debug("Okay clicked");
 			Respond(ResponseType.Ok);
 		}		
-		
+
 		public void SetOkayEnabledState(bool enabled)
 		{
 			buttonOk.Sensitive = enabled;
 		}
-				
+
 		protected virtual void SpinButtonValueChanged(object sender, System.EventArgs e)
 		{
 			OnUnitEquipmentAmountChanged();
 		}		
-		
+
 		protected virtual void RadioButtonClicked(object sender, System.EventArgs e)
 		{
 			OnUnitEquipmentAmountTypeChanged();
 		}
-		
+
 		public void SetNumericAmountEnabledState(bool enabled)
 		{
 			double minPercent = GetMinPercentage();
 			rbEquipNumeric.Sensitive = enabled && !(isRatioLimited && minPercent == 100);
 			numericAmount.Sensitive = rbEquipNumeric.Sensitive;
 		}		
-		
+
 		public void SetPercentageAmountEnabledState(bool enabled)
 		{
 			if (enabled)
@@ -176,7 +184,7 @@
 			percentageAmount.GetRange(out min, out max);
 			return min;
 		}
-		
+
 		public void ListenToWidgets()
 		{
 			rbEquipAll.Clicked += RadioButtonClicked;
@@ -186,7 +194,7 @@
 			percentageAmount.ValueChanged += SpinButtonValueChanged;
 			lstEquipment.Selection.Changed += OnSelectionChanged;
 		}
-		
+
 		public void IgnoreWidgets()
 		{
 			rbEquipAll.Clicked -= RadioButtonClicked;
@@ -196,7 +204,7 @@
 			percentageAmount.ValueChanged -= SpinButtonValueChanged;
 			lstEquipment.Selection.Changed -= OnSelectionChanged;
 		}
-		
+
 		public UnitEquipmentItem SelectedUnitEquipmentItem
 		{
 			get
@@ -204,7 +212,7 @@
 				return (UnitEquipmentItem)TreeUtils.GetSelectedItem(lstEquipment);
 			}
 		}
-		
+
 		public bool IsRatioEquipmentAmount
 		{
 			get
@@ -212,7 +220,7 @@
 				return !rbEquipNumeric.Active;
 			}
 		}
-		
+
 		public int EquipmentNumericAmount
 		{
 			get
@@ -225,7 +233,7 @@
 				numericAmount.Value = value;
 			}
 		}
-		
+
 		public double EquipmentPercentageAmount
 		{
 			get
--- a/FrmEditEquipment.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/FrmEditEquipment.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -11,28 +11,26 @@
 using log4net.Repository.Hierarchy;
 using log4net;
 using IBBoard.GtkSharp.Translatable;
+using IBBoard.Lang;
 
 namespace IBBoard.WarFoundry.GUI.GTK
 {
 	public partial class FrmEditEquipment : TranslatableDialog, IEditEquipmentUI
 	{
 		private static ILog log = LogManager.GetLogger(typeof(FrmAddEquipment));
+
 		public event SingleArgMethodInvoker<UnitEquipmentItem> UnitEquipmentItemChoiceChanged;
 		public event MethodInvoker UnitEquipmentAmountTypeChanged;
 		public event MethodInvoker UnitEquipmentAmountChanged;
 
 		private bool isRatioLimited;
-				
+
 		public FrmEditEquipment()
 		{
 			this.Build();
-			TreeViewColumn equipColumn = new TreeViewColumn();
-			equipColumn.Title = "Equipment";
-			CellRendererText equipCell = new CellRendererText();
-			equipColumn.PackStart(equipCell, true);
-			equipColumn.SetCellDataFunc(equipCell, GtkWarFoundryUtil.RenderWarFoundryObjectName);	
+			Translate();
 		}
-		
+
 		public void ListenToWidgets()
 		{
 			rbEquipAll.Clicked += RadioButtonClicked;
@@ -41,7 +39,7 @@
 			numericAmount.ValueChanged += SpinButtonValueChanged;
 			percentageAmount.ValueChanged += SpinButtonValueChanged;
 		}
-		
+
 		public void IgnoreWidgets()
 		{
 			rbEquipAll.Clicked -= RadioButtonClicked;
@@ -50,7 +48,7 @@
 			numericAmount.ValueChanged -= SpinButtonValueChanged;
 			percentageAmount.ValueChanged -= SpinButtonValueChanged;
 		}
-		
+
 		private void OnUnitEquipmentAmountChanged()
 		{
 			if (UnitEquipmentAmountChanged != null)
@@ -58,7 +56,7 @@
 				UnitEquipmentAmountChanged();
 			}
 		}
-		
+
 		private void OnUnitEquipmentAmountTypeChanged()
 		{
 			if (UnitEquipmentAmountChanged != null)
@@ -108,41 +106,41 @@
 			this.Hide();
 			return okayClicked;
 		}
-		
+
 		protected virtual void CancelButtonClicked(object sender, System.EventArgs e)
 		{
 			log.Debug("Cancel clicked");
 			Respond(ResponseType.Cancel);
 		}	
-		
+
 		protected virtual void OkayButtonClicked(object sender, System.EventArgs e)
 		{
 			log.Debug("Okay clicked");
 			Respond(ResponseType.Ok);
 		}		
-		
+
 		public void SetOkayEnabledState(bool enabled)
 		{
 			buttonOk.Sensitive = enabled;
 		}
-				
+
 		protected virtual void SpinButtonValueChanged(object sender, System.EventArgs e)
 		{
 			OnUnitEquipmentAmountChanged();
 		}		
-		
+
 		protected virtual void RadioButtonClicked(object sender, System.EventArgs e)
 		{
 			OnUnitEquipmentAmountTypeChanged();
 		}
-		
+
 		public void SetNumericAmountEnabledState(bool enabled)
 		{
 			double minPercent = GetMinPercentage();
 			rbEquipNumeric.Sensitive = enabled && !(isRatioLimited && minPercent == 100);
 			numericAmount.Sensitive = rbEquipNumeric.Sensitive;
 		}		
-		
+
 		public void SetPercentageAmountEnabledState(bool enabled)
 		{
 			if (enabled)
@@ -176,7 +174,7 @@
 			percentageAmount.GetRange(out min, out max);
 			return min;
 		}		
-		
+
 		public bool IsRatioEquipmentAmount
 		{
 			get
@@ -184,7 +182,7 @@
 				return !rbEquipNumeric.Active;
 			}
 		}
-		
+
 		public int EquipmentNumericAmount
 		{
 			get
@@ -197,7 +195,7 @@
 				numericAmount.Value = value;
 			}
 		}
-		
+
 		public double EquipmentPercentageAmount
 		{
 			get
--- a/Widgets/UnitDisplayWidget.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/Widgets/UnitDisplayWidget.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -1,6 +1,7 @@
 // This file (UnitDisplayWidget.cs) is a part of the IBBoard.WarFoundry.GTK project and is copyright 2008, 2009 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 Gtk;
 using IBBoard.Commands;
@@ -14,6 +15,7 @@
 using log4net;
 using WFObjects = IBBoard.WarFoundry.API.Objects;
 using System.Collections.Generic;
+using IBBoard.GtkSharp.Translatable;
 
 namespace IBBoard.WarFoundry.GUI.GTK.Widgets
 {
@@ -21,43 +23,44 @@
 	[System.ComponentModel.ToolboxItem(true)]
 	public partial class UnitDisplayWidget : Gtk.Bin
 	{
-		private static ILog log = LogManager.GetLogger (typeof (UnitDisplayWidget));
+		private static ILog log = LogManager.GetLogger(typeof(UnitDisplayWidget));
 		private WFObjects.Unit unit;
 		private CommandStack stack;
-		private Dictionary<string, NodeView> statsViews = new Dictionary<string, NodeView> ();
+		private Dictionary<string, NodeView> statsViews = new Dictionary<string, NodeView>();
 
-		public UnitDisplayWidget (WFObjects.Unit sourceUnit, CommandStack commandStack)
+		public UnitDisplayWidget(WFObjects.Unit sourceUnit, CommandStack commandStack)
 		{
-			this.Build ();
+			this.Build();
 			stack = commandStack;
 			unit = sourceUnit;
 			unitName.Text = unit.Name;
 			unitSize.Value = unit.Size;
 			int maxSize = (unit.UnitType.MaxSize == WarFoundryCore.INFINITY ? int.MaxValue : unit.UnitType.MaxSize);
 			int minSize = unit.UnitType.MinSize;
-			unitSize.SetRange (minSize, maxSize);
+			unitSize.SetRange(minSize, maxSize);
 			unitSize.Sensitive = (maxSize != minSize);
 			notesView.Buffer.Text = unit.UnitType.Notes;
 			unit.NameChanged += UnitNameChanged;
 			unit.UnitSizeChanged += UnitSizeChanged;
 			unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged;
 			equipmentList.Selection.Changed += HandleEquipmentListSelectionChanged;
-			SetAbilities ();
-			SetStats ();
-			SetWeapons ();
+			SetAbilities();
+			SetStats();
+			SetWeapons();
 			SetAddButtonEnabledState();
+			ControlTranslator.TranslateWidget(this);
 		}
 
-		private void HandleEquipmentListSelectionChanged (object sender, EventArgs e)
+		private void HandleEquipmentListSelectionChanged(object sender, EventArgs e)
 		{
-			SetButtonsEnabledState ();	
+			SetButtonsEnabledState();	
 		}
 
-		private void SetButtonsEnabledState ()
+		private void SetButtonsEnabledState()
 		{			
-			UnitEquipmentItem equipItem = GetSelectedEquipmentItem ();
-			bttnReplaceEquipment.Sensitive = (equipItem != null && equipItem.HasAlternatives ());
-			bttnEditEquipment.Sensitive = (UnitEquipmentUtil.CanEditEquipmentAmount (unit, equipItem));
+			UnitEquipmentItem equipItem = GetSelectedEquipmentItem();
+			bttnReplaceEquipment.Sensitive = (equipItem != null && equipItem.HasAlternatives());
+			bttnEditEquipment.Sensitive = (UnitEquipmentUtil.CanEditEquipmentAmount(unit, equipItem));
 			bttnRemoveEquipment.Sensitive = (equipItem != null && !equipItem.IsRequired);
 		}
 
@@ -66,111 +69,121 @@
 			bttnAddEquipment.Sensitive = AddEquipmentUIControl.HasEquipmentToAdd(unit);
 		}
 
-		private UnitEquipmentItem GetSelectedEquipmentItem ()
+		private UnitEquipmentItem GetSelectedEquipmentItem()
 		{
-			return (UnitEquipmentItem)TreeUtils.GetSelectedItem (equipmentList);
+			return (UnitEquipmentItem)TreeUtils.GetSelectedItem(equipmentList);
 		}
 
-		private void SetAbilities ()
+		private void SetAbilities()
 		{
-			CellRendererText renderer = new CellRendererText ();
-			abilitiesList.AppendColumn ("", renderer, new TreeCellDataFunc (RenderAbility));
+			CellRendererText renderer = new CellRendererText();
+			abilitiesList.AppendColumn("", renderer, new TreeCellDataFunc(RenderAbility));
 			
-			ListStore model = new ListStore (typeof (Ability));
+			ListStore model = new ListStore(typeof(Ability));
 			
-			foreach (Ability ability in unit.UnitType.GetRequiredAbilities ()) {
-				model.AppendValues (ability);
+			foreach (Ability ability in unit.UnitType.GetRequiredAbilities())
+			{
+				model.AppendValues(ability);
 			}
 			
 			abilitiesList.Model = model;
 		}
 
-		public void RenderAbility (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+		public void RenderAbility(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
 		{
-			object o = model.GetValue (iter, 0);
+			object o = model.GetValue(iter, 0);
 			
-			if (o is Ability) {
+			if (o is Ability)
+			{
 				Ability ability = (Ability)o;
 				(cell as CellRendererText).Text = ability.Name;
 			}			
 						
 		}
 
-		private void SetStats ()
+		private void SetStats()
 		{
 			Stat[][] stats = unit.UnitStatsArraysWithName;
 			string[] statsIDs = unit.UnitStatsArrayIDs;
 			int statsCount = stats.Length;
-			log.DebugFormat ("Unit {0} has {1} stats arrays", unit.UnitType.Name, statsCount);
+			log.DebugFormat("Unit {0} has {1} stats arrays", unit.UnitType.Name, statsCount);
 
-			for (int i = 0; i < statsCount; i++) {
-				NodeView statsGrid = GetStatsView (statsIDs [i]);
+			for (int i = 0; i < statsCount; i++)
+			{
+				NodeView statsGrid = GetStatsView(statsIDs[i]);
 				TreeStore model = (TreeStore)statsGrid.Model;
-				log.DebugFormat ("Adding row to data table for {0}", statsIDs [i]);
-				log.DebugFormat ("TreeStore supports {0} columns", model.NColumns);
-				model.AppendValues ((object)stats [i]);
+				log.DebugFormat("Adding row to data table for {0}", statsIDs[i]);
+				log.DebugFormat("TreeStore supports {0} columns", model.NColumns);
+				model.AppendValues((object)stats[i]);
 			}
 		}
 
-		private NodeView GetStatsView (string statsID)
+		private NodeView GetStatsView(string statsID)
 		{
 			NodeView statsView;
 
-			if (statsViews.ContainsKey (statsID)) {
-				statsView = DictionaryUtils.GetValue (statsViews, statsID);
-			} else {
-				statsView = CreateStatsView (statsID);
-				statsViews [statsID] = statsView;
+			if (statsViews.ContainsKey(statsID))
+			{
+				statsView = DictionaryUtils.GetValue(statsViews, statsID);
+			}
+			else
+			{
+				statsView = CreateStatsView(statsID);
+				statsViews[statsID] = statsView;
 			}
 
 			return statsView;
 		}
 
-		private NodeView CreateStatsView (string statsID)
+		private NodeView CreateStatsView(string statsID)
 		{
-			log.DebugFormat ("Create NodeView for stats ID {0}", statsID);
-			SystemStats sysStats = unit.Race.GameSystem.GetSystemStatsForID (statsID);
+			log.DebugFormat("Create NodeView for stats ID {0}", statsID);
+			SystemStats sysStats = unit.Race.GameSystem.GetSystemStatsForID(statsID);
 			StatSlot[] sysStatSlots = sysStats.StatSlots;
 			int statsCount = sysStatSlots.Length;
-			NodeView statsGrid = CreateNodeView ();
-			CellRendererText renderer = new CellRendererText ();
-			statsGrid.AppendColumn (Translation.GetTranslation ("UnitNameColumn", "Unit Type", null), renderer, RenderUnitStat);
+			NodeView statsGrid = CreateNodeView();
+			CellRendererText renderer = new CellRendererText();
+			statsGrid.AppendColumn(Translation.GetTranslation("UnitNameColumn", "Unit Type", null), renderer, RenderUnitStat);
 
-			for (int i = 0; i < statsCount; i++) {
-				StatSlot stat = sysStatSlots [i];
+			for (int i = 0; i < statsCount; i++)
+			{
+				StatSlot stat = sysStatSlots[i];
 				string slotName = stat.Name;
-				statsGrid.AppendColumn (slotName, renderer, RenderUnitStat);
+				statsGrid.AppendColumn(slotName, renderer, RenderUnitStat);
 			}
 			
-			statsGrid.Model = new TreeStore (typeof (Stat[]));
+			statsGrid.Model = new TreeStore(typeof(Stat[]));
 			return statsGrid;
 		}
 
-		private NodeView CreateNodeView ()
+		private NodeView CreateNodeView()
 		{
-			NodeView nodeView = new NodeView ();
-			statsRepeatBox.Add (nodeView);
+			NodeView nodeView = new NodeView();
+			statsRepeatBox.Add(nodeView);
 			return nodeView;
 		}
 
-		private void RenderUnitStat (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+		private void RenderUnitStat(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
 		{
-			object o = model.GetValue (iter, 0);
+			object o = model.GetValue(iter, 0);
 			
-			if (o is Stat[]) {
+			if (o is Stat[])
+			{
 				Stat[] stats = (Stat[])o;
-				(cell as CellRendererText).Text = stats [GetStatColumnIndex (column)].SlotValueString;
+				(cell as CellRendererText).Text = stats[GetStatColumnIndex(column)].SlotValueString;
 			}
 		}
 
-		private int GetStatColumnIndex (TreeViewColumn column)
+		private int GetStatColumnIndex(TreeViewColumn column)
 		{
 			int idx = -1;
 			TreeViewColumn[] cols = ((TreeView)column.TreeView).Columns;
 			int colCount = cols.Length;
 			
-			for (int i = 0; i < colCount; i++) {
-				if (cols [i] == column) {
+			for (int i = 0; i < colCount; i++)
+			{
+				if (cols[i] == column)
+				{
 					idx = i;
 					break;
 				}
@@ -179,79 +192,91 @@
 			return idx;
 		}
 
-		private void SetWeapons ()
+		private void SetWeapons()
 		{
-			CellRendererText renderer = new CellRendererText ();
-			equipmentList.AppendColumn ("", renderer, new TreeCellDataFunc (RenderEquipmentLine));
+			CellRendererText renderer = new CellRendererText();
+			equipmentList.AppendColumn("", renderer, new TreeCellDataFunc(RenderEquipmentLine));
 			
-			ListStore model = new ListStore (typeof (UnitEquipmentItem));
+			ListStore model = new ListStore(typeof(UnitEquipmentItem));
 			
-			foreach (UnitEquipmentItem item in unit.GetEquipment ()) {
-				model.AppendValues (item);
+			foreach (UnitEquipmentItem item in unit.GetEquipment())
+			{
+				model.AppendValues(item);
 			}
 			
 			equipmentList.Model = model;
 		}
 
-		public void RenderEquipmentLine (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+		public void RenderEquipmentLine(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
 		{
-			object o = model.GetValue (iter, 0);
+			object o = model.GetValue(iter, 0);
 			
-			if (o is UnitEquipmentItem) {
+			if (o is UnitEquipmentItem)
+			{
 				UnitEquipmentItem item = (UnitEquipmentItem)o;
-				(cell as CellRendererText).Text = GetUnitEquipmentText (item);
+				(cell as CellRendererText).Text = GetUnitEquipmentText(item);
 			}			
 						
 		}
 
-		private string GetUnitEquipmentText (UnitEquipmentItem item)
+		private string GetUnitEquipmentText(UnitEquipmentItem item)
 		{
 			string translation = "";
 
-			if (item.Cost == 0) {
-				translation = Translation.GetTranslation ("equipmentAmountWithZeroCost", "{0} ({1} - free)", item.Name, GetAmountString (item));
-			} else {
-				translation = Translation.GetTranslation ("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString (item), item.Cost);
+			if (item.Cost == 0)
+			{
+				translation = Translation.GetTranslation("equipmentAmountWithZeroCost", "{0} ({1} - free)", item.Name, GetAmountString(item));
+			}
+			else
+			{
+				translation = Translation.GetTranslation("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString(item), item.Cost);
 			}
 
 			return translation;
 		}
 
-		private string GetAmountString (UnitEquipmentItem item)
+		private string GetAmountString(UnitEquipmentItem item)
 		{
-			double amount = UnitEquipmentUtil.GetEquipmentAmount (unit, item);
+			double amount = UnitEquipmentUtil.GetEquipmentAmount(unit, item);
 			string amountString = "";
 			
-			if (UnitEquipmentUtil.GetEquipmentAmountIsRatio (unit, item)) {
-				int number = UnitEquipmentUtil.GetEquipmentAmountTaken (unit, item);
+			if (UnitEquipmentUtil.GetEquipmentAmountIsRatio(unit, item))
+			{
+				int number = UnitEquipmentUtil.GetEquipmentAmountTaken(unit, item);
 				
-				if (amount == 100) {
-					amountString = Translation.GetTranslation ("equipmentChoiceAmountAll", "all ({1})", amount, number);
-				} else {
-					amountString = Translation.GetTranslation ("equipmentChoiceAmountPercentage", "{0}% ({1})", amount, number);
+				if (amount == 100)
+				{
+					amountString = Translation.GetTranslation("equipmentChoiceAmountAll", "all ({1})", amount, number);
 				}
-			} else {
-				amountString = Translation.GetTranslation ("equipmentChoiceAmountNumber", "{0}", amount);
+				else
+				{
+					amountString = Translation.GetTranslation("equipmentChoiceAmountPercentage", "{0}% ({1})", amount, number);
+				}
+			}
+			else
+			{
+				amountString = Translation.GetTranslation("equipmentChoiceAmountNumber", "{0}", amount);
 			}
 			
 			return amountString;
 		}
 
-		public WFObjects.Unit Unit {
+		public WFObjects.Unit Unit
+		{
 			get { return unit; }
 		}
 
-		private void UnitNameChanged (WarFoundryObject obj, string oldValue, string newValue)
+		private void UnitNameChanged(WarFoundryObject obj, string oldValue, string newValue)
 		{
 			unitName.Text = newValue;
 		}
 
-		private void UnitSizeChanged (WarFoundryObject obj, int oldValue, int newValue)
+		private void UnitSizeChanged(WarFoundryObject obj, int oldValue, int newValue)
 		{
 			unitSize.Value = newValue;
 		}
 
-		private void HandleUnitUnitEquipmentAmountChanged (WarFoundryObject obj, double oldValue, double newValue)
+		private void HandleUnitUnitEquipmentAmountChanged(WarFoundryObject obj, double oldValue, double newValue)
 		{
 			if (oldValue == 0)
 			{
@@ -270,91 +295,98 @@
 			equipmentList.QueueDraw();
 		}
 
-		protected virtual void OnUnitSizeFocusOut (object o, Gtk.FocusOutEventArgs args)
+		protected virtual void OnUnitSizeFocusOut(object o, Gtk.FocusOutEventArgs args)
 		{
-			SetNewUnitSize ();
+			SetNewUnitSize();
 		}
 
 		[GLib.ConnectBefore ()]
 
-		protected virtual void OnUnitSizeKeyPress (object o, Gtk.KeyPressEventArgs args)
+		protected virtual void OnUnitSizeKeyPress(object o, Gtk.KeyPressEventArgs args)
 		{
-			if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) {
-				SetNewUnitSize ();
+			if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter)
+			{
+				SetNewUnitSize();
 			}
 		}
 
-		private void SetNewUnitSize ()
+		private void SetNewUnitSize()
 		{
-			if (unitSize.Value != unit.Size) {
-				SetUnitSizeCommand cmd = new SetUnitSizeCommand (unit, (int)Math.Round (unitSize.Value));
-				stack.Execute (cmd);
+			if (unitSize.Value != unit.Size)
+			{
+				SetUnitSizeCommand cmd = new SetUnitSizeCommand(unit, (int)Math.Round(unitSize.Value));
+				stack.Execute(cmd);
 			}
 		}
 
-		protected virtual void OnUnitNameFocusOut (object o, Gtk.FocusOutEventArgs args)
+		protected virtual void OnUnitNameFocusOut(object o, Gtk.FocusOutEventArgs args)
 		{
-			SetNewUnitName ();
+			SetNewUnitName();
 		}
 
 		[GLib.ConnectBefore ()]
 
-		protected virtual void OnUnitNameKeyPress (object o, Gtk.KeyPressEventArgs args)
+		protected virtual void OnUnitNameKeyPress(object o, Gtk.KeyPressEventArgs args)
 		{
-			if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) {
-				SetNewUnitName ();
+			if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter)
+			{
+				SetNewUnitName();
 			}
 		}
 
-		private void SetNewUnitName ()
+		private void SetNewUnitName()
 		{
-			if (unitName.Text != unit.Name) {
-				SetNameCommand cmd = new SetNameCommand (unit, unitName.Text);
-				stack.Execute (cmd);
+			if (unitName.Text != unit.Name)
+			{
+				SetNameCommand cmd = new SetNameCommand(unit, unitName.Text);
+				stack.Execute(cmd);
 			}
 		}
 
-		private void OnBttnAddEquipmentClicked (object sender, System.EventArgs e)
+		private void OnBttnAddEquipmentClicked(object sender, System.EventArgs e)
 		{
-			AddEquipment ();
+			AddEquipment();
 		}
 
-		private void AddEquipment ()
+		private void AddEquipment()
 		{
-			AddEquipmentUIControl addEquipment = new AddEquipmentUIControl (unit, stack);
-			addEquipment.Show ();
+			AddEquipmentUIControl addEquipment = new AddEquipmentUIControl(unit, stack);
+			addEquipment.Show();
 		}
 
-		protected virtual void HandleRemoveButtonActivated (object sender, System.EventArgs e)
+		protected virtual void HandleRemoveButtonActivated(object sender, System.EventArgs e)
 		{
-			UnitEquipmentItem item = GetSelectedEquipmentItem ();
-			log.Debug ("Remove " + item);
+			UnitEquipmentItem item = GetSelectedEquipmentItem();
+			log.Debug("Remove " + item);
 				
-			if (item != null) {
-				SetUnitEquipmentNumericAmountCommand cmd = new SetUnitEquipmentNumericAmountCommand (unit, item, 0);
-				stack.Execute (cmd);
+			if (item != null)
+			{
+				SetUnitEquipmentNumericAmountCommand cmd = new SetUnitEquipmentNumericAmountCommand(unit, item, 0);
+				stack.Execute(cmd);
 			}
 		}		
 
-		protected virtual void HandleEditButtonClicked (object sender, System.EventArgs e)
+		protected virtual void HandleEditButtonClicked(object sender, System.EventArgs e)
 		{
-			UnitEquipmentItem item = GetSelectedEquipmentItem ();
-			log.Debug ("Edit " + item);
+			UnitEquipmentItem item = GetSelectedEquipmentItem();
+			log.Debug("Edit " + item);
 			
-			if (item != null) {
-				EditEquipmentUIControl editEquipment = new EditEquipmentUIControl (unit, item, stack);
-				editEquipment.Show ();
+			if (item != null)
+			{
+				EditEquipmentUIControl editEquipment = new EditEquipmentUIControl(unit, item, stack);
+				editEquipment.Show();
 			}
 		}
 
-		protected virtual void HandleReplaceButtonClicked (object sender, System.EventArgs e)
+		protected virtual void HandleReplaceButtonClicked(object sender, System.EventArgs e)
 		{
-			UnitEquipmentItem item = GetSelectedEquipmentItem ();
-			log.Debug ("Replace " + item);
+			UnitEquipmentItem item = GetSelectedEquipmentItem();
+			log.Debug("Replace " + item);
 				
-			if (item != null) {
-				ReplaceEquipmentUIControl addEquipment = new ReplaceEquipmentUIControl (unit, item, stack);
-				addEquipment.Show ();
+			if (item != null)
+			{
+				ReplaceEquipmentUIControl addEquipment = new ReplaceEquipmentUIControl(unit, item, stack);
+				addEquipment.Show();
 			}
 		}		
 	}
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -9,15 +9,15 @@
 		private global::Gtk.TreeView lstEquipment;
 		private global::Gtk.HBox hbox2;
 		private global::Gtk.Table table2;
-		private global::Gtk.Label lblEquipAll;
-		private global::Gtk.Label lblPercent;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipAll;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblPercent;
 		private global::Gtk.SpinButton numericAmount;
 		private global::Gtk.SpinButton percentageAmount;
 		private global::Gtk.RadioButton rbEquipAll;
 		private global::Gtk.RadioButton rbEquipNumeric;
 		private global::Gtk.RadioButton rbEquipPercent;
-		private global::Gtk.Label lblEquipAmount;
-		private global::Gtk.Label lblEquipment;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipAmount;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipment;
 		private global::Gtk.Button buttonCancel;
 		private global::Gtk.Button buttonOk;
 
@@ -65,7 +65,7 @@
 			this.table2.RowSpacing = ((uint)(6));
 			this.table2.ColumnSpacing = ((uint)(6));
 			// Container child table2.Gtk.Table+TableChild
-			this.lblEquipAll = new global::Gtk.Label();
+			this.lblEquipAll = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipAll.Name = "lblEquipAll";
 			this.lblEquipAll.LabelProp = global::Mono.Unix.Catalog.GetString("equip all");
 			this.table2.Add(this.lblEquipAll);
@@ -76,7 +76,7 @@
 			w4.RightAttach = ((uint)(2));
 			w4.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table2.Gtk.Table+TableChild
-			this.lblPercent = new global::Gtk.Label();
+			this.lblPercent = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblPercent.Name = "lblPercent";
 			this.lblPercent.LabelProp = global::Mono.Unix.Catalog.GetString("%");
 			this.table2.Add(this.lblPercent);
@@ -120,7 +120,6 @@
 			this.rbEquipAll = new global::Gtk.RadioButton("");
 			this.rbEquipAll.CanFocus = true;
 			this.rbEquipAll.Name = "rbEquipAll";
-			this.rbEquipAll.Active = true;
 			this.rbEquipAll.DrawIndicator = true;
 			this.rbEquipAll.UseUnderline = true;
 			this.rbEquipAll.Group = new global::GLib.SList(global::System.IntPtr.Zero);
@@ -167,7 +166,7 @@
 			w12.RightAttach = ((uint)(2));
 			w12.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblEquipAmount = new global::Gtk.Label();
+			this.lblEquipAmount = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipAmount.Name = "lblEquipAmount";
 			this.lblEquipAmount.LabelProp = global::Mono.Unix.Catalog.GetString("amount:");
 			this.table1.Add(this.lblEquipAmount);
@@ -177,7 +176,7 @@
 			w13.XOptions = ((global::Gtk.AttachOptions)(4));
 			w13.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblEquipment = new global::Gtk.Label();
+			this.lblEquipment = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipment.Name = "lblEquipment";
 			this.lblEquipment.LabelProp = global::Mono.Unix.Catalog.GetString("equipment");
 			this.table1.Add(this.lblEquipment);
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmEditEquipment.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmEditEquipment.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -7,14 +7,14 @@
 		private global::Gtk.Table table1;
 		private global::Gtk.HBox hbox2;
 		private global::Gtk.Table table2;
-		private global::Gtk.Label lblEquipAll;
-		private global::Gtk.Label lblPercent;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipAll;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblPercent;
 		private global::Gtk.SpinButton numericAmount;
 		private global::Gtk.SpinButton percentageAmount;
 		private global::Gtk.RadioButton rbEquipAll;
 		private global::Gtk.RadioButton rbEquipNumeric;
 		private global::Gtk.RadioButton rbEquipPercent;
-		private global::Gtk.Label lblEquipAmount;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipAmount;
 		private global::Gtk.Button buttonCancel;
 		private global::Gtk.Button buttonOk;
 
@@ -47,7 +47,7 @@
 			this.table2.RowSpacing = ((uint)(6));
 			this.table2.ColumnSpacing = ((uint)(6));
 			// Container child table2.Gtk.Table+TableChild
-			this.lblEquipAll = new global::Gtk.Label();
+			this.lblEquipAll = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipAll.Name = "lblEquipAll";
 			this.lblEquipAll.LabelProp = global::Mono.Unix.Catalog.GetString("equip all");
 			this.table2.Add(this.lblEquipAll);
@@ -58,7 +58,7 @@
 			w2.RightAttach = ((uint)(2));
 			w2.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table2.Gtk.Table+TableChild
-			this.lblPercent = new global::Gtk.Label();
+			this.lblPercent = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblPercent.Name = "lblPercent";
 			this.lblPercent.LabelProp = global::Mono.Unix.Catalog.GetString("%");
 			this.table2.Add(this.lblPercent);
@@ -146,7 +146,7 @@
 			w10.RightAttach = ((uint)(2));
 			w10.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblEquipAmount = new global::Gtk.Label();
+			this.lblEquipAmount = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipAmount.Name = "lblEquipAmount";
 			this.lblEquipAmount.LabelProp = global::Mono.Unix.Catalog.GetString("amount:");
 			this.lblEquipAmount.Justify = ((global::Gtk.Justification)(1));
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmNewUnit.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmNewUnit.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -9,7 +9,7 @@
 		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblUnitType;
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
 		private global::Gtk.TreeView lstUnitTypes;
-		private global::Gtk.Label lblNewUnitWarning;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblNewUnitWarning;
 		private global::IBBoard.GtkSharp.Translatable.TranslatableButton bttnCancel;
 		private global::IBBoard.GtkSharp.Translatable.TranslatableButton bttnCreate;
 
@@ -65,10 +65,8 @@
 			w5.Expand = false;
 			w5.Fill = false;
 			// Container child vbox2.Gtk.Box+BoxChild
-			this.lblNewUnitWarning = new global::Gtk.Label();
+			this.lblNewUnitWarning = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblNewUnitWarning.Name = "lblNewUnitWarning";
-			this.lblNewUnitWarning.Xalign = 0F;
-			this.lblNewUnitWarning.Yalign = 0F;
 			this.vbox2.Add(this.lblNewUnitWarning);
 			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.lblNewUnitWarning]));
 			w6.Position = 1;
@@ -114,6 +112,7 @@
 			}
 			this.DefaultWidth = 403;
 			this.DefaultHeight = 259;
+			this.lblNewUnitWarning.Hide();
 			this.Show();
 			this.lstUnitTypes.RowActivated += new global::Gtk.RowActivatedHandler(this.OnRowActivated);
 			this.bttnCancel.Clicked += new global::System.EventHandler(this.OnButtonCancelActivated);
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmReplaceEquipment.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmReplaceEquipment.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -9,15 +9,15 @@
 		private global::Gtk.TreeView lstEquipment;
 		private global::Gtk.HBox hbox2;
 		private global::Gtk.Table table2;
-		private global::Gtk.Label lblEquipAll;
-		private global::Gtk.Label lblPercent;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipAll;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblPercent;
 		private global::Gtk.SpinButton numericAmount;
 		private global::Gtk.SpinButton percentageAmount;
 		private global::Gtk.RadioButton rbEquipAll;
 		private global::Gtk.RadioButton rbEquipNumeric;
 		private global::Gtk.RadioButton rbEquipPercent;
-		private global::Gtk.Label lblEquipAmount;
-		private global::Gtk.Label lblEquipment;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipAmount;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblEquipment;
 		private global::Gtk.Button buttonCancel;
 		private global::Gtk.Button buttonOk;
 
@@ -65,7 +65,7 @@
 			this.table2.RowSpacing = ((uint)(6));
 			this.table2.ColumnSpacing = ((uint)(6));
 			// Container child table2.Gtk.Table+TableChild
-			this.lblEquipAll = new global::Gtk.Label();
+			this.lblEquipAll = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipAll.Name = "lblEquipAll";
 			this.lblEquipAll.LabelProp = global::Mono.Unix.Catalog.GetString("equip all");
 			this.table2.Add(this.lblEquipAll);
@@ -76,7 +76,7 @@
 			w4.RightAttach = ((uint)(2));
 			w4.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table2.Gtk.Table+TableChild
-			this.lblPercent = new global::Gtk.Label();
+			this.lblPercent = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblPercent.Name = "lblPercent";
 			this.lblPercent.LabelProp = global::Mono.Unix.Catalog.GetString("%");
 			this.table2.Add(this.lblPercent);
@@ -166,7 +166,7 @@
 			w12.RightAttach = ((uint)(2));
 			w12.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblEquipAmount = new global::Gtk.Label();
+			this.lblEquipAmount = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipAmount.Name = "lblEquipAmount";
 			this.lblEquipAmount.LabelProp = global::Mono.Unix.Catalog.GetString("amount:");
 			this.table1.Add(this.lblEquipAmount);
@@ -176,7 +176,7 @@
 			w13.XOptions = ((global::Gtk.AttachOptions)(4));
 			w13.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblEquipment = new global::Gtk.Label();
+			this.lblEquipment = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblEquipment.Name = "lblEquipment";
 			this.lblEquipment.LabelProp = global::Mono.Unix.Catalog.GetString("equipment");
 			this.table1.Add(this.lblEquipment);
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.Widgets.UnitDisplayWidget.cs	Fri Dec 31 11:36:06 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.Widgets.UnitDisplayWidget.cs	Fri Dec 31 12:01:18 2010 +0000
@@ -13,15 +13,15 @@
 		private global::Gtk.HSeparator hseparator1;
 		private global::Gtk.HBox hbox2;
 		private global::Gtk.Table table1;
-		private global::Gtk.Label equipmentLabel;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel equipmentLabel;
 		private global::Gtk.ScrolledWindow GtkScrolledWindow2;
 		private global::Gtk.NodeView equipmentList;
 		private global::Gtk.ScrolledWindow GtkScrolledWindow3;
 		private global::Gtk.TextView notesView;
 		private global::Gtk.ScrolledWindow GtkScrolledWindow4;
 		private global::Gtk.NodeView abilitiesList;
-		private global::Gtk.Label lblAbilities;
-		private global::Gtk.Label lblNotes;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblAbilities;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblNotes;
 		private global::Gtk.VBox vbox3;
 		private global::Gtk.Button bttnAddEquipment;
 		private global::Gtk.Button bttnEditEquipment;
@@ -103,7 +103,7 @@
 			this.table1.RowSpacing = ((uint)(6));
 			this.table1.ColumnSpacing = ((uint)(6));
 			// Container child table1.Gtk.Table+TableChild
-			this.equipmentLabel = new global::Gtk.Label();
+			this.equipmentLabel = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.equipmentLabel.Name = "equipmentLabel";
 			this.equipmentLabel.LabelProp = global::Mono.Unix.Catalog.GetString("equipment:");
 			this.table1.Add(this.equipmentLabel);
@@ -160,7 +160,7 @@
 			w15.RightAttach = ((uint)(2));
 			w15.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblAbilities = new global::Gtk.Label();
+			this.lblAbilities = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblAbilities.Name = "lblAbilities";
 			this.lblAbilities.LabelProp = global::Mono.Unix.Catalog.GetString("abilities:");
 			this.table1.Add(this.lblAbilities);
@@ -170,7 +170,7 @@
 			w16.XOptions = ((global::Gtk.AttachOptions)(4));
 			w16.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
-			this.lblNotes = new global::Gtk.Label();
+			this.lblNotes = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
 			this.lblNotes.Name = "lblNotes";
 			this.lblNotes.LabelProp = global::Mono.Unix.Catalog.GetString("notes:");
 			this.table1.Add(this.lblNotes);
@@ -191,7 +191,7 @@
 			this.bttnAddEquipment.CanFocus = true;
 			this.bttnAddEquipment.Name = "bttnAddEquipment";
 			this.bttnAddEquipment.UseUnderline = true;
-			this.bttnAddEquipment.Label = global::Mono.Unix.Catalog.GetString("Add");
+			this.bttnAddEquipment.Label = global::Mono.Unix.Catalog.GetString("add");
 			this.vbox3.Add(this.bttnAddEquipment);
 			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnAddEquipment]));
 			w19.Position = 0;
@@ -203,7 +203,7 @@
 			this.bttnEditEquipment.CanFocus = true;
 			this.bttnEditEquipment.Name = "bttnEditEquipment";
 			this.bttnEditEquipment.UseUnderline = true;
-			this.bttnEditEquipment.Label = global::Mono.Unix.Catalog.GetString("Edit");
+			this.bttnEditEquipment.Label = global::Mono.Unix.Catalog.GetString("edit");
 			this.vbox3.Add(this.bttnEditEquipment);
 			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnEditEquipment]));
 			w20.Position = 1;
@@ -215,7 +215,7 @@
 			this.bttnReplaceEquipment.CanFocus = true;
 			this.bttnReplaceEquipment.Name = "bttnReplaceEquipment";
 			this.bttnReplaceEquipment.UseUnderline = true;
-			this.bttnReplaceEquipment.Label = global::Mono.Unix.Catalog.GetString("Replace");
+			this.bttnReplaceEquipment.Label = global::Mono.Unix.Catalog.GetString("replace");
 			this.vbox3.Add(this.bttnReplaceEquipment);
 			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnReplaceEquipment]));
 			w21.Position = 2;
@@ -227,7 +227,7 @@
 			this.bttnRemoveEquipment.CanFocus = true;
 			this.bttnRemoveEquipment.Name = "bttnRemoveEquipment";
 			this.bttnRemoveEquipment.UseUnderline = true;
-			this.bttnRemoveEquipment.Label = global::Mono.Unix.Catalog.GetString("Remove");
+			this.bttnRemoveEquipment.Label = global::Mono.Unix.Catalog.GetString("remove");
 			this.vbox3.Add(this.bttnRemoveEquipment);
 			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnRemoveEquipment]));
 			w22.Position = 3;
--- a/gtk-gui/gui.stetic	Fri Dec 31 11:36:06 2010 +0000
+++ b/gtk-gui/gui.stetic	Fri Dec 31 12:01:18 2010 +0000
@@ -615,10 +615,9 @@
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="lblNewUnitWarning">
+              <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblNewUnitWarning">
                 <property name="MemberName" />
-                <property name="Xalign">0</property>
-                <property name="Yalign">0</property>
+                <property name="Visible">False</property>
               </widget>
               <packing>
                 <property name="Position">1</property>
@@ -780,7 +779,7 @@
                 <property name="RowSpacing">6</property>
                 <property name="ColumnSpacing">6</property>
                 <child>
-                  <widget class="Gtk.Label" id="equipmentLabel">
+                  <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="equipmentLabel">
                     <property name="MemberName" />
                     <property name="LabelProp" translatable="yes">equipment:</property>
                   </widget>
@@ -880,7 +879,7 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.Label" id="lblAbilities">
+                  <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblAbilities">
                     <property name="MemberName" />
                     <property name="LabelProp" translatable="yes">abilities:</property>
                   </widget>
@@ -899,7 +898,7 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.Label" id="lblNotes">
+                  <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblNotes">
                     <property name="MemberName" />
                     <property name="LabelProp" translatable="yes">notes:</property>
                   </widget>
@@ -932,7 +931,7 @@
                     <property name="MemberName" />
                     <property name="CanFocus">True</property>
                     <property name="Type">TextOnly</property>
-                    <property name="Label" translatable="yes">Add</property>
+                    <property name="Label" translatable="yes">add</property>
                     <property name="UseUnderline">True</property>
                     <signal name="Clicked" handler="OnBttnAddEquipmentClicked" />
                   </widget>
@@ -949,7 +948,7 @@
                     <property name="Sensitive">False</property>
                     <property name="CanFocus">True</property>
                     <property name="Type">TextOnly</property>
-                    <property name="Label" translatable="yes">Edit</property>
+                    <property name="Label" translatable="yes">edit</property>
                     <property name="UseUnderline">True</property>
                     <signal name="Clicked" handler="HandleEditButtonClicked" />
                   </widget>
@@ -966,7 +965,7 @@
                     <property name="Sensitive">False</property>
                     <property name="CanFocus">True</property>
                     <property name="Type">TextOnly</property>
-                    <property name="Label" translatable="yes">Replace</property>
+                    <property name="Label" translatable="yes">replace</property>
                     <property name="UseUnderline">True</property>
                     <signal name="Clicked" handler="HandleReplaceButtonClicked" />
                   </widget>
@@ -983,7 +982,7 @@
                     <property name="Sensitive">False</property>
                     <property name="CanFocus">True</property>
                     <property name="Type">TextOnly</property>
-                    <property name="Label" translatable="yes">Remove</property>
+                    <property name="Label" translatable="yes">remove</property>
                     <property name="UseUnderline">True</property>
                     <signal name="Clicked" handler="HandleRemoveButtonActivated" />
                   </widget>
@@ -1083,7 +1082,7 @@
                       <placeholder />
                     </child>
                     <child>
-                      <widget class="Gtk.Label" id="lblEquipAll">
+                      <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipAll">
                         <property name="MemberName" />
                         <property name="LabelProp" translatable="yes">equip all</property>
                       </widget>
@@ -1103,7 +1102,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="Gtk.Label" id="lblPercent">
+                      <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblPercent">
                         <property name="MemberName" />
                         <property name="LabelProp" translatable="yes">%</property>
                       </widget>
@@ -1181,7 +1180,6 @@
                         <property name="MemberName" />
                         <property name="CanFocus">True</property>
                         <property name="Label" translatable="yes" />
-                        <property name="Active">True</property>
                         <property name="DrawIndicator">True</property>
                         <property name="HasLabel">True</property>
                         <property name="UseUnderline">True</property>
@@ -1276,7 +1274,7 @@
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="lblEquipAmount">
+              <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipAmount">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">amount:</property>
               </widget>
@@ -1295,7 +1293,7 @@
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="lblEquipment">
+              <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipment">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">equipment</property>
               </widget>
@@ -1403,7 +1401,7 @@
                       <placeholder />
                     </child>
                     <child>
-                      <widget class="Gtk.Label" id="lblEquipAll">
+                      <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipAll">
                         <property name="MemberName" />
                         <property name="LabelProp" translatable="yes">equip all</property>
                       </widget>
@@ -1423,7 +1421,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="Gtk.Label" id="lblPercent">
+                      <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblPercent">
                         <property name="MemberName" />
                         <property name="LabelProp" translatable="yes">%</property>
                       </widget>
@@ -1595,7 +1593,7 @@
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="lblEquipAmount">
+              <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipAmount">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">amount:</property>
                 <property name="Justify">Right</property>
@@ -1730,7 +1728,7 @@
                       <placeholder />
                     </child>
                     <child>
-                      <widget class="Gtk.Label" id="lblEquipAll">
+                      <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipAll">
                         <property name="MemberName" />
                         <property name="LabelProp" translatable="yes">equip all</property>
                       </widget>
@@ -1750,7 +1748,7 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="Gtk.Label" id="lblPercent">
+                      <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblPercent">
                         <property name="MemberName" />
                         <property name="LabelProp" translatable="yes">%</property>
                       </widget>
@@ -1922,7 +1920,7 @@
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="lblEquipAmount">
+              <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipAmount">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">amount:</property>
               </widget>
@@ -1941,7 +1939,7 @@
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="lblEquipment">
+              <widget class="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblEquipment">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">equipment</property>
               </widget>
--- a/translations/en.translation	Fri Dec 31 11:36:06 2010 +0000
+++ b/translations/en.translation	Fri Dec 31 12:01:18 2010 +0000
@@ -26,23 +26,32 @@
 <translation id="armyCategoryColumnTitle">Army Categories</translation>
 <translation id="menuRemoveUnit">Remove Unit</translation>
 <translation id="armyFileFilter">WarFoundry Army Files (*.army)</translation>
+<translation id="bttnCancel">Cancel</translation>
+<translation id="bttnSelectSystem">Select system</translation>
+<translation id="saveArmyDialog">Save army</translation>
+<translation id="defaultUnitName">Unit of {0} {1}</translation>
+<translation id="statusPanelPoints">{0} pts / {1} pts</translation>
+<translation id="equipmentLabel">Equipment:</translation>
+<translation id="lblAbilities">Abilities:</translation>
+<translation id="lblNotes">Notes:</translation>
+<translation id="IBBoard.WarFoundry.GUI.GTK.FrmNewArmy">Create Army</translation>
 <translation id="lblGameSystem">Game systems:</translation>
 <translation id="lblRaceList">Races:</translation>
 <translation id="lblArmyName">Army name:</translation>
 <translation id="lblArmySize">Army size:</translation>
 <translation id="bttnCreate">Create</translation>
-<translation id="bttnCancel">Cancel</translation>
-<translation id="bttnSelectUnit">Create unit</translation>
-<translation id="lblUnitList">Unit types:</translation>
-<translation id="bttnSelectSystem">Select system</translation>
-<translation id="saveArmyDialog">Save army</translation>
-<translation id="defaultUnitName">Unit of {0} {1}</translation>
-<translation id="statusPanelPoints">{0} pts / {1} pts</translation>
-<translation id="IBBoard.WarFoundry.GUI.GTK.FrmNewArmy">Create Army</translation>	
 <translation id="frmNewArmyRaceColumn">Race</translation>
 <translation id="IBBoard.WarFoundry.GUI.GTK.FrmNewUnit">Add New {0} Choice</translation>
 <translation id="frmNewUnitNewUnitColumn">Unit Type</translation>
 <translation id="lblUnitType">Unit Type:</translation>
+<translation id="IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment">Add Equipment</translation>
+<translation id="frmAddEquipmentColumnTitle">Equipment</translation>
+<translation id="lblEquipAll">Equip All</translation>
+<translation id="lblPercent">%</translation>
+<translation id="lblEquipAmount">Amount:</translation>
+<translation id="lblEquipment">Equipment:</translation>
+<translation id="IBBoard.WarFoundry.GUI.GTK.FrmEditEquipment">Edit Equipment</translation>
+<translation id="frmEditEquipmentColumnTitle">Equipment</translation>
 <translation id="IBBoard.WarFoundry.GUI.GTK.FrmAbout">About WarFoundry</translation>
 <translation id="exportBasicHtmlDialogTitle">Export army</translation>
 <translation id="exportBasicHtmlCancel">Cancel</translation>