diff --git a/package.json b/package.json
index fbe4ad5246..dcf8d58a27 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"mousetrap": "^1.5.3",
"nconf": "~0.8.2",
"nodebb-plugin-composer-default": "5.0.1",
- "nodebb-plugin-dbsearch": "2.0.4",
+ "nodebb-plugin-dbsearch": "2.0.6",
"nodebb-plugin-emoji-extended": "1.1.1",
"nodebb-plugin-emoji-one": "1.2.1",
"nodebb-plugin-markdown": "8.0.0",
@@ -65,9 +65,9 @@
"nodebb-plugin-spam-be-gone": "0.5.0",
"nodebb-rewards-essentials": "0.0.9",
"nodebb-theme-lavender": "4.0.5",
- "nodebb-theme-persona": "5.0.12",
+ "nodebb-theme-persona": "5.0.13",
"nodebb-theme-slick": "1.1.0",
- "nodebb-theme-vanilla": "6.0.9",
+ "nodebb-theme-vanilla": "6.0.10",
"nodebb-widget-essentials": "3.0.0",
"nodemailer": "2.6.4",
"nodemailer-sendmail-transport": "1.0.0",
diff --git a/public/language/en-GB/admin/extend/plugins.json b/public/language/en-GB/admin/extend/plugins.json
index 1661a987b7..cf80583db4 100644
--- a/public/language/en-GB/admin/extend/plugins.json
+++ b/public/language/en-GB/admin/extend/plugins.json
@@ -12,11 +12,11 @@
"reorder-plugins": "Re-order Plugins",
"order-active": "Order Active Plugins",
"dev-interested": "Interested in writing plugins for NodeBB?",
- "docs-info": "Full documentation regarding plugin authoring can be found in the NodeBB Docs Portal.",
+ "docs-info": "Full documentation regarding plugin authoring can be found in the NodeBB Docs Portal.",
"order.description": "Certain plugins work ideally when they are initialised before/after other plugins.",
"order.explanation": "Plugins load in the order specified here, from top to bottom",
-
+
"plugin-item.themes": "Themes",
"plugin-item.deactivate": "Deactivate",
"plugin-item.activate": "Activate",
diff --git a/public/language/en-GB/admin/general/dashboard.json b/public/language/en-GB/admin/general/dashboard.json
index 61f4421fb5..9f1c6d8a4e 100644
--- a/public/language/en-GB/admin/general/dashboard.json
+++ b/public/language/en-GB/admin/general/dashboard.json
@@ -18,13 +18,13 @@
"stats.week": "Week",
"stats.month": "Month",
"stats.all": "All Time",
-
+
"updates": "Updates",
"running-version": "You are running NodeBB v%1.",
"keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
"up-to-date": "
You are up-to-date
",
- "upgrade-available": "A new version (v%1) has been released. Consider upgrading your NodeBB.
",
- "prerelease-upgrade-available": "This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider upgrading your NodeBB.
",
+ "upgrade-available": "A new version (v%1) has been released. Consider upgrading your NodeBB.
",
+ "prerelease-upgrade-available": "This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider upgrading your NodeBB.
",
"prerelease-warning": "This is a pre-release version of NodeBB. Unintended bugs may occur.
",
"running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.",
diff --git a/public/language/he/error.json b/public/language/he/error.json
index f5e33a6e10..4a7e36b65e 100644
--- a/public/language/he/error.json
+++ b/public/language/he/error.json
@@ -49,7 +49,7 @@
"post-edit-duration-expired-minutes": "הנך רשאי לערוך תגובה עד %1 דקות מרגע פרסום התגובה.",
"post-edit-duration-expired-minutes-seconds": "הנך רשאי לערוך תגובה עד %1 דקות %2 ושניות מרגע פרסום התגובה.",
"post-edit-duration-expired-hours": "אתה מורשה לערוך פוסטים רק %1 שעות אחרי הפרסום.",
- "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "הנך רשאי לערוך פוסט למשך %1 שעות %2 דקות מרגע פרסומו.",
"post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
"post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"post-delete-duration-expired": "You are only allowed to delete posts for %1 second(s) after posting",
@@ -75,8 +75,8 @@
"still-uploading": "אנא המתן לסיום ההעלאות",
"file-too-big": "הגודל המקסימלי של הקובץ הוא %1 קילובייט - אנא העלה קובץ קטן יותר",
"guest-upload-disabled": "העלאת אורחים אינה מאופשרת",
- "already-bookmarked": "You have already bookmarked this post",
- "already-unbookmarked": "You have already unbookmarked this post",
+ "already-bookmarked": "כבר הוספת פוסט זה לרשימת המסומנים",
+ "already-unbookmarked": "כבר הסרת פוסט זה מרשימת המסומנים",
"cant-ban-other-admins": "אינך יכול לחסום מנהלים אחרים!",
"cant-remove-last-admin": "אתה המנהל היחיד. הוסף משתמש אחר לניהול לפני שאתה מוריד את עצמך מניהול",
"cant-delete-admin": "משתמש זה מוגדר כמנהל. על מנת למחוק את המשתמש, עליך להסיר קודם את גישותיו.",
diff --git a/public/language/pt-BR/admin/appearance/customise.json b/public/language/pt-BR/admin/appearance/customise.json
index b09feb1da0..b03e02e9f3 100644
--- a/public/language/pt-BR/admin/appearance/customise.json
+++ b/public/language/pt-BR/admin/appearance/customise.json
@@ -7,6 +7,6 @@
"custom-header.description": "Adicione HTML pessoal aqui (ex. JavaScript, Meta Tags, Tags, etc), os quais serão acrescentados ao final da seção <head>
do markup do seu fórum.",
"custom-header.enable": "Ligar o Cabeçalho Personalizado",
- "custom-css.livereload": "Enable Live Reload",
- "custom-css.livereload.description": "Enable this to force all sessions on every device under your account to refresh whenever you click save"
+ "custom-css.livereload": "Habilitar Recarregamento Automático",
+ "custom-css.livereload.description": "Ligue isso para forçar com que todas as sessões em todos os dispositivos em tua conta atualizem quando quer que você clique em salvar"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/admin/development/info.json b/public/language/pt-BR/admin/development/info.json
index 4d754e5d85..f877120a7f 100644
--- a/public/language/pt-BR/admin/development/info.json
+++ b/public/language/pt-BR/admin/development/info.json
@@ -1,12 +1,12 @@
{
"you-are-on": "Informação - Você está em %1:%2",
- "nodes-responded": "%1 nodes responded within %2ms!",
+ "nodes-responded": "%1 nodes respondidos dentro de %2ms!",
"host": "host",
"pid": "pid",
"nodejs": "nodejs",
"online": "online",
"git": "git",
- "memory": "memory",
+ "memory": "memória",
"load": "carregar",
"uptime": "tempo rodando",
diff --git a/public/language/pt-BR/admin/general/dashboard.json b/public/language/pt-BR/admin/general/dashboard.json
index c6621b2593..8f28d3d0fb 100644
--- a/public/language/pt-BR/admin/general/dashboard.json
+++ b/public/language/pt-BR/admin/general/dashboard.json
@@ -5,14 +5,14 @@
"users": "Usuários",
"posts": "Posts",
"topics": "Tópicos",
- "page-views-seven": "Last 7 Days",
- "page-views-thirty": "Last 30 Days",
- "page-views-last-day": "Last 24 hours",
- "page-views-custom": "Custom Date Range",
- "page-views-custom-start": "Range Start",
- "page-views-custom-end": "Range End",
- "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD
",
- "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD
",
+ "page-views-seven": "Últimos 7 Dias",
+ "page-views-thirty": "Últimos 30 Dias",
+ "page-views-last-day": "Últimas 24 horas",
+ "page-views-custom": "Alcançe de Data Personalizado",
+ "page-views-custom-start": "Ínicio do Alcance",
+ "page-views-custom-end": "Fim do Alcance",
+ "page-views-custom-help": "Entre uma data de alcance de visualizações de página que você quer ver. Se nenhum selecionador de data estiver disponível, o formato aceito é AAAA-MM-DD
",
+ "page-views-custom-error": "Por favor entre com um alcance de data válido no formato AAAA-MM-DD
",
"stats.day": "Dia",
"stats.week": "Semana",
@@ -26,7 +26,7 @@
"upgrade-available": "Uma nova versão (v%1) foi lançada. Leve em consideração atualizar o seu NodeBB.
",
"prerelease-upgrade-available": "Esta versão um pre-release antigo do NodeBB. Uma nova versão (v%1) foi lançada. Leve em consideração atualizar o seu NodeBB.
",
"prerelease-warning": "Esta é uma versão pre-release do NodeBB. Bugs inesperados podem ocorrer.
",
- "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.",
+ "running-in-development": "O fórum está sendo executado em modo de desenvolvedor. O fórum pode estar abrto à potenciais vulnerabilidades; por favor, entre em contato com o seu administrador de sistemas.",
"notices": "Avisos",
"restart-not-required": "Reiniciar não é necessário",
diff --git a/public/language/pt-BR/admin/general/languages.json b/public/language/pt-BR/admin/general/languages.json
index fe5213d0dc..53fa515534 100644
--- a/public/language/pt-BR/admin/general/languages.json
+++ b/public/language/pt-BR/admin/general/languages.json
@@ -2,5 +2,5 @@
"language-settings": "Configurações de Idioma",
"description": "O idioma padrão determina as configurações de idioma para todos os usuários que estiverem visitando o seu fórum.
Usuários individuais podem sobrepor o idioma padrão em sua página de configurações de conta.",
"default-language": "Idioma Padrão",
- "auto-detect": "Auto Detect Language Setting for Guests"
+ "auto-detect": "Auto Detectar Configurações de Idioma para Convidados"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/admin/manage/categories.json b/public/language/pt-BR/admin/manage/categories.json
index f2f06cf835..f63e2d327d 100644
--- a/public/language/pt-BR/admin/manage/categories.json
+++ b/public/language/pt-BR/admin/manage/categories.json
@@ -10,7 +10,7 @@
"custom-class": "Classe Personalizada",
"num-recent-replies": "# de Respostas Recentes",
"ext-link": "Link Externo",
- "is-section": "Treat this category as a section",
+ "is-section": "Trate estacategoria como uma seção",
"upload-image": "Fazer upload de Imagem",
"delete-image": "Remover",
"category-image": "Imagem da Categoria",
diff --git a/public/language/pt-BR/admin/manage/groups.json b/public/language/pt-BR/admin/manage/groups.json
index 6ec69b4ac5..2fb3557563 100644
--- a/public/language/pt-BR/admin/manage/groups.json
+++ b/public/language/pt-BR/admin/manage/groups.json
@@ -1,7 +1,7 @@
{
"name": "Nome do Grupo",
"description": "Descrição do Grupo",
- "member-count": "Member Count",
+ "member-count": "Número de Membros",
"system": "Grupo do Sistema",
"edit": "Editar",
"search-placeholder": "Procurar",
diff --git a/public/language/pt-BR/admin/settings/advanced.json b/public/language/pt-BR/admin/settings/advanced.json
index 87f5545286..8d4cbdf5de 100644
--- a/public/language/pt-BR/admin/settings/advanced.json
+++ b/public/language/pt-BR/admin/settings/advanced.json
@@ -6,7 +6,7 @@
"headers.allow-from": "Defina ALLOW-FROM para Colocar o NodeBB em um iFrame",
"headers.powered-by": "Personalizar o cabeçalho de \"Powered By\" enviado pelo NodeBB",
"headers.acao": "Access-Control-Allow-Origin",
- "headers.acao-help": "To deny access to all sites, leave empty",
+ "headers.acao-help": "Para impedir o acesso à todos os sites, deixe vazio",
"headers.acam": "Access-Control-Allow-Methods",
"headers.acah": "Access-Control-Allow-Headers",
"traffic-management": "Administração de Tráfego",
diff --git a/public/language/pt-BR/admin/settings/general.json b/public/language/pt-BR/admin/settings/general.json
index cccd319950..7d5ec37639 100644
--- a/public/language/pt-BR/admin/settings/general.json
+++ b/public/language/pt-BR/admin/settings/general.json
@@ -28,5 +28,5 @@
"outgoing-links": "Links Externos",
"outgoing-links.warning-page": "Utilizar Página de Aviso de Links Externos",
"search-default-sort-by": "Padrão de ordenação de pesquisa por",
- "outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page"
+ "outgoing-links.whitelist": "Domínios para colocar na lista branca de passar pela página de aviso"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/admin/settings/post.json b/public/language/pt-BR/admin/settings/post.json
index 902000e386..35739bee69 100644
--- a/public/language/pt-BR/admin/settings/post.json
+++ b/public/language/pt-BR/admin/settings/post.json
@@ -29,8 +29,8 @@
"unread": "Configurações de Não-Lidos",
"unread.cutoff": "Data de corte de não-lidos",
"unread.min-track-last": "Mínimo de posts no tópico antes de rastrear o último lido",
- "recent": "Recent Settings",
- "recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page",
+ "recent": "Configurações Recentes",
+ "recent.categoryFilter.disable": "Desailitar filtragem de tópicos em categorias ignoradas na página /recente",
"signature": "Configurações de Assinatura",
"signature.disable": "Desabilitar assinaturas",
"signature.no-links": "Desabilitar links em assinaturas",
diff --git a/public/language/pt-BR/admin/settings/reputation.json b/public/language/pt-BR/admin/settings/reputation.json
index 86d774ff99..3dbd88f69b 100644
--- a/public/language/pt-BR/admin/settings/reputation.json
+++ b/public/language/pt-BR/admin/settings/reputation.json
@@ -2,7 +2,7 @@
"reputation": "Configurações de Reputação",
"disable": "Desabilitar o Sistema de Reputação",
"disable-down-voting": "Desabilitar Baixo Votar",
- "votes-are-public": "All Votes Are Public",
+ "votes-are-public": "Todos os Votos São Públicos",
"thresholds": "Limiares de Atividade",
"min-rep-downvote": "Reputação mínima para votar negativamente em posts",
"min-rep-flag": "Reputação mínima para sinalizar posts"
diff --git a/public/language/pt-BR/admin/settings/user.json b/public/language/pt-BR/admin/settings/user.json
index a849488cc9..ac07df60f3 100644
--- a/public/language/pt-BR/admin/settings/user.json
+++ b/public/language/pt-BR/admin/settings/user.json
@@ -34,12 +34,12 @@
"registration.max-invites": "Máximo de Convites por Usuário",
"max-invites": "Máximo de Convites por Usuário",
"max-invites-help": "0 para nenhuma restrição. Administradores tem convites infinitos
Apenas aplicável para \"Apenas Convite\"",
- "invite-expiration": "Invite expiration",
- "invite-expiration-help": "# of days invitations expire in.",
+ "invite-expiration": "Vencimento do convite",
+ "invite-expiration-help": "núm. de dias em que o convite vence.",
"min-username-length": "Tamanho Mínimo do Nome de Usuário",
"max-username-length": "Tamanho Máximo do Nome de Usuário",
"min-password-length": "Tamanho Mínimo da Senha",
- "min-password-strength": "Minimum Password Strength",
+ "min-password-strength": "Força Mínima da Senha",
"max-about-me-length": "Tamanho Máximo do Sobre Mim",
"terms-of-use": "Termos de Uso do Fórum (Deixar em branco para desabilitar)",
"user-search": "Pesquisa de Usuário",
diff --git a/public/language/pt-BR/email.json b/public/language/pt-BR/email.json
index 766152ee05..b70c27d5c2 100644
--- a/public/language/pt-BR/email.json
+++ b/public/language/pt-BR/email.json
@@ -32,9 +32,9 @@
"notif.post.unsub.info": "Esta notificação de postagem foi enviada para você devido as suas configurações de assinatura.",
"test.text1": "Este é um e-mail de teste, para verificar que o enviador de emails está corretamente configurado no seu NodeBB.",
"unsub.cta": "Clique aqui para alterar estas configurações",
- "banned.subject": "You have been banned from %1",
- "banned.text1": "The user %1 has been banned from %2.",
- "banned.text2": "This ban will last until %1.",
- "banned.text3": "This is the reason why you have been banned:",
+ "banned.subject": "Você foi banido de %1",
+ "banned.text1": "O usuário %1 foi banido de %2.",
+ "banned.text2": "Este banimento dururá até %1.",
+ "banned.text3": "Este é o motivo pelo qual você foi banido:",
"closing": "Obrigado!"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json
index 0463e2ad5e..2b203a4ad3 100644
--- a/public/language/pt-BR/error.json
+++ b/public/language/pt-BR/error.json
@@ -1,6 +1,6 @@
{
"invalid-data": "Dados Inválidos",
- "invalid-json": "Invalid JSON",
+ "invalid-json": "JSON Inválido",
"not-logged-in": "Você não parece estar logado.",
"account-locked": "Sua conta foi temporariamente bloqueada ",
"search-requires-login": "É necessário ter uma conta para pesquisar - por favor efetue o login ou cadastre-se.",
@@ -13,7 +13,7 @@
"invalid-title": "Título inválido!",
"invalid-user-data": "Dados de Usuário Inválidos",
"invalid-password": "Senha Inválida",
- "invalid-login-credentials": "Invalid login credentials",
+ "invalid-login-credentials": "Credenciais de login inválidas",
"invalid-username-or-password": "Por favor especifique ambos nome de usuário e senha",
"invalid-search-term": "Termo de pesquisa inválido",
"csrf-invalid": "Nós não fomos capazes de logá-lo, provavelmente devido à uma sessão expirada. Por favor tente novamente.",
@@ -32,7 +32,7 @@
"password-too-long": "A senha é muito grande",
"user-banned": "Usuário banido",
"user-banned-reason": "Desculpa, esta conta foi banida (Motivo: %1)",
- "user-banned-reason-until": "Sorry, this account has been banned until %1 (Reason: %2)",
+ "user-banned-reason-until": "Desculpe, esta conta foi banida até %1 (Motivo: %2)",
"user-too-new": "Desculpe, é necessário que você aguarde %1 segundo(s) antes de fazer o seu primeiro post.",
"blacklisted-ip": "Desculpe, o seu endereço IP foi banido desta comunidade. Se você acha que isso é um engano, por favor contate um administrador.",
"ban-expiry-missing": "Por favor forneça uma data para o fim deste banimento",
@@ -107,7 +107,7 @@
"chat-disabled": "O sistema de chat foi desabilitado",
"too-many-messages": "Você enviou muitas mensagens, por favor aguarde um momento.",
"invalid-chat-message": "Mensagem de chat inválida",
- "chat-message-too-long": "Chat messages can not be longer than %1 characters.",
+ "chat-message-too-long": "Mensagens de chat não podem ter mais do que %1 caracteres.",
"cant-edit-chat-message": "Você não tem permissão para editar esta mensagem",
"cant-remove-last-user": "Você não pode excluir o último usuário",
"cant-delete-chat-message": "Você não possui permissão para deletar esta mensagem",
diff --git a/public/language/pt-BR/global.json b/public/language/pt-BR/global.json
index f173968642..57cfa84c16 100644
--- a/public/language/pt-BR/global.json
+++ b/public/language/pt-BR/global.json
@@ -104,6 +104,6 @@
"cookies.accept": "Entendi!",
"cookies.learn_more": "Saber Mais",
"edited": "Editado",
- "disabled": "Disabled",
- "select": "Select"
+ "disabled": "Desligado",
+ "select": "Escolha"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/groups.json b/public/language/pt-BR/groups.json
index 9edc536dfa..5c411ec37c 100644
--- a/public/language/pt-BR/groups.json
+++ b/public/language/pt-BR/groups.json
@@ -27,7 +27,7 @@
"details.disableJoinRequests": "Desabilitar pedidos de participação",
"details.grant": "Conceder/Retomar a Posse",
"details.kick": "Chutar",
- "details.kick_confirm": "Are you sure you want to remove this member from the group?",
+ "details.kick_confirm": "Você tem certeza que deseja remover este membro do grupo?",
"details.owner_options": "Administração do Grupo",
"details.group_name": "Nome do Grupo",
"details.member_count": "Número de Membros",
diff --git a/public/language/pt-BR/modules.json b/public/language/pt-BR/modules.json
index 0a2425ce03..9a61633ba3 100644
--- a/public/language/pt-BR/modules.json
+++ b/public/language/pt-BR/modules.json
@@ -20,7 +20,7 @@
"chat.three_months": "3 Meses",
"chat.delete_message_confirm": "Tem certeza que deseja excluir esta mensagem?",
"chat.add-users-to-room": "Adicionar usuários à sala",
- "chat.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?",
+ "chat.confirm-chat-with-dnd-user": "Este usuário definiu seu estado como DnD(Do not disturb─Não perturbe). Você ainda assim quer conversar com ele?",
"composer.compose": "Compor",
"composer.show_preview": "Exibir Pré-visualização",
"composer.hide_preview": "Esconder Pré-visualização",
diff --git a/public/language/pt-BR/notifications.json b/public/language/pt-BR/notifications.json
index 2f2aaed17a..f7a14a5aa1 100644
--- a/public/language/pt-BR/notifications.json
+++ b/public/language/pt-BR/notifications.json
@@ -10,15 +10,15 @@
"return_to": "Voltar para %1",
"new_notification": "Nova Notificação",
"you_have_unread_notifications": "Você possui notificações não lidas.",
- "all": "All",
- "topics": "Topics",
- "replies": "Replies",
- "chat": "Chats",
- "follows": "Follows",
- "upvote": "Upvotes",
- "new-flags": "New Flags",
- "my-flags": "Flags assigned to me",
- "bans": "Bans",
+ "all": "Tudo",
+ "topics": "Tópicos",
+ "replies": "Respostas",
+ "chat": "Conversas",
+ "follows": "Seguindo",
+ "upvote": "Cimavotos",
+ "new-flags": "Novas Sinalizações",
+ "my-flags": "Sinalizações designadas à mim",
+ "bans": "Banimentos",
"new_message_from": "Nova mensagem de %1",
"upvoted_your_post_in": "%1 deu voto positivo para seu post em %2.",
"upvoted_your_post_in_dual": "%1 e %2 deram voto positivo ao seu post em %3.",
@@ -40,7 +40,7 @@
"user_started_following_you_multiple": "%1 e %2 outros começaram a lhe acompanhar.",
"new_register": "%1 lhe enviou um pedido de cadastro.",
"new_register_multiple": "Há %1 pedidos de registro aguardando revisão.",
- "flag_assigned_to_you": "Flag %1 has been assigned to you",
+ "flag_assigned_to_you": "A Sinalização %1 foi desiganada para você",
"email-confirmed": "Email Confirmado",
"email-confirmed-message": "Obrigado por validar o seu email. Agora sua conta está plenamente ativada.",
"email-confirm-error-message": "Houve um problema ao validar o seu endereço de email. Talvez o código era invalido ou tenha expirado.",
diff --git a/public/language/pt-BR/topic.json b/public/language/pt-BR/topic.json
index 8e6ed0aa7e..6ae93feb95 100644
--- a/public/language/pt-BR/topic.json
+++ b/public/language/pt-BR/topic.json
@@ -14,7 +14,7 @@
"quote": "Citar",
"reply": "Responder",
"replies_to_this_post": "%1 Respostas",
- "one_reply_to_this_post": "1 Reply",
+ "one_reply_to_this_post": "1 Resposta",
"last_reply_time": "Última resposta",
"reply-as-topic": "Responder como tópico",
"guest-login-reply": "Entre para responder",
@@ -59,7 +59,7 @@
"thread_tools.unlock": "Destrancar Tópico",
"thread_tools.move": "Mover Tópico",
"thread_tools.move_all": "Mover Tudo",
- "thread_tools.select_category": "Select Category",
+ "thread_tools.select_category": "Escolha a Categoria",
"thread_tools.fork": "Ramificar Tópico",
"thread_tools.delete": "Deletar Tópico",
"thread_tools.delete-posts": "Deletar Posts",
diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json
index e242fc41b4..9b3ff880e8 100644
--- a/public/language/pt-BR/user.json
+++ b/public/language/pt-BR/user.json
@@ -60,7 +60,7 @@
"username_taken_workaround": "O nome de usuário que você escolheu já existia, então nós o alteramos um pouquinho. Agora você é conhecido como %1",
"password_same_as_username": "A sua senha é igual ao seu nome de usuário, por favor escolha outra senha.",
"password_same_as_email": "Tua senha é a mesma que o teu email, por favor escolha outra senha.",
- "weak_password": "Weak password.",
+ "weak_password": "Senha fraca.",
"upload_picture": "Carregar Foto",
"upload_a_picture": "Carregue uma Foto",
"remove_uploaded_picture": "Remover Foto Enviada",
@@ -132,5 +132,5 @@
"info.email-history": "Histórico do Email",
"info.moderation-note": "Nota da Moderação",
"info.moderation-note.success": "Nota da moderação salva",
- "info.moderation-note.add": "Add note"
+ "info.moderation-note.add": "Adicionar nota"
}
\ No newline at end of file
diff --git a/public/language/sr/admin/settings/email.json b/public/language/sr/admin/settings/email.json
index 1e92c88490..861b1f67f3 100644
--- a/public/language/sr/admin/settings/email.json
+++ b/public/language/sr/admin/settings/email.json
@@ -1,25 +1,25 @@
{
- "email-settings": "Email Settings",
- "address": "Email Address",
- "address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
- "from": "From Name",
+ "email-settings": "Podešavanje Email-a",
+ "address": "Email adresa",
+ "address-help": "Označena email adresa se odnosi na email koga će primalac videti \"Od\" i \"Odgovori\" poljima.",
+ "from": "Od koga",
"from-help": "The from name to display in the email.",
- "gmail-routing": "Gmail Routing",
- "gmail-routing-help1": "There have been reports of Gmail Routing not working on accounts with heightened security. In those scenarios, you will have to configure your GMail account to allow less secure apps.",
- "gmail-routing-help2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.",
- "gmail-transport": "Route emails through a Gmail/Google Apps account",
- "gmail-transport.username": "Username",
- "gmail-transport.username-help": "Enter the full email address here, especially if you are using a Google Apps managed domain.",
- "gmail-transport.password": "Password",
- "template": "Edit Email Template",
- "template.select": "Select Email Template",
- "template.revert": "Revert to Original",
- "testing": "Email Testing",
- "testing.select": "Select Email Template",
- "testing.send": "Send Test Email",
- "testing.send-help": "The test email will be sent to the currently logged in user's email address.",
- "subscriptions": "Email Subscriptions",
- "subscriptions.disable": "Disable subscriber notification emails",
+ "gmail-routing": "Gmail rutiranje",
+ "gmail-routing-help1": "Imamo izveštaje da Gmail rutiranje nije radilo na nalogu za povećanom bezbednošću. U takvom slučaju, moraćete da podesite Vaš GMail nalog da prihvati aplikacije sa manjom bezbednoću.",
+ "gmail-routing-help2": "Za više informacija o ovome, molimo konsultujte ovaj NodeMailer članak o ovom problemu. Alternativa bi bila da iskoristite \"third-party\" email plugin-ove kao što su SendGrid, Mailgun, itd. Pogledajte plugin-ove ovde.",
+ "gmail-transport": "Rutiraj email-ove kroz nalog Gmail/Google aplikacije.",
+ "gmail-transport.username": "Korisničko ime",
+ "gmail-transport.username-help": "Unesite punu email adresu ovde, pogotovo ako koristite Google aplikacije na upravljanom domenu.",
+ "gmail-transport.password": "Lozinka",
+ "template": "Promeni šablon Email-a",
+ "template.select": "Izaberi šablon Email-a",
+ "template.revert": "Vrati na Originalno podešavanje.",
+ "testing": "Testiranje Email-a",
+ "testing.select": "Izaberi šablon Email-a",
+ "testing.send": "Pošalji probni Email",
+ "testing.send-help": "Probni email će biti poslat na adresu trenutno ulogovanog korisnika",
+ "subscriptions": "Email subskripcije",
+ "subscriptions.disable": "Onemogući notifikacije o email subskripcijama",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0
for midnight, 17
for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Molim unesite broj koji označava satnicu kada da pošalje zakazani sažeti email (nrp. 0
za ponoć, 17
za 5:00 pm). Uzmite u obzir da će se slanje događati po satnici samog servara, i da vrlo verovatno se ne poklapa sa satnicom vašeg sistema.
Trenutno vreme servera je:
Sledeći dnevni sažeti email zakazan je za slanje u "
}
\ No newline at end of file
diff --git a/public/language/sr/admin/settings/post.json b/public/language/sr/admin/settings/post.json
index aca8b39d64..a7e7dd7a98 100644
--- a/public/language/sr/admin/settings/post.json
+++ b/public/language/sr/admin/settings/post.json
@@ -1,46 +1,46 @@
{
- "sorting": "Post Sorting",
- "sorting.post-default": "Default Post Sorting",
- "sorting.oldest-to-newest": "Oldest to Newest",
- "sorting.newest-to-oldest": "Newest to Oldest",
- "sorting.most-votes": "Most Votes",
- "sorting.topic-default": "Default Topic Sorting",
- "restrictions": "Posting Restrictions",
- "restrictions.seconds-between": "Seconds between Posts",
- "restrictions.seconds-between-new": "Seconds between Posts for New Users",
- "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted",
- "restrictions.seconds-defore-new": "Seconds before new user can post",
- "restrictions.seconds-edit-after": "Number of seconds users are allowed to edit posts after posting. (0 disabled)",
- "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)",
- "restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)",
- "restrictions.min-title-length": "Minimum Title Length",
- "restrictions.max-title-length": "Maximum Title Length",
- "restrictions.min-post-length": "Minimum Post Length",
- "restrictions.max-post-length": "Maximum Post Length",
- "restrictions.days-until-stale": "Days until Topic is considered stale",
- "restrictions.stale-help": "If a topic is considered \"stale\", then a warning will be shown to users who attempt to reply to that topic.",
- "timestamp": "Timestamp",
+ "sorting": "Sortiranje postova",
+ "sorting.post-default": "Uobičajeno sortiranje postova",
+ "sorting.oldest-to-newest": "Od starijih ka novijim",
+ "sorting.newest-to-oldest": "Od novijih ka starijim",
+ "sorting.most-votes": "Najviše glasova",
+ "sorting.topic-default": "Uobičajeno sortiranje tema",
+ "restrictions": "Restrikcije postavljanja",
+ "restrictions.seconds-between": "Sekundi između postova",
+ "restrictions.seconds-between-new": "Sekundi između postova za Novog korisnika",
+ "restrictions.rep-threshold": "Prag reputacije pre nego što su restrikcije skinute",
+ "restrictions.seconds-defore-new": "Sekundi pre nego što novi korisnik može da postuje",
+ "restrictions.seconds-edit-after": "Broj sekundi posle kojih korisnik može da preuredi post pošto ga je postavio. (0 onemogućeno)",
+ "restrictions.seconds-delete-after": "Broj sekundi posle korisniku nije više dozvnoljeno da obriše svoj post posle postavljanja. (0 onemogućeno)",
+ "restrictions.replies-no-delete": "Broj sekundi posle korisniku nije više dozvnoljeno da obriše svoju temu. (0 onemogućeno)",
+ "restrictions.min-title-length": "Minimum karaktera za Naslov",
+ "restrictions.max-title-length": "Maksimum karaktera za Naslov",
+ "restrictions.min-post-length": "Minimum karaktera za Post",
+ "restrictions.max-post-length": "Maksimum karaktera za Post",
+ "restrictions.days-until-stale": "Broj dana koliko je potrebno da prodje pre nego što tema se smatra ustajalom",
+ "restrictions.stale-help": "Ako se tema smatra \"ustajalom\", onda će upozorenje biti prikazano korisnicima koji su odgovarali na tu temu.",
+ "timestamp": "Vremenski žig",
"timestamp.cut-off": "Date cut-off (in days)",
- "timestamp.cut-off-help": "Dates & times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).
(Default: 30
, or one month). Set to 0 to always display dates, leave blank to always display relative times.",
- "teaser": "Teaser Post",
- "teaser.last-post": "Last – Show the latest post, including the original post, if no replies",
- "teaser.last-reply": "Last – Show the latest reply, or a \"No replies\" placeholder if no replies",
- "teaser.first": "First",
- "unread": "Unread Settings",
- "unread.cutoff": "Unread cutoff days",
- "unread.min-track-last": "Minimum posts in topic before tracking last read",
- "recent": "Recent Settings",
- "recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page",
- "signature": "Signature Settings",
- "signature.disable": "Disable signatures",
- "signature.no-links": "Disable links in signatures",
- "signature.no-images": "Disable images in signatures",
- "signature.max-length": "Maximum Signature Length",
- "composer": "Composer Settings",
- "composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",
- "composer.show-help": "Show \"Help\" tab",
- "composer.enable-plugin-help": "Allow plugins to add content to the help tab",
- "composer.custom-help": "Custom Help Text",
- "ip-tracking": "IP Tracking",
- "ip-tracking.each-post": "Track IP Address for each post"
+ "timestamp.cut-off-help": "Datumi & vreme će biti pokazano na relativan način (npr. \"pre 3 sata\" / \"pre 5 dana\"), i lokalizovano na različite\n\t\t\t\t\tjezike. Posle određenog vremena, ovaj tekst može biti promenjen na lokalizovani datum\n\t\t\t\t\t(npr. 5 Nov 2016 15:30).
(Uobičajeno: 30
, ili jedan mesec). Postavi na 0 da uvek prikaže datume, ostavi prazno da uvek prikaže relativno vreme.",
+ "teaser": "Post zadirkivač",
+ "teaser.last-post": "Poslednji &ndashč Pokazuje poslednji post, uključujući originalni post, ako nema odgovora",
+ "teaser.last-reply": "Poslednji &ndashč Pokaži najnoviji odgovor, ili ako \"Nema odgovora\" placeholder ako nema odgovora",
+ "teaser.first": "Prvi",
+ "unread": "Nepročitana podešavanja",
+ "unread.cutoff": "Nepročitano tokom prekinutih dana",
+ "unread.min-track-last": "Minimum postova u temi, pre praćenja poslednjeg pročitanog",
+ "recent": "Nedavna Podešavanja",
+ "recent.categoryFilter.disable": "Onemogući filtriranje tema u ignorisanim kategorijama na /recent stranici",
+ "signature": "Podešavanja Potpisa",
+ "signature.disable": "Onemogući potpise",
+ "signature.no-links": "Onemogući linkove u potpisima",
+ "signature.no-images": "Onemogući slike u potpisima",
+ "signature.max-length": "Minimum karaktera u Potpisu",
+ "composer": "Podešavanje Composer-a",
+ "composer-help": "Sledeća podešavanja upravljaju funkcionalnošću i/ili izgledom prikazanom kompozera post-a\n\t\t\t\tprema korisnicima kada prave nove teme, ili odgovaraju na postojeće.",
+ "composer.show-help": "Prikaži tab \"Pomoć\"",
+ "composer.enable-plugin-help": "Dozvoli plugin-ovima da dodaju sadržaj na tab-u \"pomoć\"",
+ "composer.custom-help": "Prilagođen tekst za pomoć",
+ "ip-tracking": "Praćenje IP adrese",
+ "ip-tracking.each-post": "Prati IP Adresu za svaki post"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/global.json b/public/language/zh-CN/global.json
index 8cc6f51c61..3fca087799 100644
--- a/public/language/zh-CN/global.json
+++ b/public/language/zh-CN/global.json
@@ -104,6 +104,6 @@
"cookies.accept": "知道了!",
"cookies.learn_more": "了解更多",
"edited": "已编辑",
- "disabled": "Disabled",
- "select": "Select"
+ "disabled": "禁用",
+ "select": "选择"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json
index 84cfc9924f..63d808ecd6 100644
--- a/public/language/zh-CN/topic.json
+++ b/public/language/zh-CN/topic.json
@@ -59,7 +59,7 @@
"thread_tools.unlock": "解锁主题",
"thread_tools.move": "移动主题",
"thread_tools.move_all": "移动全部",
- "thread_tools.select_category": "Select Category",
+ "thread_tools.select_category": "选择版块",
"thread_tools.fork": "分割主题",
"thread_tools.delete": "删除主题",
"thread_tools.delete-posts": "删除这些帖子",
diff --git a/public/src/client/topic.js b/public/src/client/topic.js
index 08a707f029..0a0d857663 100644
--- a/public/src/client/topic.js
+++ b/public/src/client/topic.js
@@ -99,7 +99,7 @@ define('forum/topic', [
function handleTopicSearch() {
require(['search', 'mousetrap'], function (search, mousetrap) {
- $('.topic-search')
+ $('.topic-search').off('click')
.on('click', '.prev', function () {
search.topicDOM.prev();
})
diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js
index a7fd657cac..d8b8cb4fe2 100644
--- a/public/src/modules/navigator.js
+++ b/public/src/modules/navigator.js
@@ -245,7 +245,7 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co
}
}
- var page = Math.max(1, Math.ceil(index / config.postsPerPage));
+ var page = Math.max(1, Math.ceil((index + 1) / config.postsPerPage));
if (parseInt(page, 10) !== ajaxify.data.pagination.currentPage) {
pagination.loadPage(page, function () {
diff --git a/public/src/modules/search.js b/public/src/modules/search.js
index ce24bd4c40..daf9fae820 100644
--- a/public/src/modules/search.js
+++ b/public/src/modules/search.js
@@ -156,7 +156,7 @@ define('search', ['navigator', 'translator', 'storage'], function (nav, translat
return app.alertError(err.message);
}
- nav.scrollToPost(postIndex, true);
+ nav.scrollToIndex(postIndex, true);
});
} else {
translator.translate('[[search:no-matches]]', function (text) {
diff --git a/src/reset.js b/src/reset.js
index 4b45821ddf..3d2fab2e0f 100644
--- a/src/reset.js
+++ b/src/reset.js
@@ -10,7 +10,6 @@ var events = require('./events');
var Reset = {};
-
Reset.reset = function (callback) {
db.init(function (err) {
if (err) {
@@ -163,10 +162,14 @@ function resetPlugins(callback) {
}
function resetWidgets(callback) {
- require('./widgets').reset(function (err) {
- winston.info('[reset] All Widgets moved to Draft Zone');
- callback(err);
- });
+ async.waterfall([
+ require('./plugins').reload,
+ require('./widgets').reset,
+ function (next) {
+ winston.info('[reset] All Widgets moved to Draft Zone');
+ next();
+ },
+ ], callback);
}
module.exports = Reset;
diff --git a/src/topics.js b/src/topics.js
index 3952f7b402..8dd5df0c13 100644
--- a/src/topics.js
+++ b/src/topics.js
@@ -326,12 +326,10 @@ Topics.isLocked = function (tid, callback) {
};
Topics.search = function (tid, term, callback) {
- if (plugins.hasListeners('filter:topic.search')) {
- plugins.fireHook('filter:topic.search', {
- tid: tid,
- term: term,
- }, callback);
- } else {
- callback(new Error('[[error:no-plugins-available]]'), []);
- }
+ plugins.fireHook('filter:topic.search', {
+ tid: tid,
+ term: term,
+ }, function (err, pids) {
+ callback(err, Array.isArray(pids) ? pids : []);
+ });
};
diff --git a/src/upgrades/1.1.0/dismiss_flags_from_deleted_topics.js b/src/upgrades/1.1.0/dismiss_flags_from_deleted_topics.js
index 6cbf6b7254..37e2fce239 100644
--- a/src/upgrades/1.1.0/dismiss_flags_from_deleted_topics.js
+++ b/src/upgrades/1.1.0/dismiss_flags_from_deleted_topics.js
@@ -34,8 +34,72 @@ module.exports = {
}).filter(Boolean);
winston.verbose('[2016/04/29] ' + toDismiss.length + ' dismissable flags found');
- async.each(toDismiss, posts.dismissFlag, next);
+ async.each(toDismiss, dismissFlag, next);
},
], callback);
},
};
+
+// copied from core since this function was removed
+// https://github.com/NodeBB/NodeBB/blob/v1.x.x/src/posts/flags.js
+function dismissFlag(pid, callback) {
+ async.waterfall([
+ function (next) {
+ db.getObjectFields('post:' + pid, ['pid', 'uid', 'flags'], next);
+ },
+ function (postData, next) {
+ if (!postData.pid) {
+ return callback();
+ }
+ async.parallel([
+ function (next) {
+ if (parseInt(postData.uid, 10)) {
+ if (parseInt(postData.flags, 10) > 0) {
+ async.parallel([
+ async.apply(db.sortedSetIncrBy, 'users:flags', -postData.flags, postData.uid),
+ async.apply(db.incrObjectFieldBy, 'user:' + postData.uid, 'flags', -postData.flags),
+ ], next);
+ } else {
+ next();
+ }
+ } else {
+ next();
+ }
+ },
+ function (next) {
+ db.sortedSetsRemove([
+ 'posts:flagged',
+ 'posts:flags:count',
+ 'uid:' + postData.uid + ':flag:pids',
+ ], pid, next);
+ },
+ function (next) {
+ async.series([
+ function (next) {
+ db.getSortedSetRange('pid:' + pid + ':flag:uids', 0, -1, function (err, uids) {
+ if (err) {
+ return next(err);
+ }
+
+ async.each(uids, function (uid, next) {
+ var nid = 'post_flag:' + pid + ':uid:' + uid;
+ async.parallel([
+ async.apply(db.delete, 'notifications:' + nid),
+ async.apply(db.sortedSetRemove, 'notifications', 'post_flag:' + pid + ':uid:' + uid),
+ ], next);
+ }, next);
+ });
+ },
+ async.apply(db.delete, 'pid:' + pid + ':flag:uids'),
+ ], next);
+ },
+ async.apply(db.deleteObjectField, 'post:' + pid, 'flags'),
+ async.apply(db.delete, 'pid:' + pid + ':flag:uid:reason'),
+ async.apply(db.deleteObjectFields, 'post:' + pid, ['flag:state', 'flag:assignee', 'flag:notes', 'flag:history']),
+ ], next);
+ },
+ function (results, next) {
+ db.sortedSetsRemoveRangeByScore(['users:flags'], '-inf', 0, next);
+ },
+ ], callback);
+}
diff --git a/src/widgets/index.js b/src/widgets/index.js
index 982b40c696..9071989722 100644
--- a/src/widgets/index.js
+++ b/src/widgets/index.js
@@ -70,7 +70,7 @@ function renderWidget(widget, uid, options, callback) {
}
},
function (config, next) {
- var templateData = _.assign(options.templateData, { config: config });
+ var templateData = _.assign({ }, options.templateData, { config: config });
plugins.fireHook('filter:widget.render:' + widget.widget, {
uid: uid,
area: options,
@@ -193,7 +193,7 @@ widgets.reset = function (callback) {
function (results, next) {
drafts = results.drafts || [];
- async.each(results.areas, function (area, next) {
+ async.eachSeries(results.areas, function (area, next) {
async.waterfall([
function (next) {
widgets.getArea(area.template, area.location, next);
diff --git a/test/topics.js b/test/topics.js
index a1d0bda512..0592b9d030 100644
--- a/test/topics.js
+++ b/test/topics.js
@@ -1505,13 +1505,6 @@ describe('Topic\'s', function () {
});
});
- it('should error if no search plugin', function (done) {
- socketTopics.search({ uid: adminUid }, { tid: topic.tid, term: 'test' }, function (err) {
- assert.equal(err.message, '[[error:no-plugins-available]]');
- done();
- });
- });
-
it('should return results', function (done) {
var plugins = require('../src/plugins');
plugins.registerHook('myTestPlugin', {