Merge remote-tracking branch 'refs/remotes/origin/master' into develop

# Conflicts:
#	package.json
v1.18.x
Baris Usakli 8 years ago
commit f1f8a587d4

@ -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",

@ -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 <a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">NodeBB Docs Portal</a>.",
"docs-info": "Full documentation regarding plugin authoring can be found in the <a target=\"_blank\" href=\"https://docs.nodebb.org/development/plugins/\">NodeBB Docs Portal</a>.",
"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",

@ -18,13 +18,13 @@
"stats.week": "Week",
"stats.month": "Month",
"stats.all": "All Time",
"updates": "Updates",
"running-version": "You are running <strong>NodeBB v<span id=\"version\">%1</span></strong>.",
"keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
"up-to-date": "<p>You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">upgrading your NodeBB</a>.</p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>This is a <strong>pre-release</strong> version of NodeBB. Unintended bugs may occur. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",

@ -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": "משתמש זה מוגדר כמנהל. על מנת למחוק את המשתמש, עליך להסיר קודם את גישותיו.",

@ -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 <code>&lt;head&gt;</code> 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"
}

@ -1,12 +1,12 @@
{
"you-are-on": "Informação - Você está em <strong>%1:%2</strong>",
"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",

@ -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 <code>YYYY-MM-DD</code>",
"page-views-custom-error": "Please enter a valid date range in the format <code>YYYY-MM-DD</code>",
"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 é <code>AAAA-MM-DD</code>",
"page-views-custom-error": "Por favor entre com um alcance de data válido no formato <code>AAAA-MM-DD</code>",
"stats.day": "Dia",
"stats.week": "Semana",
@ -26,7 +26,7 @@
"upgrade-available": "<p>Uma nova versão (v%1) foi lançada. Leve em consideração <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">atualizar o seu NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Esta versão um pre-release antigo do NodeBB. Uma nova versão (v%1) foi lançada. Leve em consideração <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">atualizar o seu NodeBB</a>.</p>",
"prerelease-warning": "<p>Esta é uma versão <strong>pre-release</strong> do NodeBB. Bugs inesperados podem ocorrer. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
"running-in-development": "<span>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.</span>",
"notices": "Avisos",
"restart-not-required": "Reiniciar não é necessário",

@ -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. <br />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"
}

@ -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",

@ -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",

@ -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",

@ -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"
}

@ -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",

@ -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"

@ -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<br>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 <small>(Deixar em branco para desabilitar)</small>",
"user-search": "Pesquisa de Usuário",

@ -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!"
}

@ -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",

@ -104,6 +104,6 @@
"cookies.accept": "Entendi!",
"cookies.learn_more": "Saber Mais",
"edited": "Editado",
"disabled": "Disabled",
"select": "Select"
"disabled": "Desligado",
"select": "Escolha"
}

@ -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",

@ -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",

@ -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 <strong>%1</strong>",
"upvoted_your_post_in": "<strong>%1</strong> deu voto positivo para seu post em <strong>%2</strong>.",
"upvoted_your_post_in_dual": "<strong>%1</strong> e <strong>%2</strong> deram voto positivo ao seu post em <strong>%3</strong>.",
@ -40,7 +40,7 @@
"user_started_following_you_multiple": "<strong>%1</strong> e %2 outros começaram a lhe acompanhar.",
"new_register": "<strong>%1</strong> lhe enviou um pedido de cadastro.",
"new_register_multiple": "Há <strong>%1</strong> pedidos de registro aguardando revisão.",
"flag_assigned_to_you": "<strong>Flag %1</strong> has been assigned to you",
"flag_assigned_to_you": "A Sinalização %1</strong> 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.",

@ -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",

@ -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 <strong>%1</strong>",
"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"
}

@ -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 <a href=\"https://www.google.com/settings/security/lesssecureapps\">configure your GMail account to allow less secure apps</a>.",
"gmail-routing-help2": "For more information about this workaround, <a href=\"https://nodemailer.com/using-gmail/\">please consult this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"{config.relative_path}/admin/extend/plugins\">Browse available plugins here</a>.",
"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 <a href=\"https://www.google.com/settings/security/lesssecureapps\">podesite Vaš GMail nalog da prihvati aplikacije sa manjom bezbednoću</a>.",
"gmail-routing-help2": "Za više informacija o ovome, <a href=\"https://nodemailer.com/using-gmail/\">molimo konsultujte ovaj NodeMailer članak o ovom problemu.</a> Alternativa bi bila da iskoristite \"third-party\" email plugin-ove kao što su SendGrid, Mailgun, itd. <a href=\"{config.relative_path}/admin/extend/plugins\">Pogledajte plugin-ove ovde</a>.",
"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. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>"
"subscriptions.hour-help": "Molim unesite broj koji označava satnicu kada da pošalje zakazani sažeti email (nrp. <code>0</code> za ponoć, <code>17</code> 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. <br /> Trenutno vreme servera je: <span id=\"serverTime\"></span><br /> Sledeći dnevni sažeti email zakazan je za slanje u <span id=\"nextDigestTime\"></span>"
}

@ -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 &amp; 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).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>",
"teaser": "Teaser Post",
"teaser.last-post": "Last &ndash; Show the latest post, including the original post, if no replies",
"teaser.last-reply": "Last &ndash; 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 &amp; 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).<br /><em>(Uobičajeno: <code>30</code>, ili jedan mesec). Postavi na 0 da uvek prikaže datume, ostavi prazno da uvek prikaže relativno vreme.</em>",
"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"
}

@ -104,6 +104,6 @@
"cookies.accept": "知道了!",
"cookies.learn_more": "了解更多",
"edited": "已编辑",
"disabled": "Disabled",
"select": "Select"
"disabled": "禁用",
"select": "选择"
}

@ -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": "删除这些帖子",

@ -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();
})

@ -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 () {

@ -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) {

@ -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;

@ -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 : []);
});
};

@ -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);
}

@ -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);

@ -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', {

Loading…
Cancel
Save