{event name='changePasswordFields'}
<script data-relocate="true">
- require(['WoltLabSuite/Core/Ui/User/PasswordStrength'], function (PasswordStrength) {
+ require(['WoltLabSuite/Core/Ui/User/PasswordStrength', 'Language'], function (PasswordStrength, Language) {
+ {include file='passwordStrengthLanguage'}
+
var relatedInputs = [];
if (elById('username')) relatedInputs.push(elById('username'));
if (elById('email')) relatedInputs.push(elById('email'));
{event name='fields'}
<script data-relocate="true">
- require(['WoltLabSuite/Core/Ui/User/PasswordStrength'], function (PasswordStrength) {
+ require(['WoltLabSuite/Core/Ui/User/PasswordStrength', 'Language'], function (PasswordStrength, Language) {
+ {include file='passwordStrengthLanguage'}
+
new PasswordStrength(elById('newPassword'), {
staticDictionary: [
'{$user->username|encodeJS}',
--- /dev/null
+Language.addObject({
+ 'wcf.user.password.zxcvbn.suggestions.use_words_avoid_common_phrases': '{lang}wcf.user.password.zxcvbn.suggestions.use_words_avoid_common_phrases{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.no_need_for_symbols_digits_uppercase': '{lang}wcf.user.password.zxcvbn.suggestions.no_need_for_symbols_digits_uppercase{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.add_word_uncommon_better': '{lang}wcf.user.password.zxcvbn.suggestions.add_word_uncommon_better{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.use_longer_keyboard_pattern': '{lang}wcf.user.password.zxcvbn.suggestions.use_longer_keyboard_pattern{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_repeat': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_repeat{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_sequence': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_sequence{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_recent_year': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_recent_year{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_associated_year': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_associated_year{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_date': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_date{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.start_upper': '{lang}wcf.user.password.zxcvbn.suggestions.start_upper{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.all_upper': '{lang}wcf.user.password.zxcvbn.suggestions.all_upper{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.reversed': '{lang}wcf.user.password.zxcvbn.suggestions.reversed{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.l33t': '{lang}wcf.user.password.zxcvbn.suggestions.l33t{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.straight_row': '{lang}wcf.user.password.zxcvbn.warnings.straight_row{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.short_keyboard_pattern': '{lang}wcf.user.password.zxcvbn.warnings.short_keyboard_pattern{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.repeat_single_char': '{lang}wcf.user.password.zxcvbn.warnings.repeat_single_char{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.repeat': '{lang}wcf.user.password.zxcvbn.warnings.repeat{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.sequence': '{lang}wcf.user.password.zxcvbn.warnings.sequence{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.recent_year': '{lang}wcf.user.password.zxcvbn.warnings.recent_year{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.date': '{lang}wcf.user.password.zxcvbn.warnings.date{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.top_10': '{lang}wcf.user.password.zxcvbn.warnings.top_10{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.top_100': '{lang}wcf.user.password.zxcvbn.warnings.top_100{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.common': '{lang}wcf.user.password.zxcvbn.warnings.common{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.common_alike': '{lang}wcf.user.password.zxcvbn.warnings.common_alike{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.sole_word': '{lang}wcf.user.password.zxcvbn.warnings.sole_word{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.sole_name': '{lang}wcf.user.password.zxcvbn.warnings.sole_name{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.name': '{lang}wcf.user.password.zxcvbn.warnings.name{/lang}',
+});
maxlength: {@REGISTER_USERNAME_MAX_LENGTH}
});
- require(['WoltLabSuite/Core/Ui/User/PasswordStrength'], function (PasswordStrength) {
+ require(['WoltLabSuite/Core/Ui/User/PasswordStrength', 'Language'], function (PasswordStrength, Language) {
+ {include file='passwordStrengthLanguage'}
+
new PasswordStrength(elById('{@$randomFieldNames[password]}'), {
relatedInputs: [
elById('{@$randomFieldNames[username]}'),
"mediaBBCodeTag",
"mediaManager",
"multipleLanguageInputJavascript",
+ "passwordStrengthLanguage",
"radioButtonSearchableOptionType",
"recaptcha",
"scrollablePageCheckboxList",
--- /dev/null
+Language.addObject({
+ 'wcf.user.password.zxcvbn.suggestions.use_words_avoid_common_phrases': '{lang}wcf.user.password.zxcvbn.suggestions.use_words_avoid_common_phrases{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.no_need_for_symbols_digits_uppercase': '{lang}wcf.user.password.zxcvbn.suggestions.no_need_for_symbols_digits_uppercase{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.add_word_uncommon_better': '{lang}wcf.user.password.zxcvbn.suggestions.add_word_uncommon_better{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.use_longer_keyboard_pattern': '{lang}wcf.user.password.zxcvbn.suggestions.use_longer_keyboard_pattern{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_repeat': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_repeat{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_sequence': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_sequence{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_recent_year': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_recent_year{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_associated_year': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_associated_year{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.avoid_date': '{lang}wcf.user.password.zxcvbn.suggestions.avoid_date{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.start_upper': '{lang}wcf.user.password.zxcvbn.suggestions.start_upper{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.all_upper': '{lang}wcf.user.password.zxcvbn.suggestions.all_upper{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.reversed': '{lang}wcf.user.password.zxcvbn.suggestions.reversed{/lang}',
+ 'wcf.user.password.zxcvbn.suggestions.l33t': '{lang}wcf.user.password.zxcvbn.suggestions.l33t{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.straight_row': '{lang}wcf.user.password.zxcvbn.warnings.straight_row{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.short_keyboard_pattern': '{lang}wcf.user.password.zxcvbn.warnings.short_keyboard_pattern{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.repeat_single_char': '{lang}wcf.user.password.zxcvbn.warnings.repeat_single_char{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.repeat': '{lang}wcf.user.password.zxcvbn.warnings.repeat{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.sequence': '{lang}wcf.user.password.zxcvbn.warnings.sequence{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.recent_year': '{lang}wcf.user.password.zxcvbn.warnings.recent_year{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.date': '{lang}wcf.user.password.zxcvbn.warnings.date{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.top_10': '{lang}wcf.user.password.zxcvbn.warnings.top_10{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.top_100': '{lang}wcf.user.password.zxcvbn.warnings.top_100{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.common': '{lang}wcf.user.password.zxcvbn.warnings.common{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.common_alike': '{lang}wcf.user.password.zxcvbn.warnings.common_alike{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.sole_word': '{lang}wcf.user.password.zxcvbn.warnings.sole_word{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.sole_name': '{lang}wcf.user.password.zxcvbn.warnings.sole_name{/lang}',
+ 'wcf.user.password.zxcvbn.warnings.name': '{lang}wcf.user.password.zxcvbn.warnings.name{/lang}',
+});
</dl>
<script data-relocate="true">
- require(['WoltLabSuite/Core/Ui/User/PasswordStrength'], function (PasswordStrength) {
+ require(['WoltLabSuite/Core/Ui/User/PasswordStrength', 'Language'], function (PasswordStrength, Language) {
+ {include file='passwordStrengthLanguage'}
+
var relatedInputs = [];
if (elById('username')) relatedInputs.push(elById('username'));
if (elById('email')) relatedInputs.push(elById('email'));
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @module WoltLabSuite/Core/Ui/User/PasswordStrength
*/
-define(['zxcvbn', 'Core'], function(zxcvbn, Core) {
+define(['zxcvbn', 'Core', 'Language'], function(zxcvbn, Core, Language) {
"use strict";
var STATIC_DICTIONARY = [];
staticDictionary: [],
}, options);
+ if (!this._options.feedbacker) {
+ var phrases = Core.extend({}, zxcvbn.Feedback.default_phrases);
+ for (var type in phrases) {
+ for (var phrase in phrases[type]) {
+ var languageItem = 'wcf.user.password.zxcvbn.' + type + '.' + phrase;
+ var value = Language.get(languageItem);
+ if (value !== languageItem) {
+ phrases[type][phrase] = value;
+ }
+ }
+ }
+ this._options.feedbacker = new zxcvbn.Feedback(phrases);
+ }
+
this._meter = createMeter({
min: 0,
max: 4,
// To bound runtime latency for really long passwords, consider sending zxcvbn() only
// the first 100 characters or so of user input.
var verdict = zxcvbn(this._input.value.substr(0, 100), dictionary);
+ verdict.feedback = this._options.feedbacker.from_result(verdict);
this._meter.value = verdict.score;
this._verdictResult.value = JSON.stringify(verdict);
<item name="wcf.user.style.description"><![CDATA[Stil der Benutzeroberfläche]]></item>
<item name="wcf.user.username.description"><![CDATA[Der Benutzername muss mindestens {REGISTER_USERNAME_MIN_LENGTH} und darf maximal {REGISTER_USERNAME_MAX_LENGTH} Zeichen lang sein.]]></item>
<item name="wcf.user.password.description"><![CDATA[Ein sicheres Kennwort sollte mindestens 10 Zeichen lang sein.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.use_words_avoid_common_phrases"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verwende{else}Verwenden Sie{/if} einige Wörter. {if LANGUAGE_USE_INFORMAL_VARIANT}Verweide{else}Vermeiden Sie{/if} gängige Phrasen.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.no_need_for_symbols_digits_uppercase"><![CDATA[Sonderzeichen, Zahlen oder Großbuchstaben werden nicht benötigt.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.add_word_uncommon_better"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Ergänze{else}Ergänzen Sie{/if} ein oder zwei weitere Worte. Unübliche Worte sind zu bevorzugen.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.use_longer_keyboard_pattern"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verwende{else}Verwenden Sie{/if} ein längeres und zufälligeres Muster auf der Tastatur.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_repeat"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verweide{else}Vermeiden Sie{/if} Wiederholungen.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_sequence"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verweide{else}Vermeiden Sie{/if} Sequenzen.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_recent_year"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verweide{else}Vermeiden Sie{/if} Jahreszahlen der letzten Jahre.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_associated_year"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verweide{else}Vermeiden Sie{/if} Jahreszahlen, die {if LANGUAGE_USE_INFORMAL_VARIANT}dir{else}Ihnen{/if} zugeordnet werden können.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_date"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Verweide{else}Vermeiden Sie{/if} Daten und Jahreszahlen, die {if LANGUAGE_USE_INFORMAL_VARIANT}dir{else}Ihnen{/if} zugeordnet werden können.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.start_upper"><![CDATA[Großbuchstaben zu Beginn erhöhen die Sicherheit nicht.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.all_upper"><![CDATA[Nur Großbuchstaben sind genau so einfach zu erraten, wie nur Kleinbuchstaben.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.reversed"><![CDATA[Umgekehrte Worte sind nicht viel schwieriger zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.l33t"><![CDATA[Vorhersehbare Ersetzungen, wie beispielsweise „@“ statt „a“, erhöhen die Sicherheit nicht.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.straight_row"><![CDATA[Geradlinige Sequenzen auf der Tastatur sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.short_keyboard_pattern"><![CDATA[Kurze Sequenzen auf der Tastatur sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.repeat_single_char"><![CDATA[Wiederholungen wie beispielsweise „aaa“ sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.repeat"><![CDATA[Wiederholungen wie beispielsweise „abcabcabc“ sind nicht viel schwieriger zu erraten als „abc“.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.sequence"><![CDATA[Sequenzen wie „abc“ oder „6543“ sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.recent_year"><![CDATA[Kürzliche Jahreszahlen sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.date"><![CDATA[Daten sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.top_10"><![CDATA[Dies ist eines der 10 häufigsten Kennwörter.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.top_100"><![CDATA[Dies ist eines der 100 häufigsten Kennwörter.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.common"><![CDATA[Dies ist ein sehr häufiges Kennwort.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.common_alike"><![CDATA[Dies ist ähnlich zu einem sehr häufigen Kennwort.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.sole_word"><![CDATA[Ein einzelnes Wort ist einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.sole_name"><![CDATA[Alleinstehende Namen sind einfach zu erraten.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.name"><![CDATA[Häufige Namen sind einfach zu erraten.]]></item>
<item name="wcf.user.lostPassword"><![CDATA[Kennwort vergessen]]></item>
<item name="wcf.user.lostPassword.description"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Wenn du dein Kennwort vergessen hast, musst du entweder den Benutzernamen oder die E-Mail-Adresse angeben, die du in deinem Profil hinterlegt hast. Du kannst dabei nur eines der beiden Felder ausfüllen. Wenn du beide Daten nicht mehr weißt, wende dich bitte an den Administrator.{else}Wenn Sie Ihr Kennwort vergessen haben, müssen Sie entweder den Benutzernamen oder die E-Mail-Adresse angeben, die Sie in Ihrem Profil hinterlegt haben. Sie können dabei nur eines der beiden Felder ausfüllen. Wenn Sie beide Daten nicht mehr wissen, wenden Sie sich bitte an den Administrator.{/if}]]></item>
<item name="wcf.user.lostPassword.email.error.notFound"><![CDATA[Es wurde kein Benutzer mit der E-Mail-Adresse: „{$email}“ gefunden.]]></item>
<item name="wcf.user.style.description"><![CDATA[Forces a specific style instead of the default one.]]></item>
<item name="wcf.user.username.description"><![CDATA[Username must be {REGISTER_USERNAME_MIN_LENGTH} up to {REGISTER_USERNAME_MAX_LENGTH} characters long.]]></item>
<item name="wcf.user.password.description"><![CDATA[A secure password should be at least 10 characters long.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.use_words_avoid_common_phrases"><![CDATA[Use a few words, avoid common phrases.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.no_need_for_symbols_digits_uppercase"><![CDATA[No need for symbols, digits, or uppercase letters.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.add_word_uncommon_better"><![CDATA[Add another word or two. Uncommon words are better.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.use_longer_keyboard_pattern"><![CDATA[Use a longer keyboard pattern with more turns.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_repeat"><![CDATA[Avoid repeated words and characters.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_sequence"><![CDATA[Avoid sequences.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_recent_year"><![CDATA[Avoid recent years.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_associated_year"><![CDATA[Avoid years that are associated with you.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.avoid_date"><![CDATA[Avoid dates and years that are associated with you.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.start_upper"><![CDATA[Capitalization does nott help very much.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.all_upper"><![CDATA[All-uppercase is almost as easy to guess as all-lowercase.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.reversed"><![CDATA[Reversed words aren’t much harder to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.suggestions.l33t"><![CDATA[Predictable substitutions like “@” instead of “a” don't help very much.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.straight_row"><![CDATA[Straight rows of keys are easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.short_keyboard_pattern"><![CDATA[Short keyboard patterns are easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.repeat_single_char"><![CDATA[Repeats like “aaa” are easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.repeat"><![CDATA[Repeats like “abcabcabc” are only slightly harder to guess than “abc”.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.sequence"><![CDATA[Sequences like “abc” or “6543” are easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.recent_year"><![CDATA[Recent years are easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.date"><![CDATA[Dates are often easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.top_10"><![CDATA[This is a top-10 common password.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.top_100"><![CDATA[This is a top-100 common password.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.common"><![CDATA[This is a very common password.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.common_alike"><![CDATA[This is similar to a commonly used password.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.sole_word"><![CDATA[A word by itself is easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.sole_name"><![CDATA[Names and surnames by themselves are easy to guess.]]></item>
+ <item name="wcf.user.password.zxcvbn.warnings.name"><![CDATA[Common names and surnames are easy to guess.]]></item>
<item name="wcf.user.lostPassword"><![CDATA[Lost Password]]></item>
<item name="wcf.user.lostPassword.description"><![CDATA[You must provide your username or email address to request a new password. Contact the site’s administrator if you need assistance.]]></item>
<item name="wcf.user.lostPassword.email.error.notFound"><![CDATA[“{$email}” is not used by any account.]]></item>