From 038c45f4b69e76e403bc49bb29b860471d827092 Mon Sep 17 00:00:00 2001 From: Peter Jaszkowiak Date: Sat, 10 Dec 2016 20:01:18 -0700 Subject: [PATCH] `admin/manage` translations, misc - Translate Manage templates and JS - Change `translator.translate -> .html` into `.translateHtml` where fitting - Translate `admin/partials/download_plugin_item` --- public/language/en-GB/admin/manage/flags.json | 19 ++++ .../language/en-GB/admin/manage/groups.json | 34 +++++++ .../en-GB/admin/manage/ip-blacklist.json | 15 +++ .../en-GB/admin/manage/registration.json | 20 ++++ public/language/en-GB/admin/manage/tags.json | 18 ++++ public/language/en-GB/admin/manage/users.json | 91 +++++++++++++++++++ public/src/admin/appearance/themes.js | 4 +- public/src/admin/extend/rewards.js | 4 +- public/src/admin/general/dashboard.js | 4 +- public/src/admin/general/navigation.js | 7 +- public/src/admin/manage/flags.js | 16 ++-- public/src/admin/manage/group.js | 6 +- public/src/admin/manage/groups.js | 14 +-- public/src/admin/manage/ip-blacklist.js | 6 +- public/src/admin/manage/registration.js | 2 +- public/src/admin/manage/tags.js | 6 +- public/src/admin/manage/users.js | 88 +++++++++--------- src/views/admin/manage/flags.tpl | 70 +++++++++----- src/views/admin/manage/group.tpl | 41 +++++---- src/views/admin/manage/groups.tpl | 30 +++--- src/views/admin/manage/ip-blacklist.tpl | 23 ++--- src/views/admin/manage/registration.tpl | 32 +++---- src/views/admin/manage/tags.tpl | 36 +++++--- src/views/admin/manage/users.tpl | 90 +++++++++--------- .../admin/partials/blacklist-validate.tpl | 4 +- .../admin/partials/create_user_modal.tpl | 16 ++-- .../admin/partials/download_plugin_item.tpl | 8 +- src/views/admin/partials/temporary-ban.tpl | 10 +- 28 files changed, 469 insertions(+), 245 deletions(-) create mode 100644 public/language/en-GB/admin/manage/flags.json create mode 100644 public/language/en-GB/admin/manage/groups.json create mode 100644 public/language/en-GB/admin/manage/ip-blacklist.json create mode 100644 public/language/en-GB/admin/manage/registration.json create mode 100644 public/language/en-GB/admin/manage/tags.json create mode 100644 public/language/en-GB/admin/manage/users.json diff --git a/public/language/en-GB/admin/manage/flags.json b/public/language/en-GB/admin/manage/flags.json new file mode 100644 index 0000000000..bfc488a409 --- /dev/null +++ b/public/language/en-GB/admin/manage/flags.json @@ -0,0 +1,19 @@ +{ + "daily": "Daily flags", + "by-user": "Flags by user", + "by-user-search": "Search flagged posts by username", + "category": "Category", + "sort-by": "Sort By", + "sort-by.most-flags": "Most Flags", + "sort-by.most-recent": "Most Recent", + "search": "Search", + "dismiss-all": "Dismiss All", + "none-flagged": "No flagged posts!", + "posted-in": "Posted in %1", + "read-more": "Read More", + "flagged-x-times": "This post has been flagged %1 time(s):", + "dismiss": "Dismiss this Flag", + "delete-post": "Delete the Post", + + "alerts.confirm-delete-post": "Do you really want to delete this post?" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/groups.json b/public/language/en-GB/admin/manage/groups.json new file mode 100644 index 0000000000..b5e526aacf --- /dev/null +++ b/public/language/en-GB/admin/manage/groups.json @@ -0,0 +1,34 @@ +{ + "name": "Group Name", + "description": "Group Description", + "system": "System Group", + "edit": "Edit", + "search-placeholder": "Search", + "create": "Create Group", + "description-placeholder": "A short description about your group", + "create-button": "Create", + + "alerts.create-failure": "Uh-Oh

There was a problem creating your group. Please try again later!

", + "alerts.confirm-delete": "Are you sure you wish to delete this group?", + + "edit.name": "Name", + "edit.description": "Description", + "edit.user-title": "Title of Members", + "edit.icon": "Group Icon", + "edit.label-color": "Group Label Color", + "edit.show-badge": "Show Badge", + "edit.private-details": "If enabled, joining of groups requires approval from a group owner.", + "edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.", + "edit.disable-requests": "Disable join requests", + "edit.hidden": "Hidden", + "edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", + "edit.add-user": "Add User to Group", + "edit.add-user-search": "Search Users", + "edit.members": "Member List", + "control-panel": "Groups Control Panel", + "revert": "Revert", + + "edit.no-users-found": "No Users Found", + "edit.confirm-remove-user": "Are you sure you want to remove this user?", + "edit.save-success": "Changes saved!" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/ip-blacklist.json b/public/language/en-GB/admin/manage/ip-blacklist.json new file mode 100644 index 0000000000..5106434351 --- /dev/null +++ b/public/language/en-GB/admin/manage/ip-blacklist.json @@ -0,0 +1,15 @@ +{ + "lead": "Configure your IP blacklist here.", + "description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.", + "active-rules": "Active Rules", + "validate": "Validate Blacklist", + "apply": "Apply Blacklist", + "hints": "Syntax Hints", + "hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. 192.168.100.0/22).", + "hint-2": "You can add in comments by starting lines with the # symbol.", + + "validate.x-valid": "%1 out of %2 rule(s) valid.", + "validate.x-invalid": "The following %1 rules are invalid:", + + "alerts.applied-success": "Blacklist Applied" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/registration.json b/public/language/en-GB/admin/manage/registration.json new file mode 100644 index 0000000000..f51b4d56e6 --- /dev/null +++ b/public/language/en-GB/admin/manage/registration.json @@ -0,0 +1,20 @@ +{ + "queue": "Queue", + "description": "There are no users in the registration queue.
To enable this feature, go to Settings → User → User Registration and set Registration Type to \"Admin Approval\".", + + "list.name": "Name", + "list.email": "Email", + "list.ip": "IP", + "list.time": "Time", + "list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3", + "list.email-spam": "Frequency: %1 Appears: %2", + "list.ip-spam": "Frequency: %1 Appears: %2", + + "invitations": "Invitations", + "invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username.

The username will be displayed to the right of the emails for users who have redeemed their invitations.", + "invitations.inviter-username": "Inviter Username", + "invitations.invitee-email": "Invitee Email", + "invitations.invitee-username": "Invitee Username (if registered)", + + "invitations.confirm-delete": "Are you sure you wish to delete this invitation?" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/tags.json b/public/language/en-GB/admin/manage/tags.json new file mode 100644 index 0000000000..db40e9f098 --- /dev/null +++ b/public/language/en-GB/admin/manage/tags.json @@ -0,0 +1,18 @@ +{ + "none": "Your forum does not have any topics with tags yet.", + "bg-color": "Background Colour", + "text-color": "Text Colour", + "create-modify": "Create & Modify Tags", + "description": "Select tags via clicking and/or dragging, use shift to select multiple.", + "create": "Create Tag", + "modify": "Modify Tags", + "delete": "Delete Selected Tags", + "search": "Search for tags...", + "settings": "Click here to visit the tag settings page.", + "name": "Tag Name", + + "alerts.editing-multiple": "Editing multiple tags", + "alerts.editing-x": "Editing \"%1\" tag", + "alerts.confirm-delete": "Do you want to delete the selected tags?", + "alerts.update-success": "Tag Updated!" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/users.json b/public/language/en-GB/admin/manage/users.json new file mode 100644 index 0000000000..f1651a814b --- /dev/null +++ b/public/language/en-GB/admin/manage/users.json @@ -0,0 +1,91 @@ +{ + "users": "Users", + "edit": "Edit", + "make-admin": "Make Admin", + "remove-admin": "Remove Admin", + "validate-email": "Validate Email", + "send-validation-email": "Send Validation Email", + "password-reset-email": "Send Password Reset Email", + "ban": "Ban User(s)", + "temp-ban": "Ban User(s) Temporarily", + "unban": "Unban User(s)", + "reset-lockout": "Reset Lockout", + "reset-flags": "Reset Flags", + "delete": "Delete User(s)", + "purge": "Delete User(s) and Content", + "download-csv": "Download CSV", + "invite": "Invite", + "new": "New User", + + "pills.latest": "Latest Users", + "pills.unvalidated": "Not Validated", + "pills.no-posts": "No Posts", + "pills.top-posters": "Top Posters", + "pills.top-rep": "Most Reputation", + "pills.inactive": "Inactive", + "pills.flagged": "Most Flagged", + "pills.banned": "Banned", + "pills.search": "User Search", + + "search.username": "By User Name", + "search.username-placeholder": "Enter a username to search", + "search.email": "By Email", + "search.email-placeholder": "Enter a email to search", + "search.ip": "By IP Address", + "search.ip-placeholder": "Enter an IP Address to search", + "search.not-found": "User not found!", + + "inactive.3-months": "3 months", + "inactive.6-months": "6 months", + "inactive.12-months": "12 months", + + "users.uid": "uid", + "users.username": "username", + "users.email": "email", + "users.postcount": "postcount", + "users.reputation": "reputation", + "users.flags": "flags", + "users.joined": "joined", + "users.last-online": "last online", + "users.banned": "banned", + + "create.username": "User Name", + "create.email": "Email", + "create.email-placeholder": "Email of this user", + "create.password": "Password", + "create.password-confirm": "Confirm Password", + + "temp-ban.length": "Ban Length", + "temp-ban.reason": "Reason (Optional)", + "temp-ban.hours": "Hours", + "temp-ban.days": "Days", + "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", + + "alerts.confirm-ban": "Do you really want to ban this user permanently?", + "alerts.confirm-ban-multi": "Do you really want to ban these users permanently?", + "alerts.ban-success": "User(s) banned!", + "alerts.button-ban-x": "Ban %1 user(s)", + "alerts.unban-success": "User(s) unbanned!", + "alerts.lockout-reset-success": "Lockout(s) reset!", + "alerts.flag-reset-success": "Flags(s) reset!", + "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", + "alerts.make-admin-success": "User(s) are now administrators.", + "alerts.confirm-remove-admin": "Do you really want to remove admins?", + "alerts.remove-admin-success": "User(s) are no longer administrators.", + "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", + "alerts.validate-email-success": "Emails validated", + "alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?", + "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", + "alerts.delete-success": "User(s) Deleted!", + "alerts.confirm-purge": "Warning!
Do you really want to delete user(s) and their content?
This action is not reversable! All user data and content will be erased!", + "alerts.create": "Create User", + "alerts.button-create": "Create", + "alerts.button-cancel": "Cancel", + "alerts.error-passwords-different": "Passwords must match!", + "alerts.error-x": "Error

%1

", + "alerts.create-success": "User created!", + + "alerts.prompt-email": "Email: ", + "alerts.email-sent-to": "An invitation email has been sent to %1", + "alerts.x-users-found": "%1 user(s) found! Search took %2 ms." +} \ No newline at end of file diff --git a/public/src/admin/appearance/themes.js b/public/src/admin/appearance/themes.js index 4b958ed5dd..4158f6fef7 100644 --- a/public/src/admin/appearance/themes.js +++ b/public/src/admin/appearance/themes.js @@ -71,9 +71,7 @@ define('admin/appearance/themes', ['translator'], function (translator) { var instListEl = $('#installed_themes'); if (!themes.length) { - translator.translate('[[admin/appearance/themes:no-themes]]', function (text) { - instListEl.append($('
  • ').addClass('no-themes').html(text)); - }); + instListEl.append($('
  • ').addClass('no-themes').translateHtml('[[admin/appearance/themes:no-themes]]')); return; } else { templates.parse('admin/partials/theme_list', { diff --git a/public/src/admin/extend/rewards.js b/public/src/admin/extend/rewards.js index 642e2fbc66..8b347101f9 100644 --- a/public/src/admin/extend/rewards.js +++ b/public/src/admin/extend/rewards.js @@ -43,9 +43,7 @@ define('admin/extend/rewards', ['translator'], function (translator) { var btn = $(this), disabled = btn.hasClass('btn-success'), id = $(this).parents('[data-id]').attr('data-id'); - translator.translate('[[admin/extend/rewards:' + disabled ? 'disable' : 'enable' + ']]', function (text) { - btn.toggleClass('btn-warning').toggleClass('btn-success').html(text); - }); + btn.toggleClass('btn-warning').toggleClass('btn-success').translateHtml('[[admin/extend/rewards:' + disabled ? 'disable' : 'enable' + ']]'); // send disable api call return false; }); diff --git a/public/src/admin/general/dashboard.js b/public/src/admin/general/dashboard.js index f17be6fde2..f9e2589f65 100644 --- a/public/src/admin/general/dashboard.js +++ b/public/src/admin/general/dashboard.js @@ -116,9 +116,7 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator'], function (s updatePresenceGraph(data.users); updateTopicsGraph(data.topics); - translator.translate(html, function (html) { - $('#active-users').html(html); - }); + $('#active-users').translateHtml(html); }; var graphs = { diff --git a/public/src/admin/general/navigation.js b/public/src/admin/general/navigation.js index 3476780942..6fa59aff24 100644 --- a/public/src/admin/general/navigation.js +++ b/public/src/admin/general/navigation.js @@ -137,9 +137,10 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun function toggle() { var btn = $(this), disabled = btn.hasClass('btn-success'); - - btn.toggleClass('btn-warning').toggleClass('btn-success').html(!disabled ? 'Enable' : 'Disable'); - btn.parents('li').find('[name="enabled"]').val(!disabled ? '' : 'on'); + translator.translate(disabled ? '[[admin/general/navigation:btn.disable]]' : '[[admin/general/navigation:btn.enable]]', function (html) { + btn.toggleClass('btn-warning').toggleClass('btn-success').html(html); + btn.parents('li').find('[name="enabled"]').val(disabled ? 'on' : ''); + }); return false; } diff --git a/public/src/admin/manage/flags.js b/public/src/admin/manage/flags.js index fb8b32d602..0bf47060dd 100644 --- a/public/src/admin/manage/flags.js +++ b/public/src/admin/manage/flags.js @@ -4,8 +4,9 @@ define('admin/manage/flags', [ 'autocomplete', 'Chart', - 'components' -], function (autocomplete, Chart, components) { + 'components', + 'translator' +], function (autocomplete, Chart, components, translator) { var Flags = {}; @@ -56,7 +57,7 @@ define('admin/manage/flags', [ function handleDelete() { $('.flags').on('click', '.delete', function () { var btn = $(this); - bootbox.confirm('Do you really want to delete this post?', function (confirm) { + bootbox.confirm('[[admin/manage/flags:alerts.confirm-delete-post]]', function (confirm) { if (!confirm) { return; } @@ -76,7 +77,9 @@ define('admin/manage/flags', [ btn.parents('[data-pid]').fadeOut(function () { $(this).remove(); if (!$('.flags [data-pid]').length) { - $('.post-container').text('No flagged posts!'); + translator.translate('[[admin/manage/flags:none-flagged]]', function (text) { + $('.post-container').text(text); + }); } }); } @@ -130,7 +133,8 @@ define('admin/manage/flags', [ } function updateFlagDetails(source) { - // As the flag details are returned in the API, update the form controls to show the correct data + // As the flag details are returned in the API, + // update the form controls to show the correct data // Create reference hash for use in this method source = source.reduce(function (memo, cur) { @@ -140,7 +144,7 @@ define('admin/manage/flags', [ components.get('posts/flag').each(function (idx, el) { var pid = el.getAttribute('data-pid'); - var el = $(el); + el = $(el); if (source[pid]) { for(var prop in source[pid]) { diff --git a/public/src/admin/manage/group.js b/public/src/admin/manage/group.js index ce41436dac..a64ca9dd63 100644 --- a/public/src/admin/manage/group.js +++ b/public/src/admin/manage/group.js @@ -69,7 +69,7 @@ define('admin/manage/group', [ groupDetailsSearchResults.append(foundUser); } } else { - groupDetailsSearchResults.html('
  • No Users Found
  • '); + groupDetailsSearchResults.translateHtml('
  • [[admin/manage/groups:edit.no-users-found]]
  • '); } }); }, 200); @@ -126,7 +126,7 @@ define('admin/manage/group', [ break; case 'kick': - bootbox.confirm('Are you sure you want to remove this user?', function (confirm) { + bootbox.confirm('[[admin/manage/groups:edit.confirm-remove-user]]', function (confirm) { if (!confirm) { return; } @@ -178,7 +178,7 @@ define('admin/manage/group', [ // If the group name changed, change url if (groupName === newName) { - app.alertSuccess('Changes saved!'); + app.alertSuccess('[[admin/manage/groups:edit.save-success]]'); } else { ajaxify.go('admin/manage/groups/' + encodeURIComponent(newName), undefined, true); } diff --git a/public/src/admin/manage/groups.js b/public/src/admin/manage/groups.js index 92a7c43efd..5c30e7f3cd 100644 --- a/public/src/admin/manage/groups.js +++ b/public/src/admin/manage/groups.js @@ -1,10 +1,7 @@ "use strict"; /*global define, templates, socket, ajaxify, app, admin, bootbox, utils, config */ -define('admin/manage/groups', [ - 'translator', - 'components' -], function (translator, components) { +define('admin/manage/groups', ['translator'], function (translator) { var Groups = {}; var intervalId = 0; @@ -40,12 +37,9 @@ define('admin/manage/groups', [ socket.emit('admin.groups.create', submitObj, function (err) { if (err) { if (err.hasOwnProperty('message') && utils.hasLanguageKey(err.message)) { - translator.translate(err.message, config.defaultLang, function (translated) { - createModalError.html(translated).removeClass('hide'); - }); - } else { - createModalError.html('Uh-Oh

    There was a problem creating your group. Please try again later!

    ').removeClass('hide'); + err = '[[admin/manage/groups:alerts.create-failure]]'; } + createModalError.translateHtml(err).removeClass('hide'); } else { createModalError.addClass('hide'); createGroupName.val(''); @@ -64,7 +58,7 @@ define('admin/manage/groups', [ switch (action) { case 'delete': - bootbox.confirm('Are you sure you wish to delete this group?', function (confirm) { + bootbox.confirm('[[admin/manage/groups:alerts.confirm-delete]]', function (confirm) { if (confirm) { socket.emit('groups.delete', { groupName: groupName diff --git a/public/src/admin/manage/ip-blacklist.js b/public/src/admin/manage/ip-blacklist.js index fdb4eef413..2e9963b75f 100644 --- a/public/src/admin/manage/ip-blacklist.js +++ b/public/src/admin/manage/ip-blacklist.js @@ -20,7 +20,7 @@ define('admin/manage/ip-blacklist', ['translator'], function (translator) { app.alert({ type: 'success', alert_id: 'blacklist-saved', - title: 'Blacklist Applied', + title: '[[admin/manage/ip-blacklist:alerts.applied]]', }); }); }); @@ -34,9 +34,7 @@ define('admin/manage/ip-blacklist', ['translator'], function (translator) { } templates.parse('admin/partials/blacklist-validate', data, function (html) { - translator.translate(html, function (html) { - bootbox.alert(html); - }); + bootbox.alert(html); }); }); }); diff --git a/public/src/admin/manage/registration.js b/public/src/admin/manage/registration.js index 329a4edb96..864ce2bf86 100644 --- a/public/src/admin/manage/registration.js +++ b/public/src/admin/manage/registration.js @@ -39,7 +39,7 @@ define('admin/manage/registration', function () { parent.remove(); }; if (action === 'delete') { - bootbox.confirm('Are you sure you wish to delete this invitation?', function (confirm) { + bootbox.confirm('[[admin/manage/registration:invitations.confirm-delete]]', function (confirm) { if (confirm) { socket.emit(method, {email: email, invitedBy: invitedBy}, function (err) { if (err) { diff --git a/public/src/admin/manage/tags.js b/public/src/admin/manage/tags.js index 108fce3797..9984c8182d 100644 --- a/public/src/admin/manage/tags.js +++ b/public/src/admin/manage/tags.js @@ -86,7 +86,7 @@ define('admin/manage/tags', [ } var firstTag = $(tagsToModify[0]), - title = tagsToModify.length > 1 ? 'Editing multiple tags' : 'Editing ' + firstTag.find('.tag-item').text() + ' tag'; + title = tagsToModify.length > 1 ? '[[admin/manage/tags:alerts.editing-multiple]]' : '[[admin/manage/tags:alerts.editing-x, ' + firstTag.find('.tag-item').text() + ']]'; var modal = bootbox.dialog({ title: title, @@ -125,7 +125,7 @@ define('admin/manage/tags', [ return; } - bootbox.confirm('Do you want to delete the selected tags?', function (confirm) { + bootbox.confirm('[[admin/manage/tags:alerts.confirm-delete]]', function (confirm) { if (!confirm) { return; } @@ -164,7 +164,7 @@ define('admin/manage/tags', [ return app.alertError(err.message); } - app.alertSuccess('Tag Updated!'); + app.alertSuccess('[[admin/manage/tags:alerts.update-success]]'); }); } diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index d2407fa82a..192dec7501 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -68,9 +68,9 @@ define('admin/manage/users', ['translator'], function (translator) { return false; // specifically to keep the menu open } - bootbox.confirm('Do you really want to ban ' + (uids.length > 1 ? 'these users' : 'this user') + ' permanently?', function (confirm) { + bootbox.confirm((uids.length > 1 ? '[[admin/manage/users:alerts.confirm-ban-multi]]' : '[[admin/manage/users:alerts.confirm-ban]]'), function (confirm) { if (confirm) { - socket.emit('user.banUsers', { uids: uids, reason: '' }, done('User(s) banned!', '.ban', true)); + socket.emit('user.banUsers', { uids: uids, reason: '' }, done('[[admin/manage/users:alerts.ban-success]]', '.ban', true)); } }); }); @@ -94,14 +94,14 @@ define('admin/manage/users', ['translator'], function (translator) { className: 'btn-link' }, submit: { - label: 'Ban ' + uids.length + (uids.length > 1 ? ' users' : ' user'), + label: '[[admin/manage/users:alerts.button-ban-x, ' + uids.length + ']]', callback: function () { var formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { data[cur.name] = cur.value; return data; }, {}); var until = formData.length ? (Date.now() + formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) : 0; - socket.emit('user.banUsers', { uids: uids, until: until, reason: formData.reason }, done('User(s) banned!', '.ban', true)); + socket.emit('user.banUsers', { uids: uids, until: until, reason: formData.reason }, done('[[admin/manage/users:alerts.ban-success]]', '.ban', true)); } } } @@ -116,7 +116,7 @@ define('admin/manage/users', ['translator'], function (translator) { return false; // specifically to keep the menu open } - socket.emit('user.unbanUsers', uids, done('User(s) unbanned!', '.ban', false)); + socket.emit('user.unbanUsers', uids, done('[[admin/manage/users:alerts.unban-success]]', '.ban', false)); }); $('.reset-lockout').on('click', function () { @@ -125,7 +125,7 @@ define('admin/manage/users', ['translator'], function (translator) { return; } - socket.emit('admin.user.resetLockouts', uids, done('Lockout(s) reset!')); + socket.emit('admin.user.resetLockouts', uids, done('[[admin/manage/users:alerts.lockout-reset-success]]')); }); $('.reset-flags').on('click', function () { @@ -134,7 +134,7 @@ define('admin/manage/users', ['translator'], function (translator) { return; } - socket.emit('admin.user.resetFlags', uids, done('Flags(s) reset!')); + socket.emit('admin.user.resetFlags', uids, done('[[admin/manage/users:alerts.flag-reset-success]]')); }); $('.admin-user').on('click', function () { @@ -144,9 +144,9 @@ define('admin/manage/users', ['translator'], function (translator) { } if (uids.indexOf(app.user.uid.toString()) !== -1) { - app.alertError('You can\'t remove yourself as Administrator!'); + app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]'); } else { - socket.emit('admin.user.makeAdmins', uids, done('User(s) are now administrators.', '.administrator', true)); + socket.emit('admin.user.makeAdmins', uids, done('[[admin/manage/users:alerts.make-admin-success]]', '.administrator', true)); } }); @@ -157,11 +157,11 @@ define('admin/manage/users', ['translator'], function (translator) { } if (uids.indexOf(app.user.uid.toString()) !== -1) { - app.alertError('You can\'t remove yourself as Administrator!'); + app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]'); } else { - bootbox.confirm('Do you really want to remove admins?', function (confirm) { + bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-admin]]', function (confirm) { if (confirm) { - socket.emit('admin.user.removeAdmins', uids, done('User(s) are no longer administrators.', '.administrator', false)); + socket.emit('admin.user.removeAdmins', uids, done('[[admin/manage/users:alerts.remove-admin-success]]', '.administrator', false)); } }); } @@ -173,7 +173,7 @@ define('admin/manage/users', ['translator'], function (translator) { return; } - bootbox.confirm('Do you want to validate email(s) of these user(s)?', function (confirm) { + bootbox.confirm('[[admin/manage/users:alerts.confirm-validate-email]]', function (confirm) { if (!confirm) { return; } @@ -181,7 +181,7 @@ define('admin/manage/users', ['translator'], function (translator) { if (err) { return app.alertError(err.message); } - app.alertSuccess('Emails validated'); + app.alertSuccess('[[admin/manage/users:alerts.validate-email-success]]'); update('.notvalidated', false); update('.validated', true); unselectAll(); @@ -208,9 +208,9 @@ define('admin/manage/users', ['translator'], function (translator) { return; } - bootbox.confirm('Do you want to send password reset email(s) to these user(s)?', function (confirm) { + bootbox.confirm('[[admin/manage/users:alerts.password-reset-confirm]]', function (confirm) { if (confirm) { - socket.emit('admin.user.sendPasswordResetEmail', uids, done('Emails sent')); + socket.emit('admin.user.sendPasswordResetEmail', uids, done('[[notifications:email-confirm-sent]]')); } }); }); @@ -221,14 +221,14 @@ define('admin/manage/users', ['translator'], function (translator) { return; } - bootbox.confirm('Warning!
    Do you really want to delete user(s)?
    This action is not reversable, only the user account will be deleted, their posts and topics will not be deleled!', function (confirm) { + bootbox.confirm('[[admin/manage/users:alerts.confirm-delete]]', function (confirm) { if (confirm) { socket.emit('admin.user.deleteUsers', uids, function (err) { if (err) { return app.alertError(err.message); } - app.alertSuccess('User(s) Deleted!'); + app.alertSuccess('[[admin/manage/users:alerts.delete-success]]'); removeSelected(); unselectAll(); }); @@ -241,14 +241,14 @@ define('admin/manage/users', ['translator'], function (translator) { if (!uids.length) { return; } - bootbox.confirm('Warning!
    Do you really want to delete user(s) and their content?
    This action is not reversable, all user data and content will be erased!', function (confirm) { + bootbox.confirm('[[admin/manage/users:alerts.confirm-purge]]', function (confirm) { if (confirm) { socket.emit('admin.user.deleteUsersAndContent', uids, function (err) { if (err) { return app.alertError(err.message); } - app.alertSuccess('User(s) Deleted!'); + app.alertSuccess('[[admin/manage/users:alerts.delete-success]]'); removeSelected(); unselectAll(); }); @@ -259,26 +259,24 @@ define('admin/manage/users', ['translator'], function (translator) { function handleUserCreate() { $('#createUser').on('click', function () { templates.parse('admin/partials/create_user_modal', {}, function (html) { - translator.translate(html, function (html) { - bootbox.dialog({ - message: html, - title: 'Create User', - onEscape: true, - buttons: { - cancel: { - label: 'Cancel', - className: 'btn-link' - }, - create: { - label: 'Create', - className: 'btn-primary', - callback: function () { - createUser.call(this); - return false; - } + bootbox.dialog({ + message: html, + title: '[[admin/manage/users:alerts.create]]', + onEscape: true, + buttons: { + cancel: { + label: '[[admin/manage/users:alerts.button-cancel]]', + className: 'btn-link' + }, + create: { + label: '[[admin/manage/users:alerts.button-create]]', + className: 'btn-primary', + callback: function () { + createUser.call(this); + return false; } } - }); + } }); }); }); @@ -294,7 +292,7 @@ define('admin/manage/users', ['translator'], function (translator) { var errorEl = $('#create-modal-error'); if (password !== passwordAgain) { - return errorEl.html('Error

    Passwords must match!

    ').removeClass('hide'); + return errorEl.translateHtml('[[admin/manage/users:alerts.error-x, [[admin/manage/users:alerts.error-passwords-different]]]]').removeClass('hide'); } var user = { @@ -305,14 +303,14 @@ define('admin/manage/users', ['translator'], function (translator) { socket.emit('admin.user.createUser', user, function (err) { if(err) { - return errorEl.translateHtml('Error

    ' + err.message + '

    ').removeClass('hide'); + return errorEl.translateHtml('[[admin/manage/users:alerts.error-x, ' + err.message + ']]').removeClass('hide'); } modal.modal('hide'); modal.on('hidden.bs.modal', function () { ajaxify.refresh(); }); - app.alertSuccess('User created!'); + app.alertSuccess('[[admin/manage/users:alerts.create-success]]'); }); } @@ -344,12 +342,12 @@ define('admin/manage/users', ['translator'], function (translator) { $('.fa-spinner').addClass('hidden'); if (data && data.users.length === 0) { - $('#user-notfound-notify').html('User not found!') + $('#user-notfound-notify').translateHtml('[[admin/manage/users:search.not-found]]') .removeClass('hide') .addClass('label-danger') .removeClass('label-success'); } else { - $('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.') + $('#user-notfound-notify').translateHtml(translator.compile('admin/manage/users:alerts.x-users-found', data.users.length, data.timing)) .removeClass('hide') .addClass('label-success') .removeClass('label-danger'); @@ -368,7 +366,7 @@ define('admin/manage/users', ['translator'], function (translator) { function handleInvite() { $('[component="user/invite"]').on('click', function () { - bootbox.prompt('Email: ', function (email) { + bootbox.prompt('[[admin/manage/users:alerts.prompt-email]]', function (email) { if (!email) { return; } @@ -377,7 +375,7 @@ define('admin/manage/users', ['translator'], function (translator) { if (err) { return app.alertError(err.message); } - app.alertSuccess('An invitation email has been sent to ' + email); + app.alertSuccess('[[admin/manage/users:alerts.email-sent-to, ' + email + ']]'); }); }); }); diff --git a/src/views/admin/manage/flags.tpl b/src/views/admin/manage/flags.tpl index a14348ba42..542c0587ca 100644 --- a/src/views/admin/manage/flags.tpl +++ b/src/views/admin/manage/flags.tpl @@ -10,7 +10,7 @@

    - + @@ -18,8 +18,8 @@
    - - + +
    @@ -27,7 +27,7 @@
    - + - - + +
    - + @@ -61,7 +61,7 @@
    - No flagged posts! + [[admin/manage/flags:none-flagged]]
    @@ -106,14 +106,16 @@
    - Posted in {posts.category.name}, • - Read More + [[posted-in, {posts.category.name}]], + • + [[admin/manage/flags:read-more]]
    - This post has been flagged {posts.flags} time(s): + + [[admin/manage/flags:flagged-x-times, {posts.flags}]]
      @@ -131,8 +133,12 @@
    - - + +
    @@ -141,7 +147,9 @@
    - +
    - +
    - +
    - +
    [[topic:flag_manage_history]]
    -
    [[topic:flag_manage_no_history]]
    +
    + [[topic:flag_manage_no_history]] +