Index: /trunk/src/bp-templates/bp-nouveau/buddypress-functions.php
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/buddypress-functions.php	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/buddypress-functions.php	(revision 12397)
@@ -325,4 +325,11 @@
 		// Add The password verify if needed.
 		if ( bp_is_active( 'settings' ) || bp_get_signup_allowed() ) {
+			/**
+			 * BP Nouveau is now directly using the `wp-admin/js/user-profile.js` script.
+			 *
+			 * Setting the user password is now more consistent with how WordPress handles it.
+			 *
+			 * @deprecated 5.0.0
+			 */
 			$scripts['bp-nouveau-password-verify'] = array(
 				'file'         => 'js/password-verify%s.js',
@@ -373,5 +380,5 @@
 
 		if ( bp_is_register_page() || bp_is_user_settings_general() ) {
-			wp_enqueue_script( 'bp-nouveau-password-verify' );
+			wp_enqueue_script( 'user-profile' );
 		}
 
Index: /trunk/src/bp-templates/bp-nouveau/buddypress/members/single/settings/general.php
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/buddypress/members/single/settings/general.php	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/buddypress/members/single/settings/general.php	(revision 12397)
@@ -4,5 +4,5 @@
  *
  * @since 3.0.0
- * @version 3.1.0
+ * @version 5.0.0
  */
 
@@ -10,35 +10,60 @@
 
 <h2 class="screen-heading general-settings-screen">
-	<?php _e( 'Email & Password', 'buddypress' ); ?>
+	<?php esc_html_e( 'Email & Password', 'buddypress' ); ?>
 </h2>
 
 <p class="info email-pwd-info">
-	<?php _e( 'Update your email and or password.', 'buddypress' ); ?>
+	<?php esc_html_e( 'Update your email and or password.', 'buddypress' ); ?>
 </p>
 
-<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/general' ); ?>" method="post" class="standard-form" id="settings-form">
+<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/general' ); ?>" method="post" class="standard-form" id="your-profile">
 
 	<?php if ( ! is_super_admin() ) : ?>
 
-		<label for="pwd"><?php _e( 'Current Password <span>(required to update email or change current password)</span>', 'buddypress' ); ?></label>
-		<input type="password" name="pwd" id="pwd" size="16" value="" class="settings-input small" <?php bp_form_field_attributes( 'password' ); ?>/> &nbsp;<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'buddypress' ); ?></a>
+		<label for="pwd"><?php printf( esc_html__( 'Current Password %s', 'buddypress' ), '<span>' . esc_html__( '(required to update email or change current password)', 'buddypress' ) . '</span>' ); ?></label>
+		<input type="password" name="pwd" id="pwd" value="" size="24" class="settings-input small" <?php bp_form_field_attributes( 'password' ); ?>/> &nbsp;<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'buddypress' ); ?></a>
 
 	<?php endif; ?>
 
-	<label for="email"><?php _e( 'Account Email', 'buddypress' ); ?></label>
+	<label for="email"><?php esc_html_e( 'Account Email', 'buddypress' ); ?></label>
 	<input type="email" name="email" id="email" value="<?php echo esc_attr( bp_get_displayed_user_email() ); ?>" class="settings-input" <?php bp_form_field_attributes( 'email' ); ?>/>
 
 	<div class="info bp-feedback">
 		<span class="bp-icon" aria-hidden="true"></span>
-		<p class="text"><?php esc_html_e( 'Leave password fields blank for no change', 'buddypress' ); ?></p>
+		<p class="text"><?php esc_html_e( 'Click on the "Generate Password" button to change your password.', 'buddypress' ); ?></p>
 	</div>
 
-	<label for="pass1"><?php esc_html_e( 'Add Your New Password', 'buddypress' ); ?></label>
-	<input type="password" name="pass1" id="pass1" size="16" value="" class="settings-input small password-entry" <?php bp_form_field_attributes( 'password' ); ?>/>
+	<div class="user-pass1-wrap">
+		<button type="button" class="button wp-generate-pw">
+			<?php esc_html_e( 'Generate Password', 'buddypress' ); ?>
+		</button>
 
-	<label for="pass2" class="repeated-pwd"><?php esc_html_e( 'Repeat Your New Password', 'buddypress' ); ?></label>
-	<input type="password" name="pass2" id="pass2" size="16" value="" class="settings-input small password-entry-confirm" <?php bp_form_field_attributes( 'password' ); ?>/>
+		<div class="wp-pwd">
+			<label for="pass1"><?php esc_html_e( 'Add Your New Password', 'buddypress' ); ?></label>
+			<span class="password-input-wrapper">
+				<input type="password" name="pass1" id="pass1" size="24" class="settings-input small password-entry" value="" <?php bp_form_field_attributes( 'password', array( 'data-pw' => wp_generate_password( 24 ), 'aria-describedby' => 'pass-strength-result' ) ); ?> />
+			</span>
+			<button type="button" class="button wp-hide-pw" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password', 'buddypress' ); ?>">
+				<span class="dashicons dashicons-hidden" aria-hidden="true"></span>
+				<span class="text bp-screen-reader-text"><?php esc_html_e( 'Hide', 'buddypress' ); ?></span>
+			</button>
+			<button type="button" class="button wp-cancel-pw" data-toggle="0" aria-label="<?php esc_attr_e( 'Cancel password change', 'buddypress' ); ?>">
+				<span class="text"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></span>
+			</button>
+			<div id="pass-strength-result" aria-live="polite"></div>
+		</div>
+	</div>
 
-	<div id="pass-strength-result"></div>
+	<div class="user-pass2-wrap">
+		<label class="label" for="pass2"><?php esc_html_e( 'Repeat Your New Password', 'buddypress' ); ?></label>
+		<input name="pass2" type="password" id="pass2" size="24" class="settings-input small password-entry-confirm" value="" <?php bp_form_field_attributes( 'password' ); ?> />
+	</div>
+
+	<div class="pw-weak">
+		<label>
+			<input type="checkbox" name="pw_weak" class="pw-checkbox" />
+			<span id="pw-weak-text-label"><?php esc_html_e( 'Confirm use of potentially weak password', 'buddypress' ); ?></span>
+		</label>
+	</div>
 
 	<?php bp_nouveau_submit_button( 'members-general-settings' ); ?>
Index: /trunk/src/bp-templates/bp-nouveau/common-styles/_bp-mixins.scss
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/common-styles/_bp-mixins.scss	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/common-styles/_bp-mixins.scss	(revision 12397)
@@ -533,4 +533,25 @@
 }
 
+@mixin pwd-strong-colors($color: inherit, $background: null, $border: null) {
+
+	@if $background {
+		$background: $background;
+	} @else {
+		$background: $background-strong;
+	}
+
+	background-color: $background;
+
+	@if $border {
+		$border: $border;
+	} @else {
+		$border: $border-strong;
+	}
+
+	border-color: $border;
+
+	color: $color;
+}
+
 // BP Tooltips
 
Index: /trunk/src/bp-templates/bp-nouveau/common-styles/_bp-variables.scss
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/common-styles/_bp-variables.scss	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/common-styles/_bp-variables.scss	(revision 12397)
@@ -70,6 +70,8 @@
 $background-short:  #ffa0a0 !default;
 $border-short:      #f04040 !default;
-$background-good:   #66d66e !default;
-$border-good:       #438c48 !default;
+$background-good:   #ffec8b !default;
+$border-good:       #fc0 !default;
+$background-strong: #66d66e !default;
+$border-strong:     #438c48 !default;
 $background-bad:    #ffb78c !default;
 $border-bad:        #ff853c !default;
Index: /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss	(revision 12397)
@@ -133,5 +133,5 @@
 		}
 
-		input:not(.button-small),
+		input:not(.small),
 		textarea {
 			width: 100%;
Index: /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss	(revision 12397)
@@ -260,15 +260,20 @@
 		&.bad {
 
-			@include pwd-bad-colors($color: $white);
+			@include pwd-bad-colors($color: $black);
 		}
 
 		&.short {
 
-			@include pwd-short-colors($color: $white);
+			@include pwd-short-colors($color: $black);
+		}
+
+		&.good {
+
+			@include pwd-good-colors($color: $black);
 		}
 
 		&.strong {
 
-			@include pwd-good-colors($color: $white);
+			@include pwd-strong-colors($color: $black);
 		}
 
Index: /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_registration.scss
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_registration.scss	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_registration.scss	(revision 12397)
@@ -52,4 +52,46 @@
 		}
 
+		.wp-pwd button {
+			vertical-align: middle;
+		}
+
+		#pass1,
+		#pass1-text,
+		#pass-strength-result {
+			width: 10em;
+		}
+
+		#pass1 {
+			display: inline-block;
+			margin-bottom: inherit;
+		}
+
+		#pass1-text,
+		.pw-weak {
+			display: none;
+		}
+
+		.show-password {
+
+			#pass1-text {
+				display: inline-block;
+				margin-bottom: inherit;
+			}
+
+			#pass1 {
+				display: none;
+			}
+		}
+
+		.description.indicator-hint {
+
+			@include font-size(14);
+		}
+
+		#submit:disabled {
+			color: $light-text;
+			opacity: 0.4;
+		}
+
 		.password-entry,
 		.password-entry-confirm {
@@ -59,4 +101,18 @@
 
 } // close .register-page
+
+body.buddypress.register.js {
+
+	.user-pass2-wrap {
+		display: none;
+	}
+}
+
+body.buddypress.register.no-js {
+
+	.wp-hide-pw {
+		display: none;
+	}
+}
 
 // Flex layout containers for registration sections
@@ -102,4 +158,5 @@
 
 			.default-profile {
+				min-width: 14em;
 				flex: 1;
 				padding-right: $pad-med;
Index: /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_user_settings.scss
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_user_settings.scss	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/common-styles/_bp_user_settings.scss	(revision 12397)
@@ -29,5 +29,64 @@
 
 /*__ General __*/
+body.buddypress.settings {
 
+	.wp-pwd button {
+		vertical-align: middle;
+	}
+
+	#pass1,
+	#pass1-text,
+	#pass-strength-result {
+		width: 16em;
+	}
+
+	#pass1 {
+		display: inline-block;
+		margin-bottom: inherit;
+	}
+
+	#pass1-text,
+	.pw-weak,
+	#pass-strength-result {
+		display: none;
+	}
+
+	.show-password {
+
+		#pass1-text {
+			display: inline-block;
+			margin-bottom: inherit;
+		}
+
+		#pass1 {
+			display: none;
+		}
+	}
+
+	#your-profile {
+
+		#submit:disabled {
+			color: $light-text;
+			opacity: 0.4;
+		}
+	}
+}
+
+body.buddypress.settings.js {
+
+	.wp-pwd,
+	.user-pass2-wrap {
+		display: none;
+	}
+}
+
+body.buddypress.settings.no-js {
+
+	.wp-generate-pw,
+	.wp-cancel-pw,
+	.wp-hide-pw {
+		display: none;
+	}
+}
 
 // Email notifications
Index: /trunk/src/bp-templates/bp-nouveau/css/buddypress-rtl.css
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/css/buddypress-rtl.css	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/css/buddypress-rtl.css	(revision 12397)
@@ -1947,7 +1947,53 @@
 }
 
+.register-page .signup-form .wp-pwd button {
+	vertical-align: middle;
+}
+
+.register-page .signup-form #pass1,
+.register-page .signup-form #pass1-text,
+.register-page .signup-form #pass-strength-result {
+	width: 10em;
+}
+
+.register-page .signup-form #pass1 {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+.register-page .signup-form #pass1-text,
+.register-page .signup-form .pw-weak {
+	display: none;
+}
+
+.register-page .signup-form .show-password #pass1-text {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+.register-page .signup-form .show-password #pass1 {
+	display: none;
+}
+
+.register-page .signup-form .description.indicator-hint {
+	font-size: 14px;
+}
+
+.register-page .signup-form #submit:disabled {
+	color: #767676;
+	opacity: 0.4;
+}
+
 .register-page .signup-form .password-entry,
 .register-page .signup-form .password-entry-confirm {
 	border: 1px solid #eee;
+}
+
+body.buddypress.register.js .user-pass2-wrap {
+	display: none;
+}
+
+body.buddypress.register.no-js .wp-hide-pw {
+	display: none;
 }
 
@@ -1973,4 +2019,5 @@
 @media screen and (min-width: 46.8em) {
 	.buddypress-wrap.extended-default-reg .register-page .default-profile {
+		min-width: 14em;
 		flex: 1;
 		padding-left: 1em;
@@ -3221,4 +3268,50 @@
 
 /*__ General __*/
+body.buddypress.settings .wp-pwd button {
+	vertical-align: middle;
+}
+
+body.buddypress.settings #pass1,
+body.buddypress.settings #pass1-text,
+body.buddypress.settings #pass-strength-result {
+	width: 16em;
+}
+
+body.buddypress.settings #pass1 {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+body.buddypress.settings #pass1-text,
+body.buddypress.settings .pw-weak,
+body.buddypress.settings #pass-strength-result {
+	display: none;
+}
+
+body.buddypress.settings .show-password #pass1-text {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+body.buddypress.settings .show-password #pass1 {
+	display: none;
+}
+
+body.buddypress.settings #your-profile #submit:disabled {
+	color: #767676;
+	opacity: 0.4;
+}
+
+body.buddypress.settings.js .wp-pwd,
+body.buddypress.settings.js .user-pass2-wrap {
+	display: none;
+}
+
+body.buddypress.settings.no-js .wp-generate-pw,
+body.buddypress.settings.no-js .wp-cancel-pw,
+body.buddypress.settings.no-js .wp-hide-pw {
+	display: none;
+}
+
 /*__ Email notifications __*/
 /*__ Profile visibility __*/
@@ -3336,5 +3429,5 @@
 }
 
-.buddypress-wrap .standard-form input:not(.button-small),
+.buddypress-wrap .standard-form input:not(.small),
 .buddypress-wrap .standard-form textarea {
 	width: 100%;
@@ -4355,5 +4448,5 @@
 	background-color: #ffb78c;
 	border-color: #ff853c;
-	color: #fff;
+	color: #333;
 }
 
@@ -4361,5 +4454,11 @@
 	background-color: #ffa0a0;
 	border-color: #f04040;
-	color: #fff;
+	color: #333;
+}
+
+.buddypress-wrap #pass-strength-result.good {
+	background-color: #ffec8b;
+	border-color: #fc0;
+	color: #333;
 }
 
@@ -4367,5 +4466,5 @@
 	background-color: #66d66e;
 	border-color: #438c48;
-	color: #fff;
+	color: #333;
 }
 
Index: /trunk/src/bp-templates/bp-nouveau/css/buddypress.css
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/css/buddypress.css	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/css/buddypress.css	(revision 12397)
@@ -1947,7 +1947,53 @@
 }
 
+.register-page .signup-form .wp-pwd button {
+	vertical-align: middle;
+}
+
+.register-page .signup-form #pass1,
+.register-page .signup-form #pass1-text,
+.register-page .signup-form #pass-strength-result {
+	width: 10em;
+}
+
+.register-page .signup-form #pass1 {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+.register-page .signup-form #pass1-text,
+.register-page .signup-form .pw-weak {
+	display: none;
+}
+
+.register-page .signup-form .show-password #pass1-text {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+.register-page .signup-form .show-password #pass1 {
+	display: none;
+}
+
+.register-page .signup-form .description.indicator-hint {
+	font-size: 14px;
+}
+
+.register-page .signup-form #submit:disabled {
+	color: #767676;
+	opacity: 0.4;
+}
+
 .register-page .signup-form .password-entry,
 .register-page .signup-form .password-entry-confirm {
 	border: 1px solid #eee;
+}
+
+body.buddypress.register.js .user-pass2-wrap {
+	display: none;
+}
+
+body.buddypress.register.no-js .wp-hide-pw {
+	display: none;
 }
 
@@ -1973,4 +2019,5 @@
 @media screen and (min-width: 46.8em) {
 	.buddypress-wrap.extended-default-reg .register-page .default-profile {
+		min-width: 14em;
 		flex: 1;
 		padding-right: 1em;
@@ -3221,4 +3268,50 @@
 
 /*__ General __*/
+body.buddypress.settings .wp-pwd button {
+	vertical-align: middle;
+}
+
+body.buddypress.settings #pass1,
+body.buddypress.settings #pass1-text,
+body.buddypress.settings #pass-strength-result {
+	width: 16em;
+}
+
+body.buddypress.settings #pass1 {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+body.buddypress.settings #pass1-text,
+body.buddypress.settings .pw-weak,
+body.buddypress.settings #pass-strength-result {
+	display: none;
+}
+
+body.buddypress.settings .show-password #pass1-text {
+	display: inline-block;
+	margin-bottom: inherit;
+}
+
+body.buddypress.settings .show-password #pass1 {
+	display: none;
+}
+
+body.buddypress.settings #your-profile #submit:disabled {
+	color: #767676;
+	opacity: 0.4;
+}
+
+body.buddypress.settings.js .wp-pwd,
+body.buddypress.settings.js .user-pass2-wrap {
+	display: none;
+}
+
+body.buddypress.settings.no-js .wp-generate-pw,
+body.buddypress.settings.no-js .wp-cancel-pw,
+body.buddypress.settings.no-js .wp-hide-pw {
+	display: none;
+}
+
 /*__ Email notifications __*/
 /*__ Profile visibility __*/
@@ -3336,5 +3429,5 @@
 }
 
-.buddypress-wrap .standard-form input:not(.button-small),
+.buddypress-wrap .standard-form input:not(.small),
 .buddypress-wrap .standard-form textarea {
 	width: 100%;
@@ -4355,5 +4448,5 @@
 	background-color: #ffb78c;
 	border-color: #ff853c;
-	color: #fff;
+	color: #333;
 }
 
@@ -4361,5 +4454,11 @@
 	background-color: #ffa0a0;
 	border-color: #f04040;
-	color: #fff;
+	color: #333;
+}
+
+.buddypress-wrap #pass-strength-result.good {
+	background-color: #ffec8b;
+	border-color: #fc0;
+	color: #333;
 }
 
@@ -4367,5 +4466,5 @@
 	background-color: #66d66e;
 	border-color: #438c48;
-	color: #fff;
+	color: #333;
 }
 
Index: /trunk/src/bp-templates/bp-nouveau/includes/functions.php
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/includes/functions.php	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/includes/functions.php	(revision 12397)
@@ -1162,20 +1162,6 @@
 				'class'          => '',
 			),
-			'signup_password' => array(
-				'label'          => __( 'Choose a Password', 'buddypress' ),
-				'required'       => true,
-				'value'          => '',
-				'attribute_type' => 'password',
-				'type'           => 'password',
-				'class'          => 'password-entry',
-			),
-			'signup_password_confirm' => array(
-				'label'          => __( 'Confirm Password', 'buddypress' ),
-				'required'       => true,
-				'value'          => '',
-				'attribute_type' => 'password',
-				'type'           => 'password',
-				'class'          => 'password-entry-confirm',
-			),
+			'signup_password' => array(),
+			'signup_password_confirm' => array(),
 		),
 		'blog_details' => array(
@@ -1257,5 +1243,5 @@
 			'attributes' => array(
 				'name'  => 'signup_submit',
-				'id'    => 'signup_submit',
+				'id'    => 'submit',
 				'value' => __( 'Complete Sign Up', 'buddypress' ),
 			),
Index: /trunk/src/bp-templates/bp-nouveau/includes/template-tags.php
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/includes/template-tags.php	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/includes/template-tags.php	(revision 12397)
@@ -2310,145 +2310,170 @@
 
 	foreach ( $fields as $name => $attributes ) {
-		list( $label, $required, $value, $attribute_type, $type, $class ) = array_values( $attributes );
-
-		// Text fields are using strings, radios are using their inputs
-		$label_output = '<label for="%1$s">%2$s</label>';
-		$id           = $name;
-		$classes      = '';
-
-		if ( $required ) {
-			/* translators: Do not translate placeholders. 2 = form field name, 3 = "(required)". */
-			$label_output = __( '<label for="%1$s">%2$s %3$s</label>', 'buddypress' );
-		}
-
-		// Output the label for regular fields
-		if ( 'radio' !== $type ) {
+		if ( 'signup_password' === $name ) {
+			?>
+			<label for="pass1"><?php esc_html_e( 'Choose a Password (required)', 'buddypress' ); ?></label>
+			<div class="user-pass1-wrap">
+				<div class="wp-pwd">
+					<div class="password-input-wrapper">
+						<input type="password" data-reveal="1" name="signup_password" id="pass1" class="password-entry" size="24" value="" <?php bp_form_field_attributes( 'password', array( 'data-pw' => wp_generate_password( 12 ), 'aria-describedby' => 'pass-strength-result' ) ); ?> />
+						<button type="button" class="button wp-hide-pw">
+							<span class="dashicons dashicons-hidden" aria-hidden="true"></span>
+						</button>
+					</div>
+					<div id="pass-strength-result" aria-live="polite"><?php esc_html_e( 'Strength indicator', 'buddypress' ); ?></div>
+				</div>
+				<div class="pw-weak">
+					<label>
+						<input type="checkbox" name="pw_weak" class="pw-checkbox" />
+						<?php esc_html_e( 'Confirm use of weak password', 'buddypress' ); ?>
+					</label>
+				</div>
+			</div>
+			<?php
+		} elseif ( 'signup_password_confirm' === $name ) {
+			?>
+			<p class="user-pass2-wrap">
+				<label for="pass2"><?php esc_html_e( 'Confirm new password', 'buddypress' ); ?></label><br />
+				<input type="password" name="signup_password_confirm" id="pass2" class="password-entry-confirm" size="24" value="" <?php bp_form_field_attributes( 'password' ); ?> />
+			</p>
+
+			<p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
+			<?php
+		} else {
+			list( $label, $required, $value, $attribute_type, $type, $class ) = array_values( $attributes );
+
+			// Text fields are using strings, radios are using their inputs
+			$label_output = '<label for="%1$s">%2$s</label>';
+			$id           = $name;
+			$classes      = '';
+
 			if ( $required ) {
-				printf( $label_output, esc_attr( $name ), esc_html( $label ), __( '(required)', 'buddypress' ) );
-			} else {
-				printf( $label_output, esc_attr( $name ), esc_html( $label ) );
+				/* translators: Do not translate placeholders. 2 = form field name, 3 = "(required)". */
+				$label_output = __( '<label for="%1$s">%2$s %3$s</label>', 'buddypress' );
 			}
 
-			if ( ! empty( $value ) && is_callable( $value ) ) {
-				$value = call_user_func( $value );
+			// Output the label for regular fields
+			if ( 'radio' !== $type ) {
+				if ( $required ) {
+					printf( $label_output, esc_attr( $name ), esc_html( $label ), __( '(required)', 'buddypress' ) );
+				} else {
+					printf( $label_output, esc_attr( $name ), esc_html( $label ) );
+				}
+
+				if ( ! empty( $value ) && is_callable( $value ) ) {
+					$value = call_user_func( $value );
+				}
+
+			// Handle the specific case of Site's privacy differently
+			} elseif ( 'signup_blog_privacy_private' !== $name ) {
+				?>
+					<span class="label">
+						<?php esc_html_e( 'I would like my site to appear in search engines, and in public listings around this network.', 'buddypress' ); ?>
+					</span>
+				<?php
 			}
 
-		// Handle the specific case of Site's privacy differently
-		} elseif ( 'signup_blog_privacy_private' !== $name ) {
-			?>
-				<span class="label">
-					<?php esc_html_e( 'I would like my site to appear in search engines, and in public listings around this network.', 'buddypress' ); ?>
-				</span>
-			<?php
-		}
-
-		// Set the additional attributes
-		if ( $attribute_type ) {
-			$existing_attributes = array();
-
-			if ( ! empty( $required ) ) {
-				$existing_attributes = array( 'aria-required' => 'true' );
+			// Set the additional attributes
+			if ( $attribute_type ) {
+				$existing_attributes = array();
+
+				if ( ! empty( $required ) ) {
+					$existing_attributes = array( 'aria-required' => 'true' );
+
+					/**
+					 * The blog section is hidden, so let's avoid a browser warning
+					 * and deal with the Blog section in Javascript.
+					 */
+					if ( $section !== 'blog_details' ) {
+						$existing_attributes['required'] = 'required';
+					}
+				}
+
+				$attribute_type = ' ' . bp_get_form_field_attributes( $attribute_type, $existing_attributes );
+			}
+
+			// Specific case for Site's privacy
+			if ( 'signup_blog_privacy_public' === $name || 'signup_blog_privacy_private' === $name ) {
+				$name      = 'signup_blog_privacy';
+				$submitted = bp_get_signup_blog_privacy_value();
+
+				if ( ! $submitted ) {
+					$submitted = 'public';
+				}
+
+				$attribute_type = ' ' . checked( $value, $submitted, false );
+			}
+
+			// Do not run function to display errors for the private radio.
+			if ( 'private' !== $value ) {
 
 				/**
-				 * The blog section is hidden, so let's avoid a browser warning
-				 * and deal with the Blog section in Javascript.
+				 * Fetch & display any BP member registration field errors.
+				 *
+				 * Passes BP signup errors to Nouveau's template function to
+				 * render suitable markup for error string.
 				 */
-				if ( $section !== 'blog_details' ) {
-					$existing_attributes['required'] = 'required';
+				if ( isset( buddypress()->signup->errors[ $name ] ) ) {
+					nouveau_error_template( buddypress()->signup->errors[ $name ] );
+					$invalid = 'invalid';
 				}
 			}
 
-			$attribute_type = ' ' . bp_get_form_field_attributes( $attribute_type, $existing_attributes );
-		}
-
-		// Specific case for Site's privacy
-		if ( 'signup_blog_privacy_public' === $name || 'signup_blog_privacy_private' === $name ) {
-			$name      = 'signup_blog_privacy';
-			$submitted = bp_get_signup_blog_privacy_value();
-
-			if ( ! $submitted ) {
-				$submitted = 'public';
+			if ( isset( $invalid ) && isset( buddypress()->signup->errors[ $name ] ) ) {
+				if ( ! empty( $class ) ) {
+					$class = $class . ' ' . $invalid;
+				} else {
+					$class = $invalid;
+				}
 			}
 
-			$attribute_type = ' ' . checked( $value, $submitted, false );
-		}
-
-		// Do not run function to display errors for the private radio.
-		if ( 'private' !== $value ) {
-
-			/**
-			 * Fetch & display any BP member registration field errors.
-			 *
-			 * Passes BP signup errors to Nouveau's template function to
-			 * render suitable markup for error string.
-			 */
-			if ( isset( buddypress()->signup->errors[ $name ] ) ) {
-				nouveau_error_template( buddypress()->signup->errors[ $name ] );
-				$invalid = 'invalid';
-			}
-		}
-
-		if ( isset( $invalid ) && isset( buddypress()->signup->errors[ $name ] ) ) {
-			if ( ! empty( $class ) ) {
-				$class = $class . ' ' . $invalid;
-			} else {
-				$class = $invalid;
-			}
-		}
-
-		if ( $class ) {
-			$class = sprintf(
-				' class="%s"',
-				esc_attr( join( ' ', array_map( 'sanitize_html_class', explode( ' ', $class ) ) ) )
-			);
-		}
-
-		// Set the input.
-		$field_output = sprintf(
-			'<input type="%1$s" name="%2$s" id="%3$s" %4$s value="%5$s" %6$s />',
-			esc_attr( $type ),
-			esc_attr( $name ),
-			esc_attr( $id ),
-			$class,  // Constructed safely above.
-			esc_attr( $value ),
-			$attribute_type // Constructed safely above.
-		);
-
-		// Not a radio, let's output the field
-		if ( 'radio' !== $type ) {
-			if ( 'signup_blog_url' !== $name ) {
-				print( $field_output );  // Constructed safely above.
-
-			// If it's the signup blog url, it's specific to Multisite config.
-			} elseif ( is_subdomain_install() ) {
-				// Constructed safely above.
-				printf(
-					'%1$s %2$s . %3$s',
-					is_ssl() ? 'https://' : 'http://',
-					$field_output,
-					bp_signup_get_subdomain_base()
-				);
-
-			// Subfolders!
-			} else {
-				printf(
-					'%1$s %2$s',
-					home_url( '/' ),
-					$field_output  // Constructed safely above.
+			if ( $class ) {
+				$class = sprintf(
+					' class="%s"',
+					esc_attr( join( ' ', array_map( 'sanitize_html_class', explode( ' ', $class ) ) ) )
 				);
 			}
 
-		// It's a radio, let's output the field inside the label
-		} else {
-			// $label_output and $field_output are constructed safely above.
-			printf( $label_output, esc_attr( $name ), $field_output . ' ' . esc_html( $label ) );
-		}
-
-		// Password strength is restricted to the signup_password field
-		if ( 'signup_password' === $name ) :
-		?>
-			<div id="pass-strength-result"></div>
-		<?php
-		endif;
+			// Set the input.
+			$field_output = sprintf(
+				'<input type="%1$s" name="%2$s" id="%3$s" %4$s value="%5$s" %6$s />',
+				esc_attr( $type ),
+				esc_attr( $name ),
+				esc_attr( $id ),
+				$class,  // Constructed safely above.
+				esc_attr( $value ),
+				$attribute_type // Constructed safely above.
+			);
+
+			// Not a radio, let's output the field
+			if ( 'radio' !== $type ) {
+				if ( 'signup_blog_url' !== $name ) {
+					print( $field_output );  // Constructed safely above.
+
+				// If it's the signup blog url, it's specific to Multisite config.
+				} elseif ( is_subdomain_install() ) {
+					// Constructed safely above.
+					printf(
+						'%1$s %2$s . %3$s',
+						is_ssl() ? 'https://' : 'http://',
+						$field_output,
+						bp_signup_get_subdomain_base()
+					);
+
+				// Subfolders!
+				} else {
+					printf(
+						'%1$s %2$s',
+						home_url( '/' ),
+						$field_output  // Constructed safely above.
+					);
+				}
+
+			// It's a radio, let's output the field inside the label
+			} else {
+				// $label_output and $field_output are constructed safely above.
+				printf( $label_output, esc_attr( $name ), $field_output . ' ' . esc_html( $label ) );
+			}
+		}
 	}
 
Index: /trunk/src/bp-templates/bp-nouveau/js/password-verify.js
===================================================================
--- /trunk/src/bp-templates/bp-nouveau/js/password-verify.js	(revision 12396)
+++ /trunk/src/bp-templates/bp-nouveau/js/password-verify.js	(revision 12397)
@@ -2,6 +2,12 @@
 /* Password Verify */
 /* global pwsL10n */
-/* @version 3.0.0 */
+/* @since 3.0.0 */
+/* @version 5.0.0 */
 ( function( $ ){
+	/**
+	 * Function to inform the user about the strength of its password.
+	 *
+	 * @deprecated since version 5.0.0.
+	 */
 	function check_pass_strength() {
 		var pass1 = $( '.password-entry' ).val(),
@@ -41,4 +47,7 @@
 		$( '.password-entry' ).val( '' ).keyup( check_pass_strength );
 		$( '.password-entry-confirm' ).val( '' ).keyup( check_pass_strength );
+
+		// Display a deprecated warning.
+		console.warn( 'The bp-nouveau/js/password-verify.js script is deprecated since 5.0.0 and will be deleted in version 6.0.0.' );
 	} );
 
