Index: src/wp-admin/network/settings.php
===================================================================
--- src/wp-admin/network/settings.php	(revision 40406)
+++ src/wp-admin/network/settings.php	(working copy)
@@ -63,7 +63,7 @@
 	);
 
 	// Handle translation install.
-	if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) {  // @todo: Skip if already installed
+	if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {  // @todo: Skip if already installed
 		$language = wp_download_language_pack( $_POST['WPLANG'] );
 		if ( $language ) {
 			$_POST['WPLANG'] = $language;
@@ -342,7 +342,7 @@
 							'selected'     => $lang,
 							'languages'    => $languages,
 							'translations' => $translations,
-							'show_available_translations' => wp_can_install_language_pack(),
+							'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
 						) );
 						?>
 					</td>
Index: src/wp-admin/network/site-new.php
===================================================================
--- src/wp-admin/network/site-new.php	(revision 40406)
+++ src/wp-admin/network/site-new.php	(working copy)
@@ -65,7 +65,7 @@
 	if ( isset( $_POST['WPLANG'] ) ) {
 		if ( '' === $_POST['WPLANG'] ) {
 			$meta['WPLANG'] = ''; // en_US
-		} elseif ( wp_can_install_language_pack() ) {
+		} elseif ( current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
 			$language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) );
 			if ( $language ) {
 				$meta['WPLANG'] = $language;
@@ -233,7 +233,7 @@
 						'selected'                    => $lang,
 						'languages'                   => $languages,
 						'translations'                => $translations,
-						'show_available_translations' => wp_can_install_language_pack(),
+						'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
 					) );
 					?>
 				</td>
Index: src/wp-admin/options-general.php
===================================================================
--- src/wp-admin/options-general.php	(revision 40406)
+++ src/wp-admin/options-general.php	(working copy)
@@ -144,7 +144,7 @@
 				'selected'     => $locale,
 				'languages'    => $languages,
 				'translations' => $translations,
-				'show_available_translations' => ( ! is_multisite() || is_super_admin() ) && wp_can_install_language_pack(),
+				'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
 			) );
 
 			// Add note about deprecated WPLANG constant.
Index: src/wp-admin/options.php
===================================================================
--- src/wp-admin/options.php	(revision 40406)
+++ src/wp-admin/options.php	(working copy)
@@ -182,7 +182,7 @@
 		}
 
 		// Handle translation install.
-		if ( ! empty( $_POST['WPLANG'] ) && ( ! is_multisite() || is_super_admin() ) ) { // @todo: Skip if already installed
+		if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) { // @todo: Skip if already installed
 			require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
 
 			if ( wp_can_install_language_pack() ) {
Index: src/wp-admin/update-core.php
===================================================================
--- src/wp-admin/update-core.php	(revision 40406)
+++ src/wp-admin/update-core.php	(working copy)
@@ -608,15 +608,19 @@
 	echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php?force-check=1') ) . '">' . __( 'Check Again' ) . '</a>';
 	echo '</p>';
 
-	if ( $core = current_user_can( 'update_core' ) )
+	if ( current_user_can( 'update_core' ) ) {
 		core_upgrade_preamble();
-	if ( $plugins = current_user_can( 'update_plugins' ) )
+	}
+	if ( current_user_can( 'update_plugins' ) ) {
 		list_plugin_updates();
-	if ( $themes = current_user_can( 'update_themes' ) )
+	}
+	if ( current_user_can( 'update_themes' ) ) {
 		list_theme_updates();
-	if ( $core || $plugins || $themes )
+	}
+	if ( current_user_can( 'update_languages' ) ) {
 		list_translation_updates();
-	unset( $core, $plugins, $themes );
+	}
+
 	/**
 	 * Fires after the core, plugin, and theme update tables.
 	 *
@@ -729,7 +733,7 @@
 
 } elseif ( 'do-translation-upgrade' == $action ) {
 
-	if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_plugins' ) && ! current_user_can( 'update_themes' ) )
+	if ( ! current_user_can( 'update_languages' ) )
 		wp_die( __( 'Sorry, you are not allowed to update this site.' ) );
 
 	check_admin_referer( 'upgrade-translations' );
Index: src/wp-includes/capabilities.php
===================================================================
--- src/wp-includes/capabilities.php	(revision 40406)
+++ src/wp-includes/capabilities.php	(working copy)
@@ -378,12 +378,16 @@
 	case 'install_themes':
 	case 'upload_themes':
 	case 'update_core':
-		// Disallow anything that creates, deletes, or updates core, plugin, or theme files.
+	case 'update_languages':
+	case 'install_languages':
+		// Disallow anything that creates, deletes, or updates core, plugin, theme, or translation files.
 		// Files in uploads are excepted.
 		if ( wp_disallow_file_mods( 'capability_update_core' ) ) {
 			$caps[] = 'do_not_allow';
 		} elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
 			$caps[] = 'do_not_allow';
+		} elseif ( 'update_languages' === $cap || 'install_languages' === $cap ) {
+			$caps[] = 'update_core';
 		} elseif ( 'upload_themes' === $cap ) {
 			$caps[] = 'install_themes';
 		} elseif ( 'upload_plugins' === $cap ) {
Index: tests/phpunit/tests/user/capabilities.php
===================================================================
--- tests/phpunit/tests/user/capabilities.php	(revision 40406)
+++ tests/phpunit/tests/user/capabilities.php	(working copy)
@@ -233,6 +233,8 @@
 			'upload_themes'          => array( 'administrator' ),
 			'customize'              => array( 'administrator' ),
 			'add_users'              => array( 'administrator' ),
+			'install_languages'      => array( 'administrator' ),
+			'update_languages'       => array( 'administrator' ),
 
 			'edit_categories'        => array( 'administrator', 'editor' ),
 			'delete_categories'      => array( 'administrator', 'editor' ),
@@ -261,6 +263,8 @@
 			'upload_themes'          => array(),
 			'edit_css'               => array(),
 			'upgrade_network'        => array(),
+			'install_languages'      => array(),
+			'update_languages'       => array(),
 
 			'customize'              => array( 'administrator' ),
 			'delete_site'            => array( 'administrator' ),
