 		 * @param toStringColumn The primitive column to use that provides a number-to-string conversion function.
 		 * @return A generated label for this NumberClassifier.
 		 */
-		private static const lessThanString:String = '< ';//'less than ';
-		private static const moreThanString:String = '> ';//'more than ';
 		public function generateBinLabel(toStringColumn:IPrimitiveColumn = null):String
 		{
-			// make classifiers have readable labels
-			var minStr:String;
-			var maxStr:String;
+			var minStr:String = null;
+			var maxStr:String = null;
+			
+			// get labels from column
 			if (toStringColumn != null)
 			{
-				minStr = toStringColumn.deriveStringFromNumber(min.value);
-				maxStr = toStringColumn.deriveStringFromNumber(max.value);
+				minStr = toStringColumn.deriveStringFromNumber(min.value) || '';
+				maxStr = toStringColumn.deriveStringFromNumber(max.value) || '';
+			}
+			
+			// if the column produced no labels, use default number formatting
+			if (!minStr && !maxStr)
+			{
+				minStr = StandardLib.formatNumber(min.value);
+				maxStr = StandardLib.formatNumber(max.value);
+			}
+			
+			// if both labels are the same, return the label
+			if (minStr && maxStr && minStr == maxStr)
+				return minStr;
+			
+			// if the column dataType is string, put quotes around the labels
+			if (toStringColumn && toStringColumn.getMetadata(ColumnMetadata.DATA_TYPE) == DataTypes.STRING)
+			{
+				minStr = lang('"{0}"', minStr);
+				maxStr = lang('"{0}"', maxStr);
 			}
 			else
 			{
-				//TEMPORARY SOLUTION
-				minStr = '' + min.value;
-				maxStr = '' + max.value;
+				if (!minInclusive.value)
+					minStr = lang("> {0}", minStr);
+				if (!maxInclusive.value)
+					maxStr = lang("< {0}", maxStr);
 			}
 
-			if (minStr == "" && maxStr == "")
-			{
-				return "Undefined";
-			}
-			else if (minStr == maxStr)
-			{
-				return minStr;
-			}
-			else
-			{
-				if (toStringColumn is StringColumn)
-				{
-					minStr = '"' + minStr + '"';
-					maxStr = '"' + maxStr + '"';
-				}
-				else
-				{
-					if (!minInclusive.value)
-						minStr = moreThanString + minStr;
-					if (!maxInclusive.value)
-						maxStr = lessThanString + maxStr;
-				}
-
-				if (minStr == "")
-					minStr = "Undefined";
-				if (maxStr == "")
-					maxStr = "Undefined";
-				return minStr + " to " + maxStr;
-			}
+			if (minStr == '')
+				minStr = lang('Undefined');
+			if (maxStr == '')
+				maxStr = lang('Undefined');
+			
+			return lang("{0} to {1}", minStr, maxStr);
 		}
 		
 		public function toString():String

package weave.data.BinClassifiers
{
	import weave.api.core.ICallbackCollection;
	import weave.api.data.IBinClassifier;
	import weave.api.data.IPrimitiveColumn;
	import weave.api.getCallbackCollection;
	import weave.api.newLinkableChild;
	import weave.core.LinkableBoolean;
	import weave.core.LinkableNumber;
	import weave.data.AttributeColumns.StringColumn;

			return (minInclusive.value ? '[' : '(')
				+ min.value + ', ' + max.value
				+ (maxInclusive.value ? ']' : ')');
		}
	}
}
