Index: /trunk/src/bp-core/admin/bp-core-admin-components.php
===================================================================
--- /trunk/src/bp-core/admin/bp-core-admin-components.php	(revision 12587)
+++ /trunk/src/bp-core/admin/bp-core-admin-components.php	(revision 12588)
@@ -143,22 +143,68 @@
 			$current_components = $retired_components;
 			break;
-	} ?>
+	}
+
+	$component_views = array(
+		array(
+			'action' => 'all',
+			'view'   => sprintf(
+				/* translators: %s: the number of installed components */
+				_nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $all_count, 'plugins', 'buddypress' ),
+				number_format_i18n( $all_count )
+			),
+		),
+		array(
+			'action' => 'active',
+			'view'   => sprintf(
+				/* translators: %s: the number of active components */
+				_n( 'Active <span class="count">(%s)</span>', 'Active <span class="count">(%s)</span>', count( $active_components ), 'buddypress' ),
+				number_format_i18n( count( $active_components ) )
+			),
+		),
+		array(
+			'action' => 'inactive',
+			'view'   => sprintf(
+				/* translators: %s: the number of inactive components */
+				_n( 'Inactive <span class="count">(%s)</span>', 'Inactive <span class="count">(%s)</span>', count( $inactive_components ), 'buddypress' ),
+				number_format_i18n( count( $inactive_components ) )
+			),
+		),
+		array(
+			'action' => 'mustuse',
+			'view'   => sprintf(
+				/* translators: %s: the number of must-Use components */
+				_n( 'Must-Use <span class="count">(%s)</span>', 'Must-Use <span class="count">(%s)</span>', count( $required_components ), 'buddypress' ),
+				number_format_i18n( count( $required_components ) )
+			),
+		),
+		array(
+			'action' => 'retired',
+			'view'   => sprintf(
+				/* translators: %s: the number of retired components */
+				_n( 'Retired <span class="count">(%s)</span>',  'Retired <span class="count">(%s)</span>',  count( $retired_components ),  'buddypress' ),
+				number_format_i18n( count( $retired_components ) )
+			),
+		),
+	);
+	?>
 
 	<h3 class="screen-reader-text"><?php
 		/* translators: accessibility text */
-		_e( 'Filter components list', 'buddypress' );
+		esc_html_e( 'Filter components list', 'buddypress' );
 	?></h3>
 
 	<ul class="subsubsub">
-		<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'bp-components', 'action' => 'all'      ), bp_get_admin_url( $page ) ) ); ?>" <?php if ( $action === 'all'      ) : ?>class="current"<?php endif; ?>><?php printf( _nx( 'All <span class="count">(%s)</span>',      'All <span class="count">(%s)</span>',      $all_count,         'plugins', 'buddypress' ), number_format_i18n( $all_count                    ) ); ?></a> | </li>
-		<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'bp-components', 'action' => 'active'   ), bp_get_admin_url( $page ) ) ); ?>" <?php if ( $action === 'active'   ) : ?>class="current"<?php endif; ?>><?php printf( _n(  'Active <span class="count">(%s)</span>',   'Active <span class="count">(%s)</span>',   count( $active_components   ), 'buddypress' ), number_format_i18n( count( $active_components   ) ) ); ?></a> | </li>
-		<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'bp-components', 'action' => 'inactive' ), bp_get_admin_url( $page ) ) ); ?>" <?php if ( $action === 'inactive' ) : ?>class="current"<?php endif; ?>><?php printf( _n(  'Inactive <span class="count">(%s)</span>', 'Inactive <span class="count">(%s)</span>', count( $inactive_components ), 'buddypress' ), number_format_i18n( count( $inactive_components ) ) ); ?></a> | </li>
-		<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'bp-components', 'action' => 'mustuse'  ), bp_get_admin_url( $page ) ) ); ?>" <?php if ( $action === 'mustuse'  ) : ?>class="current"<?php endif; ?>><?php printf( _n(  'Must-Use <span class="count">(%s)</span>', 'Must-Use <span class="count">(%s)</span>', count( $required_components ), 'buddypress' ), number_format_i18n( count( $required_components ) ) ); ?></a> | </li>
-		<li><a href="<?php echo esc_url( add_query_arg( array( 'page' => 'bp-components', 'action' => 'retired'  ), bp_get_admin_url( $page ) ) ); ?>" <?php if ( $action === 'retired'  ) : ?>class="current"<?php endif; ?>><?php printf( _n(  'Retired <span class="count">(%s)</span>',  'Retired <span class="count">(%s)</span>',  count( $retired_components ),  'buddypress' ), number_format_i18n( count( $retired_components  ) ) ); ?></a></li>
+		<?php foreach ( $component_views as $component_view ) : ?>
+			<li>
+				<a href="<?php echo esc_url( add_query_arg( array( 'page' => 'bp-components', 'action' => $component_view['action'] ), bp_get_admin_url( $page ) ) ); ?>" <?php if ( $action === $component_view['action'] ) : ?>class="current"<?php endif; ?>>
+					<?php echo wp_kses( $component_view['view'], array( 'span' => array( 'class' => true ) ) ); ?>
+				</a><?php echo 'retired' !== $component_view['action'] ? ' |' : ''; ?>
+			</li>
+		<?php endforeach ;?>
 	</ul>
 
 	<h3 class="screen-reader-text"><?php
 		/* translators: accessibility text */
-		_e( 'Components list', 'buddypress' );
+		esc_html_e( 'Components list', 'buddypress' );
 	?></h3>
 
Index: /trunk/src/bp-core/admin/bp-core-admin-slugs.php
===================================================================
--- /trunk/src/bp-core/admin/bp-core-admin-slugs.php	(revision 12587)
+++ /trunk/src/bp-core/admin/bp-core-admin-slugs.php	(revision 12588)
@@ -191,7 +191,17 @@
 		<?php else : ?>
 			<?php if ( is_multisite() ) : ?>
-				<p><?php printf( __( 'Registration is currently disabled.  Before associating a page is allowed, please enable registration by selecting either the "User accounts may be registered" or "Both sites and user accounts can be registered" option on <a href="%s">this page</a>.', 'buddypress' ), network_admin_url( 'settings.php' ) ); ?></p>
+				<p>
+					<?php
+					/* translators: %s: the link to the Network settings page */
+					printf( __( 'Registration is currently disabled.  Before associating a page is allowed, please enable registration by selecting either the "User accounts may be registered" or "Both sites and user accounts can be registered" option on <a href="%s">this page</a>.', 'buddypress' ), network_admin_url( 'settings.php' ) );
+					?>
+				</p>
 			<?php else : ?>
-				<p><?php printf( __( 'Registration is currently disabled.  Before associating a page is allowed, please enable registration by clicking on the "Anyone can register" checkbox on <a href="%s">this page</a>.', 'buddypress' ), admin_url( 'options-general.php' ) ); ?></p>
+				<p>
+					<?php
+					/* translators: %s: the link to the Site settings page */
+					printf( __( 'Registration is currently disabled.  Before associating a page is allowed, please enable registration by clicking on the "Anyone can register" checkbox on <a href="%s">this page</a>.', 'buddypress' ), admin_url( 'options-general.php' ) );
+					?>
+				</p>
 			<?php endif; ?>
 		<?php endif; ?>
Index: /trunk/src/bp-core/admin/bp-core-admin-tools.php
===================================================================
--- /trunk/src/bp-core/admin/bp-core-admin-tools.php	(revision 12587)
+++ /trunk/src/bp-core/admin/bp-core-admin-tools.php	(revision 12588)
@@ -174,4 +174,5 @@
 	}
 
+	/* translators: %s: the result of the action performed by the repair tool */
 	$statement = __( 'Counting the number of friends for each user&hellip; %s', 'buddypress' );
 	$result    = __( 'Failed!', 'buddypress' );
@@ -232,4 +233,5 @@
 	}
 
+	/* translators: %s: the result of the action performed by the repair tool */
 	$statement = __( 'Counting the number of groups for each user&hellip; %s', 'buddypress' );
 	$result    = __( 'Failed!', 'buddypress' );
@@ -274,5 +276,5 @@
 function bp_admin_repair_blog_records() {
 
-	// Description of this tool, displayed to the user.
+	/* translators: %s: the result of the action performed by the repair tool */
 	$statement = __( 'Repopulating Blogs records&hellip; %s', 'buddypress' );
 
@@ -303,4 +305,5 @@
  */
 function bp_admin_repair_count_members() {
+	/* translators: %s: the result of the action performed by the repair tool */
 	$statement = __( 'Counting the number of active members on the site&hellip; %s', 'buddypress' );
 	delete_transient( 'bp_active_member_count' );
@@ -317,4 +320,5 @@
  */
 function bp_admin_repair_last_activity() {
+	/* translators: %s: the result of the action performed by the repair tool */
 	$statement = __( 'Determining last activity dates for each user&hellip; %s', 'buddypress' );
 	bp_last_activity_migrate();
@@ -408,5 +412,11 @@
 		<p>
 			<?php esc_html_e( 'BuddyPress keeps track of various relationships between users, groups, and activity items. Occasionally these relationships become out of sync, most often after an import, update, or migration.', 'buddypress' ); ?>
-			<?php printf( esc_html_x( 'Use the %s to repair these relationships.', 'buddypress tools intro', 'buddypress' ), '<a href="' . esc_url( $url ) . '">' . esc_html__( 'BuddyPress Tools', 'buddypress' ) . '</a>' ); ?>
+			<?php
+			printf(
+				/* translators: %s: the link to the BuddyPress repair tools */
+				esc_html_x( 'Use the %s to repair these relationships.', 'buddypress tools intro', 'buddypress' ),
+				'<a href="' . esc_url( $url ) . '">' . esc_html__( 'BuddyPress Tools', 'buddypress' ) . '</a>'
+			);
+			?>
 		</p>
 	</div>
Index: /trunk/src/bp-core/bp-core-admin.php
===================================================================
--- /trunk/src/bp-core/bp-core-admin.php	(revision 12587)
+++ /trunk/src/bp-core/bp-core-admin.php	(revision 12588)
@@ -55,4 +55,5 @@
 	);
 
+	/* translators: %s: the link to the BuddyPress release notes */
 	__( 'For more information, see <a href="%s">the release notes</a>.', 'buddypress' );
 }
Index: /trunk/src/bp-core/bp-core-attachments.php
===================================================================
--- /trunk/src/bp-core/bp-core-attachments.php	(revision 12587)
+++ /trunk/src/bp-core/bp-core-attachments.php	(revision 12588)
@@ -641,4 +641,6 @@
 		array(
 			'queue_limit_exceeded'      => __( 'You have attempted to queue too many files.', 'buddypress' ),
+
+			/* translators: %s: File name. */
 			'file_exceeds_size_limit'   => __( '%s exceeds the maximum upload size for this site.', 'buddypress' ),
 			'zero_byte_file'            => __( 'This file is empty. Please try another.', 'buddypress' ),
@@ -652,5 +654,9 @@
 			'http_error'                => __( 'HTTP error.', 'buddypress' ),
 			'upload_failed'             => __( 'Upload failed.', 'buddypress' ),
+
+			/* translators: 1: Opening link tag, 2: Closing link tag. */
 			'big_upload_failed'         => __( 'Please try uploading this file with the %1$sbrowser uploader%2$s.', 'buddypress' ),
+
+			/* translators: %s: File name. */
 			'big_upload_queued'         => __( '%s exceeds the maximum upload size for the multi-file uploader when used in your browser.', 'buddypress' ),
 			'io_error'                  => __( 'IO error.', 'buddypress' ),
@@ -661,4 +667,6 @@
 			'crunching'                 => __( 'Crunching&hellip;', 'buddypress' ),
 			'unique_file_warning'       => __( 'Make sure to upload a unique file', 'buddypress' ),
+
+			/* translators: %s: File name. */
 			'error_uploading'           => __( '&#8220;%s&#8221; has failed to upload.', 'buddypress' ),
 			'has_avatar_warning'        => __( 'If you&#39;d like to delete the existing profile photo but not upload a new one, please use the delete tab.', 'buddypress' )
@@ -831,8 +839,9 @@
 		$strings['cover_image_warnings'] = apply_filters( 'bp_attachments_cover_image_ui_warnings', array(
 			'dimensions'  => sprintf(
-					__( 'For better results, make sure to upload an image that is larger than %1$spx wide, and %2$spx tall.', 'buddypress' ),
-					(int) $cover_dimensions['width'],
-					(int) $cover_dimensions['height']
-				),
+				/* translators: 1: the advised width size in pixels. 2: the advised height size in pixels. */
+				__( 'For better results, make sure to upload an image that is larger than %1$spx wide, and %2$spx tall.', 'buddypress' ),
+				(int) $cover_dimensions['width'],
+				(int) $cover_dimensions['height']
+			),
 		) );
 	}
@@ -1354,5 +1363,9 @@
 		bp_attachments_json_response( false, $is_html4, array(
 			'type'    => 'upload_error',
-			'message' => sprintf( __( 'Upload Failed! Error was: %s', 'buddypress' ), $uploaded['error'] ),
+			'message' => sprintf(
+				/* translators: %s: the upload error message */
+				__( 'Upload Failed! Error was: %s', 'buddypress' ),
+				$uploaded['error']
+			),
 		) );
 	}
Index: /trunk/src/bp-core/bp-core-avatars.php
===================================================================
--- /trunk/src/bp-core/bp-core-avatars.php	(revision 12587)
+++ /trunk/src/bp-core/bp-core-avatars.php	(revision 12588)
@@ -912,4 +912,5 @@
 	// In case of an error, stop the process and display a feedback to the user.
 	if ( ! empty( $bp->avatar_admin->original['error'] ) ) {
+		/* translators: %s: the upload error message */
 		bp_core_add_message( sprintf( __( 'Upload Failed! Error was: %s', 'buddypress' ), $bp->avatar_admin->original['error'] ), 'error' );
 		return false;
@@ -940,4 +941,5 @@
 	// Check for WP_Error on what should be an image.
 	if ( is_wp_error( $bp->avatar_admin->image->dir ) ) {
+		/* translators: %s: the upload error message */
 		bp_core_add_message( sprintf( __( 'Upload failed! Error was: %s', 'buddypress' ), $bp->avatar_admin->image->dir->get_error_message() ), 'error' );
 		return false;
@@ -946,5 +948,6 @@
 	// If the uploaded image is smaller than the "full" dimensions, throw a warning.
 	if ( $avatar_attachment->is_too_small( $bp->avatar_admin->image->file ) ) {
-		bp_core_add_message( sprintf( __( 'You have selected an image that is smaller than recommended. For best results, upload a picture larger than %d x %d pixels.', 'buddypress' ), bp_core_avatar_full_width(), bp_core_avatar_full_height() ), 'error' );
+		/* translators: 1: the advised width size in pixels. 2: the advised height size in pixels. */
+		bp_core_add_message( sprintf( __( 'You have selected an image that is smaller than recommended. For best results, upload a picture larger than %1$d x %2$d pixels.', 'buddypress' ), bp_core_avatar_full_width(), bp_core_avatar_full_height() ), 'error' );
 	}
 
Index: /trunk/src/bp-core/bp-core-filters.php
===================================================================
--- /trunk/src/bp-core/bp-core-filters.php	(revision 12587)
+++ /trunk/src/bp-core/bp-core-filters.php	(revision 12588)
@@ -601,4 +601,5 @@
 
 		if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() && ! bp_is_single_activity() ) {
+			/* translators: %s: the page number. */
 			$bp_title_parts['page'] = sprintf( __( 'Page %s', 'buddypress' ), max( $paged, $page ) );
 		}
Index: /trunk/src/bp-core/bp-core-functions.php
===================================================================
--- /trunk/src/bp-core/bp-core-functions.php	(revision 12587)
+++ /trunk/src/bp-core/bp-core-functions.php	(revision 12588)
@@ -1186,5 +1186,9 @@
 	 * @param string $value String representing the time since the older date.
 	 */
-	$ago_text       = apply_filters( 'bp_core_time_since_ago_text',       __( '%s ago',    'buddypress' ) );
+	$ago_text = apply_filters(
+		'bp_core_time_since_ago_text',
+		/* translators: %s: the human time diff. */
+		__( '%s ago', 'buddypress' )
+	);
 
 	// Array of time period chunks.
@@ -1247,22 +1251,29 @@
 			switch ( $seconds ) {
 				case YEAR_IN_SECONDS :
+					/* translators: %s: the number of years. */
 					$output = sprintf( _n( '%s year',   '%s years',   $count, 'buddypress' ), $count );
 					break;
 				case 30 * DAY_IN_SECONDS :
+					/* translators: %s: the number of months. */
 					$output = sprintf( _n( '%s month',  '%s months',  $count, 'buddypress' ), $count );
 					break;
 				case WEEK_IN_SECONDS :
+					/* translators: %s: the number of weeks. */
 					$output = sprintf( _n( '%s week',   '%s weeks',   $count, 'buddypress' ), $count );
 					break;
 				case DAY_IN_SECONDS :
+					/* translators: %s: the number of days. */
 					$output = sprintf( _n( '%s day',    '%s days',    $count, 'buddypress' ), $count );
 					break;
 				case HOUR_IN_SECONDS :
+					/* translators: %s: the number of hours. */
 					$output = sprintf( _n( '%s hour',   '%s hours',   $count, 'buddypress' ), $count );
 					break;
 				case MINUTE_IN_SECONDS :
+					/* translators: %s: the number of minutes. */
 					$output = sprintf( _n( '%s minute', '%s minutes', $count, 'buddypress' ), $count );
 					break;
 				default:
+					/* translators: %s: the number of seconds. */
 					$output = sprintf( _n( '%s second', '%s seconds', $count, 'buddypress' ), $count );
 			}
@@ -1284,19 +1295,25 @@
 					switch ( $seconds2 ) {
 						case 30 * DAY_IN_SECONDS :
+							/* translators: %s: the number of months. */
 							$output .= sprintf( _n( '%s month',  '%s months',  $count2, 'buddypress' ), $count2 );
 							break;
 						case WEEK_IN_SECONDS :
+							/* translators: %s: the number of weeks. */
 							$output .= sprintf( _n( '%s week',   '%s weeks',   $count2, 'buddypress' ), $count2 );
 							break;
 						case DAY_IN_SECONDS :
+							/* translators: %s: the number of days. */
 							$output .= sprintf( _n( '%s day',    '%s days',    $count2, 'buddypress' ), $count2 );
 							break;
 						case HOUR_IN_SECONDS :
+							/* translators: %s: the number of hours. */
 							$output .= sprintf( _n( '%s hour',   '%s hours',   $count2, 'buddypress' ), $count2 );
 							break;
 						case MINUTE_IN_SECONDS :
+							/* translators: %s: the number of minutes. */
 							$output .= sprintf( _n( '%s minute', '%s minutes', $count2, 'buddypress' ), $count2 );
 							break;
 						default:
+							/* translators: %s: the number of seconds. */
 							$output .= sprintf( _n( '%s second', '%s seconds', $count2, 'buddypress' ), $count2 );
 					}
@@ -3250,8 +3267,8 @@
  */
 function bp_email_get_appearance_settings() {
-	/* translators: This is the copyright text for email footers. 1. Copyright year, 2. Site name */
 	$footer_text = array(
 		sprintf(
-			_x( '&copy; %1$s %2$s', 'email', 'buddypress' ),
+			/* translators: 1. Copyright year, 2. Site name */
+			_x( '&copy; %1$s %2$s', 'copyright text for email footers', 'buddypress' ),
 			date_i18n( 'Y' ),
 			bp_get_option( 'blogname' )
Index: /trunk/src/bp-core/bp-core-template.php
===================================================================
--- /trunk/src/bp-core/bp-core-template.php	(revision 12587)
+++ /trunk/src/bp-core/bp-core-template.php	(revision 12588)
@@ -144,4 +144,5 @@
 	// If none is found, concatenate.
 	} elseif ( isset( buddypress()->{$component}->name ) ) {
+		/* translators: %s: Name of the BuddyPress component */
 		$title = sprintf( __( '%s Directory', 'buddypress' ), buddypress()->{$component}->name );
 	}
@@ -196,5 +197,9 @@
 		'item_id' => $comment->user_id,
 		'type'    => 'thumb',
-		'alt'     => sprintf( __( 'Profile photo of %s', 'buddypress' ), bp_core_get_user_displayname( $comment->user_id ) )
+		'alt'     => sprintf(
+			/* translators: %s: member name */
+			__( 'Profile photo of %s', 'buddypress' ),
+			bp_core_get_user_displayname( $comment->user_id )
+		),
 	) ) );
 }
@@ -211,5 +216,9 @@
 		'item_id' => $post->post_author,
 		'type'    => 'thumb',
-		'alt'     => sprintf( __( 'Profile photo of %s', 'buddypress' ), bp_core_get_user_displayname( $post->post_author ) )
+		'alt'     => sprintf(
+			/* translators: %s: member name */
+			__( 'Profile photo of %s', 'buddypress' ),
+			bp_core_get_user_displayname( $post->post_author )
+		),
 	) ) );
 }
@@ -3758,4 +3767,13 @@
 		 * @param string $token    The Recipient token.
 		 */
-		return apply_filters( 'bp_email_get_salutation', sprintf( _x( 'Hi %s,', 'recipient salutation', 'buddypress' ), $token ), $settings, $token );
-	}
+		return apply_filters(
+			'bp_email_get_salutation',
+			sprintf(
+				/* translators: %s: the email token for the recipient name */
+				_x( 'Hi %s,', 'recipient salutation', 'buddypress' ),
+				$token
+			),
+			$settings,
+			$token
+		);
+	}
Index: /trunk/src/bp-core/classes/class-bp-admin.php
===================================================================
--- /trunk/src/bp-core/classes/class-bp-admin.php	(revision 12587)
+++ /trunk/src/bp-core/classes/class-bp-admin.php	(revision 12588)
@@ -780,4 +780,5 @@
 						<?php
 						printf(
+							/* translators: 1: heart dashicons. 2: BP Credits screen url. 3: number of BuddyPress contributors to this version. */
 							_n( 'Built with %1$s by <a href="%2$s">%3$d volunteer</a>.', 'Built with %1$s by <a href="%2$s">%3$d volunteers</a>.', 28, 'buddypress' ),
 							'<span class="dashicons dashicons-heart"></span>',
@@ -956,5 +957,13 @@
 			</ul>
 
-			<h3 class="wp-people-group"><?php printf( esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h3>
+			<h3 class="wp-people-group">
+				<?php
+				printf(
+					/* translators: %s: BuddyPress version number */
+					esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ),
+					self::display_version()
+				);
+				?>
+			</h3>
 			<p class="wp-credits-list">
 				<a href="https://github.com/baconbro">baconbro</a>,
Index: /trunk/src/bp-core/classes/class-bp-attachment-avatar.php
===================================================================
--- /trunk/src/bp-core/classes/class-bp-attachment-avatar.php	(revision 12587)
+++ /trunk/src/bp-core/classes/class-bp-attachment-avatar.php	(revision 12588)
@@ -38,6 +38,9 @@
 			// Specific errors for avatars.
 			'upload_error_strings'  => array(
-				9  => sprintf( __( 'That photo is too big. Please upload one smaller than %s', 'buddypress' ), size_format( bp_core_avatar_original_max_filesize() ) ),
-				10 => sprintf( _n( 'Please upload only this file type: %s.', 'Please upload only these file types: %s.', count( $allowed_types ), 'buddypress' ), self::get_avatar_types( $allowed_types ) ),
+				/* translators: %s: Max file size for the profile photo */
+				9  => sprintf( _x( 'That photo is too big. Please upload one smaller than %s', 'profile photo upload error', 'buddypress' ), size_format( bp_core_avatar_original_max_filesize() ) ),
+
+				/* translators: %s: comma separated list of file types allowed for the profile photo */
+				10 => sprintf( _nx( 'Please upload only this file type: %s.', 'Please upload only these file types: %s.', count( $allowed_types ), 'profile photo upload error', 'buddypress' ), self::get_avatar_types( $allowed_types ) ),
 			),
 		) );
Index: /trunk/src/bp-core/classes/class-bp-attachment-cover-image.php
===================================================================
--- /trunk/src/bp-core/classes/class-bp-attachment-cover-image.php	(revision 12587)
+++ /trunk/src/bp-core/classes/class-bp-attachment-cover-image.php	(revision 12588)
@@ -38,6 +38,9 @@
 			// Specific errors for cover images.
 			'upload_error_strings'  => array(
-				11  => sprintf( __( 'That image is too big. Please upload one smaller than %s', 'buddypress' ), size_format( $max_upload_file_size ) ),
-				12  => sprintf( _n( 'Please upload only this file type: %s.', 'Please upload only these file types: %s.', count( $allowed_types ), 'buddypress' ), self::get_cover_image_types( $allowed_types ) ),
+				/* translators: %s: Max file size for the cover image */
+				11  => sprintf( _x( 'That image is too big. Please upload one smaller than %s', 'cover image upload error', 'buddypress' ), size_format( $max_upload_file_size ) ),
+
+				/* translators: %s: comma separated list of file types allowed for the cover image */
+				12  => sprintf( _nx( 'Please upload only this file type: %s.', 'Please upload only these file types: %s.', count( $allowed_types ), 'cover image upload error', 'buddypress' ), self::get_cover_image_types( $allowed_types ) ),
 			),
 		) );
Index: /trunk/src/bp-core/classes/class-bp-attachment.php
===================================================================
--- /trunk/src/bp-core/classes/class-bp-attachment.php	(revision 12587)
+++ /trunk/src/bp-core/classes/class-bp-attachment.php	(revision 12588)
@@ -160,4 +160,6 @@
 			0 => __( 'The file was uploaded successfully', 'buddypress' ),
 			1 => __( 'The uploaded file exceeds the maximum allowed file size for this site', 'buddypress' ),
+
+			/* translators: %s: Max file size for the file */
 			2 => sprintf( __( 'The uploaded file exceeds the maximum allowed file size of: %s', 'buddypress' ), size_format( $this->original_max_filesize ) ),
 			3 => __( 'The uploaded file was only partially uploaded.', 'buddypress' ),
@@ -501,5 +503,13 @@
 
 			if ( empty( $ext ) || empty( $supported_image_types[ $ext ] ) ) {
-				$wp_error->add( 'crop_error', sprintf( __( 'Cropping the file failed: %s is not a supported image file.', 'buddypress' ), $file['error'] ) );
+				$wp_error->add(
+					'crop_error',
+					sprintf(
+						/* translators: %s: image file extension */
+						__( 'Cropping the file failed: %s is not a supported image file.', 'buddypress' ),
+						$file['error']
+					)
+				);
+
 				return $wp_error;
 			}
Index: /trunk/src/bp-core/classes/class-bp-core-user.php
===================================================================
--- /trunk/src/bp-core/classes/class-bp-core-user.php	(revision 12587)
+++ /trunk/src/bp-core/classes/class-bp-core-user.php	(revision 12588)
@@ -167,8 +167,44 @@
 		}
 
-		$this->avatar       = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'full', 'alt' => sprintf( __( 'Profile photo of %s', 'buddypress' ), $this->fullname ) ) );
-		$this->avatar_thumb = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile photo of %s', 'buddypress' ), $this->fullname ) ) );
-		$this->avatar_mini  = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile photo of %s', 'buddypress' ), $this->fullname ), 'width' => 30, 'height' => 30 ) );
-		$this->last_active  = bp_core_get_last_activity( bp_get_user_last_activity( $this->id ), __( 'active %s', 'buddypress' ) );
+		$this->avatar = bp_core_fetch_avatar(
+			array(
+				'item_id' => $this->id,
+				'type'    => 'full',
+				'alt'     => sprintf(
+					/* translators: %s: member name */
+					__( 'Profile photo of %s', 'buddypress' ),
+					$this->fullname
+				)
+			)
+		);
+
+		$this->avatar_thumb = bp_core_fetch_avatar(
+			array(
+				'item_id' => $this->id,
+				'type'    => 'thumb',
+				'alt'     => sprintf(
+					/* translators: %s: member name */
+					__( 'Profile photo of %s', 'buddypress' ),
+					$this->fullname
+				)
+			)
+		);
+
+		$this->avatar_mini = bp_core_fetch_avatar(
+			array(
+				'item_id' => $this->id,
+				'type'    => 'thumb',
+				'alt'     => sprintf(
+					/* translators: %s: member name */
+					__( 'Profile photo of %s', 'buddypress' ),
+					$this->fullname
+				),
+				'width'   => 30,
+				'height'  => 30
+			)
+		);
+
+		/* translators: %s: human time diff of the last time the user was active on the site. */
+		$this->last_active = bp_core_get_last_activity( bp_get_user_last_activity( $this->id ), _x( 'active %s', 'last time the user was active', 'buddypress' ) );
 	}
 
@@ -184,5 +220,9 @@
 		if ( bp_is_active( 'groups' ) ) {
 			$this->total_groups = BP_Groups_Member::total_group_count( $this->id );
-			$this->total_groups = sprintf( _n( '%d group', '%d groups', $this->total_groups, 'buddypress' ), $this->total_groups );
+			$this->total_groups = sprintf(
+				/* translators: %s: total groups count */
+				_n( '%d group', '%d groups', $this->total_groups, 'buddypress' ),
+				$this->total_groups
+			);
 		}
 	}
Index: /trunk/src/bp-core/deprecated/1.5.php
===================================================================
--- /trunk/src/bp-core/deprecated/1.5.php	(revision 12587)
+++ /trunk/src/bp-core/deprecated/1.5.php	(revision 12588)
@@ -356,7 +356,17 @@
 			$ud = bp_core_get_core_userdata( $receiver_user_id );
 			$to = $ud->user_email;
-			$subject = bp_get_email_subject( array( 'text' => sprintf( __( '%1$s mentioned you in the group "%2$s"', 'buddypress' ), $poster_name, $group->name ) ) );
-
-$message = sprintf( __(
+			$subject = bp_get_email_subject(
+				array(
+					'text' => sprintf(
+						/* translators: 1: the poster name. 2: the group name. */
+						_x( '%1$s mentioned you in the group "%2$s"', 'deprecated string', 'buddypress' ),
+						$poster_name,
+						$group->name
+					)
+				)
+			);
+
+/* translators: 1: the poster name. 2: the group name. 3: the content of the activity. 4: the activity permalink. */
+$message = sprintf( _x(
 '%1$s mentioned you in the group "%2$s":
 
@@ -366,5 +376,5 @@
 
 ---------------------
-', 'buddypress' ), $poster_name, $group->name, $content, $message_link );
+', 'deprecated string', 'buddypress' ), $poster_name, $group->name, $content, $message_link );
 
 			/* Send the message */
Index: /trunk/src/bp-core/deprecated/2.1.php
===================================================================
--- /trunk/src/bp-core/deprecated/2.1.php	(revision 12587)
+++ /trunk/src/bp-core/deprecated/2.1.php	(revision 12588)
@@ -457,5 +457,9 @@
 				'width'   => 15,
 				'height'  => 15,
-				'alt'     => sprintf( __( 'Profile picture of %s', 'buddypress' ), $author->display_name )
+				'alt'     => sprintf(
+					/* translators: %s: member name */
+					__( 'Profile picture of %s', 'buddypress' ),
+					$author->display_name
+				),
 			) );
 			echo ' ' . $author->display_name . '</a>';
@@ -496,13 +500,34 @@
 			<?php if ( bp_is_active( 'xprofile' ) ) : ?>
 
-				<li><a href="<?php bp_members_component_link( 'profile', 'edit' ); ?>"><?php printf( __( "Edit %s's Profile", 'buddypress' ), esc_attr( bp_get_displayed_user_fullname() ) ) ?></a></li>
+				<li>
+					<a href="<?php bp_members_component_link( 'profile', 'edit' ); ?>">
+						<?php
+						/* translators: %s: member name */
+						printf( __( "Edit %s's Profile", 'buddypress' ), esc_attr( bp_get_displayed_user_fullname() ) );
+						?>
+					</a>
+				</li>
 
 			<?php endif ?>
 
-			<li><a href="<?php bp_members_component_link( 'profile', 'change-avatar' ); ?>"><?php printf( __( "Edit %s's Profile Photo", 'buddypress' ), esc_attr( bp_get_displayed_user_fullname() ) ) ?></a></li>
+			<li>
+				<a href="<?php bp_members_component_link( 'profile', 'change-avatar' ); ?>">
+					<?php
+					/* translators: %s: member name */
+					printf( _x( "Edit %s's Profile Photo", 'deprecated string', 'buddypress' ), esc_attr( bp_get_displayed_user_fullname() ) );
+					?>
+				</a>
+			</li>
 
 			<li><a href="<?php bp_members_component_link( 'settings', 'capabilities' ); ?>"><?php _e( 'User Capabilities', 'buddypress' ); ?></a></li>
 
-			<li><a href="<?php bp_members_component_link( 'settings', 'delete-account' ); ?>"><?php printf( __( "Delete %s's Account", 'buddypress' ), esc_attr( bp_get_displayed_user_fullname() ) ); ?></a></li>
+			<li>
+				<a href="<?php bp_members_component_link( 'settings', 'delete-account' ); ?>">
+					<?php
+					/* translators: %s: member name */
+					printf( _x( "Delete %s's Account", 'deprecated string', 'buddypress' ), esc_attr( bp_get_displayed_user_fullname() ) );
+					?>
+				</a>
+			</li>
 
 			<?php do_action( 'bp_members_adminbar_admin_menu' ) ?>
Index: /trunk/src/bp-core/deprecated/2.8.php
===================================================================
--- /trunk/src/bp-core/deprecated/2.8.php	(revision 12587)
+++ /trunk/src/bp-core/deprecated/2.8.php	(revision 12588)
@@ -196,5 +196,15 @@
 	<div id="message" class="error notice is-dismissible bp-is-dismissible" data-noticeid="<?php echo esc_attr( $notice_id ); ?>">
 		<p><strong><?php esc_html_e( 'Your site is not ready for BuddyPress 2.8.', 'buddypress' ); ?></strong></p>
-		<p><?php printf( esc_html__( 'Your site is currently running PHP version %s, while BuddyPress 2.8 will require version 5.3+.', 'buddypress' ), esc_html( phpversion() ) ); ?> <?php printf( __( 'See <a href="%s">the Codex guide</a> for more information.', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' ); ?></p>
+		<p>
+			<?php
+			/* translators: %s: the site's PHP version number */
+			printf( esc_html_x( 'Your site is currently running PHP version %s, while BuddyPress 2.8 will require version 5.3+.', 'deprecated string', 'buddypress' ), esc_html( phpversion() ) );
+			?>
+			&nbsp;
+			<?php
+			/* translators: %s: the url to a codex page */
+			printf( _x( 'See <a href="%s">the Codex guide</a> for more information.', 'deprecated string', 'buddypress' ), 'https://codex.buddypress.org/getting-started/buddypress-2-8-will-require-php-5-3/' );
+			?>
+		</p>
 		<?php wp_nonce_field( "bp-dismissible-notice-$notice_id", "bp-dismissible-nonce-$notice_id" ); ?>
 	</div>
Index: /trunk/src/bp-core/deprecated/3.0.php
===================================================================
--- /trunk/src/bp-core/deprecated/3.0.php	(revision 12587)
+++ /trunk/src/bp-core/deprecated/3.0.php	(revision 12588)
@@ -172,7 +172,15 @@
 
 		if ( bp_core_delete_account( bp_displayed_user_id() ) ) {
-			bp_core_add_message( sprintf( __( '%s has been deleted from the system.', 'buddypress' ), bp_get_displayed_user_fullname() ) );
+			bp_core_add_message(
+				/* translators: %s: member name */
+				sprintf( _x( '%s has been deleted from the system.', 'deprecated string', 'buddypress' ), bp_get_displayed_user_fullname() )
+			);
 		} else {
-			bp_core_add_message( sprintf( __( 'There was an error deleting %s from the system. Please try again.', 'buddypress' ), bp_get_displayed_user_fullname() ), 'error' );
+			bp_core_add_message(
+				/* translators: %s: member name */
+				sprintf( _x( 'There was an error deleting %s from the system. Please try again.', 'deprecated string', 'buddypress' ), bp_get_displayed_user_fullname() ),
+				'error'
+			);
+
 			$errors = true;
 		}
