Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 11284)
+++ wp-includes/functions.php	(working copy)
@@ -3099,7 +3099,7 @@
  *
  */
 function wp_timezone_choice($selectedzone) {
-	$continents = array('Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific', 'Etc');
+	$continents = array(esc_attr__('Africa'), esc_attr__('America'), esc_attr__('Antarctica'), esc_attr__('Arctic'), esc_attr__('Asia'), esc_attr__('Atlantic'), esc_attr__('Australia'), esc_attr__('Europe'), esc_attr__('Indian'), esc_attr__('Pacific'), esc_attr__('Etc'));
 
 	$all = timezone_identifiers_list();
 
@@ -3114,7 +3114,16 @@
 		$i++;
 	}
 
-	asort($zonen);
+	usort($zonen, create_function(
+		'$a, $b', '
+		if ( $a["continent"] == $b["continent"] && $a["city"] == $b["city"] )
+			return strnatcasecmp($a["subcity"], $b["subcity"]);
+		elseif ( $a["continent"] == $b["continent"] )
+			return strnatcasecmp($a["city"], $b["city"]);
+		else
+			return strnatcasecmp($a["continent"], $b["continent"]);
+		'));
+	
 	$structure = '';
 	$pad = '&nbsp;&nbsp;&nbsp;';
 
@@ -3138,7 +3147,10 @@
 			if ( !empty($subcity) ) {
 				$city = $city . '/'. $subcity;
 			}
-			$structure .= "\t<option ".((($continent.'/'.$city)==$selectedzone)?'selected="selected"':'')." value=\"".($continent.'/'.$city)."\">$pad".str_replace('_',' ',$city)."</option>\n"; //Timezone
+			$display = str_replace('_',' ',$city);
+			if ( $continent == esc_attr__('Etc') )
+				$display = strtr($display, '+-', '-+');
+			$structure .= "\t<option ".((($continent.'/'.$city)==$selectedzone)?'selected="selected"':'')." value=\"".($continent.'/'.$city)."\">$pad".$display."</option>\n"; //Timezone
 		} else {
 			$structure .= "<option ".(($continent==$selectedzone)?'selected="selected"':'')." value=\"".$continent."\">".$continent."</option>\n"; //Timezone
 		}
