diff --git a/src/wp-includes/js/media-grid.js b/src/wp-includes/js/media-grid.js
index 46919e7..06e3214 100644
--- a/src/wp-includes/js/media-grid.js
+++ b/src/wp-includes/js/media-grid.js
@@ -672,19 +672,47 @@
 	media.view.BulkDeleteButton = media.view.Button.extend({
 		initialize: function() {
 			media.view.Button.prototype.initialize.apply( this, arguments );
-			this.$el.hide();
+
 			this.listenTo( this.controller, 'bulk-edit:activate bulk-edit:deactivate', _.bind( this.visibility, this ) );
+			this.listenTo( this.controller.state().get('selection'), 'add remove reset', _.bind( this.disabled, this ) );
 		},
 
 		click: function() {
 			media.view.Button.prototype.click.apply( this, arguments );
+
 			while (this.controller.state().get('selection').length > 0) {
 				this.controller.state().get('selection').at(0).destroy();
 			}
 		},
 
+		/**
+		 * Only enable the button if attachments have been selected.
+		 */
+		disabled: function() {
+			var attachmentsSelected = this.controller.state().get( 'selection' ).length;
+			this.$el.prop( 'disabled', ! attachmentsSelected );
+		},
+
+		/**
+		 * Set the visibility and disabled attribute after the element has been
+		 * rendered.
+		 *
+		 * @returns {this} Returns itself to allow chaining.
+		 */
+		render: function() {
+			media.view.Button.prototype.render.apply( this, arguments );
+
+			this.disabled();
+			this.visibility();
+
+			return this;
+		},
+
+		/**
+		 * Toggle the visibility of the button based on the mode of the controller.
+		 */
 		visibility: function() {
-			var bulkEditActive = this.controller.activeModes.where( { id: 'bulk-edit' } ).length;
+			var bulkEditActive = this.controller.isModeActive( 'bulk-edit' );
 			if ( bulkEditActive ) {
 				this.$el.show();
 			} else {
diff --git a/src/wp-includes/js/media-views.js b/src/wp-includes/js/media-views.js
index eab3c87..10b827a 100644
--- a/src/wp-includes/js/media-views.js
+++ b/src/wp-includes/js/media-views.js
@@ -4162,9 +4162,8 @@
 	 * @augments Backbone.View
 	 */
 	media.view.Button = media.View.extend({
-		tagName:    'a',
+		tagName:    'button',
 		className:  'media-button',
-		attributes: { href: '#' },
 
 		events: {
 			'click': 'click'
@@ -4226,10 +4225,6 @@
 		 * @param {Object} event
 		 */
 		click: function( event ) {
-			if ( '#' === this.attributes.href ) {
-				event.preventDefault();
-			}
-
 			if ( this.options.click && ! this.model.get('disabled') ) {
 				this.options.click.apply( this, arguments );
 			}
@@ -5658,13 +5653,13 @@
 				}).render() );
 
 				this.toolbar.set( 'bulkSelectionToggleButton', new media.view.BulkSelectionToggleButton({
-					text: 'Bulk Edit',
+					text: l10n.bulkSelect,
 					controller: this.controller,
 					priority: -70
 				}).render() );
 
 				this.toolbar.set( 'BulkDeleteButton', new media.view.BulkDeleteButton({
-					text: 'Bulk Delete',
+					text: l10n.deleteSelected,
 					controller: this.controller,
 					priority: -69
 				}).render() );
diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php
index a1e5b1f..9f5b222 100644
--- a/src/wp-includes/media.php
+++ b/src/wp-includes/media.php
@@ -2891,18 +2891,22 @@ function wp_enqueue_media( $args = array() ) {
 		'uploadImagesTitle' => __( 'Upload Images' ),
 
 		// Library
-		'mediaLibraryTitle'  => __( 'Media Library' ),
-		'insertMediaTitle'   => __( 'Insert Media' ),
-		'createNewGallery'   => __( 'Create a new gallery' ),
-		'createNewPlaylist'   => __( 'Create a new playlist' ),
-		'createNewVideoPlaylist'   => __( 'Create a new video playlist' ),
-		'returnToLibrary'    => __( '&#8592; Return to library' ),
-		'allMediaItems'      => __( 'All media items' ),
-		'allMediaTypes'      => __( 'All media types' ),
-		'noItemsFound'       => __( 'No items found.' ),
-		'insertIntoPost'     => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
-		'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
-		'warnDelete' =>      __( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ),
+		'mediaLibraryTitle'       => __( 'Media Library' ),
+		'insertMediaTitle'        => __( 'Insert Media' ),
+		'createNewGallery'        => __( 'Create a new gallery' ),
+		'createNewPlaylist'       => __( 'Create a new playlist' ),
+		'createNewVideoPlaylist'  => __( 'Create a new video playlist' ),
+		'returnToLibrary'         => __( '&#8592; Return to library' ),
+		'allMediaItems'           => __( 'All media items' ),
+		'allMediaTypes'           => __( 'All media types' ),
+		'noItemsFound'            => __( 'No items found.' ),
+		'insertIntoPost'          => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
+		'uploadedToThisPost'      => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
+		'warnDelete'              => __( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ),
+		'warnDeleteMultiple'      => __( "You are about to permanently delete thes items.\n  'Cancel' to stop, 'OK' to delete." ),
+		'bulkSelect'              => __( 'Bulk Select' ),
+		'deleteSelected'          => __( 'Delete Selected' ),
+
 
 		// From URL
 		'insertFromUrlTitle' => __( 'Insert from URL' ),
