Index: wp-includes/taxonomy.php
===================================================================
--- wp-includes/taxonomy.php	(revision 14575)
+++ wp-includes/taxonomy.php	(working copy)
@@ -18,8 +18,6 @@
 	register_taxonomy( 'category', 'post', array(
 		'hierarchical' => true,
 	 	'update_count_callback' => '_update_post_term_count',
-		'label' => __( 'Categories' ),
-		'singular_label' => __( 'Category' ),
 		'query_var' => false,
 		'rewrite' => false,
 		'public' => true,
@@ -30,8 +28,6 @@
 	register_taxonomy( 'post_tag', 'post', array(
 	 	'hierarchical' => false,
 		'update_count_callback' => '_update_post_term_count',
-		'label' => __( 'Post Tags' ),
-		'singular_label' => __( 'Post Tag' ),
 		'query_var' => false,
 		'rewrite' => false,
 		'public' => true,
@@ -41,8 +37,10 @@
 
 	register_taxonomy( 'nav_menu', 'nav_menu_item', array(
 		'hierarchical' => false,
-		'label' => __( 'Navigation Menus' ),
-		'singular_label' => __( 'Navigation Menu' ),
+		'labels' => array(
+			'name' => __( 'Navigation Menus' ),
+			'singular_name' => __( 'Navigation Menu' ),
+		),
 		'query_var' => false,
 		'rewrite' => false,
 		'show_ui' => false,
@@ -51,7 +49,10 @@
 
 	register_taxonomy( 'link_category', 'link', array(
 		'hierarchical' => false,
-	  	'label' => __( 'Categories' ),
+		'labels' => array(
+			'name' => __( 'Categories' ),
+			'singular_name' => __( 'Category' ),
+		),
 		'query_var' => false,
 		'rewrite' => false,
 		'public' => false,
@@ -230,6 +231,8 @@
  *
  * show_tagcloud - false to prevent the taxonomy being listed in the Tag Cloud Widget;
  * defaults to show_ui which defalts to public.
+ * 
+ * labels - An array of labels for this taxonomy. You can see accepted values in {@link get_taxonomy_labels()}. By default tag labels are used for non-hierarchical types and category labels for hierarchical ones.
  *
  * @package WordPress
  * @subpackage Taxonomy
@@ -254,9 +257,9 @@
 						'query_var' => $taxonomy,
 						'public' => true,
 						'show_ui' => null,
-						'label' => null,
 						'show_tagcloud' => null,
-						'_builtin' => false
+						'_builtin' => false,
+						'labels' => array(),
 						);
 	$args = wp_parse_args($args, $defaults);
 
@@ -282,9 +285,6 @@
 	if ( is_null($args['show_tagcloud']) )
 		$args['show_tagcloud'] = $args['show_ui'];
 
-	if ( is_null($args['label'] ) )
-		$args['label'] = $taxonomy;
-
 	foreach ( array('manage_cap', 'edit_cap', 'delete_cap') as $cap ) {
 		if ( empty($args[$cap]) )
 			$args[$cap] = 'manage_categories';
@@ -292,11 +292,15 @@
 	if ( empty($args['assign_cap']) )
 		$args['assign_cap'] = 'edit_posts';
 
-	if ( empty($args['singular_label']) )
-		$args['singular_label'] = $args['label'];
-
 	$args['name'] = $taxonomy;
 	$args['object_type'] = (array) $object_type;
+	$args['labels'] = get_taxonomy_labels( (object) $args );
+	
+	// we keep these two only for backwards compatibility
+	// TODO: remove in 3.1	
+	$args['label'] = $args['labels']->name;
+	$args['singular_label'] = $args['labels']->singular_name;
+	
 	$wp_taxonomies[$taxonomy] = (object) $args;
 
 	// register callback handling for metabox
@@ -304,6 +308,47 @@
 }
 
 /**
+ * Builds an object with all taxonomy labels out of a taxonomy object
+ * 
+ * Accepted keys of the label array in the taxonomy object:
+ * - name - general name for the taxonomy, usually plural. Default is Post Tags/Categories
+ * - singular_name - name for one object of this taxonomy. Default is Post Tag/Category
+ * - search_items - Default is Search Tags/Search Categories
+ * - popular_items - Default is Popular Tags/Popular Categories
+ * - all_items - Default is All Tags/All Categories
+ * - parent_item - This string isn't used on non-hierarchical taxonomies. In hierarchical ones the default is Parent Category
+ * - parent_item_colon - The same as <code>parent_item</code>, but with colon <code>:</code> in the end
+ * - edit_item - Default is Edit Tag/Edit Category
+ * - update_item - Default is Update Tag/Update Category
+ * - add_new_item - Default is Add New Tag/Add New Category
+ * - new_item_name - Default is New Tag Name/New Category Name
+ * 
+ * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories.)
+ * 
+ * @since 3.0.0
+ * @param object $tax Taxonomy object
+ * @return object object with all the labels as member variables
+ */
+
+function get_taxonomy_labels( $tax ) {
+	$nohier_vs_hier_defaults = array(
+		'name' => array( _x( 'Post Tags', 'taxonomy general name' ), _x( 'Categories', 'taxonomy general name' ) ),
+		'singular_name' => array( _x( 'Post Tag', 'taxonomy singular name' ), _x( 'Category', 'taxonomy singular name' ) ),
+		'search_items' => array( __( 'Search Tags' ), __( 'Search Categories' ) ),
+		'popular_items' => array( __( 'Popular Tags' ), __( 'Popular Category' ) ),
+		'all_items' => array( __( 'All Tags' ), __( 'All Categories' ) ),
+		'parent_item' => array( null, __( 'Parent Category' ) ),
+		'parent_item_colon' => array( null, __( 'Parent Category:' ) ),
+		'edit_item' => array( __( 'Edit Tag' ), __( 'Edit Category' ) ),
+		'update_item' => array( __( 'Update Tag' ), __( 'Update Category' ) ),
+		'add_new_item' => array( __( 'Add New Tag' ), __( 'Add New Category' ) ),
+		'new_item_name' => array( __( 'New Tag Name' ), __( 'New Category Name' ) ),
+	);
+
+	return _get_custom_object_labels( $tax, $nohier_vs_hier_defaults );
+}
+
+/**
  * Add an already registered taxonomy to an object type.
  *
  * @package WordPress
@@ -2608,6 +2653,3 @@
 
 	return false;
 }
-
-
-?>
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 14575)
+++ wp-includes/post.php	(working copy)
@@ -40,7 +40,9 @@
 	) );
 
 	register_post_type( 'attachment', array(
-		'label' => __( 'Media' ),
+		'labels' => array(
+			'name' => __( 'Media' ),
+		),
 		'public' => true,
 		'show_ui' => false,
 		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
@@ -53,8 +55,10 @@
 	) );
 
 	register_post_type( 'revision', array(
-		'label' => __( 'Revisions' ),
-		'singular_label' => __( 'Revision' ),
+		'labels' => array(
+			'name' => __( 'Revisions' ),
+			'singular_name' => __( 'Revision' ),
+		),
 		'public' => false,
 		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
 		'_edit_link' => 'revision.php?revision=%d', /* internal use only. don't use this when registering your own post type. */
@@ -65,8 +69,10 @@
 	) );
 
 	register_post_type( 'nav_menu_item', array(
-		'label' => __( 'Navigation Menu Items' ),
-		'singular_label' => __( 'Navigation Menu Item' ),
+		'labels' => array(
+			'name' => __( 'Navigation Menu Items' ),
+			'singular_name' => __( 'Navigation Menu Item' ),
+		),
 		'public' => false,
 		'show_ui' => false,
 		'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
@@ -907,7 +913,7 @@
  * - search_items - Default is Search Posts/Search Pages
  * - not_found - Default is No posts found/No pages found
  * - not_found_in_trash - Default is No posts found in Trash/No pages found in Trash
- * - parent - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
+ * - parent_item - This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page:
  * 
  * Above, the first default value is for non-hierarchical post types (like posts) and the second one is for hierarchical post types (like pages.)
  * 
@@ -929,22 +935,35 @@
 		'not_found' => array( __('No posts found'), __('No pages found') ),
 		'not_found_in_trash' => array( __('No posts found in Trash'), __('No pages found in Trash') ),
 		'view' => array( __('View Post'), __('View Page') ),
-		'parent' => array( null, __('Parent Page:') )
+		'parent_item' => array( null, __('Parent Page:') )
 	);
+	return _get_custom_object_labels( $post_type_object, $nohier_vs_hier_defaults );
+}
+
+/**
+ * Builds an object with custom-something object (post type, taxonomy) labels out of a custom-something object
+ * 
+ * @access private
+ */
+function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) {
 	
 	// try to get missing (singular_)?name from older style (singular_)?label member variables
 	// we keep that for backwards compatibility
 	// TODO: remove in 3.1
-	if ( !isset( $post_type_object->labels['name'] ) && isset( $post_type_object->label ) ) {
-		$post_type_object->labels['name'] = $post_type_object->label;
+	if ( !isset( $object->labels['name'] ) && isset( $object->label ) ) {
+		$object->labels['name'] = $object->label;
 	}
-	if ( !isset( $post_type_object->labels['singular_name'] ) && isset( $post_type_object->singular_label ) ) {
-		$post_type_object->labels['singular_name'] = $post_type_object->singular_label;
+	if ( !isset( $object->labels['singular_name'] ) && isset( $object->singular_label ) ) {
+		$object->labels['singular_name'] = $object->singular_label;
 	}
 	
-	$defaults = array_map( create_function( '$x', $post_type_object->hierarchical? 'return $x[1];' : 'return $x[0];' ), $nohier_vs_hier_defaults );
-	$labels = array_merge( $defaults, $post_type_object->labels );
-	return (object)$labels;
+	if ( !isset( $object->labels['singular_name'] ) && isset( $object->labels['name'] ) ) {
+		$object->labels['singular_name'] = $object->labels['name'];
+	}
+	
+	$defaults = array_map( create_function( '$x', $object->hierarchical? 'return $x[1];' : 'return $x[0];' ), $nohier_vs_hier_defaults );
+	$labels = array_merge( $defaults, $object->labels );
+	return (object)$labels;	
 }
 
 /**
Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 14575)
+++ wp-includes/default-widgets.php	(working copy)
@@ -1001,7 +1001,7 @@
 				$title = __('Tags');
 			} else {
 				$tax = get_taxonomy($current_taxonomy);
-				$title = $tax->label;
+				$title = $tax->labels->name;
 			}
 		}
 		$title = apply_filters('widget_title', $title, $instance, $this->id_base);
@@ -1030,10 +1030,10 @@
 	<select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
 	<?php foreach ( get_object_taxonomies('post') as $taxonomy ) :
 				$tax = get_taxonomy($taxonomy);
-				if ( !$tax->show_tagcloud || empty($tax->label) )
+				if ( !$tax->show_tagcloud || empty($tax->labels->name) )
 					continue;
 	?>
-		<option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->label ?></option>
+		<option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->labels->name; ?></option>
 	<?php endforeach; ?>
 	</select></p><?php
 	}
Index: wp-includes/general-template.php
===================================================================
--- wp-includes/general-template.php	(revision 14575)
+++ wp-includes/general-template.php	(working copy)
@@ -588,10 +588,9 @@
 	if ( is_tax() ) {
 		$taxonomy = get_query_var( 'taxonomy' );
 		$tax = get_taxonomy( $taxonomy );
-		$tax = $tax->label;
 		$term = $wp_query->get_queried_object();
 		$term = $term->name;
-		$title = $tax . $t_sep . $term;
+		$title = $tax->labels->name . $t_sep . $term;
 	}
 
 	//If it's a search
Index: wp-includes/nav-menu.php
===================================================================
--- wp-includes/nav-menu.php	(revision 14575)
+++ wp-includes/nav-menu.php	(working copy)
@@ -518,7 +518,7 @@
 
 			} elseif ( 'taxonomy' == $menu_item->type ) {
 				$object = get_taxonomy( $menu_item->object );
-				$menu_item->type_label = $object->singular_label;
+				$menu_item->type_label = $object->labels->singular_name;
 				$menu_item->url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
 
 				$original_title = get_term_field( 'name', $menu_item->object_id, $menu_item->object, 'raw' );
@@ -566,7 +566,7 @@
 
 		$object = get_taxonomy( $menu_item->taxonomy );
 		$menu_item->object = $object->name;
-		$menu_item->type_label = $object->singular_label;
+		$menu_item->type_label = $object->labels->singular_name;
 
 		$menu_item->title = $menu_item->name;
 		$menu_item->url = get_term_link( $menu_item, $menu_item->taxonomy );
Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 14575)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -281,7 +281,10 @@
 	}
 
 	ob_start();
-		wp_dropdown_categories( array( 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => sprintf( __('&mdash; Parent %s &mdash;'), $taxonomy->singular_label ) ) );
+		wp_dropdown_categories( array(
+			'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name',
+			'hierarchical' => 1, 'show_option_none' => '&mdash; '.$taxonomy->labels->parent_item.' &mdash;'
+		) );
 	$sup = ob_get_contents();
 	ob_end_clean();
 	$add['supplemental'] = array( 'newcat_parent' => $sup );
Index: wp-admin/includes/meta-boxes.php
===================================================================
--- wp-admin/includes/meta-boxes.php	(revision 14575)
+++ wp-admin/includes/meta-boxes.php	(working copy)
@@ -296,7 +296,7 @@
 	?>
 	<div id="taxonomy-<?php echo $taxonomy; ?>" class="categorydiv">
 		<ul id="<?php echo $taxonomy; ?>-tabs" class="category-tabs">
-			<li class="tabs"><a href="#<?php echo $taxonomy; ?>-all" tabindex="3"><?php printf( __( 'All %s' ), $tax->label ); ?></a></li>
+			<li class="tabs"><a href="#<?php echo $taxonomy; ?>-all" tabindex="3"><?php echo $tax->labels->all_items; ?></a></li>
 			<li class="hide-if-no-js"><a href="#<?php echo $taxonomy; ?>-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
 		</ul>
 
@@ -320,11 +320,22 @@
 	<?php endif; ?>
 	<?php if ( current_user_can($tax->edit_cap) ) : ?>
 			<div id="<?php echo $taxonomy; ?>-adder" class="wp-hidden-children">
-				<h4><a id="<?php echo $taxonomy; ?>-add-toggle" href="#<?php echo $taxonomy; ?>-add" class="hide-if-no-js" tabindex="3"><?php printf( __( '+ Add New %s' ), $tax->singular_label ); ?></a></h4>
+				<h4>
+					<a id="<?php echo $taxonomy; ?>-add-toggle" href="#<?php echo $taxonomy; ?>-add" class="hide-if-no-js" tabindex="3">
+						<?php
+							/* translators: %s: add new taxonomy label */
+							printf( __( '+ %s' ), $tax->labels->add_new_item );
+						?>
+					</a>
+				</h4>
 				<p id="<?php echo $taxonomy; ?>-add" class="category-add wp-hidden-child">
-					<label class="screen-reader-text" for="new<?php echo $taxonomy; ?>"><?php printf( __( 'Add New %s' ), $tax->singular_label ); ?></label><input type="text" name="new<?php echo $taxonomy; ?>" id="new<?php echo $taxonomy; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( sprintf( 'New %s Name', $tax->singular_label ) ); ?>" tabindex="3" aria-required="true"/>
-					<label class="screen-reader-text" for="new<?php echo $taxonomy; ?>_parent"><?php printf( __('Parent %s'), $tax->singular_label ); ?>:</label><?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => sprintf( __('&mdash; Parent %s &mdash;'), $tax->singular_label ), 'tab_index' => 3 ) ); ?>
-					<input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-sumbit" value="<?php esc_attr_e( 'Add' ); ?>" tabindex="3" />
+					<label class="screen-reader-text" for="new<?php echo $taxonomy; ?>"><?php echo $tax->labels->add_new_item; ?></label>
+					<input type="text" name="new<?php echo $taxonomy; ?>" id="new<?php echo $taxonomy; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/>
+					<label class="screen-reader-text" for="new<?php echo $taxonomy; ?>_parent">
+						<?php echo $tax->labels->parent_item_colon; ?>
+					</label>
+					<?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
+					<input type="button" id="<?php echo $taxonomy; ?>-add-submit" class="add:<?php echo $taxonomy ?>checklist:<?php echo $taxonomy ?>-add button category-add-sumbit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
 					<?php wp_nonce_field( 'add-'.$taxonomy, '_ajax_nonce', false ); ?>
 					<span id="<?php echo $taxonomy; ?>-ajax-response"></span>
 				</p>
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 14575)
+++ wp-admin/includes/template.php	(working copy)
@@ -63,7 +63,7 @@
 
 	<p class="inline-edit-save submit">
 		<a accesskey="c" href="#inline-edit" title="<?php _e('Cancel'); ?>" class="cancel button-secondary alignleft"><?php _e('Cancel'); ?></a>
-		<?php $update_text = sprintf( __('Update %s'), $tax->singular_label ); ?>
+		<?php $update_text = $tax->labels->update_item; ?>
 		<a accesskey="s" href="#inline-edit" title="<?php echo esc_attr( $update_text ); ?>" class="save button-primary alignright"><?php echo $update_text; ?></a>
 		<img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
 		<span class="error" style="display:none;"></span>
@@ -976,7 +976,7 @@
 
 <?php foreach ( $hierarchical_taxonomies as $taxonomy ) : ?>
 
-		<span class="title inline-edit-categories-label"><?php echo esc_html($taxonomy->label) ?>
+		<span class="title inline-edit-categories-label"><?php echo esc_html($taxonomy->labels->name) ?>
 			<span class="catshow"><?php _e('[more]'); ?></span>
 			<span class="cathide" style="display:none;"><?php _e('[less]'); ?></span>
 		</span>
@@ -1040,7 +1040,7 @@
 <?php foreach ( $flat_taxonomies as $taxonomy ) : ?>
 
 		<label class="inline-edit-tags">
-			<span class="title"><?php echo esc_html($taxonomy->label) ?></span>
+			<span class="title"><?php echo esc_html($taxonomy->labels->name) ?></span>
 			<textarea cols="22" rows="1" name="tax_input[<?php echo esc_attr($taxonomy->name)?>]" class="tax_input_<?php echo esc_attr($taxonomy->name)?>"></textarea>
 		</label>
 
@@ -1566,7 +1566,7 @@
 		$attributes = 'class="post-title page-title column-title"' . $style;
 		$edit_link = get_edit_post_link( $page->ID );
 		?>
-		<td <?php echo $attributes ?>><strong><?php if ( current_user_can($post_type_object->edit_cap, $page->ID) && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $title)); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states($page); echo isset($parent_name) ? ' | ' . $post_type_object->labels->parent . ' ' . esc_html($parent_name) : ''; ?></strong>
+		<td <?php echo $attributes ?>><strong><?php if ( current_user_can($post_type_object->edit_cap, $page->ID) && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr(sprintf(__('Edit &#8220;%s&#8221;'), $title)); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states($page); echo isset($parent_name) ? ' | ' . $post_type_object->labels->parent_item . ' ' . esc_html($parent_name) : ''; ?></strong>
 		<?php
 		$actions = array();
 		if ( current_user_can($post_type_object->edit_cap, $page->ID) && $post->post_status != 'trash' ) {
@@ -3762,7 +3762,7 @@
 			break;
 		case 'edit-tags':
 			global $tax;
-			$per_page_label = $tax->label;
+			$per_page_label = $tax->labels->name;
 			break;
 		case 'plugins':
 			$per_page_label = __('Plugins');
Index: wp-admin/includes/nav-menu.php
===================================================================
--- wp-admin/includes/nav-menu.php	(revision 14575)
+++ wp-admin/includes/nav-menu.php	(working copy)
@@ -391,7 +391,7 @@
 		$tax = apply_filters( 'nav_menu_meta_box_object', $tax );
 		if ( $tax ) {
 			$id = $tax->name;
-			add_meta_box( "add-{$id}", $tax->label, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax );
+			add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax );
 		}
 	}
 }
Index: wp-admin/edit-tags.php
===================================================================
--- wp-admin/edit-tags.php	(revision 14575)
+++ wp-admin/edit-tags.php	(working copy)
@@ -19,7 +19,7 @@
 
 $tax = get_taxonomy($taxonomy);
 
-$title = $tax->label;
+$title = $tax->labels->name;
 
 if ( empty($post_type) || !in_array( $post_type, get_post_types( array('public' => true) ) ) )
 	$post_type = 'post';
@@ -116,7 +116,7 @@
 break;
 
 case 'edit':
-	$title = sprintf(_x('Edit %s', '%s: singular taxonomy name'), $tax->singular_label);
+	$title = $tax->labels->edit_item;
 
 	require_once ('admin-header.php');
 	$tag_ID = (int) $_GET['tag_ID'];
@@ -192,9 +192,9 @@
 <input type="hidden" name="taxonomy" value="<?php echo esc_attr($taxonomy); ?>" />
 <input type="hidden" name="post_type" value="<?php echo esc_attr($post_type); ?>" />
 <p class="search-box">
-	<label class="screen-reader-text" for="tag-search-input"><?php printf(_x('Search %s', '%s: plural taxonomy name'), $tax->label); ?>:</label>
+	<label class="screen-reader-text" for="tag-search-input"><?php echo $tax->labels->search_items; ?>:</label>
 	<input type="text" id="tag-search-input" name="s" value="<?php _admin_search_query(); ?>" />
-	<input type="submit" value="<?php echo esc_attr( sprintf(_x('Search %s', '%s: plural taxonomy name'), $tax->label) ); ?>" class="button" />
+	<input type="submit" value="<?php echo esc_attr( $tax->labels->search_items );  ?>" class="button" />
 </p>
 </form>
 <br class="clear" />
@@ -326,7 +326,7 @@
 if ( $tag_cloud ) :
 ?>
 <div class="tagcloud">
-<h3><?php printf(_x('Popular %s', '%s: plural taxonomy name'), $tax->label); ?></h3>
+<h3><?php echo $tax->labels->popular_items; ?></h3>
 <?php echo $tag_cloud; unset( $tag_cloud ); ?>
 </div>
 <?php
@@ -341,7 +341,7 @@
 ?>
 
 <div class="form-wrap">
-<h3><?php printf(_x('Add a New %s', '%s: singular taxonomy name'), $tax->singular_label); ?></h3>
+<h3><?php echo $tax->labels->add_new_item; ?></h3>
 <form id="addtag" method="post" action="edit-tags.php" class="validate">
 <input type="hidden" name="action" value="add-tag" />
 <input type="hidden" name="taxonomy" value="<?php echo esc_attr($taxonomy); ?>" />
@@ -379,7 +379,7 @@
 	do_action('add_tag_form_fields', $taxonomy);
 do_action($taxonomy . '_add_form_fields', $taxonomy);
 ?>
-<p class="submit"><input type="submit" class="button" name="submit" id="submit" value="<?php echo esc_attr(sprintf(_x('Add %s', '%s: singular  taxonomy name'), $tax->singular_label)); ?>" /></p>
+<p class="submit"><input type="submit" class="button" name="submit" id="submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" /></p>
 <?php
 if ( 'category' == $taxonomy )
 	do_action('edit_category_form',	(object)array('parent' => 0) );  // Back compat hook. Deprecated in preference to $taxonomy_add_form
Index: wp-admin/edit-form-advanced.php
===================================================================
--- wp-admin/edit-form-advanced.php	(revision 14575)
+++ wp-admin/edit-form-advanced.php	(working copy)
@@ -112,7 +112,7 @@
 	if ( ! $taxonomy->show_ui )
 		continue;
 
-	$label = isset($taxonomy->label) ? esc_attr($taxonomy->label) : $tax_name;
+	$label = $taxonomy->labels->name;
 
 	if ( !is_taxonomy_hierarchical($tax_name) )
 		add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', $post_type, 'side', 'core');
Index: wp-admin/edit-tag-form.php
===================================================================
--- wp-admin/edit-tag-form.php	(revision 14575)
+++ wp-admin/edit-tag-form.php	(working copy)
@@ -24,7 +24,7 @@
 
 <div class="wrap">
 <?php screen_icon(); ?>
-<h2><?php printf(_x('Edit %s', '%s: singular taxonomy name'), $tax->singular_label); ?></h2>
+<h2><?php echo $tax->labels->edit_item; ?></h2>
 <div id="ajax-response"></div>
 <form name="edittag" id="edittag" method="post" action="edit-tags.php" class="validate">
 <input type="hidden" name="action" value="editedtag" />
@@ -75,6 +75,6 @@
 	do_action('edit_tag_form', $tag);
 do_action($taxonomy . '_edit_form', $tag, $taxonomy);
 ?>
-<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php echo esc_attr( sprintf(_x('Update %s', '%s: singular taxonomy name'), $tax->singular_label)); ?>" /></p>
+<p class="submit"><input type="submit" class="button-primary" name="submit" value="<?php echo esc_attr( __( 'Update' ) ); ?>" /></p>
 </form>
 </div>
Index: wp-admin/menu.php
===================================================================
--- wp-admin/menu.php	(revision 14575)
+++ wp-admin/menu.php	(working copy)
@@ -89,7 +89,7 @@
 		if ( ! $tax->show_ui || ! in_array('post', (array) $tax->object_type, true) )
 			continue;
 
-		$submenu['edit.php'][$i++] = array( esc_attr($tax->label), $tax->manage_cap, 'edit-tags.php?taxonomy=' . $tax->name );
+		$submenu['edit.php'][$i++] = array( esc_attr($tax->labels->name), $tax->manage_cap, 'edit-tags.php?taxonomy=' . $tax->name );
 	}
 	unset($tax);
 
@@ -138,7 +138,7 @@
 		if ( ! $tax->show_ui || ! in_array($ptype, (array) $tax->object_type, true) )
 			continue;
 
-		$submenu["edit.php?post_type=$ptype"][$i++] = array( esc_attr($tax->label), $tax->manage_cap, "edit-tags.php?taxonomy=$tax->name&amp;post_type=$ptype" );
+		$submenu["edit.php?post_type=$ptype"][$i++] = array( esc_attr($tax->labels->name), $tax->manage_cap, "edit-tags.php?taxonomy=$tax->name&amp;post_type=$ptype" );
 	}
 }
 unset($ptype, $ptype_obj);
Index: wp-admin/press-this.php
===================================================================
--- wp-admin/press-this.php	(revision 14575)
+++ wp-admin/press-this.php	(working copy)
@@ -488,7 +488,7 @@
 				<div id="taxonomy-category" class="categorydiv">
 
 					<ul id="category-tabs" class="category-tabs">
-						<li class="tabs"><a href="#category-all" tabindex="3"><?php printf( __( 'All %s' ), $tax->label ); ?></a></li>
+						<li class="tabs"><a href="#category-all" tabindex="3"><?php echo $tax->labels->all_items; ?></a></li>
 						<li class="hide-if-no-js"><a href="#category-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li>
 					</ul>
 
@@ -509,11 +509,22 @@
 					<?php endif; ?>
 					<?php if ( current_user_can($tax->edit_cap) ) : ?>
 						<div id="category-adder" class="wp-hidden-children">
-							<h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php printf( __( '+ Add New %s' ), $tax->singular_label ); ?></a></h4>
+							<h4>
+								<a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3">
+									<?php
+										
+										printf( __( '+ %s' ), $tax->labels->add_new_item );
+									?>
+								</a>
+							</h4>
 							<p id="category-add" class="category-add wp-hidden-child">
-								<label class="screen-reader-text" for="newcategory"><?php printf( __( 'Add New %s' ), $tax->singular_label ); ?></label><input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( sprintf( 'New %s Name', $tax->singular_label ) ); ?>" tabindex="3" aria-required="true"/>
-								<label class="screen-reader-text" for="newcategory_parent"><?php printf( __('Parent %s'), $tax->singular_label ); ?>:</label><?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => sprintf( __('&mdash; Parent %s &mdash;'), $tax->singular_label ), 'tab_index' => 3 ) ); ?>
-								<input type="button" id="category-add-submit" class="add:categorychecklist:category-add button category-add-sumbit" value="<?php esc_attr_e( 'Add' ); ?>" tabindex="3" />
+								<label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
+								<input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" tabindex="3" aria-required="true"/>
+								<label class="screen-reader-text" for="newcategory_parent">
+									<?php echo $tax->labels->parent_item_colon; ?>
+								</label>
+								<?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;', 'tab_index' => 3 ) ); ?>
+								<input type="button" id="category-add-submit" class="add:categorychecklist:category-add button category-add-sumbit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" tabindex="3" />
 								<?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
 								<span id="category-ajax-response"></span>
 							</p>
Index: wp-admin/export.php
===================================================================
--- wp-admin/export.php	(revision 14575)
+++ wp-admin/export.php	(working copy)
@@ -101,7 +101,7 @@
 <?php foreach ( get_taxonomies( array( 'show_ui' => true ), 'objects' ) as $tax_obj ) {
 	$term_dropdown = wp_dropdown_categories( array( 'taxonomy' => $tax_obj->name, 'hide_if_empty' => true, 'show_option_all' => __( 'All Terms' ), 'name' => 'taxonomy[' . $tax_obj->name . ']', 'id' => 'taxonomy-' . $tax_obj->name, 'class' => '', 'echo' => false ) );
 	if ( $term_dropdown )
-		echo '<label for="taxonomy-' . $tax_obj->name . '">' . $tax_obj->label . '</label>: ' . $term_dropdown . '<br/>';
+		echo '<label for="taxonomy-' . $tax_obj->name . '">' . $tax_obj->labels->name . '</label>: ' . $term_dropdown . '<br/>';
 }
 ?>
 </td>
