diff --git a/locales/en.json b/locales/en.json index 1a898ee2..c37b6542 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1,6 +1,5 @@ { ".html name": ".html name", - "'Malformed IP": "'Malformed IP", "(You)": "(You)", "(You)s": "(You)s", "%s characters": { @@ -121,6 +120,13 @@ "Add layer": "Add layer", "Add News": "Add News", "Add Staff": "Add Staff", + "Added %s bans": { + "one": "Added %s ban", + "other": "Added %s bans" + }, + "Added custom page": "Added custom page", + "Added newspost": "Added newspost", + "Added staff": "Added staff", "Admin": "Admin", "Airbrush": "Airbrush", "alphanumeric only": "alphanumeric only", @@ -137,6 +143,10 @@ "one": "Asset", "other": "Assets" }, + "Asset already exist": { + "one": "Asset already exists", + "other": "Assets already exist" + }, "Assets": "Assets", "Attempting to reconnect...": "Attempting to reconnect...", "Bad request": "Bad request", @@ -200,6 +210,7 @@ "Code theme": "Code theme", "Color": "Color", "comma separated": "comma separated", + "Completed block bypass, you may go back and make your post.": "Completed block bypass, you may go back and make your post.", "Confirm New Password": "Confirm New Password", "Confirm Password": "Confirm Password", "Connected for live posts": "Connected for live posts", @@ -352,6 +363,9 @@ "Inline Monospace": "Inline Monospace", "Internal server error": "Internal server error", "Invalid dimensions.": "Invalid dimensions.", + "Invalid file \"%s\". Max banner dimensions are %sx%s and must be a 3:1 aspect ratio.": "Invalid file \"%s\". Max banner dimensions are %sx%s and must be a 3:1 aspect ratio.", + "Invalid file \"%s\". Max banner dimensions are %sx%s.": "Invalid file \"%s\". Max banner dimensions are %sx%s.", + "Invalid file type for %s. Mimetype %s not allowed.": "Invalid file type for %s. Mimetype %s not allowed.", "Invalid or missing \"Referer\" header. Are you posting from the correct URL?": "Invalid or missing \"Referer\" header. Are you posting from the correct URL?", "IP": "IP", "IP/Hash": "IP/Hash", @@ -386,6 +400,7 @@ "Loop audio/video": "Loop audio/video", "Make links clickable": "Make links clickable", "Malformed input": "Malformed input", + "Malformed IP": "'Malformed IP", "Manage": "Manage", "Manage Custom Pages": "Manage Custom Pages", "Manage News": "Manage News", @@ -403,6 +418,7 @@ "Merge layers": "Merge layers", "Merge selected layers?": "Merge selected layers?", "Message": "Message", + "Mime type mismatch for file \"%s\"": "Mime type mismatch for file \"%s\"", "Missing file extensions": "Missing file extensions", "Mod Catalog": "Mod Catalog", "Mod Index": "Mod Index", @@ -433,6 +449,7 @@ "No news.": "No news.", "No Permission": "No Permission", "No posts.": "No posts.", + "No reason specified": "No reason specified", "No reports.": "No reports.", "No results.": "No results.", "No video/audio files in this thread.": "No video/audio files in this thread.", @@ -604,6 +621,18 @@ "Update": "Update", "Updated": "Updated", "Upgrade Ban": "Upgrade Ban", + "Uploaded %s new assets.": { + "one": "Uploaded %s new asset.", + "other": "Uploaded %s new assets." + }, + "Uploaded %s new banners.": { + "one": "Uploaded %s new banner.", + "other": "Uploaded %s new banners." + }, + "Uploaded %s new flags.": { + "one": "Uploaded %s new flag.", + "other": "Uploaded %s new flags." + }, "URI e.g. /uri/": "URI e.g. /uri/", "URI or tags": "URI or tags", "Use bold": "Use bold", @@ -643,4 +672,4 @@ "Your request was blocked because your IP address is listed on a blacklist.": "Your request was blocked because your IP address is listed on a blacklist.", "Your upload was too large": "Your upload was too large", "Zoom": "Zoom" -} +} \ No newline at end of file diff --git a/locales/pt.json b/locales/pt.json index ff5aa6f1..f6d8122d 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -1,6 +1,5 @@ { ".html name": ".html nome", - "'Malformed IP": "'Malformed IP", "(You)": "(You)", "(You)s": "(You)s", "%s characters": { @@ -121,6 +120,13 @@ "Add layer": "Adicionar camada", "Add News": "Add News", "Add Staff": "Adicionar Staff", + "Added %s bans": { + "one": "Added %s ban", + "other": "Added %s bans" + }, + "Added custom page": "Added custom page", + "Added newspost": "Added newspost", + "Added staff": "Added staff", "Admin": "Admin", "Airbrush": "Aerógrafo", "alphanumeric only": "Alfanumérico apenas", @@ -137,6 +143,10 @@ "one": "Asset", "other": "Assets" }, + "Asset already exist": { + "one": "Asset already exists", + "other": "Assets already exist" + }, "Assets": "Assets", "Attempting to reconnect...": "A ligar...", "Bad request": "Bad request", @@ -200,6 +210,7 @@ "Code theme": "Tema código", "Color": "Cor", "comma separated": "separado por vírgula", + "Completed block bypass, you may go back and make your post.": "Completed block bypass, you may go back and make your post.", "Confirm New Password": "Confirm New Password", "Confirm Password": "Confirmar Password", "Connected for live posts": "Ligado", @@ -352,6 +363,9 @@ "Inline Monospace": "Inline Monospace", "Internal server error": "Erro interno do servidor", "Invalid dimensions.": "Dimensões invalidas.", + "Invalid file \"%s\". Max banner dimensions are %sx%s and must be a 3:1 aspect ratio.": "Invalid file \"%s\". Max banner dimensions are %sx%s and must be a 3:1 aspect ratio.", + "Invalid file \"%s\". Max banner dimensions are %sx%s.": "Invalid file \"%s\". Max banner dimensions are %sx%s.", + "Invalid file type for %s. Mimetype %s not allowed.": "Invalid file type for %s. Mimetype %s not allowed.", "Invalid or missing \"Referer\" header. Are you posting from the correct URL?": "Invalid or missing \"Referer\" header. Are you posting from the correct URL?", "IP": "IP", "IP/Hash": "IP/Hash", @@ -386,6 +400,7 @@ "Loop audio/video": "Loop áudio/vídeo", "Make links clickable": "Make links clickable", "Malformed input": "Malformed input", + "Malformed IP": "'Malformed IP", "Manage": "Gerir", "Manage Custom Pages": "Gerir Páginas", "Manage News": "Manage News", @@ -403,6 +418,7 @@ "Merge layers": "Fundir camadas", "Merge selected layers?": "Fundir camadas selecionadas?", "Message": "Mensagem", + "Mime type mismatch for file \"%s\"": "Mime type mismatch for file \"%s\"", "Missing file extensions": "Missing file extensions", "Mod Catalog": "Mod Catálogo", "Mod Index": "Mod Index", @@ -433,6 +449,7 @@ "No news.": "Sem notícias.", "No Permission": "No Permission", "No posts.": "Sem publicações.", + "No reason specified": "No reason specified", "No reports.": "Sem denúncias.", "No results.": "No results.", "No video/audio files in this thread.": "No video/audio files in this thread.", @@ -604,6 +621,18 @@ "Update": "Atualizar", "Updated": "Atualizado", "Upgrade Ban": "Alterar Range", + "Uploaded %s new assets.": { + "one": "Uploaded %s new asset.", + "other": "Uploaded %s new assets." + }, + "Uploaded %s new banners.": { + "one": "Uploaded %s new banner.", + "other": "Uploaded %s new banners." + }, + "Uploaded %s new flags.": { + "one": "Uploaded %s new flag.", + "other": "Uploaded %s new flags." + }, "URI e.g. /uri/": "URI e.g. /uri/", "URI or tags": "URI or tags", "Use bold": "Use bold", diff --git a/locales/ru.json b/locales/ru.json index 0a90d3b0..1ee0aa45 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -1,6 +1,5 @@ { ".html name": ".html name", - "'Malformed IP": "'Неправильный IP", "(You)": "(Вы)", "(You)s": "(Вы) s", "%s characters": { @@ -121,6 +120,13 @@ "Add layer": "Добавить слой", "Add News": "Добавить новости", "Add Staff": "Добавить персонал", + "Added %s bans": { + "one": "Добавлен %s бан", + "other": "Добавлено %s запретов" + }, + "Added custom page": "Добавлена пользовательская страница", + "Added newspost": "Добавлена публикация новостей", + "Added staff": "Добавленный персонал", "Admin": "Администратор", "Airbrush": "Аэрография", "alphanumeric only": "только буквенно-цифровой", @@ -137,6 +143,10 @@ "one": "Актив", "other": "Активы" }, + "Asset already exist": { + "one": "Актив уже существует", + "other": "Активы уже существуют" + }, "Assets": "Активы", "Attempting to reconnect...": "Попытка повторного подключения ...", "Bad request": "Неверный запрос", @@ -200,6 +210,7 @@ "Code theme": "Тема кода", "Color": "Цвет", "comma separated": "через запятую", + "Completed block bypass, you may go back and make your post.": "Завершив обход блока, вы можете вернуться и сделать свой пост.", "Confirm New Password": "Подтвердить новый пароль", "Confirm Password": "Подтвердить пароль", "Connected for live posts": "Подключено для живые сообщения", @@ -352,6 +363,9 @@ "Inline Monospace": "Встроенное моноширинное пространство", "Internal server error": "Внутренняя ошибка сервера", "Invalid dimensions.": "Недопустимые измерения", + "Invalid file \"%s\". Max banner dimensions are %sx%s and must be a 3:1 aspect ratio.": "Недопустимый файл \"%s\". Максимальные размеры баннера составляют %sx%s и должны иметь соотношение сторон 3:1.", + "Invalid file \"%s\". Max banner dimensions are %sx%s.": "Недопустимый файл \"%s\". Максимальные размеры баннера составляют %sx%s.", + "Invalid file type for %s. Mimetype %s not allowed.": "Недопустимый тип файла для %s. Mimetype %s не разрешен.", "Invalid or missing \"Referer\" header. Are you posting from the correct URL?": "Недопустимый или отсутствующий заголовок \"Refererer\". Вы отправляете сообщения с правильного URL-адреса?", "IP": "IP", "IP/Hash": "IP / Hash", @@ -386,6 +400,7 @@ "Loop audio/video": "Цикл аудио / видео", "Make links clickable": "Сделать ссылки интерактивными", "Malformed input": "Неправильный ввод", + "Malformed IP": "'Неправильный IP", "Manage": "Управление", "Manage Custom Pages": "Управление пользовательскими страницами", "Manage News": "Управление новостями", @@ -403,6 +418,7 @@ "Merge layers": "Объединить слои", "Merge selected layers?": "Объединить выбранные слои?", "Message": "Сообщение", + "Mime type mismatch for file \"%s\"": "Несоответствие типа Mime для файла \"%s\"", "Missing file extensions": "Отсутствующие расширения файлов", "Mod Catalog": "Каталог модов", "Mod Index": "Индекс модов", @@ -433,6 +449,7 @@ "No news.": "Нет новостей", "No Permission": "Нет разрешения", "No posts.": "Нет сообщений.", + "No reason specified": "Причина не указана", "No reports.": "Нет отчетов.", "No results.": "Нет результатов.", "No video/audio files in this thread.": "Нет видео / аудио файлов в этой теме.", @@ -604,6 +621,18 @@ "Update": "Обновить", "Updated": "Обновлено", "Upgrade Ban": "Запрет на обновление", + "Uploaded %s new assets.": { + "one": "загружен %s новый актив.", + "other": "загружено %s новых активов." + }, + "Uploaded %s new banners.": { + "one": "загружен 1 новый баннер.", + "other": "загружено %s новых баннеров." + }, + "Uploaded %s new flags.": { + "one": "загружен %s новый флаг.", + "other": "загружено %s новых флагов." + }, "URI e.g. /uri/": "URI, например / uri /", "URI or tags": "URI или теги", "Use bold": "Использовать жирный шрифт", @@ -643,4 +672,4 @@ "Your request was blocked because your IP address is listed on a blacklist.": "Ваш запрос был заблокирован, потому что ваш IP-адрес внесен в черный список.", "Your upload was too large": "Ваша загрузка была слишком большой", "Zoom": "Увеличить" -} +} \ No newline at end of file diff --git a/models/forms/addassets.js b/models/forms/addassets.js index 116deb8e..59851900 100644 --- a/models/forms/addassets.js +++ b/models/forms/addassets.js @@ -24,8 +24,8 @@ module.exports = async (req, res) => { })) { await deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Invalid file type for ${req.files.file[i].name}. Mimetype ${req.files.file[i].mimetype} not allowed.`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__('Invalid file type for %s. Mimetype %s not allowed.', req.files.file[i].name, req.files.file[i].mimetype), 'redirect': redirect }); } @@ -34,8 +34,8 @@ module.exports = async (req, res) => { if (!(await mimeTypes.realMimeCheck(req.files.file[i]))) { deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Mime type mismatch for file "${req.files.file[i].name}"`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__('Mime type mismatch for file "%s"', req.files.file[i].name), 'redirect': redirect }); } @@ -71,8 +71,8 @@ module.exports = async (req, res) => { // no new assets if (filenames.length === 0) { return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Asset${res.locals.numFiles > 1 ? 's' : ''} already exist${res.locals.numFiles > 1 ? '' : 's'}`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__n('Asset already exist', res.locals.numFiles), 'redirect': redirect }); } @@ -85,7 +85,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'title': res.locals.__('Success'), - 'message': `Uploaded ${filenames.length} new assets.`, + 'message': res.locals.__n('Uploaded %s new assets.', filenames.length), 'redirect': redirect }); diff --git a/models/forms/addcustompage.js b/models/forms/addcustompage.js index c7df5a4c..ff57d917 100644 --- a/models/forms/addcustompage.js +++ b/models/forms/addcustompage.js @@ -37,7 +37,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'title': res.locals.__('Success'), - 'message': 'Added custom page', + 'message': res.locals.__('Added custom page'), 'redirect': `/${req.params.board}/manage/custompages.html` }); diff --git a/models/forms/addflags.js b/models/forms/addflags.js index 69493453..e2ecb341 100644 --- a/models/forms/addflags.js +++ b/models/forms/addflags.js @@ -28,8 +28,8 @@ module.exports = async (req, res) => { })) { await deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Invalid file type for ${req.files.file[i].name}. Mimetype ${req.files.file[i].mimetype} not allowed.`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__('Invalid file type for %s. Mimetype %s not allowed.', req.files.file[i].name, req.files.file[i].mimetype), 'redirect': redirect }); } @@ -41,8 +41,8 @@ module.exports = async (req, res) => { if (!(await mimeTypes.realMimeCheck(req.files.file[i]))) { deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Mime type mismatch for file "${req.files.file[i].name}"`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__('Mime type mismatch for file "%s"', req.files.file[i].name), 'redirect': redirect }); } @@ -96,7 +96,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'title': res.locals.__('Success'), - 'message': `Uploaded ${res.locals.numFiles} new flags.`, + 'message': res.locals.__('Uploaded %s new flags.', res.locals.numFiles), 'redirect': redirect }); diff --git a/models/forms/addnews.js b/models/forms/addnews.js index 024a370b..0519fd7c 100644 --- a/models/forms/addnews.js +++ b/models/forms/addnews.js @@ -30,7 +30,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'title': res.locals.__('Success'), - 'message': 'Added newspost', + 'message': res.locals.__('Added newspost'), 'redirect': '/globalmanage/news.html' }); diff --git a/models/forms/addstaff.js b/models/forms/addstaff.js index b61c81f7..b25cc04d 100644 --- a/models/forms/addstaff.js +++ b/models/forms/addstaff.js @@ -13,7 +13,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'title': res.locals.__('Success'), - 'message': 'Added staff', + 'message': res.locals.__('Added staff'), 'redirect': `/${req.params.board}/manage/staff.html`, }); diff --git a/models/forms/banposter.js b/models/forms/banposter.js index 16e60f32..be1df492 100644 --- a/models/forms/banposter.js +++ b/models/forms/banposter.js @@ -8,7 +8,7 @@ module.exports = async (req, res) => { const { defaultBanDuration } = config.get; const banDate = new Date(); const banExpiry = new Date(banDate.getTime() + (req.body.ban_duration || defaultBanDuration)); //uses config default if missing or malformed - const banReason = req.body.ban_reason || req.body.log_message || 'No reason specified'; + const banReason = req.body.ban_reason || req.body.log_message || res.locals.__('No reason specified'); const allowAppeal = (req.body.no_appeal || req.body.ban_q || req.body.ban_h) ? false : true; //dont allow appeals for range bans const bans = []; @@ -105,7 +105,7 @@ module.exports = async (req, res) => { const numBans = await Bans.insertMany(bans).then(result => result.insertedCount); const query = { - message: `Added ${numBans} bans`, + message: res.locals.__n('Added %s bans', numBans), }; if ((req.body.ban || req.body.global_ban ) && req.body.ban_reason) { diff --git a/models/forms/blockbypass.js b/models/forms/blockbypass.js index 5bd1ce8d..82ee8445 100644 --- a/models/forms/blockbypass.js +++ b/models/forms/blockbypass.js @@ -23,7 +23,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'minimal': req.body.minimal, 'title': res.locals.__('Success'), - 'message': 'Completed block bypass, you may go back and make your post.', + 'message': res.locals.__('Completed block bypass, you may go back and make your post.'), }); }; diff --git a/models/forms/bumplockposts.js b/models/forms/bumplockposts.js index c66905a0..501133e0 100644 --- a/models/forms/bumplockposts.js +++ b/models/forms/bumplockposts.js @@ -10,7 +10,7 @@ module.exports = (posts) => { if (filteredposts.length === 0) { return { - message: 'No thread(s) to bumplock', + message: 'No threads to bumplock', }; } diff --git a/models/forms/uploadbanners.js b/models/forms/uploadbanners.js index a5890d24..99a98898 100644 --- a/models/forms/uploadbanners.js +++ b/models/forms/uploadbanners.js @@ -27,8 +27,8 @@ module.exports = async (req, res) => { })) { await deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Invalid file type for ${req.files.file[i].name}. Mimetype ${req.files.file[i].mimetype} not allowed.`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__('Invalid file type for %s. Mimetype %s not allowed.', req.files.file[i].name, req.files.file[i].mimetype), 'redirect': redirect }); } @@ -38,8 +38,8 @@ module.exports = async (req, res) => { if (!(await mimeTypes.realMimeCheck(req.files.file[i]))) { deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Mime type mismatch for file "${req.files.file[i].name}"`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__('Mime type mismatch for file "%s"', req.files.file[i].name), 'redirect': redirect }); } @@ -57,8 +57,8 @@ module.exports = async (req, res) => { && (geometry.width/geometry.height !== 3))) { await deleteTempFiles(req).catch(console.error); return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Invalid file ${req.files.file[i].name}. Max banner dimensions are ${globalLimits.bannerFiles.width}x${globalLimits.bannerFiles.height}${globalLimits.bannerFiles.forceAspectRatio === true ? ' and must be a 3:1 aspect ratio' : '' }.`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__(`Invalid file "%s". Max banner dimensions are %sx%s${globalLimits.bannerFiles.forceAspectRatio === true ? ' and must be a 3:1 aspect ratio' : '' }.`, req.files.file[i].name, globalLimits.bannerFiles.width, globalLimits.bannerFiles.height), 'redirect': redirect }); } @@ -93,8 +93,8 @@ module.exports = async (req, res) => { // no new banners if (filenames.length === 0) { return dynamicResponse(req, res, 400, 'message', { - 'title': 'Bad request', - 'message': `Banner${res.locals.numFiles > 1 ? 's' : ''} already exist${res.locals.numFiles > 1 ? '' : 's'}`, + 'title': res.locals.__('Bad request'), + 'message': res.locals.__n('Banner already exist', res.locals.numFiles), 'redirect': redirect }); } @@ -117,7 +117,7 @@ module.exports = async (req, res) => { return dynamicResponse(req, res, 200, 'message', { 'title': res.locals.__('Success'), - 'message': `Uploaded ${filenames.length} new banners.`, + 'message': res.locals.__n('Uploaded %s new banners.', filenames.length), 'redirect': redirect });