diff --git a/public/language/en_GB/users.json b/public/language/en_GB/users.json
index c41127ad9d..0e391e4505 100644
--- a/public/language/en_GB/users.json
+++ b/public/language/en_GB/users.json
@@ -4,5 +4,7 @@
 	"most_reputation": "Most Reputation",
 	"search": "Search",
 	"enter_username": "Enter a username to search",
-	"load_more": "Load More"
+	"load_more": "Load More",
+	"user-not-found": "User not found!",
+	"users-found-search-took": "%1 user(s) found! Search took %2 ms."
 }
\ No newline at end of file
diff --git a/public/src/forum/users.js b/public/src/forum/users.js
index 7f8eee3647..589d88ba34 100644
--- a/public/src/forum/users.js
+++ b/public/src/forum/users.js
@@ -32,43 +32,54 @@ define('forum/users', function() {
 			}
 
 			timeoutId = setTimeout(function() {
+				function reset() {
+					notify.html('<i class="fa fa-search"></i>');
+					notify.parent().removeClass('btn-warning label-warning btn-success label-success');
+				}
 				var username = $('#search-user').val();
+				var notify = $('#user-notfound-notify');
 
-				if (username == '') {
-					$('#user-notfound-notify').html('<i class="fa fa-circle-o"></i>');
-					$('#user-notfound-notify').parent().removeClass('btn-warning label-warning btn-success label-success');
+				if (username === '') {
+					notify.html('<i class="fa fa-circle-o"></i>');
+					notify.parent().removeClass('btn-warning label-warning btn-success label-success');
 					return;
 				}
 
-				if (lastSearch === username) return;
+				if (lastSearch === username) {
+					return;
+				}
 				lastSearch = username;
 
-				$('#user-notfound-notify').html('<i class="fa fa-spinner fa-spin"></i>');
+				notify.html('<i class="fa fa-spinner fa-spin"></i>');
 
 				socket.emit('user.search', username, function(err, data) {
-					if(err) {
-						return app.alert(err.message);
+					if (err) {
+						reset();
+						return app.alertError(err.message);
 					}
 
 					if (!data) {
-						$('#user-notfound-notify').html('You need to be logged in to search!');
-						$('#user-notfound-notify').parent().addClass('btn-warning label-warning');
+						reset();
 						return;
 					}
 
+
+
 					ajaxify.loadTemplate('users', function(usersTemplate) {
 						var html = templates.parse(templates.getBlock(usersTemplate, 'users'), data);
 
 						translator.translate(html, function(translated) {
 							$('#users-container').html(translated);
-
-
-							if (data && data.users.length === 0) {
-								$('#user-notfound-notify').html('User not found!');
-								$('#user-notfound-notify').parent().addClass('btn-warning label-warning');
+							if (!data.users.length) {
+								translator.translate('[[users:user-not-found]]', function(translated) {
+									notify.html(translated);
+									notify.parent().addClass('btn-warning label-warning');
+								});
 							} else {
-								$('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.');
-								$('#user-notfound-notify').parent().addClass('btn-success label-success');
+								translator.translate('[[users:users-found-search-took, ' + data.users.length + ', ' + data.timing + ']]', function(translated) {
+									notify.html(translated);
+									notify.parent().addClass('btn-success label-success');
+								});
 							}
 						});
 					});
diff --git a/src/socket.io/user.js b/src/socket.io/user.js
index 5cf805362b..58ebcc0ca7 100644
--- a/src/socket.io/user.js
+++ b/src/socket.io/user.js
@@ -50,6 +50,9 @@ SocketUser.increaseViewCount = function(socket, uid, callback) {
 };
 
 SocketUser.search = function(socket, username, callback) {
+	if (!socket.uid) {
+		return callback(new Error('[[error:not-logged-in]]'));
+	}
 	user.search(username, callback);
 };