diff --git a/public/src/client/register.js b/public/src/client/register.js index f989901e7b..4ca7e4df14 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -96,15 +96,28 @@ define('forum/register', [ } }, error: function (data) { - translator.translate(data.responseText, config.defaultLang, function (translated) { - if (data.status === 403 && data.responseText === 'Forbidden') { - window.location.href = config.relative_path + '/register?error=csrf-invalid'; - } else { - errorEl.find('p').text(translated); + const errorMessage = data.responseText; + if (errorMessage === '[[error:username-taken]]') { + const username = $('#username').val(); + const suffix = 'suffix'; + const suggestedUsername = username + suffix; + + translator.translate(errorMessage, config.defaultLang, function (translatedError) { + errorEl.find('p').text(translatedError + '. Maybe try "' + suggestedUsername + '" instead.'); errorEl.removeClass('hidden'); registerBtn.removeClass('disabled'); - } - }); + }); + } else { + translator.translate(errorMessage, config.defaultLang, function (translated) { + if (data.status === 403 && data.responseText === 'Forbidden') { + window.location.href = config.relative_path + '/register?error=csrf-invalid'; + } else { + errorEl.find('p').text(translated); + errorEl.removeClass('hidden'); + registerBtn.removeClass('disabled'); + } + }); + } }, }); }); @@ -135,7 +148,12 @@ define('forum/register', [ if (results.every(obj => obj.status === 'rejected')) { showSuccess(usernameInput, username_notify, successIcon); } else { - showError(usernameInput, username_notify, '[[error:username-taken]]'); + // Username is taken - show error with suggestion + const suffix = 'suffix'; + const suggestedUsername = username + suffix; + translator.translate('[[error:username-taken]]', function (translatedError) { + showError(usernameInput, username_notify, translatedError + '. Maybe try "' + suggestedUsername + '" instead.'); + }); } callback();