summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rw-r--r--api/command_loadtest_test.go4
-rw-r--r--i18n/es.json4
-rw-r--r--i18n/pt.json3578
-rw-r--r--tests/test-emoticons.md22
-rw-r--r--tests/test-emoticons1.md12
-rw-r--r--tests/test-emoticons2.md2
-rw-r--r--tests/test-emoticons3.md3
-rw-r--r--tests/test-emoticons4.md2
-rw-r--r--web/react/components/center_panel.jsx9
-rw-r--r--web/react/components/delete_post_modal.jsx52
-rw-r--r--web/react/components/post_body_additional_content.jsx40
-rw-r--r--web/react/components/post_focus_view.jsx2
-rw-r--r--web/react/components/posts_view.jsx2
-rw-r--r--web/react/components/posts_view_container.jsx16
-rw-r--r--web/react/components/rhs_thread.jsx10
-rw-r--r--web/react/components/search_results.jsx20
-rw-r--r--web/react/components/tutorial/tutorial_intro_screens.jsx42
-rw-r--r--web/react/components/user_settings/manage_command_hooks.jsx2
-rw-r--r--web/react/components/user_settings/manage_incoming_hooks.jsx2
-rw-r--r--web/react/components/user_settings/manage_outgoing_hooks.jsx2
-rw-r--r--web/react/components/user_settings/user_settings_advanced.jsx8
-rw-r--r--web/react/dispatcher/event_helpers.jsx9
-rw-r--r--web/react/stores/post_store.jsx14
-rw-r--r--web/react/utils/constants.jsx4
-rw-r--r--web/react/utils/utils.jsx4
-rw-r--r--web/sass-files/sass/partials/_modal.scss1
-rw-r--r--web/sass-files/sass/partials/_post.scss43
-rw-r--r--web/sass-files/sass/partials/_responsive.scss2
-rw-r--r--web/sass-files/sass/partials/_tutorial.scss17
-rw-r--r--web/static/i18n/en.json7
-rw-r--r--web/static/i18n/es.json12
-rw-r--r--web/static/i18n/pt.json1274
-rw-r--r--web/templates/head.html2
34 files changed, 5079 insertions, 147 deletions
diff --git a/README.md b/README.md
index eb2ba9d8a..c329df925 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,8 @@ Learn More:
- **End User Help** - View our [guide for new users to Mattermost](http://docs.mattermost.com/help/getting-started/signing-in.html).
- **Install Guides** - See [step-by-step setup on Ubuntu, RHEL/Oracle Linux/CentOS, Debian, plus Docker for preview](http://docs.mattermost.com/install/requirements.html)
- **Deployment Guide** - Review [Mattermost components and deployment on a single-machine or cluster](http://docs.mattermost.com/deployment/deployment.html).
-- **Developer Guide** - Learn [how developers can extend Mattermost](http://docs.mattermost.com/developer/api.html).
+- **Developer Guide** - Learn [how developers can extend Mattermost](http://docs.mattermost.com/developer/developer-setup.html).
+- **API Options** - Underestand API options via [webhooks, slash commands, drivers and RESTful Web Service](http://docs.mattermost.com/developer/api.html).
- **Localization Guide** - Learn [how Mattermost supports different languages](http://docs.mattermost.com/developer/localization.html).
Any other questions, mail us at info@mattermost.com. We’d love to meet you!
diff --git a/api/command_loadtest_test.go b/api/command_loadtest_test.go
index 7cb77cf18..1debc766a 100644
--- a/api/command_loadtest_test.go
+++ b/api/command_loadtest_test.go
@@ -201,12 +201,12 @@ func TestLoadTestUrlCommands(t *testing.T) {
t.Fatal("/loadtest url for README.md should've executed")
}
- command = "/loadtest url test-emoticons.md"
+ command = "/loadtest url test-emoticons1.md"
if r := Client.Must(Client.Command(channel.Id, command, false)).Data.(*model.CommandResponse); r.Text != "Loading data..." {
t.Fatal("/loadtest url for test-emoticons.md should've executed")
}
- command = "/loadtest url test-emoticons"
+ command = "/loadtest url test-emoticons1"
if r := Client.Must(Client.Command(channel.Id, command, false)).Data.(*model.CommandResponse); r.Text != "Loading data..." {
t.Fatal("/loadtest url for test-emoticons should've executed")
}
diff --git a/i18n/es.json b/i18n/es.json
index c289d9e25..b290d3854 100644
--- a/i18n/es.json
+++ b/i18n/es.json
@@ -3037,11 +3037,11 @@
},
{
"id": "store.sql_user.get_by_auth.app_error",
- "translation": "No pudimos encontrar una cuenta existente que coincida con tu tipo de autenticación para este equipo. Es posible que necesites una invitación por aprte del dueño del equipo para unirte."
+ "translation": "No pudimos encontrar una cuenta existente que coincida con tu tipo de autenticación para este equipo. Es posible que necesites una invitación por parte del dueño del equipo para unirte."
},
{
"id": "store.sql_user.get_by_username.app_error",
- "translation": "No pudimos encontrar una cuenta existente que coincida con tu nombre de usuario para este equipo. Es posible que necesites una invitación por aprte del dueño del equipo para unirte."
+ "translation": "No pudimos encontrar una cuenta existente que coincida con tu nombre de usuario para este equipo. Es posible que necesites una invitación por parte del dueño del equipo para unirte."
},
{
"id": "store.sql_user.get_for_export.app_error",
diff --git a/i18n/pt.json b/i18n/pt.json
new file mode 100644
index 000000000..c266879ab
--- /dev/null
+++ b/i18n/pt.json
@@ -0,0 +1,3578 @@
+[
+ {
+ "id": "April",
+ "translation": "Abril"
+ },
+ {
+ "id": "August",
+ "translation": "Agosto"
+ },
+ {
+ "id": "December",
+ "translation": "Dezembro"
+ },
+ {
+ "id": "February",
+ "translation": "Fevereiro"
+ },
+ {
+ "id": "January",
+ "translation": "Janeiro"
+ },
+ {
+ "id": "July",
+ "translation": "Julho"
+ },
+ {
+ "id": "June",
+ "translation": "Junho"
+ },
+ {
+ "id": "March",
+ "translation": "Março"
+ },
+ {
+ "id": "May",
+ "translation": "Maio"
+ },
+ {
+ "id": "November",
+ "translation": "Novembro"
+ },
+ {
+ "id": "October",
+ "translation": "Outubro"
+ },
+ {
+ "id": "September",
+ "translation": "Setembro"
+ },
+ {
+ "id": "api.admin.file_read_error",
+ "translation": "Erro ao ler o arquivo de log"
+ },
+ {
+ "id": "api.admin.init.debug",
+ "translation": "Inicializando admin api routes"
+ },
+ {
+ "id": "api.admin.test_email.body",
+ "translation": "<br/><br/><br/>Parece que o seu email do Mattermost está configurado corretamente!"
+ },
+ {
+ "id": "api.admin.test_email.subject",
+ "translation": "Mattermost - Teste de Configurações de EMail"
+ },
+ {
+ "id": "api.api.init.parsing_templates.debug",
+ "translation": "Analisando modelos no servidor %v"
+ },
+ {
+ "id": "api.api.init.parsing_templates.error",
+ "translation": "Falha ao processar os modelos do servidor %v"
+ },
+ {
+ "id": "api.api.render.error",
+ "translation": "Erro ao renderizar o modelo de %v err=%v"
+ },
+ {
+ "id": "api.channel.add_member.added",
+ "translation": "%v adicionado ao canal pelo %v"
+ },
+ {
+ "id": "api.channel.add_member.find_channel.app_error",
+ "translation": "Não foi possível localizar o canal"
+ },
+ {
+ "id": "api.channel.add_member.find_user.app_error",
+ "translation": "Não foi possível encontrar o usuário a ser adicionado"
+ },
+ {
+ "id": "api.channel.add_member.user_adding.app_error",
+ "translation": "Não foi possível encontrar usuário fazendo a adição"
+ },
+ {
+ "id": "api.channel.add_user.to.channel.failed.app_error",
+ "translation": "Não foi possível adicionar o usuário no canal"
+ },
+ {
+ "id": "api.channel.add_user_to_channel.deleted.app_error",
+ "translation": "O canal foi deletado ou arquivado"
+ },
+ {
+ "id": "api.channel.add_user_to_channel.type.app_error",
+ "translation": "Não foi possível adicionar usuário para este tipo de canal"
+ },
+ {
+ "id": "api.channel.create_channel.direct_channel.app_error",
+ "translation": "Deve usar a api de serviço createDirectChannel para criação do canal de mensagens diretas"
+ },
+ {
+ "id": "api.channel.create_channel.invalid_character.app_error",
+ "translation": "Caractere inválido '__' no nome do canal para um canal não-direto"
+ },
+ {
+ "id": "api.channel.create_default_channels.off_topic",
+ "translation": "Off-Topic"
+ },
+ {
+ "id": "api.channel.create_default_channels.town_square",
+ "translation": "Town Square"
+ },
+ {
+ "id": "api.channel.create_direct_channel.invalid_user.app_error",
+ "translation": "Inválido outro id de usuário "
+ },
+ {
+ "id": "api.channel.delete_channel.archived",
+ "translation": "%v arquivou o canal."
+ },
+ {
+ "id": "api.channel.delete_channel.cannot.app_error",
+ "translation": "Não é possível excluir o canal padrão {{.Channel}}"
+ },
+ {
+ "id": "api.channel.delete_channel.deleted.app_error",
+ "translation": "O canal foi arquivado ou excluído"
+ },
+ {
+ "id": "api.channel.delete_channel.failed_post.error",
+ "translation": "Não foi possível postar arquivo de mensagem %v"
+ },
+ {
+ "id": "api.channel.delete_channel.failed_send.app_error",
+ "translation": "Não foi possível enviar o arquivo de mensagem"
+ },
+ {
+ "id": "api.channel.delete_channel.incoming_webhook.error",
+ "translation": "Encontrado um erro ao excluir o webhook de entrada, id=%v"
+ },
+ {
+ "id": "api.channel.delete_channel.outgoing_webhook.error",
+ "translation": "Encontrado um erro ao excluir o webhook de saída, id=%v"
+ },
+ {
+ "id": "api.channel.delete_channel.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.channel.get_channel_counts.app_error",
+ "translation": "Não é possível obter o número de canais do banco de dados"
+ },
+ {
+ "id": "api.channel.get_channel_extra_info.deleted.app_error",
+ "translation": "O canal foi deletado ou arquivado"
+ },
+ {
+ "id": "api.channel.get_channel_extra_info.member_limit.app_error",
+ "translation": "Não foi possível processar o limite de membros"
+ },
+ {
+ "id": "api.channel.get_channels.error",
+ "translation": "Erro na obtenção do perfil dos usuários para id=%v forçando o logout"
+ },
+ {
+ "id": "api.channel.init.debug",
+ "translation": "Inicializando channel api routes"
+ },
+ {
+ "id": "api.channel.join_channel.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.channel.join_channel.post_and_forget",
+ "translation": "%v juntou-se ao canal."
+ },
+ {
+ "id": "api.channel.leave.default.app_error",
+ "translation": "Não pode deixar o canal padrão {{.Channel}}"
+ },
+ {
+ "id": "api.channel.leave.direct.app_error",
+ "translation": "Não é possível sair de um canal de mensagem direta"
+ },
+ {
+ "id": "api.channel.leave.left",
+ "translation": "%v deixou o canal."
+ },
+ {
+ "id": "api.channel.post_update_channel_header_message_and_forget.join_leave.error",
+ "translation": "Não foi possível postar mensagem juntar/deixar %v"
+ },
+ {
+ "id": "api.channel.post_update_channel_header_message_and_forget.removed",
+ "translation": "%s removido do cabeçalho do canal (foi: %s)"
+ },
+ {
+ "id": "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error",
+ "translation": "Não foi possível recuperar o usuário ao tentar salvar a atualização do cabeçalho do canal de mensagem %v"
+ },
+ {
+ "id": "api.channel.post_update_channel_header_message_and_forget.updated_from",
+ "translation": "%s atualizado do cabeçalho do canal de: %s para: %s"
+ },
+ {
+ "id": "api.channel.post_update_channel_header_message_and_forget.updated_to",
+ "translation": "%s atualizado do cabeçalho do canal para: %s"
+ },
+ {
+ "id": "api.channel.post_user_add_remove_message_and_forget.error",
+ "translation": "Não foi possível postar mensagem de juntar/deixar %v"
+ },
+ {
+ "id": "api.channel.remove_member.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada "
+ },
+ {
+ "id": "api.channel.remove_member.unable.app_error",
+ "translation": "Não foi possível remover o usuário."
+ },
+ {
+ "id": "api.channel.remove_user_from_channel.deleted.app_error",
+ "translation": "O canal foi deletado ou arquivado"
+ },
+ {
+ "id": "api.channel.update_channel.deleted.app_error",
+ "translation": "O canal foi deletado ou arquivado"
+ },
+ {
+ "id": "api.channel.update_channel.permission.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.channel.update_channel.tried.app_error",
+ "translation": "Tentou executar uma atualização inválida para o canal padrão {{.Channel}}"
+ },
+ {
+ "id": "api.command.admin_only.app_error",
+ "translation": "Integrações estão limitadas a administradores somente."
+ },
+ {
+ "id": "api.command.delete.app_error",
+ "translation": "Permissões inadequadas para deletar o comando"
+ },
+ {
+ "id": "api.command.disabled.app_error",
+ "translation": "Os comandos foram desabilitados para o administrador do sistema."
+ },
+ {
+ "id": "api.command.execute_command.debug",
+ "translation": "Executando cmd=%v userId=%v"
+ },
+ {
+ "id": "api.command.execute_command.failed.app_error",
+ "translation": "Comando com um gatilho de '{{.Trigger}}' falhou"
+ },
+ {
+ "id": "api.command.execute_command.failed_empty.app_error",
+ "translation": "Comando com um gatilho de '{{.Trigger}}' retornou uma resposta vazia"
+ },
+ {
+ "id": "api.command.execute_command.failed_resp.app_error",
+ "translation": "Comando com um gatilho de '{{.Trigger}}' retornou a resposta {{.Status}}"
+ },
+ {
+ "id": "api.command.execute_command.not_found.app_error",
+ "translation": "Comando com um gatilho de '{{.Trigger}}' não encotrado"
+ },
+ {
+ "id": "api.command.execute_command.save.app_error",
+ "translation": "Um erro enquando salvava a resposta do comando do canal"
+ },
+ {
+ "id": "api.command.execute_command.start.app_error",
+ "translation": "Nenhum comando disparador encontrado"
+ },
+ {
+ "id": "api.command.init.debug",
+ "translation": "Inicializando command api routes"
+ },
+ {
+ "id": "api.command.regen.app_error",
+ "translation": "Permissões inadequadas para re-gerar o token de comando"
+ },
+ {
+ "id": "api.command_echo.create.app_error",
+ "translation": "Não é possível criar o post /echo, err=%v"
+ },
+ {
+ "id": "api.command_echo.delay.app_error",
+ "translation": "Os atrasos devem ser abaixo de 10000 segundos"
+ },
+ {
+ "id": "api.command_echo.desc",
+ "translation": "Echo volta o texto para sua conta"
+ },
+ {
+ "id": "api.command_echo.high_volume.app_error",
+ "translation": "Alto volume de solicitações de echo, não foi possível processar a requisição"
+ },
+ {
+ "id": "api.command_echo.hint",
+ "translation": "'mensagem' [atraso em segundos]"
+ },
+ {
+ "id": "api.command_echo.name",
+ "translation": "echo"
+ },
+ {
+ "id": "api.command_join.desc",
+ "translation": "Junte-se ao canal aberto"
+ },
+ {
+ "id": "api.command_join.fail.app_error",
+ "translation": "Ocorreu um erro enquanto juntava ao canal."
+ },
+ {
+ "id": "api.command_join.hint",
+ "translation": "[nome-canal]"
+ },
+ {
+ "id": "api.command_join.list.app_error",
+ "translation": "Ocorreu um erro durante a listagem de canais."
+ },
+ {
+ "id": "api.command_join.missing.app_error",
+ "translation": "Não foi possível encontrar o canal"
+ },
+ {
+ "id": "api.command_join.name",
+ "translation": "juntar"
+ },
+ {
+ "id": "api.command_join.success",
+ "translation": "Juntou ao canal."
+ },
+ {
+ "id": "api.command_logout.desc",
+ "translation": "Faça Logout do Mattermost"
+ },
+ {
+ "id": "api.command_logout.name",
+ "translation": "logout"
+ },
+ {
+ "id": "api.command_logout.success_message",
+ "translation": "Saindo..."
+ },
+ {
+ "id": "api.command_me.desc",
+ "translation": "Fazer uma ação"
+ },
+ {
+ "id": "api.command_me.hint",
+ "translation": "[mensagem]"
+ },
+ {
+ "id": "api.command_me.name",
+ "translation": "me"
+ },
+ {
+ "id": "api.command_shrug.desc",
+ "translation": "Adiciona ¯\\_(ツ)_/¯ na sua mensagem"
+ },
+ {
+ "id": "api.command_shrug.hint",
+ "translation": "[mensagem]"
+ },
+ {
+ "id": "api.command_shrug.name",
+ "translation": "shrug"
+ },
+ {
+ "id": "api.context.404.app_error",
+ "translation": "Desculpe, não conseguimos encontrar a página."
+ },
+ {
+ "id": "api.context.invalid_param.app_error",
+ "translation": "Parâmetro {{.Name}} inválido"
+ },
+ {
+ "id": "api.context.invalid_team_url.debug",
+ "translation": "TeamURL acessado quando não é válido. Equipe de URL não devem ser usados em funções de api ou aqueles que são de equipes independentes"
+ },
+ {
+ "id": "api.context.invalid_token.error",
+ "translation": "Sessão inválida token=%v, err=%v"
+ },
+ {
+ "id": "api.context.last_activity_at.error",
+ "translation": "Não foi possível atualizar LastActivityAt para user_id=%v e session_id=%v, err=%v"
+ },
+ {
+ "id": "api.context.log.error",
+ "translation": "%v:%v código=%v rid=%v uid=%v ip=%v %v [detalhes: %v]"
+ },
+ {
+ "id": "api.context.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.context.session_expired.app_error",
+ "translation": "Inválido ou sessão expirada, por favor faça login novamente."
+ },
+ {
+ "id": "api.context.system_permissions.app_error",
+ "translation": "Você não tem a permissão apropriada (sistema)"
+ },
+ {
+ "id": "api.context.token_provided.app_error",
+ "translation": "Sessão não é OAuth mas o token foi fornecido na consulta"
+ },
+ {
+ "id": "api.context.unknown.app_error",
+ "translation": "Ocorreu um erro desconhecido. Por favor contato com o suporte."
+ },
+ {
+ "id": "api.export.json.app_error",
+ "translation": "Não é possível converter para json"
+ },
+ {
+ "id": "api.export.open.app_error",
+ "translation": "Não é possível abrir o arquivo"
+ },
+ {
+ "id": "api.export.open_dir.app_error",
+ "translation": "Incapaz de abrir o diretorio"
+ },
+ {
+ "id": "api.export.open_file.app_error",
+ "translation": "Não é possível abrir o arquivo para exportação"
+ },
+ {
+ "id": "api.export.options.create.app_error",
+ "translation": "Não é possível gravar arquivo de opções"
+ },
+ {
+ "id": "api.export.options.write.app_error",
+ "translation": "Não é possível gravar arquivo de opções"
+ },
+ {
+ "id": "api.export.read_dir.app_error",
+ "translation": "Não foi possível ler o diretório"
+ },
+ {
+ "id": "api.export.s3.app_error",
+ "translation": "S3 não é suportado para o armazenamento local de exportação."
+ },
+ {
+ "id": "api.export.write_file.app_error",
+ "translation": "Não é possível gravar para exportar arquivo"
+ },
+ {
+ "id": "api.file.file_upload.exceeds",
+ "translation": "Arquivo excede o máximo de tamanho de imagem."
+ },
+ {
+ "id": "api.file.get_export.retrieve.app_error",
+ "translation": "Não é possível recuperar o arquivo exportado. Por favor, re-exportar"
+ },
+ {
+ "id": "api.file.get_export.team_admin.app_error",
+ "translation": "Somente um administrador pode obter dados exportados."
+ },
+ {
+ "id": "api.file.get_file.not_found.app_error",
+ "translation": "Não foi possível encontrar o arquivo."
+ },
+ {
+ "id": "api.file.get_file.public_invalid.app_error",
+ "translation": "O link público não parece ser válido"
+ },
+ {
+ "id": "api.file.get_public_link.disabled.app_error",
+ "translation": "Links públicos foram desabilitados"
+ },
+ {
+ "id": "api.file.handle_images_forget.decode.error",
+ "translation": "Não é possível decodificar a imagem channelId=%v userId=%v filename=%v err=%v"
+ },
+ {
+ "id": "api.file.handle_images_forget.encode_jpeg.error",
+ "translation": "Não é possível codificar a imagem como jpeg channelId=%v userId=%v filename=%v err=%v"
+ },
+ {
+ "id": "api.file.handle_images_forget.encode_preview.error",
+ "translation": "Não é possível codificar a imagem como imagem de pré-visualização jpg channelId=%v userId=%v filename=%v err=%v"
+ },
+ {
+ "id": "api.file.handle_images_forget.upload_preview.error",
+ "translation": "Não é possível fazer o upload da pré-visualização channelId=%v userId=%v filename=%v err=%v"
+ },
+ {
+ "id": "api.file.handle_images_forget.upload_thumb.error",
+ "translation": "Não é possível carregar o thumbnail channelId=%v userId=%v filename=%v err=%v"
+ },
+ {
+ "id": "api.file.init.debug",
+ "translation": "Inicializando file api routes"
+ },
+ {
+ "id": "api.file.open_file_write_stream.configured.app_error",
+ "translation": "Armazenamento de arquivos não está configurado corretamente, Por favor configure S3 ou armazenamento de arquivos no servidor local."
+ },
+ {
+ "id": "api.file.open_file_write_stream.creating_dir.app_error",
+ "translation": "Encontrado um erro ao criar o diretório para o novo arquivo"
+ },
+ {
+ "id": "api.file.open_file_write_stream.local_server.app_error",
+ "translation": "Encontrado um erro ao gravar no servidor local de armazenamento"
+ },
+ {
+ "id": "api.file.open_file_write_stream.s3.app_error",
+ "translation": "S3 não é suportado."
+ },
+ {
+ "id": "api.file.read_file.configured.app_error",
+ "translation": "Armazenamento de arquivos não está configurado corretamente, Por favor configure S3 ou armazenamento de arquivos no servidor local."
+ },
+ {
+ "id": "api.file.read_file.get.app_error",
+ "translation": "Não é possível obter o arquivo a partir do S3"
+ },
+ {
+ "id": "api.file.read_file.reading_local.app_error",
+ "translation": "Encontrado um erro ao ler a partir do servidor de armazenamento local"
+ },
+ {
+ "id": "api.file.upload_file.image.app_error",
+ "translation": "Não é possível enviar arquivo de imagem."
+ },
+ {
+ "id": "api.file.upload_file.large_image.app_error",
+ "translation": "Não foi possível enviar o arquivo de imagem. Arquivo muito grande."
+ },
+ {
+ "id": "api.file.upload_file.storage.app_error",
+ "translation": "Não é possível fazer upload do arquivo. Armazenamento de imagem não está configurado."
+ },
+ {
+ "id": "api.file.upload_file.too_large.app_error",
+ "translation": "Não foi possível enviar a imagem do perfil. Arquivo muito grande."
+ },
+ {
+ "id": "api.file.write_file.configured.app_error",
+ "translation": "Armazenamento de arquivos não está configurado corretamente, Por favor configure S3 ou armazenamento de arquivos no servidor local."
+ },
+ {
+ "id": "api.file.write_file.s3.app_error",
+ "translation": "Encontrado um erro ao gravar no S3"
+ },
+ {
+ "id": "api.file.write_file_locally.create_dir.app_error",
+ "translation": "Encontrado um erro ao criar o diretório para o novo arquivo"
+ },
+ {
+ "id": "api.file.write_file_locally.writing.app_error",
+ "translation": "Encontrado um erro ao gravar no servidor local de armazenamento"
+ },
+ {
+ "id": "api.import.import_post.saving.debug",
+ "translation": "Erro ao salvar o post. usuário=%v, mensagem=%v"
+ },
+ {
+ "id": "api.import.import_user.joining_default.error",
+ "translation": "Encontrado um problema ao se juntar ao canal padrão user_id=%s, team_id=%s, err=%v"
+ },
+ {
+ "id": "api.import.import_user.saving.error",
+ "translation": "Erro ao salvar o usuário. err=%v"
+ },
+ {
+ "id": "api.import.import_user.set_email.error",
+ "translation": "Não foi possível definir email verificado err=%v"
+ },
+ {
+ "id": "api.license.add_license.array.app_error",
+ "translation": "Matriz vazia sobre a 'licença' na requisição"
+ },
+ {
+ "id": "api.license.add_license.expired.app_error",
+ "translation": "A licença está expirada ou não foi iniciada ainda."
+ },
+ {
+ "id": "api.license.add_license.invalid.app_error",
+ "translation": "Arquivo de licença inválido."
+ },
+ {
+ "id": "api.license.add_license.invalid_count.app_error",
+ "translation": "Não foi possível contar o total de usuários únicos."
+ },
+ {
+ "id": "api.license.add_license.no_file.app_error",
+ "translation": "Nenhum arquivo sobre a 'licença' no pedido"
+ },
+ {
+ "id": "api.license.add_license.open.app_error",
+ "translation": "Não foi possível abrir arquivo de licença"
+ },
+ {
+ "id": "api.license.add_license.save.app_error",
+ "translation": "Licença não gravada corretamente."
+ },
+ {
+ "id": "api.license.add_license.save_active.app_error",
+ "translation": "ID de licença ativo não salvo corretamente."
+ },
+ {
+ "id": "api.license.add_license.unique_users.app_error",
+ "translation": "Está licença somente suporta usuários {{.Users}}, quando seu sistema tem {{.Count}} usuários únicos. Usuários únicos são contados por endereço de email distinto. Você pode ver o total de usuários em Relatórios Site -> Ver Estatísticas."
+ },
+ {
+ "id": "api.license.init.debug",
+ "translation": "Inicializando license api routes"
+ },
+ {
+ "id": "api.license.remove_license.remove.app_error",
+ "translation": "Licença não foi removida propriamente."
+ },
+ {
+ "id": "api.oauth.allow_oauth.bad_client.app_error",
+ "translation": "invalid_request: Bad client_id"
+ },
+ {
+ "id": "api.oauth.allow_oauth.bad_redirect.app_error",
+ "translation": "invalid_request: Faltando ou ruim redirect_uri"
+ },
+ {
+ "id": "api.oauth.allow_oauth.bad_response.app_error",
+ "translation": "invalid_request: Bad response_type"
+ },
+ {
+ "id": "api.oauth.allow_oauth.database.app_error",
+ "translation": "server_error: Erro ao acessar o banco de dados"
+ },
+ {
+ "id": "api.oauth.allow_oauth.redirect_callback.app_error",
+ "translation": "invalid_request: Supplied redirect_uri did not match registered callback_url"
+ },
+ {
+ "id": "api.oauth.allow_oauth.turn_off.app_error",
+ "translation": "O administrador do sistema desligou o provedor de serviço OAuth."
+ },
+ {
+ "id": "api.oauth.get_auth_data.find.error",
+ "translation": "Não foi possível encontrar o código de autorização para code=%s"
+ },
+ {
+ "id": "api.oauth.init.debug",
+ "translation": "Inicializando oauth api routes"
+ },
+ {
+ "id": "api.oauth.register_oauth_app.turn_off.app_error",
+ "translation": "O administrador do sistema desligou o provedor de serviço OAuth."
+ },
+ {
+ "id": "api.oauth.revoke_access_token.del_code.app_error",
+ "translation": "Erro ao deletar o código de autorização do BD"
+ },
+ {
+ "id": "api.oauth.revoke_access_token.del_session.app_error",
+ "translation": "Erro ao deletar a sessão do BD"
+ },
+ {
+ "id": "api.oauth.revoke_access_token.del_token.app_error",
+ "translation": "Erro ao deletar o token do BD"
+ },
+ {
+ "id": "api.oauth.revoke_access_token.get.app_error",
+ "translation": "Erro ao obter o token de acesso do BD antes da exclusão"
+ },
+ {
+ "id": "api.post.check_for_out_of_channel_mentions.message.multiple",
+ "translation": "{{.Usernames}} e {{.LastUsername}} foram mencionados, mas eles não pertencem a este canal."
+ },
+ {
+ "id": "api.post.check_for_out_of_channel_mentions.message.one",
+ "translation": "{{.Username}} foi mencionado, mas ele não pertence a este canal."
+ },
+ {
+ "id": "api.post.create_post.bad_filename.error",
+ "translation": "Nome ruim do arquivo descartado, nome do arquivo=%v"
+ },
+ {
+ "id": "api.post.create_post.channel_root_id.app_error",
+ "translation": "ChannelId inválido para o parâmetro RootId"
+ },
+ {
+ "id": "api.post.create_post.last_viewed.error",
+ "translation": "Encontrado um erro ao atualizar a última visualização, channel_id=%s, user_id=%s, err=%v"
+ },
+ {
+ "id": "api.post.create_post.parent_id.app_error",
+ "translation": "Parâmetro ParentId inválido"
+ },
+ {
+ "id": "api.post.create_post.root_id.app_error",
+ "translation": "Parâmetro RootId inválido"
+ },
+ {
+ "id": "api.post.create_webhook_post.creating.app_error",
+ "translation": "Erro ao criar o post"
+ },
+ {
+ "id": "api.post.delete_post.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.post.get_out_of_channel_mentions.regex.error",
+ "translation": "Não foi possível compilar @mention regex user_id=%v, err=%v"
+ },
+ {
+ "id": "api.post.get_post.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.post.handle_post_events_and_forget.channel.error",
+ "translation": "Encontrado um erro ao obter o canal, channel_id=%s, err=%v"
+ },
+ {
+ "id": "api.post.handle_post_events_and_forget.members.error",
+ "translation": "Não foi possível obter os membros do channel_id=%v err=%v"
+ },
+ {
+ "id": "api.post.handle_post_events_and_forget.profiles.error",
+ "translation": "Não foi possível obter perfis de usuário team_id=%v, err=%v"
+ },
+ {
+ "id": "api.post.handle_post_events_and_forget.team.error",
+ "translation": "Encontrado um erro ao obter a equipe, equipe_id=%s, err=%v"
+ },
+ {
+ "id": "api.post.handle_post_events_and_forget.user.error",
+ "translation": "Encontrado um erro ao obter o usuário, user_id=%s, err=%v"
+ },
+ {
+ "id": "api.post.handle_webhook_events_and_forget.create_post.error",
+ "translation": "Não foi possível criar resposta do post, err=%v"
+ },
+ {
+ "id": "api.post.handle_webhook_events_and_forget.event_post.error",
+ "translation": "Falha no Evento POST, err=%s"
+ },
+ {
+ "id": "api.post.handle_webhook_events_and_forget.getting.error",
+ "translation": "Encontrado um erro ao obter webhooks pela equipe, err=%v"
+ },
+ {
+ "id": "api.post.init.debug",
+ "translation": "Inicializando post api routes"
+ },
+ {
+ "id": "api.post.make_direct_channel_visible.get_2_members.error",
+ "translation": "Falha ao obter 2 membros para o canal direto channel_id=%v"
+ },
+ {
+ "id": "api.post.make_direct_channel_visible.get_members.error",
+ "translation": "Falha ao obter membros do canal channel_id=%v err=%v"
+ },
+ {
+ "id": "api.post.make_direct_channel_visible.save_pref.error",
+ "translation": "Falha ao salvar as preferencias do canal direto user_id=%v other_user_id=%v err=%v"
+ },
+ {
+ "id": "api.post.make_direct_channel_visible.update_pref.error",
+ "translation": "Falha ao atualizar as preferencias do canal direto user_id=%v other_user_id=%v err=%v"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.mention_body",
+ "translation": "Você tem uma nova menção."
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.mention_subject",
+ "translation": "Nova Menção"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.message_body",
+ "translation": "Você tem um nova mensagem."
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.message_subject",
+ "translation": "Nova Mensagem Direta"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.push_mention",
+ "translation": " você foi mencionado no "
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.push_message",
+ "translation": " enviado a você uma mensagem direta"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.push_notification.debug",
+ "translation": "Enviar notificação para %v com msg de '%v'"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.push_notification.error",
+ "translation": "Falha ao enviar notificação=%v, err=%v"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.send.error",
+ "translation": "Falha ao enviar uma menção por email email=%v err=%v"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.sent",
+ "translation": "{{.Prefix}} {{.Filenames}} enviado"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.sessions.error",
+ "translation": "Falha ao obter as notificações na sessão id=%v, err=%v"
+ },
+ {
+ "id": "api.post.send_notifications_and_forget.user_id.error",
+ "translation": "Post user_id not returned by GetProfiles user_id=%v"
+ },
+ {
+ "id": "api.post.update_mention_count_and_forget.update_error",
+ "translation": "Falha ao atualizar o número de menções para user_id=%v on channel_id=%v err=%v"
+ },
+ {
+ "id": "api.post.update_post.find.app_error",
+ "translation": "Não foi possível encontrar o post ou comentário para atualizar."
+ },
+ {
+ "id": "api.post.update_post.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.post.update_post.permissions_details.app_error",
+ "translation": "Já deletado id={{.PostId}}"
+ },
+ {
+ "id": "api.post_get_post_by_id.get.app_error",
+ "translation": "Não foi possível obter o post"
+ },
+ {
+ "id": "api.preference.init.debug",
+ "translation": "Inicializando preference api routes"
+ },
+ {
+ "id": "api.preference.save_preferences.decode.app_error",
+ "translation": "Não foi possível decodificar as preferencias para a requisição"
+ },
+ {
+ "id": "api.preference.save_preferences.set.app_error",
+ "translation": "Não foi possível ajustar as preferências para o outro usuário"
+ },
+ {
+ "id": "api.preference.save_preferences.set_details.app_error",
+ "translation": "session.user_id={{.SessionUserId}}, preference.user_id={{.PreferenceUserId}}"
+ },
+ {
+ "id": "api.server.new_server.init.info",
+ "translation": "O servidor está inicializando..."
+ },
+ {
+ "id": "api.server.start_server.listening.info",
+ "translation": "O servidor está escutando na %v"
+ },
+ {
+ "id": "api.server.start_server.rate.info",
+ "translation": "RateLimiter está ativo"
+ },
+ {
+ "id": "api.server.start_server.rate.warn",
+ "translation": "RateLimitSettings não foi configurado corretamente usando VaryByHeader e desativando VaryByRemoteAddr"
+ },
+ {
+ "id": "api.server.start_server.starting.critical",
+ "translation": "Erro ao iniciar o servidor, err:%v"
+ },
+ {
+ "id": "api.server.start_server.starting.info",
+ "translation": "Iniciando o Servidor..."
+ },
+ {
+ "id": "api.server.start_server.starting.panic",
+ "translation": "Erro ao iniciar o servidor "
+ },
+ {
+ "id": "api.server.stop_server.stopped.info",
+ "translation": "Servidor parado"
+ },
+ {
+ "id": "api.server.stop_server.stopping.info",
+ "translation": "Parando o Servidor..."
+ },
+ {
+ "id": "api.slackimport.slack_add_channels.added",
+ "translation": "\r\n Canal Adicionado \r\n"
+ },
+ {
+ "id": "api.slackimport.slack_add_channels.import_failed",
+ "translation": "Falha ao importar: {{.DisplayName}}\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_add_channels.import_failed.debug",
+ "translation": "Falha ao importar: %s"
+ },
+ {
+ "id": "api.slackimport.slack_add_channels.merge",
+ "translation": "Mesclado com o canal existente: {{.DisplayName}}\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_add_posts.bot.warn",
+ "translation": "Slack bot posts não foram importados ainda"
+ },
+ {
+ "id": "api.slackimport.slack_add_posts.msg_no_usr.debug",
+ "translation": "Mensagem sem usuário"
+ },
+ {
+ "id": "api.slackimport.slack_add_posts.unsupported.warn",
+ "translation": "Tipo de post não suportado: %v, %v"
+ },
+ {
+ "id": "api.slackimport.slack_add_posts.user_no_exists.debug",
+ "translation": "Usuário %v não existe!"
+ },
+ {
+ "id": "api.slackimport.slack_add_posts.without_user.debug",
+ "translation": "Mensagem sem usuário"
+ },
+ {
+ "id": "api.slackimport.slack_add_users.created",
+ "translation": "\r\n Usuários Criados\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_add_users.email_pwd",
+ "translation": "Email, Senha: {{.Email}}, {{.Password}}\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_add_users.unable_import",
+ "translation": "Não foi possível importar o usuário: {{.Username}}\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_convert_timestamp.bad.warn",
+ "translation": "Data e hora ruim detectada"
+ },
+ {
+ "id": "api.slackimport.slack_import.log",
+ "translation": "Mattermost Log de Importação Slack\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_import.note1",
+ "translation": "- Alguns posts podem não ter sido importados devido a eles não serem suportados por este importador.\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_import.note2",
+ "translation": "- Slack bot posts não é suportado atualmente.\r\n"
+ },
+ {
+ "id": "api.slackimport.slack_import.notes",
+ "translation": "\r\n Notas \r\n"
+ },
+ {
+ "id": "api.slackimport.slack_import.open.app_error",
+ "translation": "Não foi possível abrir: {{.Filename}}"
+ },
+ {
+ "id": "api.slackimport.slack_import.zip.app_error",
+ "translation": "Não foi possível abrir o arquivo zip"
+ },
+ {
+ "id": "api.team.create_team.email_disabled.app_error",
+ "translation": "Inscrição com e-mail na equipe está desativado."
+ },
+ {
+ "id": "api.team.create_team_from_signup.email_disabled.app_error",
+ "translation": "Inscrição com e-mail na equipe está desativado."
+ },
+ {
+ "id": "api.team.create_team_from_signup.expired_link.app_error",
+ "translation": "O link de inscrição expirou"
+ },
+ {
+ "id": "api.team.create_team_from_signup.invalid_link.app_error",
+ "translation": "O link de inscrição não parece ser válido"
+ },
+ {
+ "id": "api.team.create_team_from_signup.unavailable.app_error",
+ "translation": "Esta URL não está disponível. Por favor, tente outra."
+ },
+ {
+ "id": "api.team.email_teams.sending.error",
+ "translation": "Um erro foi encontrado enquanto enviava um email no emailTeams err=%v"
+ },
+ {
+ "id": "api.team.export_team.admin.app_error",
+ "translation": "Somente um administrador de equipe pode exportar os dados."
+ },
+ {
+ "id": "api.team.import_team.admin.app_error",
+ "translation": "Somente um administrador de equipe pode importar dados."
+ },
+ {
+ "id": "api.team.import_team.array.app_error",
+ "translation": "Matriz vazia em 'file' na requisição"
+ },
+ {
+ "id": "api.team.import_team.integer.app_error",
+ "translation": "Tamanho do arquivo não é um inteiro"
+ },
+ {
+ "id": "api.team.import_team.no_file.app_error",
+ "translation": "Nenhum arquivo sobre a 'file' no pedido"
+ },
+ {
+ "id": "api.team.import_team.open.app_error",
+ "translation": "Não foi possível abrir o arquivo"
+ },
+ {
+ "id": "api.team.import_team.parse.app_error",
+ "translation": "Não foi possível processar o formulário multipart"
+ },
+ {
+ "id": "api.team.import_team.unavailable.app_error",
+ "translation": "Tamanho do arquivo indisponível"
+ },
+ {
+ "id": "api.team.init.debug",
+ "translation": "Inicializando team api routes"
+ },
+ {
+ "id": "api.team.invite_members.admin",
+ "translation": "administrador"
+ },
+ {
+ "id": "api.team.invite_members.already.app_error",
+ "translation": "Essa pessoa já está em sua equipe."
+ },
+ {
+ "id": "api.team.invite_members.member",
+ "translation": "membro"
+ },
+ {
+ "id": "api.team.invite_members.no_one.app_error",
+ "translation": "Ninguém para convidar."
+ },
+ {
+ "id": "api.team.invite_members.send.error",
+ "translation": "Falha ao enviar com sucesso um convite por email err=%v"
+ },
+ {
+ "id": "api.team.invite_members.sending.info",
+ "translation": "enviando convite para %v %v"
+ },
+ {
+ "id": "api.team.is_team_creation_allowed.disabled.app_error",
+ "translation": "Criação de equipe foi desativada. Por favor, pergunte ao seu administrador de sistemas para obter detalhes."
+ },
+ {
+ "id": "api.team.is_team_creation_allowed.domain.app_error",
+ "translation": "Email precisa ser de um domínio específico (ex. @example.com). Por favor pergunte ao seu administrador de sistema por detalhes."
+ },
+ {
+ "id": "api.team.permanent_delete_team.attempting.warn",
+ "translation": "Tentando permanentemente deletar a equipe %v id=%v"
+ },
+ {
+ "id": "api.team.permanent_delete_team.deleted.warn",
+ "translation": "Equipe permanentemente deletada %v id=%v"
+ },
+ {
+ "id": "api.team.signup_team.email_disabled.app_error",
+ "translation": "Inscrição com e-mail na equipe está desativado."
+ },
+ {
+ "id": "api.team.update_team.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.templates.email_change_body.info",
+ "translation": "Seu endereço de email para {{.TeamDisplayName}} foi alterado para {{.NewEmail}}.<br>Se você não fez está mudança, por favor contate o administrador do sistema."
+ },
+ {
+ "id": "api.templates.email_change_body.title",
+ "translation": "Você atualizou seu e-mail"
+ },
+ {
+ "id": "api.templates.email_change_subject",
+ "translation": "Seu endereço de email foi alterado para {{.TeamDisplayName}}"
+ },
+ {
+ "id": "api.templates.email_change_verify_body.button",
+ "translation": "Verificar Email"
+ },
+ {
+ "id": "api.templates.email_change_verify_body.info",
+ "translation": "Para terminar a atualização do seu endereço de email para {{.TeamDisplayName}}, por favor clique no link abaixo para confirmar este como endereço correto."
+ },
+ {
+ "id": "api.templates.email_change_verify_body.title",
+ "translation": "Você atualizou seu e-mail"
+ },
+ {
+ "id": "api.templates.email_change_verify_subject",
+ "translation": "Verifique novo endereço de email para {{.TeamDisplayName}}"
+ },
+ {
+ "id": "api.templates.email_footer",
+ "translation": "Para alterar suas preferencias de notificação, faça login no site da sua equipe e vá para Configurações de Conta > Notificações."
+ },
+ {
+ "id": "api.templates.email_info",
+ "translation": "Qualquer dúvida, envie-nos a qualquer momento: <a href='mailto:{{.FeedbackEmail}}' style='text-decoration: none; color:#2389D7;'>{{.FeedbackEmail}}</a>.<br>Nossos melhores cumprimentos,<br>Equipe {{.SiteName}}<br>"
+ },
+ {
+ "id": "api.templates.error.link",
+ "translation": "Voltar ao Mattermost"
+ },
+ {
+ "id": "api.templates.error.title",
+ "translation": "{{ .SiteName }} precisa da sua ajuda:"
+ },
+ {
+ "id": "api.templates.find_teams_body.found",
+ "translation": "Sua solicitação para encontrar equipes associadas ao seu email encontrou o seguinte:"
+ },
+ {
+ "id": "api.templates.find_teams_body.not_found",
+ "translation": "Não foi possível encontrar nenhuma equipe com o email informado."
+ },
+ {
+ "id": "api.templates.find_teams_body.title",
+ "translation": "Localizando equipes"
+ },
+ {
+ "id": "api.templates.find_teams_subject",
+ "translation": "Suas Equipes {{ .SiteName }}"
+ },
+ {
+ "id": "api.templates.invite_body.button",
+ "translation": "Participar da Equipe"
+ },
+ {
+ "id": "api.templates.invite_body.extra_info",
+ "translation": "Mattermost permite compartilhar mensagens e arquivos do seu PC ou telefone, com pesquisa instantânea e arquivamento. Depois que você estiver participando a <strong>{{.TeamDisplayName}}</strong>, você pode fazer login na sua nova equipe e ter acesso a esses recursos a qualquer momento a partir do endereço web:<br/><br/><a href='{{.TeamURL}}'>{{.TeamURL}}</a>"
+ },
+ {
+ "id": "api.templates.invite_body.info",
+ "translation": "O {{.SenderStatus}} de equipe <strong>{{.SenderName}}</strong>, convidou você para participar <strong>{{.TeamDisplayName}}</strong>."
+ },
+ {
+ "id": "api.templates.invite_body.title",
+ "translation": "Você foi convidado"
+ },
+ {
+ "id": "api.templates.invite_subject",
+ "translation": "{{ .SenderName }} convidou você para se juntar a Equipe {{ .TeamDisplayName }} no {{.SiteName}}"
+ },
+ {
+ "id": "api.templates.password_change_body.info",
+ "translation": "Sua senha foi atualizada para {{.TeamDisplayName}} no {{ .TeamURL }} pelo {{.Method}}.<br>Se está mudança não foi iniciada por você, por favor entre em contato com o seu administrado do sistema"
+ },
+ {
+ "id": "api.templates.password_change_body.title",
+ "translation": "A sua senha foi alterada"
+ },
+ {
+ "id": "api.templates.password_change_subject",
+ "translation": "Sua senha foi atualizada para {{.TeamDisplayName}} no {{ .SiteName }}"
+ },
+ {
+ "id": "api.templates.post_body.button",
+ "translation": "Ir Para o Canal"
+ },
+ {
+ "id": "api.templates.post_body.info",
+ "translation": "CANAL: {{.ChannelName}}<br>{{.SenderName}} - {{.Hour}}:{{.Minute}} {{.TimeZone}}, {{.Month}} {{.Day}}"
+ },
+ {
+ "id": "api.templates.post_subject",
+ "translation": "{{.SubjectText}} no {{.TeamDisplayName}} em {{.Month}} {{.Day}}, {{.Year}}"
+ },
+ {
+ "id": "api.templates.reset_body.button",
+ "translation": "Redefinir senha"
+ },
+ {
+ "id": "api.templates.reset_body.info",
+ "translation": "Para alterar a sua senha, clique abaixo \"Redefinir Senha\".<br>Se você não pretende redefinir sua senha, por favor ignore este email e sua senha irá permanecer a mesma. O link de redefinição de senha expira em 24 horas."
+ },
+ {
+ "id": "api.templates.reset_body.title",
+ "translation": "Você solicitou uma redefinição de senha"
+ },
+ {
+ "id": "api.templates.reset_subject",
+ "translation": "Resetar sua senha"
+ },
+ {
+ "id": "api.templates.signin_change_email.body.method_email",
+ "translation": "email e senha"
+ },
+ {
+ "id": "api.templates.signin_change_email.body.title",
+ "translation": "Você atualizou seu método de acesso"
+ },
+ {
+ "id": "api.templates.signup_team_body.button",
+ "translation": "Configure sua equipe"
+ },
+ {
+ "id": "api.templates.signup_team_body.info",
+ "translation": "{{ .SiteName }} é um lugar para todas as comunicações da sua equipe, pesquisável e disponível em qualquer lugar.<br>Você pode obter mais do {{ .SiteName }} quando sua esquipe estiver em constante comunicação--vamos levá-los a bordo."
+ },
+ {
+ "id": "api.templates.signup_team_body.title",
+ "translation": "Obrigado por criar uma equipe!"
+ },
+ {
+ "id": "api.templates.signup_team_subject",
+ "translation": "{{ .SiteName }} Configuração da Equipe"
+ },
+ {
+ "id": "api.templates.singin_change_email.body.info",
+ "translation": "Você atualizou seu método de inscrição para {{.TeamDisplayName}} no {{ .TeamURL }} para {{.Method}}.<br>Se esta mudança não foi iniciada por você, por favor entre em contato com o administrador do sistema."
+ },
+ {
+ "id": "api.templates.singin_change_email.subject",
+ "translation": "Você atualizou seu método de login para {{.TeamDisplayName}} em {{ .SiteName }}"
+ },
+ {
+ "id": "api.templates.verify_body.button",
+ "translation": "Verificar Email"
+ },
+ {
+ "id": "api.templates.verify_body.info",
+ "translation": "Por favor verifique seu endereço de e-mail clicando abaixo."
+ },
+ {
+ "id": "api.templates.verify_body.title",
+ "translation": "Você se juntou a equipe {{ .TeamDisplayName }}"
+ },
+ {
+ "id": "api.templates.verify_subject",
+ "translation": "[{{ .TeamDisplayName }} {{ .SiteName }}] Verificação Email"
+ },
+ {
+ "id": "api.templates.welcome_body.button",
+ "translation": "Verificar Email"
+ },
+ {
+ "id": "api.templates.welcome_body.info",
+ "translation": "Por favor verifique seu endereço de e-mail clicando abaixo."
+ },
+ {
+ "id": "api.templates.welcome_body.info2",
+ "translation": "Você pode acessar sua nova equipe pelo endereço web:"
+ },
+ {
+ "id": "api.templates.welcome_body.info3",
+ "translation": "Mattermost permite compartilhar mensagens e arquivos do seu PC ou telefone, com a pesquisa instantânea e arquivamento."
+ },
+ {
+ "id": "api.templates.welcome_body.title",
+ "translation": "Você se juntou a equipe {{ .TeamDisplayName }}"
+ },
+ {
+ "id": "api.templates.welcome_subject",
+ "translation": "Você se juntou {{ .TeamDisplayName }}"
+ },
+ {
+ "id": "api.user.add_direct_channels_and_forget.failed.error",
+ "translation": "Falha ao adicionar preferencias diretas ao canal para o usuário user_id=%s, team_id=%s, err=%v"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.bad_response.app_error",
+ "translation": "Resposta errada da solicitação de token"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.bad_token.app_error",
+ "translation": "Tipo de token errado"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.invalid_state.app_error",
+ "translation": "Estado inválido"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.invalid_state_team.app_error",
+ "translation": "Status inválido; falta o nome da equipe"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.missing.app_error",
+ "translation": "Faltando o token de acesso"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.service.app_error",
+ "translation": "Solicitação de token para {{.Service}} falhou"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.token_failed.app_error",
+ "translation": "Solicitação de token falhou"
+ },
+ {
+ "id": "api.user.authorize_oauth_user.unsupported.app_error",
+ "translation": "Provedor de serviço OAuth não suportado"
+ },
+ {
+ "id": "api.user.check_user_login_attempts.too_many.app_error",
+ "translation": "A sua conta está bloqueada por causa de muitas tentativas de senha que falharam. Por favor, redefina sua senha."
+ },
+ {
+ "id": "api.user.check_user_password.invalid.app_error",
+ "translation": "Acesso falhou por causa de senha inválida"
+ },
+ {
+ "id": "api.user.complete_switch_with_oauth.blank_email.app_error",
+ "translation": "E-mail em branco"
+ },
+ {
+ "id": "api.user.complete_switch_with_oauth.parse.app_error",
+ "translation": "Não foi possível processar os dados de autenticação do {{.Service}} de objeto de usuário"
+ },
+ {
+ "id": "api.user.complete_switch_with_oauth.unavailable.app_error",
+ "translation": "{{.Service}} oauth não disponível neste servidor"
+ },
+ {
+ "id": "api.user.create_oauth_user.already_attached.app_error",
+ "translation": "Equipe {{.DisplayName}} já tem um usuário com o endereço de email anexado a sua conta {{.Service}}"
+ },
+ {
+ "id": "api.user.create_oauth_user.already_used.app_error",
+ "translation": "Está conta {{.Service}} já foi utilizada para logar na equipe {{.DisplayName}}"
+ },
+ {
+ "id": "api.user.create_oauth_user.create.app_error",
+ "translation": "Não foi possível criar o usuário fora do {{.Service}} do objeto de usuário"
+ },
+ {
+ "id": "api.user.create_oauth_user.not_available.app_error",
+ "translation": "{{.Service}} oauth não disponível neste servidor"
+ },
+ {
+ "id": "api.user.create_profile_image.default_font.app_error",
+ "translation": "Não foi possível criar a imagem font padrão"
+ },
+ {
+ "id": "api.user.create_profile_image.encode.app_error",
+ "translation": "Não foi possível codificar a imagem padrão do perfil"
+ },
+ {
+ "id": "api.user.create_profile_image.initial.app_error",
+ "translation": "Não foi possível adicionar a imagem inicial de perfil padrão para o usuário"
+ },
+ {
+ "id": "api.user.create_user.accepted_domain.app_error",
+ "translation": "O email que você forneceu não pertence a um domínio aceito. Por favor contacte o seu administrador ou entre com um email diferente."
+ },
+ {
+ "id": "api.user.create_user.joining.error",
+ "translation": "Encontrado um problema ao se juntar ao canal padrão user_id=%s, team_id=%s, err=%v"
+ },
+ {
+ "id": "api.user.create_user.save.error",
+ "translation": "Não foi possível salvar o usuário err=%v"
+ },
+ {
+ "id": "api.user.create_user.signup_email_disabled.app_error",
+ "translation": "Inscrição com e-mail está desativada."
+ },
+ {
+ "id": "api.user.create_user.signup_link_expired.app_error",
+ "translation": "O link de acesso expirou"
+ },
+ {
+ "id": "api.user.create_user.signup_link_invalid.app_error",
+ "translation": "O link de acesso não parece ser válido"
+ },
+ {
+ "id": "api.user.create_user.team_name.app_error",
+ "translation": "Inválido nome de equipe"
+ },
+ {
+ "id": "api.user.create_user.tutorial.error",
+ "translation": "Encontrado um erro ao salvar as preferências de tutorial, err=%v"
+ },
+ {
+ "id": "api.user.create_user.verified.error",
+ "translation": "Falha ao definir email como verificado err=%v"
+ },
+ {
+ "id": "api.user.get_authorization_code.unsupported.app_error",
+ "translation": "Provedor de serviço OAuth não suportado"
+ },
+ {
+ "id": "api.user.get_me.getting.error",
+ "translation": "Erro na obtenção do perfil dos usuários para id=%v forçando o logout"
+ },
+ {
+ "id": "api.user.init.debug",
+ "translation": "Inicializando user api routes"
+ },
+ {
+ "id": "api.user.login.blank_pwd.app_error",
+ "translation": "Campo senha não pode estar em branco"
+ },
+ {
+ "id": "api.user.login.inactive.app_error",
+ "translation": "Login falhou devido a sua conta estar inativa. Por favor entre em contado com um administrador."
+ },
+ {
+ "id": "api.user.login.not_provided.app_error",
+ "translation": "ID do usuário ou o nome da equipe e e-mail deve ser fornecido"
+ },
+ {
+ "id": "api.user.login.not_verified.app_error",
+ "translation": "Login falhou por causa do endereço de email não ter sido verificado"
+ },
+ {
+ "id": "api.user.login.revoking.app_error",
+ "translation": "Revogada sessionid=%v para userid=%v logue novamente com o mesmo id de dispositivo"
+ },
+ {
+ "id": "api.user.login_by_email.sign_in.app_error",
+ "translation": "Por favor logue usando {{.AuthService}}"
+ },
+ {
+ "id": "api.user.login_by_oauth.not_available.app_error",
+ "translation": "{{.Service}} oauth não disponível neste servidor"
+ },
+ {
+ "id": "api.user.login_by_oauth.parse.app_error",
+ "translation": "Não foi possível processar os dados de autenticação do {{.Service}} de objeto de usuário"
+ },
+ {
+ "id": "api.user.login_ldap.blank_pwd.app_error",
+ "translation": "Campo senha não pode estar em branco"
+ },
+ {
+ "id": "api.user.login_ldap.disabled.app_error",
+ "translation": "LDAP não habilitado neste servidor"
+ },
+ {
+ "id": "api.user.login_ldap.need_id.app_error",
+ "translation": "Precisa de um ID"
+ },
+ {
+ "id": "api.user.login_ldap.not_available.app_error",
+ "translation": "LDAP não está disponível neste servidor"
+ },
+ {
+ "id": "api.user.permanent_delete_user.attempting.warn",
+ "translation": "Tentando permanentemente deletar a conta %v id=%v"
+ },
+ {
+ "id": "api.user.permanent_delete_user.deleted.warn",
+ "translation": "Conta permanentemente deletada %v id=%v"
+ },
+ {
+ "id": "api.user.permanent_delete_user.system_admin.warn",
+ "translation": "Você está deletando %v que é um administrador de sistema. Você pode precisar definir outra conta como administrador de sistema usando as ferramentas de linha de comando."
+ },
+ {
+ "id": "api.user.reset_password.invalid_link.app_error",
+ "translation": "O link de redefinição de senha não parece ser válido"
+ },
+ {
+ "id": "api.user.reset_password.link_expired.app_error",
+ "translation": "O link de redefinição de senha expirou"
+ },
+ {
+ "id": "api.user.reset_password.method",
+ "translation": "use um link de redefinição de senha"
+ },
+ {
+ "id": "api.user.reset_password.sso.app_error",
+ "translation": "Não foi possível resetar a senha para conta SSO"
+ },
+ {
+ "id": "api.user.reset_password.wrong_team.app_error",
+ "translation": "Tentando redefinir senha para usuário na equipe errada."
+ },
+ {
+ "id": "api.user.send_email_change_email_and_forget.error",
+ "translation": "Falha ao enviar com sucesso uma notificação por email err=%v"
+ },
+ {
+ "id": "api.user.send_email_change_verify_email_and_forget.error",
+ "translation": "Falha ao enviar com sucesso uma verificação de email err=%v"
+ },
+ {
+ "id": "api.user.send_password_change_email_and_forget.error",
+ "translation": "Falha ao enviar com sucesso uma atualização de senha por email err=%v"
+ },
+ {
+ "id": "api.user.send_password_reset.find.app_error",
+ "translation": "Não foi possível encontrar uma conta com esse endereço."
+ },
+ {
+ "id": "api.user.send_password_reset.send.app_error",
+ "translation": "Falha ao enviar email de senha redefinida com sucesso"
+ },
+ {
+ "id": "api.user.send_password_reset.sso.app_error",
+ "translation": "Não foi possível resetar a senha para conta SSO"
+ },
+ {
+ "id": "api.user.send_sign_in_change_email_and_forget.error",
+ "translation": "Falha ao enviar com sucesso uma atualização de senha por email err=%v"
+ },
+ {
+ "id": "api.user.send_verify_email_and_forget.failed.error",
+ "translation": "Falha ao enviar com sucesso uma verificação de email err=%v"
+ },
+ {
+ "id": "api.user.send_welcome_email_and_forget.failed.error",
+ "translation": "Falha ao enviar com sucesso boas vindas por email err=%v"
+ },
+ {
+ "id": "api.user.switch_to_email.context.app_error",
+ "translation": "Atualização de senha falhou devido ao contexto user_id não combinar com id de usuário fornecido"
+ },
+ {
+ "id": "api.user.update_active.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.user.update_password.context.app_error",
+ "translation": "Atualização da senha falhou devido ao contexto user_id não combinar com props do usuário fornecido"
+ },
+ {
+ "id": "api.user.update_password.failed.app_error",
+ "translation": "Atualização de senha falhou"
+ },
+ {
+ "id": "api.user.update_password.incorrect.app_error",
+ "translation": "A \"Senha Atual\" que você inseriu está incorreta. Por favor, verifique se o Caps Lock está desativado e tente novamente."
+ },
+ {
+ "id": "api.user.update_password.menu",
+ "translation": "usando o menu de configurações"
+ },
+ {
+ "id": "api.user.update_password.oauth.app_error",
+ "translation": "Atualização de senha falhou porque o usuário está conectado através de um serviço OAuth"
+ },
+ {
+ "id": "api.user.update_password.valid_account.app_error",
+ "translation": "Atualização de senha falhou porque não foi possível encontrar uma conta válida"
+ },
+ {
+ "id": "api.user.update_roles.one_admin.app_error",
+ "translation": "Deve haver pelo menos um administrador ativo"
+ },
+ {
+ "id": "api.user.update_roles.permissions.app_error",
+ "translation": "Você não tem a permissão apropriada"
+ },
+ {
+ "id": "api.user.update_roles.system_admin_mod.app_error",
+ "translation": "A função de administrador do sistema só pode ser modificado por outro administrador do sistema"
+ },
+ {
+ "id": "api.user.update_roles.system_admin_set.app_error",
+ "translation": "A função de administrador do sistema só pode ser definida por um outro administrador do sistema"
+ },
+ {
+ "id": "api.user.upload_profile_user.array.app_error",
+ "translation": "Matriz vazia em 'image' na requisição"
+ },
+ {
+ "id": "api.user.upload_profile_user.decode.app_error",
+ "translation": "Não foi possível decodificar a imagem do perfil"
+ },
+ {
+ "id": "api.user.upload_profile_user.decode_config.app_error",
+ "translation": "Não foi possível decodificar a configuração da imagem do perfil."
+ },
+ {
+ "id": "api.user.upload_profile_user.encode.app_error",
+ "translation": "Não foi possível codificar a imagem do perfil"
+ },
+ {
+ "id": "api.user.upload_profile_user.no_file.app_error",
+ "translation": "Nenhum arquivo sobre 'image' no pedido"
+ },
+ {
+ "id": "api.user.upload_profile_user.open.app_error",
+ "translation": "Não foi possível abrir arquivo de imagem"
+ },
+ {
+ "id": "api.user.upload_profile_user.parse.app_error",
+ "translation": "Não foi possível processar o formulário multipart"
+ },
+ {
+ "id": "api.user.upload_profile_user.storage.app_error",
+ "translation": "Não é possível fazer upload do arquivo. Armazenamento de imagem não está configurado."
+ },
+ {
+ "id": "api.user.upload_profile_user.too_large.app_error",
+ "translation": "Não foi possível enviar a imagem do perfil. Arquivo muito grande."
+ },
+ {
+ "id": "api.user.upload_profile_user.upload_profile.app_error",
+ "translation": "Não foi possível enviar a imagem do perfil"
+ },
+ {
+ "id": "api.web_conn.new_web_conn.last_activity.error",
+ "translation": "Falha ao atualizar LastActivityAt para o user_id=%v e session_id=%v, err=%v"
+ },
+ {
+ "id": "api.web_conn.new_web_conn.last_ping.error",
+ "translation": "Falha ao atualizar LastPingAt para user_id=%v, err=%v"
+ },
+ {
+ "id": "api.web_hub.start.stopping.debug",
+ "translation": "parando %v conexões"
+ },
+ {
+ "id": "api.web_socket.connect.error",
+ "translation": "conexão websocket err: %v"
+ },
+ {
+ "id": "api.web_socket.connect.upgrade.app_error",
+ "translation": "Falha ao atualizar conexão websocket"
+ },
+ {
+ "id": "api.web_socket.init.debug",
+ "translation": "Inicializando web socket api routes"
+ },
+ {
+ "id": "api.web_team_hun.start.debug",
+ "translation": "central de equipes parou para teamId=%v"
+ },
+ {
+ "id": "api.webhook.create_incoming.disabled.app_errror",
+ "translation": "Webhooks de entrada foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.create_outgoing.disabled.app_error",
+ "translation": "Webhooks de saída foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.create_outgoing.triggers.app_error",
+ "translation": "Ou trigger_words ou channel_id precisa ser definido"
+ },
+ {
+ "id": "api.webhook.delete_incoming.disabled.app_errror",
+ "translation": "Webhooks de entrada foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.delete_incoming.permissions.app_errror",
+ "translation": "Permissões inadequadas para deletar o webhook de entrada"
+ },
+ {
+ "id": "api.webhook.delete_outgoing.disabled.app_error",
+ "translation": "Webhooks de saída foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.delete_outgoing.permissions.app_error",
+ "translation": "Permissões inadequadas para deletar o webhook de saída"
+ },
+ {
+ "id": "api.webhook.get_incoming.disabled.app_error",
+ "translation": "Webhooks de entrada foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.get_outgoing.disabled.app_error",
+ "translation": "Webhooks de saída foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.init.debug",
+ "translation": "Inicializando webhook api routes"
+ },
+ {
+ "id": "api.webhook.regen_outgoing_token.disabled.app_error",
+ "translation": "Webhooks de saída foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "api.webhook.regen_outgoing_token.permissions.app_error",
+ "translation": "Permissões inadequadas para re-gerar o token do webhook de saída"
+ },
+ {
+ "id": "ent.ldap.do_login.bind_admin_user.app_error",
+ "translation": "Não foi possível ligar ao servidor LDAP. Verifique BindUsername e BindPassword."
+ },
+ {
+ "id": "ent.ldap.do_login.invalid_password.app_error",
+ "translation": "Senha inválida"
+ },
+ {
+ "id": "ent.ldap.do_login.licence_disable.app_error",
+ "translation": "Funcionalidade LDAP desabilitada pela licença atual. Entre em contato com o administrador do sistema sobre como atualizar sua licença de empresa."
+ },
+ {
+ "id": "ent.ldap.do_login.matched_to_many_users.app_error",
+ "translation": "Nome de usuário dado corresponde a vários usuários"
+ },
+ {
+ "id": "ent.ldap.do_login.search_ldap_server.app_error",
+ "translation": "Falha ao pesquisar o servidor LDAP"
+ },
+ {
+ "id": "ent.ldap.do_login.unable_to_connect.app_error",
+ "translation": "Não foi possível conectar no servidor LDAP"
+ },
+ {
+ "id": "ent.ldap.do_login.unable_to_create_user.app_error",
+ "translation": "Credenciais válidas, mas incapaz de criar usuário."
+ },
+ {
+ "id": "ent.ldap.do_login.user_not_registered.app_error",
+ "translation": "Usuário não registrado no servidor LDAP"
+ },
+ {
+ "id": "manaultesting.get_channel_id.no_found.debug",
+ "translation": "Não foi possível encontrar o canal %v, procurado %v possibilidades"
+ },
+ {
+ "id": "manaultesting.get_channel_id.unable.debug",
+ "translation": "Não é possível obter canais"
+ },
+ {
+ "id": "manaultesting.manual_test.create.info",
+ "translation": "Criando usuário e equipe"
+ },
+ {
+ "id": "manaultesting.manual_test.parse.app_error",
+ "translation": "Não é possível processar a URL"
+ },
+ {
+ "id": "manaultesting.manual_test.setup.info",
+ "translation": "Configuração para teste manual ..."
+ },
+ {
+ "id": "manaultesting.manual_test.uid.debug",
+ "translation": "Sem uid na url"
+ },
+ {
+ "id": "manaultesting.test_autolink.info",
+ "translation": "Auto Link Teste Manual"
+ },
+ {
+ "id": "manaultesting.test_autolink.unable.app_error",
+ "translation": "Não é possível obter canais"
+ },
+ {
+ "id": "mattermost.bulletin.subject",
+ "translation": "Mattermost Boletim de Segurança"
+ },
+ {
+ "id": "mattermost.config_file",
+ "translation": "Carregado o arquivo de configuração de %v"
+ },
+ {
+ "id": "mattermost.current_version",
+ "translation": "Versão atual é %v (%v/%v/%v)"
+ },
+ {
+ "id": "mattermost.entreprise_enabled",
+ "translation": "Ativado Enterprise: %v"
+ },
+ {
+ "id": "mattermost.load_license.find.warn",
+ "translation": "Não é possível encontrar licença ativa"
+ },
+ {
+ "id": "mattermost.security_bulletin.error",
+ "translation": "Falha ao obter detalhes do boletim de segurança"
+ },
+ {
+ "id": "mattermost.security_bulletin_read.error",
+ "translation": "Falha ao ler detalhes do boletim de segurança"
+ },
+ {
+ "id": "mattermost.security_checks.debug",
+ "translation": "Verificação de atualização de segurança do Mattermost"
+ },
+ {
+ "id": "mattermost.security_info.error",
+ "translation": "Falha ao obter informação sobre a atualização de segurança do Mattermost."
+ },
+ {
+ "id": "mattermost.send_bulletin.info",
+ "translation": "Enviando o boletim de segurança para %v a %v"
+ },
+ {
+ "id": "mattermost.system_admins.error",
+ "translation": "Falha ao obter administradores do sistema para a informação de atualização de segurança do Mattermost."
+ },
+ {
+ "id": "mattermost.working_dir",
+ "translation": "Diretório atual é %v"
+ },
+ {
+ "id": "model.access.is_valid.access_token.app_error",
+ "translation": "Token de acesso inválido"
+ },
+ {
+ "id": "model.access.is_valid.auth_code.app_error",
+ "translation": "Código de autenticação inválido"
+ },
+ {
+ "id": "model.access.is_valid.redirect_uri.app_error",
+ "translation": "Uri de redirecionamento inválida"
+ },
+ {
+ "id": "model.access.is_valid.refresh_token.app_error",
+ "translation": "Token de atualização inválido"
+ },
+ {
+ "id": "model.authorize.is_valid.auth_code.app_error",
+ "translation": "Código de autorização inválido"
+ },
+ {
+ "id": "model.authorize.is_valid.client_id.app_error",
+ "translation": "Id de cliente inválido"
+ },
+ {
+ "id": "model.authorize.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.authorize.is_valid.expires.app_error",
+ "translation": "Expira em deve ser definido"
+ },
+ {
+ "id": "model.authorize.is_valid.redirect_uri.app_error",
+ "translation": "Uri de redirecionamento inválida"
+ },
+ {
+ "id": "model.authorize.is_valid.scope.app_error",
+ "translation": "Escopo inválido"
+ },
+ {
+ "id": "model.authorize.is_valid.state.app_error",
+ "translation": "Estado inválido"
+ },
+ {
+ "id": "model.authorize.is_valid.user_id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.channel.is_valid.2_or_more.app_error",
+ "translation": "Nome deve ter 2 ou mais caracteres alfanuméricos em minúsculas"
+ },
+ {
+ "id": "model.channel.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.channel.is_valid.creator_id.app_error",
+ "translation": "Id de criador inválido"
+ },
+ {
+ "id": "model.channel.is_valid.display_name.app_error",
+ "translation": "Nome para exibição inválido"
+ },
+ {
+ "id": "model.channel.is_valid.header.app_error",
+ "translation": "Cabeçalho inválido"
+ },
+ {
+ "id": "model.channel.is_valid.id.app_error",
+ "translation": "ID inválida"
+ },
+ {
+ "id": "model.channel.is_valid.name.app_error",
+ "translation": "Nome inválido"
+ },
+ {
+ "id": "model.channel.is_valid.purpose.app_error",
+ "translation": "Propósito inválido"
+ },
+ {
+ "id": "model.channel.is_valid.type.app_error",
+ "translation": "Tipo inválido"
+ },
+ {
+ "id": "model.channel.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.channel_member.is_valid.channel_id.app_error",
+ "translation": "ID do canal inválida"
+ },
+ {
+ "id": "model.channel_member.is_valid.notify_level.app_error",
+ "translation": "Nível de notificação inválido"
+ },
+ {
+ "id": "model.channel_member.is_valid.role.app_error",
+ "translation": "Função inválida"
+ },
+ {
+ "id": "model.channel_member.is_valid.unread_level.app_error",
+ "translation": "Nível do marcador não lido inválido"
+ },
+ {
+ "id": "model.channel_member.is_valid.user_id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.client.connecting.app_error",
+ "translation": "Encontramos um erro enquanto conectava ao servidor"
+ },
+ {
+ "id": "model.client.login.app_error",
+ "translation": "Tokens de autenticação não são iguais"
+ },
+ {
+ "id": "model.command.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.command.is_valid.id.app_error",
+ "translation": "ID inválida"
+ },
+ {
+ "id": "model.command.is_valid.method.app_error",
+ "translation": "Método inválido"
+ },
+ {
+ "id": "model.command.is_valid.team_id.app_error",
+ "translation": "Inválido equipe id"
+ },
+ {
+ "id": "model.command.is_valid.token.app_error",
+ "translation": "Token inválido"
+ },
+ {
+ "id": "model.command.is_valid.trigger.app_error",
+ "translation": "Gatilho inválido"
+ },
+ {
+ "id": "model.command.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.command.is_valid.url.app_error",
+ "translation": "Url inválida"
+ },
+ {
+ "id": "model.command.is_valid.url_http.app_error",
+ "translation": "URL inválida. Deve ser uma URL válida e começar com http:// ou https://"
+ },
+ {
+ "id": "model.command.is_valid.user_id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.config.is_valid.email_reset_salt.app_error",
+ "translation": "Senha inválida redefinir salt nas configurações de email. Deve ser de 32 caracteres ou mais."
+ },
+ {
+ "id": "model.config.is_valid.email_salt.app_error",
+ "translation": "Inválido convite salt em configurações de email. Deve ser de 32 caracteres ou mais."
+ },
+ {
+ "id": "model.config.is_valid.email_security.app_error",
+ "translation": "Inválida segurança de conexão em configurações de email. Deve ser '', 'TLS', or 'STARTTLS'"
+ },
+ {
+ "id": "model.config.is_valid.encrypt_sql.app_error",
+ "translation": "Inválido chave encrypt rest em configurações SQL. Deve ser 32 caracteres ou mais."
+ },
+ {
+ "id": "model.config.is_valid.file_driver.app_error",
+ "translation": "Inválido nome do driver em configurações de arquivo. Deve ser 'local' ou 'amazons3'"
+ },
+ {
+ "id": "model.config.is_valid.file_preview_height.app_error",
+ "translation": "Definição da altura da pré-visualização inválida. Deve ser zero ou um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.file_preview_width.app_error",
+ "translation": "Definição da largura da pré-visualização inválida. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.file_profile_height.app_error",
+ "translation": "Definição da altura da perfil inválida. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.file_profile_width.app_error",
+ "translation": "Definição da largura do perfil inválida. Deve um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.file_salt.app_error",
+ "translation": "Inválido salt de link público em configurações de arquivo. Deve ser 32 caracteres ou mais."
+ },
+ {
+ "id": "model.config.is_valid.file_thumb_height.app_error",
+ "translation": "Definição da altura do thumbnail inválida. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.file_thumb_width.app_error",
+ "translation": "Definição da largura do thumbnail inválida. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.listen_address.app_error",
+ "translation": "Inválido endereço de escuta em configurações de serviço Deve ser ajustado."
+ },
+ {
+ "id": "model.config.is_valid.login_attempts.app_error",
+ "translation": "Inválido máxima tentativas de login em configurações de serviço. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.max_users.app_error",
+ "translation": "Inválido máximo de usuários por equipe em configurações de equipe. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.rate_mem.app_error",
+ "translation": "Tamanho do armazenamento de memória inválido para configurações de limite de velocidade. Deve ser um número positivo"
+ },
+ {
+ "id": "model.config.is_valid.rate_sec.app_error",
+ "translation": "Inválido por seg para configuração do limite de taxa. Deve ser um número positivo"
+ },
+ {
+ "id": "model.config.is_valid.sql_data_src.app_error",
+ "translation": "Inválido fonte de dados em configurações SQL. Deve ser definido."
+ },
+ {
+ "id": "model.config.is_valid.sql_driver.app_error",
+ "translation": "Inválido nome do driver em configurações SQL. Deve ser 'mysql' ou 'postgres'"
+ },
+ {
+ "id": "model.config.is_valid.sql_idle.app_error",
+ "translation": "Inválido máximo de conexões ociosas em configurações SQL. Deve ser um número positivo."
+ },
+ {
+ "id": "model.config.is_valid.sql_max_conn.app_error",
+ "translation": "Inválido máximo de conexões abertas em configurações SQL. Deve ser um número positivo."
+ },
+ {
+ "id": "model.file_info.get.gif.app_error",
+ "translation": "Não foi possível decodificar o gif."
+ },
+ {
+ "id": "model.incoming_hook.channel_id.app_error",
+ "translation": "Id de canal inválido"
+ },
+ {
+ "id": "model.incoming_hook.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.incoming_hook.id.app_error",
+ "translation": "ID inválida"
+ },
+ {
+ "id": "model.incoming_hook.team_id.app_error",
+ "translation": "Equipe id inválida"
+ },
+ {
+ "id": "model.incoming_hook.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.incoming_hook.user_id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.oauth.is_valid.app_id.app_error",
+ "translation": "ID app inválido"
+ },
+ {
+ "id": "model.oauth.is_valid.callback.app_error",
+ "translation": "Urls de retorno de chamada inválidas"
+ },
+ {
+ "id": "model.oauth.is_valid.client_secret.app_error",
+ "translation": "Cliente segredo inválido"
+ },
+ {
+ "id": "model.oauth.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.oauth.is_valid.creator_id.app_error",
+ "translation": "Id criador inválido"
+ },
+ {
+ "id": "model.oauth.is_valid.description.app_error",
+ "translation": "Descrição inválida"
+ },
+ {
+ "id": "model.oauth.is_valid.homepage.app_error",
+ "translation": "Pagina inicial inválida"
+ },
+ {
+ "id": "model.oauth.is_valid.name.app_error",
+ "translation": "Nome inválido"
+ },
+ {
+ "id": "model.oauth.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.callback.app_error",
+ "translation": "Urls de retorno de chamada inválidas"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.channel_id.app_error",
+ "translation": "Id de canal inválido"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.id.app_error",
+ "translation": "ID inválida"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.team_id.app_error",
+ "translation": "Equipe id inválida"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.token.app_error",
+ "translation": "Token inválido"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.url.app_error",
+ "translation": "URLs de retorno de chamada inválida. Cada um deve ser uma URL válida e começar com http:// ou https://"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.user_id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.outgoing_hook.is_valid.words.app_error",
+ "translation": "Palavras gatilho inválida"
+ },
+ {
+ "id": "model.post.is_valid.channel_id.app_error",
+ "translation": "Id de canal inválido"
+ },
+ {
+ "id": "model.post.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.post.is_valid.filenames.app_error",
+ "translation": "Nomes dos arquivos inválidos"
+ },
+ {
+ "id": "model.post.is_valid.hashtags.app_error",
+ "translation": "Hashtags inválidas"
+ },
+ {
+ "id": "model.post.is_valid.id.app_error",
+ "translation": "ID inválida"
+ },
+ {
+ "id": "model.post.is_valid.msg.app_error",
+ "translation": "Mensagem inválida"
+ },
+ {
+ "id": "model.post.is_valid.original_id.app_error",
+ "translation": "Id original inválida"
+ },
+ {
+ "id": "model.post.is_valid.parent_id.app_error",
+ "translation": "Id Pai inválido"
+ },
+ {
+ "id": "model.post.is_valid.props.app_error",
+ "translation": "Props inválido"
+ },
+ {
+ "id": "model.post.is_valid.root_id.app_error",
+ "translation": "Id raiz inválida."
+ },
+ {
+ "id": "model.post.is_valid.root_parent.app_error",
+ "translation": "Inválido root id deve ser definido se parent id for"
+ },
+ {
+ "id": "model.post.is_valid.type.app_error",
+ "translation": "Tipo inválido"
+ },
+ {
+ "id": "model.post.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.post.is_valid.user_id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.preference.is_valid.category.app_error",
+ "translation": "Categoria inválida"
+ },
+ {
+ "id": "model.preference.is_valid.id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.preference.is_valid.name.app_error",
+ "translation": "Nome inválido"
+ },
+ {
+ "id": "model.preference.is_valid.value.app_error",
+ "translation": "Nome é muito longo"
+ },
+ {
+ "id": "model.team.is_valid.characters.app_error",
+ "translation": "Nome deve ter 4 ou mais caracteres alfanuméricos em minúsculas"
+ },
+ {
+ "id": "model.team.is_valid.company.app_error",
+ "translation": "Nome da empresa inválido"
+ },
+ {
+ "id": "model.team.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.team.is_valid.domains.app_error",
+ "translation": "Domínios permitidos inválidos"
+ },
+ {
+ "id": "model.team.is_valid.email.app_error",
+ "translation": "Email inválido"
+ },
+ {
+ "id": "model.team.is_valid.id.app_error",
+ "translation": "ID inválida"
+ },
+ {
+ "id": "model.team.is_valid.name.app_error",
+ "translation": "Nome inválido"
+ },
+ {
+ "id": "model.team.is_valid.reserved.app_error",
+ "translation": "Esta URL não está disponível. Por favor, tente outra."
+ },
+ {
+ "id": "model.team.is_valid.type.app_error",
+ "translation": "Tipo inválido"
+ },
+ {
+ "id": "model.team.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.team.is_valid.url.app_error",
+ "translation": "Identificador URL inválida"
+ },
+ {
+ "id": "model.user.is_valid.auth_data.app_error",
+ "translation": "Dados de autenticação inválido"
+ },
+ {
+ "id": "model.user.is_valid.auth_data_pwd.app_error",
+ "translation": "Usuário inválido, senha e de autenticação de dados não podem ser definidos"
+ },
+ {
+ "id": "model.user.is_valid.auth_data_type.app_error",
+ "translation": "Usuário inválido, dados de autenticação deve ser definido com o tipo de autenticação"
+ },
+ {
+ "id": "model.user.is_valid.create_at.app_error",
+ "translation": "Deve-se criar em um tempo válido"
+ },
+ {
+ "id": "model.user.is_valid.email.app_error",
+ "translation": "Email inválido"
+ },
+ {
+ "id": "model.user.is_valid.first_name.app_error",
+ "translation": "Primeiro nome inválido"
+ },
+ {
+ "id": "model.user.is_valid.id.app_error",
+ "translation": "ID de usuário inválido"
+ },
+ {
+ "id": "model.user.is_valid.last_name.app_error",
+ "translation": "Ultimo nome inválido"
+ },
+ {
+ "id": "model.user.is_valid.nickname.app_error",
+ "translation": "Apelido inválido"
+ },
+ {
+ "id": "model.user.is_valid.pwd.app_error",
+ "translation": "Senha inválida"
+ },
+ {
+ "id": "model.user.is_valid.team_id.app_error",
+ "translation": "Equipe id inválida"
+ },
+ {
+ "id": "model.user.is_valid.theme.app_error",
+ "translation": "Tema inválido"
+ },
+ {
+ "id": "model.user.is_valid.update_at.app_error",
+ "translation": "Deve-se atualizar em um tempo válido"
+ },
+ {
+ "id": "model.user.is_valid.username.app_error",
+ "translation": "Usuário inválido"
+ },
+ {
+ "id": "model.utils.decode_json.app_error",
+ "translation": "não foi possível decodificar"
+ },
+ {
+ "id": "store.sql.alter_column_type.critical",
+ "translation": "Falha ao alterar o tipo da coluna %v"
+ },
+ {
+ "id": "store.sql.check_index.critical",
+ "translation": "Falha ao verificar o índice %v"
+ },
+ {
+ "id": "store.sql.closing.info",
+ "translation": "Fechando SqlStore"
+ },
+ {
+ "id": "store.sql.column_exists.critical",
+ "translation": "Falha ao verificar se a coluna existe %v"
+ },
+ {
+ "id": "store.sql.column_exists_missing_driver.critical",
+ "translation": "Falha ao verificar se a couna existe devido a falta do driver"
+ },
+ {
+ "id": "store.sql.convert_encrypt_string_map",
+ "translation": "FromDb: Não foi possível converter EncryptStringMap para *string"
+ },
+ {
+ "id": "store.sql.convert_string_array",
+ "translation": "FromDb: Não foi possível converter StringArray para *string"
+ },
+ {
+ "id": "store.sql.convert_string_interface",
+ "translation": "FromDb: Não foi possível converter StringInterface para *string"
+ },
+ {
+ "id": "store.sql.convert_string_map",
+ "translation": "FromDb: Não foi possível converter StringMap para *string"
+ },
+ {
+ "id": "store.sql.create_column.critical",
+ "translation": "Falha ao criar a coluna %v"
+ },
+ {
+ "id": "store.sql.create_column_missing_driver.critical",
+ "translation": "Falha ao criar a couna devido a falta do driver"
+ },
+ {
+ "id": "store.sql.create_index.critical",
+ "translation": "Falha ao criar o índice %v"
+ },
+ {
+ "id": "store.sql.create_index_missing_driver.critical",
+ "translation": "Falha para criar o índice devido a falta do driver"
+ },
+ {
+ "id": "store.sql.creating_tables.critical",
+ "translation": "Erro ao criar as tabelas no banco de dados: %v"
+ },
+ {
+ "id": "store.sql.dialect_driver.critical",
+ "translation": "Falha ao criar driver de dialeto específico"
+ },
+ {
+ "id": "store.sql.dialect_driver.panic",
+ "translation": "Falha ao criar driver de dialeto específico %v"
+ },
+ {
+ "id": "store.sql.drop_column.critical",
+ "translation": "Falha ao deletar a coluna %v"
+ },
+ {
+ "id": "store.sql.incorrect_mac",
+ "translation": "MAC incorreto para o ciphertext fornecido"
+ },
+ {
+ "id": "store.sql.maxlength_column.critical",
+ "translation": "Falha ao obter o comprimento máximo da coluna %v"
+ },
+ {
+ "id": "store.sql.open_conn.critical",
+ "translation": "Falha ao abrir a conexão sql err:%v"
+ },
+ {
+ "id": "store.sql.open_conn.panic",
+ "translation": "Falha ao abrir a conexão sql %v"
+ },
+ {
+ "id": "store.sql.ping.critical",
+ "translation": "Falha para ping db err:%v"
+ },
+ {
+ "id": "store.sql.pinging.info",
+ "translation": "Pingando banco de dados sql %v"
+ },
+ {
+ "id": "store.sql.remove_index.critical",
+ "translation": "Falha ao remover o índice %v"
+ },
+ {
+ "id": "store.sql.rename_column.critical",
+ "translation": "Falha ao renomear a coluna %v"
+ },
+ {
+ "id": "store.sql.schema_out_of_date.warn",
+ "translation": "A versão do esquema do banco de dados %v parece estar desatualizada"
+ },
+ {
+ "id": "store.sql.schema_set.info",
+ "translation": "O esquema do banco de dados foi ajustado para a versão %v"
+ },
+ {
+ "id": "store.sql.schema_upgrade_attempt.warn",
+ "translation": "Tentando atualizar o esquema do banco de dados para versão %v"
+ },
+ {
+ "id": "store.sql.schema_version.critical",
+ "translation": "O esquema do bando de dados da versão %v não pode ser atualizado. Você precisa pular uma versão."
+ },
+ {
+ "id": "store.sql.short_ciphertext",
+ "translation": "ciphertext curto"
+ },
+ {
+ "id": "store.sql.table_column_type.critical",
+ "translation": "Falha ao obter o tipo de dado da coluna %s para a tabela %s: %v"
+ },
+ {
+ "id": "store.sql.table_exists.critical",
+ "translation": "Falha ao verificar se a tabela existe %v"
+ },
+ {
+ "id": "store.sql.too_short_ciphertext",
+ "translation": "ciphertext muito curto"
+ },
+ {
+ "id": "store.sql.upgraded.warn",
+ "translation": "O esquema do banco de dados foi atualizado para a versão %v"
+ },
+ {
+ "id": "store.sql_audit.get.finding.app_error",
+ "translation": "Encontramos um erro ao procurar o audits"
+ },
+ {
+ "id": "store.sql_audit.get.limit.app_error",
+ "translation": "Limite excedido para paginação"
+ },
+ {
+ "id": "store.sql_audit.permanent_delete_by_user.app_error",
+ "translation": "Encontramos um erro ao deletar o audits"
+ },
+ {
+ "id": "store.sql_audit.save.saving.app_error",
+ "translation": "Encontramos um erro ao salvar o audits"
+ },
+ {
+ "id": "store.sql_channel.analytics_type_count.app_error",
+ "translation": "Não foi possível obter o número de tipos de canal"
+ },
+ {
+ "id": "store.sql_channel.check_open_channel_permissions.app_error",
+ "translation": "Não foi possível verificar as pemissões"
+ },
+ {
+ "id": "store.sql_channel.check_permissions.app_error",
+ "translation": "Não foi possível verificar as pemissões"
+ },
+ {
+ "id": "store.sql_channel.check_permissions_by_name.app_error",
+ "translation": "Não foi possível verificar as pemissões"
+ },
+ {
+ "id": "store.sql_channel.delete.channel.app_error",
+ "translation": "Não foi possível deletar o canal"
+ },
+ {
+ "id": "store.sql_channel.extra_updated.app_error",
+ "translation": "Problema ao atualizar membros na última atualização"
+ },
+ {
+ "id": "store.sql_channel.get.existing.app_error",
+ "translation": "Não foi possível encontrar o canal existente"
+ },
+ {
+ "id": "store.sql_channel.get.find.app_error",
+ "translation": "Encontramos um erro ao procurar o canal"
+ },
+ {
+ "id": "store.sql_channel.get_by_name.existing.app_error",
+ "translation": "Não foi possível encontrar o canal existente"
+ },
+ {
+ "id": "store.sql_channel.get_channel_counts.get.app_error",
+ "translation": "Não foi possível obter o número de canais"
+ },
+ {
+ "id": "store.sql_channel.get_channels.get.app_error",
+ "translation": "Não foi possível obter os canais"
+ },
+ {
+ "id": "store.sql_channel.get_channels.not_found.app_error",
+ "translation": "Nenhum canal foi encontrado."
+ },
+ {
+ "id": "store.sql_channel.get_extra_members.app_error",
+ "translation": "Nós não podemos obter a informação extra para membros do canal"
+ },
+ {
+ "id": "store.sql_channel.get_for_export.app_error",
+ "translation": "Não foi possível obter todos os canais"
+ },
+ {
+ "id": "store.sql_channel.get_member.app_error",
+ "translation": "Não foi possível obter os membros do canal"
+ },
+ {
+ "id": "store.sql_channel.get_member_count.app_error",
+ "translation": "Não foi possível obter o número de membros do canal"
+ },
+ {
+ "id": "store.sql_channel.get_members.app_error",
+ "translation": "Não foi possível obter os membros do canal"
+ },
+ {
+ "id": "store.sql_channel.get_more_channels.get.app_error",
+ "translation": "Não foi possível obter os canais"
+ },
+ {
+ "id": "store.sql_channel.increment_mention_count.app_error",
+ "translation": "Não foi possível incrementar o número de menções"
+ },
+ {
+ "id": "store.sql_channel.permanent_delete_by_team.app_error",
+ "translation": "Não foi possível deletar os canais"
+ },
+ {
+ "id": "store.sql_channel.permanent_delete_members_by_user.app_error",
+ "translation": "Não foi possível remover o membro do canal"
+ },
+ {
+ "id": "store.sql_channel.remove_member.app_error",
+ "translation": "Não foi possível remover o membro do canal"
+ },
+ {
+ "id": "store.sql_channel.save.commit_transaction.app_error",
+ "translation": "Não é possível confirmar a transação"
+ },
+ {
+ "id": "store.sql_channel.save.direct_channel.app_error",
+ "translation": "Usar SaveDirectChannel para criar um canal direto"
+ },
+ {
+ "id": "store.sql_channel.save.open_transaction.app_error",
+ "translation": "Não é possível abrir a transação"
+ },
+ {
+ "id": "store.sql_channel.save_channel.current_count.app_error",
+ "translation": "Falha ao obter o número de canais atual"
+ },
+ {
+ "id": "store.sql_channel.save_channel.existing.app_error",
+ "translation": "Deve chamar atualização para o canal existente"
+ },
+ {
+ "id": "store.sql_channel.save_channel.exists.app_error",
+ "translation": "Um canal com essa URL já existe"
+ },
+ {
+ "id": "store.sql_channel.save_channel.limit.app_error",
+ "translation": "Você atingiu o limite do número de canais autorizados."
+ },
+ {
+ "id": "store.sql_channel.save_channel.previously.app_error",
+ "translation": "Um canal com essa URL foi criado anteriormente"
+ },
+ {
+ "id": "store.sql_channel.save_channel.save.app_error",
+ "translation": "Não foi possível salvar o canal"
+ },
+ {
+ "id": "store.sql_channel.save_direct_channel.add_members.app_error",
+ "translation": "Não foi possível adicionar membros para o canal direto"
+ },
+ {
+ "id": "store.sql_channel.save_direct_channel.commit.app_error",
+ "translation": "Não é possível confirmar a transação"
+ },
+ {
+ "id": "store.sql_channel.save_direct_channel.not_direct.app_error",
+ "translation": "Não foi um canal direto que foi tentado ser criado com SaveDirectChannel"
+ },
+ {
+ "id": "store.sql_channel.save_direct_channel.open_transaction.app_error",
+ "translation": "Não é possível abrir a transação"
+ },
+ {
+ "id": "store.sql_channel.save_member.commit_transaction.app_error",
+ "translation": "Não é possível confirmar a transação"
+ },
+ {
+ "id": "store.sql_channel.save_member.exists.app_error",
+ "translation": "Um membro do canal com este id já existe"
+ },
+ {
+ "id": "store.sql_channel.save_member.open_transaction.app_error",
+ "translation": "Não é possível abrir a transação"
+ },
+ {
+ "id": "store.sql_channel.save_member.save.app_error",
+ "translation": "Não foi possível salvar o membro do canal"
+ },
+ {
+ "id": "store.sql_channel.update.app_error",
+ "translation": "Não foi possível atualizar o canal"
+ },
+ {
+ "id": "store.sql_channel.update.exists.app_error",
+ "translation": "Um canal com este handle já existe"
+ },
+ {
+ "id": "store.sql_channel.update.previously.app_error",
+ "translation": "Um canal com esse handle foi criado anteriormente"
+ },
+ {
+ "id": "store.sql_channel.update.updating.app_error",
+ "translation": "Encontramos um erro ao atualizar o canal"
+ },
+ {
+ "id": "store.sql_channel.update_last_viewed_at.app_error",
+ "translation": "Não foi possível atualizar a última visualização no tempo"
+ },
+ {
+ "id": "store.sql_channel.update_member.app_error",
+ "translation": "Encontramos um erro ao atualizar o membro do canal"
+ },
+ {
+ "id": "store.sql_command.save.delete.app_error",
+ "translation": "Não foi possível deletar o comando"
+ },
+ {
+ "id": "store.sql_command.save.delete_perm.app_error",
+ "translation": "Não foi possível deletar o comando"
+ },
+ {
+ "id": "store.sql_command.save.get.app_error",
+ "translation": "Não foi possível obter o comando"
+ },
+ {
+ "id": "store.sql_command.save.get_team.app_error",
+ "translation": "Não foi possível obter os comandos"
+ },
+ {
+ "id": "store.sql_command.save.saving.app_error",
+ "translation": "Não foi possível salvar o Comando"
+ },
+ {
+ "id": "store.sql_command.save.saving_overwrite.app_error",
+ "translation": "Você não pode sobre-escrever um Comando existente"
+ },
+ {
+ "id": "store.sql_command.save.update.app_error",
+ "translation": "Não foi possível atualizar o comando"
+ },
+ {
+ "id": "store.sql_license.get.app_error",
+ "translation": "Encontramos um erro ao obter a licença"
+ },
+ {
+ "id": "store.sql_license.get.missing.app_error",
+ "translation": "Uma licença com este ID não foi encontrada"
+ },
+ {
+ "id": "store.sql_license.save.app_error",
+ "translation": "Encontramos um erro ao salvar a lincença"
+ },
+ {
+ "id": "store.sql_oauth.get_access_data.app_error",
+ "translation": "Encontramos um erro ao procurar o token de acesso"
+ },
+ {
+ "id": "store.sql_oauth.get_access_data_by_code.app_error",
+ "translation": "Encontramos um erro ao procurar o token de acesso"
+ },
+ {
+ "id": "store.sql_oauth.get_app.find.app_error",
+ "translation": "Não foi possível encontrar o app existente"
+ },
+ {
+ "id": "store.sql_oauth.get_app.finding.app_error",
+ "translation": "Encontramos um erro ao procurar o app"
+ },
+ {
+ "id": "store.sql_oauth.get_app_by_user.find.app_error",
+ "translation": "Não foi possível encontrar nenhum app existente"
+ },
+ {
+ "id": "store.sql_oauth.get_auth_data.find.app_error",
+ "translation": "Não foi possível localizar o código de autorização"
+ },
+ {
+ "id": "store.sql_oauth.get_auth_data.finding.app_error",
+ "translation": "Encontramos um erro ao procurar o código de autorização"
+ },
+ {
+ "id": "store.sql_oauth.permanent_delete_auth_data_by_user.app_error",
+ "translation": "Não conseguimos remover o código de autorização"
+ },
+ {
+ "id": "store.sql_oauth.remove_access_data.app_error",
+ "translation": "Não foi possível remover o token de acesso"
+ },
+ {
+ "id": "store.sql_oauth.remove_auth_data.app_error",
+ "translation": "Não foi possível remover o código de autorização"
+ },
+ {
+ "id": "store.sql_oauth.save_access_data.app_error",
+ "translation": "Não foi possível salvar o token de acesso."
+ },
+ {
+ "id": "store.sql_oauth.save_app.existing.app_error",
+ "translation": "Deve chamar atualização para aplicação existente"
+ },
+ {
+ "id": "store.sql_oauth.save_app.save.app_error",
+ "translation": "Não foi possível salvar o aplicativo."
+ },
+ {
+ "id": "store.sql_oauth.save_auth_data.app_error",
+ "translation": "Não foi possível salvar o código de autorização."
+ },
+ {
+ "id": "store.sql_oauth.update_app.find.app_error",
+ "translation": "Não foi possível encontrar o app existente para atualizar"
+ },
+ {
+ "id": "store.sql_oauth.update_app.finding.app_error",
+ "translation": "Encontramos um erro ao procurar o app"
+ },
+ {
+ "id": "store.sql_oauth.update_app.update.app_error",
+ "translation": "Não foi possível atualizar o aplicativo"
+ },
+ {
+ "id": "store.sql_oauth.update_app.updating.app_error",
+ "translation": "Encontramos um erro ao atualizar o app"
+ },
+ {
+ "id": "store.sql_post.analytics_posts_count.app_error",
+ "translation": "Não possível obter o número de postagens"
+ },
+ {
+ "id": "store.sql_post.analytics_posts_count_by_day.app_error",
+ "translation": "Não possível obter o número de postagens do dia"
+ },
+ {
+ "id": "store.sql_post.analytics_user_counts_posts_by_day.app_error",
+ "translation": "Não foi possível obter o número de posts"
+ },
+ {
+ "id": "store.sql_post.delete.app_error",
+ "translation": "Não foi possível deletar o post"
+ },
+ {
+ "id": "store.sql_post.get.app_error",
+ "translation": "Não foi obter o post"
+ },
+ {
+ "id": "store.sql_post.get_for_export.app_error",
+ "translation": "Nós não conseguimos obter as mensagens para o canal"
+ },
+ {
+ "id": "store.sql_post.get_parents_posts.app_error",
+ "translation": "Não foi possível obter o post pai para o canal"
+ },
+ {
+ "id": "store.sql_post.get_posts.app_error",
+ "translation": "Limite excedido para paginação"
+ },
+ {
+ "id": "store.sql_post.get_posts_around.get.app_error",
+ "translation": "Não foi possível obter as postagens para o canal"
+ },
+ {
+ "id": "store.sql_post.get_posts_around.get_parent.app_error",
+ "translation": "Não foi possível obter o post pai para o canal"
+ },
+ {
+ "id": "store.sql_post.get_posts_since.app_error",
+ "translation": "Não foi possível obter as postagens do canal"
+ },
+ {
+ "id": "store.sql_post.get_root_posts.app_error",
+ "translation": "Não foi possível obter as postagens do canal"
+ },
+ {
+ "id": "store.sql_post.permanent_delete.app_error",
+ "translation": "Não foi possível deletar o post"
+ },
+ {
+ "id": "store.sql_post.permanent_delete_all_comments_by_user.app_error",
+ "translation": "Não foi possível deletar os comentários para o usuário"
+ },
+ {
+ "id": "store.sql_post.permanent_delete_by_user.app_error",
+ "translation": "Não foi possível selecionar os posts para deletar para o usuário"
+ },
+ {
+ "id": "store.sql_post.permanent_delete_by_user.too_many.app_error",
+ "translation": "Não foi possível selecionar as postagens para deletar o usuário (muitos), por favor, re-executar"
+ },
+ {
+ "id": "store.sql_post.save.app_error",
+ "translation": "Não foi possível salvar o Post"
+ },
+ {
+ "id": "store.sql_post.save.existing.app_error",
+ "translation": "Você não pode atualizar um Post"
+ },
+ {
+ "id": "store.sql_post.search.app_error",
+ "translation": "Encontramos um erro enquanto procurava por postagens"
+ },
+ {
+ "id": "store.sql_post.update.app_error",
+ "translation": "Não foi possível deletar o post"
+ },
+ {
+ "id": "store.sql_preference.delete_unused_features.debug",
+ "translation": "Excluindo recursos de pré-lançamento não utilizados"
+ },
+ {
+ "id": "store.sql_preference.get.app_error",
+ "translation": "Encontramos um erro ao procurar as preferências"
+ },
+ {
+ "id": "store.sql_preference.get_all.app_error",
+ "translation": "Encontramos um erro ao procurar as preferências"
+ },
+ {
+ "id": "store.sql_preference.get_category.app_error",
+ "translation": "Encontramos um erro ao procurar as preferências"
+ },
+ {
+ "id": "store.sql_preference.insert.exists.app_error",
+ "translation": "Uma preferencia com este id de usuário, categoria, e nome já existe"
+ },
+ {
+ "id": "store.sql_preference.insert.save.app_error",
+ "translation": "Não foi possível salvar a preferência"
+ },
+ {
+ "id": "store.sql_preference.is_feature_enabled.app_error",
+ "translation": "Encontramos um erro enquanto procurava uma preferência de recurso de pré lançamento"
+ },
+ {
+ "id": "store.sql_preference.permanent_delete_by_user.app_error",
+ "translation": "Encontramos um erro enquanto deletava as preferências"
+ },
+ {
+ "id": "store.sql_preference.save.commit_transaction.app_error",
+ "translation": "Não é possível confirmar a transação para salvar as preferências"
+ },
+ {
+ "id": "store.sql_preference.save.missing_driver.app_error",
+ "translation": "Encontramos um erro enquanto atualizava as preferências"
+ },
+ {
+ "id": "store.sql_preference.save.open_transaction.app_error",
+ "translation": "Não foi possível abrir a transação para salvar as preferências"
+ },
+ {
+ "id": "store.sql_preference.save.rollback_transaction.app_error",
+ "translation": "Não é possível anular a transação para salvar as preferências"
+ },
+ {
+ "id": "store.sql_preference.save.updating.app_error",
+ "translation": "Encontramos um erro enquanto atualizava as preferências"
+ },
+ {
+ "id": "store.sql_preference.update.app_error",
+ "translation": "Não foi possível atualizar a preferência"
+ },
+ {
+ "id": "store.sql_session.cleanup_expired_sessions.app_error",
+ "translation": "Encontramos um erro enquanto deletava a sessão expirada do usuário"
+ },
+ {
+ "id": "store.sql_session.get.app_error",
+ "translation": "Encontramos um erro ao procurar a sessão"
+ },
+ {
+ "id": "store.sql_session.get_sessions.app_error",
+ "translation": "Encontramos um erro enquanto procurava a sessão do usuário"
+ },
+ {
+ "id": "store.sql_session.get_sessions.error",
+ "translation": "Falhou ao limpar as sessões em getSessions err=%v"
+ },
+ {
+ "id": "store.sql_session.permanent_delete_sessions_by_user.app_error",
+ "translation": "Não foi possível remover todas as sessões para o usuário"
+ },
+ {
+ "id": "store.sql_session.remove.app_error",
+ "translation": "Não foi possível remover a sessão"
+ },
+ {
+ "id": "store.sql_session.remove_all_sessions_for_team.app_error",
+ "translation": "Não foi possível remover todas as sessões para a equipe"
+ },
+ {
+ "id": "store.sql_session.save.app_error",
+ "translation": "Não foi possível salvar a sessão"
+ },
+ {
+ "id": "store.sql_session.save.cleanup.error",
+ "translation": "Falhou ao limpar as sessões em Segurança err=%v"
+ },
+ {
+ "id": "store.sql_session.save.existing.app_error",
+ "translation": "Não foi possível atualizar a sessão"
+ },
+ {
+ "id": "store.sql_session.update_device_id.app_error",
+ "translation": "Não foi possível atualizar o id do dispositivo"
+ },
+ {
+ "id": "store.sql_session.update_last_activity.app_error",
+ "translation": "Nós foi possível atualizar o last_ping_at"
+ },
+ {
+ "id": "store.sql_session.update_roles.app_error",
+ "translation": "Não foi possível atualizar as funções"
+ },
+ {
+ "id": "store.sql_system.get.app_error",
+ "translation": "Encontramos um erro ao procurar as propriedades de sistema"
+ },
+ {
+ "id": "store.sql_system.save.app_error",
+ "translation": "Encontramos um erro ao salvar as propriedades do sistema"
+ },
+ {
+ "id": "store.sql_system.update.app_error",
+ "translation": "Encontramos um erro ao atualizar as propriedades de sistema"
+ },
+ {
+ "id": "store.sql_team.get.find.app_error",
+ "translation": "Não foi possível encontrar a equipe existente"
+ },
+ {
+ "id": "store.sql_team.get.finding.app_error",
+ "translation": "Encontramos um erro ao procurar a equipe"
+ },
+ {
+ "id": "store.sql_team.get_all.app_error",
+ "translation": "Não foi possível obter todas as equipes"
+ },
+ {
+ "id": "store.sql_team.get_all_team_listing.app_error",
+ "translation": "Não foi possível obter todas as equipes"
+ },
+ {
+ "id": "store.sql_team.get_by_invite_id.find.app_error",
+ "translation": "Não foi possível encontrar a equipe existente"
+ },
+ {
+ "id": "store.sql_team.get_by_invite_id.finding.app_error",
+ "translation": "Não foi possível encontrar a equipe existente"
+ },
+ {
+ "id": "store.sql_team.get_by_name.app_error",
+ "translation": "Não foi possível encontrar a equipe existente"
+ },
+ {
+ "id": "store.sql_team.get_teams_for_email.app_error",
+ "translation": "Encontramos um erro quando observava as equipes"
+ },
+ {
+ "id": "store.sql_team.permanent_delete.app_error",
+ "translation": "Não foi possível deletar a equipe existente"
+ },
+ {
+ "id": "store.sql_team.save.app_error",
+ "translation": "Não foi possível salvar a equipe"
+ },
+ {
+ "id": "store.sql_team.save.domain_exists.app_error",
+ "translation": "Uma equipe com este domínio já existe"
+ },
+ {
+ "id": "store.sql_team.save.existing.app_error",
+ "translation": "Deve chamar atualização para equipe existente"
+ },
+ {
+ "id": "store.sql_team.update.app_error",
+ "translation": "Não foi possível atualizar a equipe"
+ },
+ {
+ "id": "store.sql_team.update.find.app_error",
+ "translation": "Não foi possível encontrar a equipe existente"
+ },
+ {
+ "id": "store.sql_team.update.finding.app_error",
+ "translation": "Encontramos um erro ao procurar a equipe"
+ },
+ {
+ "id": "store.sql_team.update.updating.app_error",
+ "translation": "Encontramos um erro ao atualizar a equipe"
+ },
+ {
+ "id": "store.sql_team.update_display_name.app_error",
+ "translation": "Não foi possível atualizar o nome da equipe"
+ },
+ {
+ "id": "store.sql_user.analytics_unique_user_count.app_error",
+ "translation": "Não foi possível obter o número de usuários únicos"
+ },
+ {
+ "id": "store.sql_user.get.app_error",
+ "translation": "Encontramos um erro ao procurar a conta"
+ },
+ {
+ "id": "store.sql_user.get_by_auth.app_error",
+ "translation": "Não foi possível encontrar uma conta correspondente ao seu tipo de autenticação para esta equipe. Esta equipe pode exigir um convite do dono da equipe para participar."
+ },
+ {
+ "id": "store.sql_user.get_by_username.app_error",
+ "translation": "Não foi possível encontrar uma conta correspondente ao seu usuário para esta equipe. Esta equipe pode exigir um convite do dono da equipe para participar."
+ },
+ {
+ "id": "store.sql_user.get_for_export.app_error",
+ "translation": "Encontramos um erro enquanto procurava o perfil do usuário"
+ },
+ {
+ "id": "store.sql_user.get_profiles.app_error",
+ "translation": "Encontramos um erro enquanto procurava os perfis de usuários"
+ },
+ {
+ "id": "store.sql_user.get_sysadmin_profiles.app_error",
+ "translation": "Encontramos um erro enquanto procurava os perfis de usuários"
+ },
+ {
+ "id": "store.sql_user.get_total_active_users_count.app_error",
+ "translation": "Não foi possível contar os usuários"
+ },
+ {
+ "id": "store.sql_user.get_total_users_count.app_error",
+ "translation": "Não foi possível contar os usuários"
+ },
+ {
+ "id": "store.sql_user.missing_account.const",
+ "translation": "Não foi possível encontrar uma conta correspondente ao seu endereço de email para esta equipe. Esta equipe pode exigir um convite do dono da equipe para participar."
+ },
+ {
+ "id": "store.sql_user.permanent_delete.app_error",
+ "translation": "Não foi possível deletar a equipe existente"
+ },
+ {
+ "id": "store.sql_user.save.app_error",
+ "translation": "Não foi possível salvar a conta."
+ },
+ {
+ "id": "store.sql_user.save.email_exists.app_error",
+ "translation": "Uma conta com este email já existe."
+ },
+ {
+ "id": "store.sql_user.save.existing.app_error",
+ "translation": "Deve chamar update para o usuário existente"
+ },
+ {
+ "id": "store.sql_user.save.max_accounts.app_error",
+ "translation": "Esta equipe alcançou o número máximo de contas permitidas. Contate o seu administrador de sistema para ajustar um limite maior."
+ },
+ {
+ "id": "store.sql_user.save.member_count.app_error",
+ "translation": "Falha ao obter a atual contagem de membros da equipe"
+ },
+ {
+ "id": "store.sql_user.save.username_exists.app_error",
+ "translation": "Uma conta com este nome de usuário já existe."
+ },
+ {
+ "id": "store.sql_user.update.app_error",
+ "translation": "Não foi possível atualizar a conta"
+ },
+ {
+ "id": "store.sql_user.update.email_taken.app_error",
+ "translation": "Este email já foi utilizado. Por favor escolha outro."
+ },
+ {
+ "id": "store.sql_user.update.find.app_error",
+ "translation": "Não foi possível encontrar a conta para atualizar"
+ },
+ {
+ "id": "store.sql_user.update.finding.app_error",
+ "translation": "Encontramos um erro ao procurar a conta"
+ },
+ {
+ "id": "store.sql_user.update.updating.app_error",
+ "translation": "Encontramos um erro ao atualizar a conta"
+ },
+ {
+ "id": "store.sql_user.update.username_taken.app_error",
+ "translation": "Este nome de usuário já foi usado, Por favor escolha outro."
+ },
+ {
+ "id": "store.sql_user.update_auth_data.app_error",
+ "translation": "Não foi possível atualizar os dados de autenticação"
+ },
+ {
+ "id": "store.sql_user.update_failed_pwd_attempts.app_error",
+ "translation": "Não foi possível atualizar o failed_attempts"
+ },
+ {
+ "id": "store.sql_user.update_last_activity.app_error",
+ "translation": "Nós foi possível atualizar o last_activity_at"
+ },
+ {
+ "id": "store.sql_user.update_last_picture_update.app_error",
+ "translation": "Não foi possível atualizar update_at"
+ },
+ {
+ "id": "store.sql_user.update_last_ping.app_error",
+ "translation": "Nós foi possível atualizar o last_ping_at"
+ },
+ {
+ "id": "store.sql_user.update_password.app_error",
+ "translation": "Não foi possível atualizar a senha do usuário"
+ },
+ {
+ "id": "store.sql_user.verify_email.app_error",
+ "translation": "Não foi possível verificar o campo email"
+ },
+ {
+ "id": "store.sql_webhooks.analytics_incoming_count.app_error",
+ "translation": "Não foi possível contar os webhooks entrada"
+ },
+ {
+ "id": "store.sql_webhooks.analytics_outgoing_count.app_error",
+ "translation": "Não foi possível contar os webhooks saída"
+ },
+ {
+ "id": "store.sql_webhooks.delete_incoming.app_error",
+ "translation": "Não foi possível deletar o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.delete_outgoing.app_error",
+ "translation": "Não foi possível deletar o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.get_incoming.app_error",
+ "translation": "Não conseguimos obter o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.get_incoming_by_channel.app_error",
+ "translation": "Não foi possível obter os webhooks"
+ },
+ {
+ "id": "store.sql_webhooks.get_incoming_by_user.app_error",
+ "translation": "Não conseguimos obter o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.get_outgoing.app_error",
+ "translation": "Não conseguimos obter o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.get_outgoing_by_channel.app_error",
+ "translation": "Não foi possível obter os webhooks"
+ },
+ {
+ "id": "store.sql_webhooks.get_outgoing_by_team.app_error",
+ "translation": "Não foi possível obter os webhooks"
+ },
+ {
+ "id": "store.sql_webhooks.permanent_delete_incoming_by_user.app_error",
+ "translation": "Nós não podemos deletar o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.permanent_delete_outgoing_by_user.app_error",
+ "translation": "Não foi possível deletar o webhook"
+ },
+ {
+ "id": "store.sql_webhooks.save_incoming.app_error",
+ "translation": "Não foi possível salvar o IncomingWebhook"
+ },
+ {
+ "id": "store.sql_webhooks.save_incoming.existing.app_error",
+ "translation": "Você não pode sobre escrever um existente Webhook Entrada"
+ },
+ {
+ "id": "store.sql_webhooks.save_outgoing.app_error",
+ "translation": "Não foi possível salvar o OutgoingWebhook"
+ },
+ {
+ "id": "store.sql_webhooks.save_outgoing.override.app_error",
+ "translation": "Você não pode sobre escrever um existente Webhook de Saída"
+ },
+ {
+ "id": "store.sql_webhooks.update_outgoing.app_error",
+ "translation": "Não foi possível atualizar o webhook"
+ },
+ {
+ "id": "utils.config.load_config.decoding.panic",
+ "translation": "Erro ao decodificar o arquivo de configuração={{.Filename}}, err={{.Error}}"
+ },
+ {
+ "id": "utils.config.load_config.getting.panic",
+ "translation": "Erro ao obter o arquivo de configuração={{.Filename}}, err={{.Error}}"
+ },
+ {
+ "id": "utils.config.load_config.opening.panic",
+ "translation": "Erro ao abrir o arquivo de configuração={{.Filename}}, err={{.Error}}"
+ },
+ {
+ "id": "utils.config.load_config.validating.panic",
+ "translation": "Erro ao validar o arquivo de configuração={{.Filename}}, err={{.Error}}"
+ },
+ {
+ "id": "utils.config.save_config.saving.app_error",
+ "translation": "Um erro ocorreu durante o salvamento do arquivo {{.Filename}}"
+ },
+ {
+ "id": "utils.i18n.loaded",
+ "translation": "Carregado o sistema de traduções para '%v' de '%v'"
+ },
+ {
+ "id": "utils.iru.with_evict",
+ "translation": "Necessário fornecer um tamanho positivo"
+ },
+ {
+ "id": "utils.license.load_license.invalid.warn",
+ "translation": "Nenhuma licença enterprise encontrada"
+ },
+ {
+ "id": "utils.license.remove_license.unable.error",
+ "translation": "Não foi possível remover o arquivo de licença, err=%v"
+ },
+ {
+ "id": "utils.license.validate_license.decode.error",
+ "translation": "Encontrado um erro ao decodificar a licença, err=%v"
+ },
+ {
+ "id": "utils.license.validate_license.invalid.error",
+ "translation": "Assinatura inválida, err=%v"
+ },
+ {
+ "id": "utils.license.validate_license.not_long.error",
+ "translation": "Licença assinada não é longa o suficiente"
+ },
+ {
+ "id": "utils.license.validate_license.signing.error",
+ "translation": "Encontrado um erro ao assinar a licença, err=%v"
+ },
+ {
+ "id": "utils.mail.connect_smtp.open.app_error",
+ "translation": "Falha ao abrir conexão"
+ },
+ {
+ "id": "utils.mail.connect_smtp.open_tls.app_error",
+ "translation": "Falha ao abrir a conexão TLS"
+ },
+ {
+ "id": "utils.mail.new_client.auth.app_error",
+ "translation": "Falha ao autenticar no servidor de SMTP"
+ },
+ {
+ "id": "utils.mail.new_client.open.error",
+ "translation": "Falha ao abrir a conexão SMTP para o servidor %v"
+ },
+ {
+ "id": "utils.mail.send_mail.close.app_error",
+ "translation": "Falha ao fechar a conexão com servidor SMTP"
+ },
+ {
+ "id": "utils.mail.send_mail.from_address.app_error",
+ "translation": "Falha ao adicionar endereço de remetente de email"
+ },
+ {
+ "id": "utils.mail.send_mail.msg.app_error",
+ "translation": "Falha ao escrever a mensagem de email"
+ },
+ {
+ "id": "utils.mail.send_mail.msg_data.app_error",
+ "translation": "Falha ao adicionar os dados a mensagem de email"
+ },
+ {
+ "id": "utils.mail.send_mail.sending.debug",
+ "translation": "enviando email para %v com assunto '%v'"
+ },
+ {
+ "id": "utils.mail.send_mail.to_address.app_error",
+ "translation": "Falha ao adicionar o endereço de email"
+ },
+ {
+ "id": "utils.mail.test.configured.error",
+ "translation": "Configurações do servidor SMTP não parecem estar configuradas corretamente err=%v detalhes=%v"
+ },
+ {
+ "id": "web.admin_console.title",
+ "translation": "Console Admin"
+ },
+ {
+ "id": "web.authorize_oauth.disabled.app_error",
+ "translation": "O administrador do sistema desativou o provedor de serviço OAuth."
+ },
+ {
+ "id": "web.authorize_oauth.missing.app_error",
+ "translation": "Faltando uma ou mais de response_type, client_id, or redirect_uri"
+ },
+ {
+ "id": "web.authorize_oauth.title",
+ "translation": "Autorizar Aplicação"
+ },
+ {
+ "id": "web.check_browser_compatibility.app_error",
+ "translation": "Seu navegador atual não é suportado, por favor atualize para um dos seguintes browsers: Google Chrome 21 ou superior, Internet Explorer 11 ou superior, FireFox 14 ou superior, Safari 9 ou superior"
+ },
+ {
+ "id": "web.claim_account.team.error",
+ "translation": "Não foi possível encontrar o nome da equipe=%v, err=%v"
+ },
+ {
+ "id": "web.claim_account.title",
+ "translation": "Conta Pedido"
+ },
+ {
+ "id": "web.claim_account.user.error",
+ "translation": "Não foi possível encontrar o usuário teamid=%v, email=%v, err=%v"
+ },
+ {
+ "id": "web.create_dir.error",
+ "translation": "Falha ao criar o diretório observador %v"
+ },
+ {
+ "id": "web.dir_fail.error",
+ "translation": "Falha no diretório observador %v"
+ },
+ {
+ "id": "web.do_load_channel.error",
+ "translation": "Erro na obtenção do perfil dos usuários para id=%v forçando o logout"
+ },
+ {
+ "id": "web.doc.title",
+ "translation": "Documentação"
+ },
+ {
+ "id": "web.email_verified.title",
+ "translation": "Email Verificado"
+ },
+ {
+ "id": "web.find_team.title",
+ "translation": "Encontrar Equipe"
+ },
+ {
+ "id": "web.footer.about",
+ "translation": "Sobre"
+ },
+ {
+ "id": "web.footer.help",
+ "translation": "Ajuda"
+ },
+ {
+ "id": "web.footer.privacy",
+ "translation": "Privacidade"
+ },
+ {
+ "id": "web.footer.terms",
+ "translation": "Termos"
+ },
+ {
+ "id": "web.get_access_token.bad_client_id.app_error",
+ "translation": "invalid_request: Bad client_id"
+ },
+ {
+ "id": "web.get_access_token.bad_client_secret.app_error",
+ "translation": "invalid_request: Faltando client_secret"
+ },
+ {
+ "id": "web.get_access_token.bad_grant.app_error",
+ "translation": "invalid_request: Bad grant_type"
+ },
+ {
+ "id": "web.get_access_token.credentials.app_error",
+ "translation": "invalid_client: Inválida credenciais de cliente"
+ },
+ {
+ "id": "web.get_access_token.disabled.app_error",
+ "translation": "O administrador do sistema desativou o provedor de serviço OAuth."
+ },
+ {
+ "id": "web.get_access_token.exchanged.app_error",
+ "translation": "invalid_grant: Código de autorização já trocado por um token de acesso"
+ },
+ {
+ "id": "web.get_access_token.expired_code.app_error",
+ "translation": "invalid_grant: Código de autorização inválido ou expirado"
+ },
+ {
+ "id": "web.get_access_token.internal.app_error",
+ "translation": "server_error: Encontrado um erro interno no servidor enquanto acessava o banco de dados"
+ },
+ {
+ "id": "web.get_access_token.internal_saving.app_error",
+ "translation": "server_error: Encontrado um erro interno no servidor enquanto salvava o token de acesso no banco de dados"
+ },
+ {
+ "id": "web.get_access_token.internal_session.app_error",
+ "translation": "server_error: Encontrado um erro interno no servidor enquanto salvava a sessão no banco de dados"
+ },
+ {
+ "id": "web.get_access_token.internal_user.app_error",
+ "translation": "server_error: Encontrado um erro interno no servidor enquanto puxava o usuário do banco de dados"
+ },
+ {
+ "id": "web.get_access_token.missing_code.app_error",
+ "translation": "invalid_request: Faltando código"
+ },
+ {
+ "id": "web.get_access_token.redirect_uri.app_error",
+ "translation": "invalid_request: Fornecido redirect_uri que não corresponde ao código de autorização redirect_uri"
+ },
+ {
+ "id": "web.get_access_token.revoking.error",
+ "translation": "Encontrado um erro ao revogar um token de acesso, err="
+ },
+ {
+ "id": "web.header.back",
+ "translation": "Voltar"
+ },
+ {
+ "id": "web.incoming_webhook.channel.app_error",
+ "translation": "Não foi possível encontrar o canal"
+ },
+ {
+ "id": "web.incoming_webhook.disabled.app_error",
+ "translation": "Webhooks de entrada foram desabilitados pelo administrador do sistema."
+ },
+ {
+ "id": "web.incoming_webhook.invalid.app_error",
+ "translation": "Webhook inválido"
+ },
+ {
+ "id": "web.incoming_webhook.parse.app_error",
+ "translation": "Não é possível processar os dados de entrada"
+ },
+ {
+ "id": "web.incoming_webhook.permissions.app_error",
+ "translation": "Permissões do canal inapropriadas"
+ },
+ {
+ "id": "web.incoming_webhook.text.app_error",
+ "translation": "Nenhum texto específicado"
+ },
+ {
+ "id": "web.incoming_webhook.user.app_error",
+ "translation": "Não foi possível encontrar o usuário"
+ },
+ {
+ "id": "web.init.debug",
+ "translation": "Inicializando web routes"
+ },
+ {
+ "id": "web.login.error",
+ "translation": "Não foi possível encontrar o nome da equipe=%v, err=%v"
+ },
+ {
+ "id": "web.login.login_title",
+ "translation": "Login"
+ },
+ {
+ "id": "web.login_with_oauth.invalid_team.app_error",
+ "translation": "Nome da equipe inválida"
+ },
+ {
+ "id": "web.parsing_templates.debug",
+ "translation": "Analisando modelos no %v"
+ },
+ {
+ "id": "web.parsing_templates.error",
+ "translation": "Falha ao processar os modelos %v"
+ },
+ {
+ "id": "web.post_permalink.app_error",
+ "translation": "Post ID Inválido"
+ },
+ {
+ "id": "web.reparse_templates.info",
+ "translation": "Re-análise dos modelos por causa da modificação do arquivo %v"
+ },
+ {
+ "id": "web.reset_password.expired_link.app_error",
+ "translation": "O link de redefinição de senha expirou"
+ },
+ {
+ "id": "web.reset_password.invalid_link.app_error",
+ "translation": "O link de redefinição não parece ser válido"
+ },
+ {
+ "id": "web.root.home_title",
+ "translation": "Início"
+ },
+ {
+ "id": "web.root.singup_info",
+ "translation": "Toda comunicação da equipe em um lugar, pesquisavel e acessível em qualquer lugar"
+ },
+ {
+ "id": "web.root.singup_title",
+ "translation": "Inscrever-se"
+ },
+ {
+ "id": "web.signup_team_complete.invalid_link.app_error",
+ "translation": "O link de inscrição não parece ser válido"
+ },
+ {
+ "id": "web.signup_team_complete.link_expired.app_error",
+ "translation": "O link de inscrição expirou"
+ },
+ {
+ "id": "web.signup_team_complete.title",
+ "translation": "Completar Inscrição na Equipe"
+ },
+ {
+ "id": "web.signup_team_confirm.title",
+ "translation": "Inscrição Email Enviado"
+ },
+ {
+ "id": "web.signup_user_complete.link_expired.app_error",
+ "translation": "O link de inscrição expirou"
+ },
+ {
+ "id": "web.signup_user_complete.link_invalid.app_error",
+ "translation": "O link de inscrição não parece ser válido"
+ },
+ {
+ "id": "web.signup_user_complete.no_invites.app_error",
+ "translation": "O tipo da equipe não permite convites abertos"
+ },
+ {
+ "id": "web.signup_user_complete.title",
+ "translation": "Inscrição de Usuário Completa"
+ },
+ {
+ "id": "web.singup_with_oauth.disabled.app_error",
+ "translation": "Inscrição de usuário desativada."
+ },
+ {
+ "id": "web.singup_with_oauth.expired_link.app_error",
+ "translation": "O link de inscrição expirou"
+ },
+ {
+ "id": "web.singup_with_oauth.invalid_link.app_error",
+ "translation": "O link de inscrição não parece ser válido"
+ },
+ {
+ "id": "web.singup_with_oauth.invalid_team.app_error",
+ "translation": "Nome da equipe inválida"
+ },
+ {
+ "id": "web.watcher_fail.error",
+ "translation": "Falha ao adicionar diretório observador %v"
+ }
+] \ No newline at end of file
diff --git a/tests/test-emoticons.md b/tests/test-emoticons.md
deleted file mode 100644
index fc2594d9e..000000000
--- a/tests/test-emoticons.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Emoticon Testing
-Verify that all emoticons render. This test should render in three separate messages since it's ~11000 characters.
-
-### Emoticon - Punctuation
-
-:) :-) ;) ;-) :o :O :-o :-O :] :-] :d :-D x-d x-D :p :-P :@ :( :-( :'( :/ :-/ :s :-s :| :-| :$ :-$ :-x <3 :+1: :-1:
-
-### Emoticons - People
-:bowtie: :smile: :laughing: :blush: :smiley: :relaxed: :smirk: :heart_eyes: :kissing_heart: :kissing_closed_eyes: :flushed: :relieved: :satisfied: :grin: :wink: :stuck_out_tongue_winking_eye: :stuck_out_tongue_closed_eyes: :grinning: :kissing: :kissing_smiling_eyes: :stuck_out_tongue: :sleeping: :worried: :frowning: :anguished: :open_mouth: :grimacing: :confused: :hushed: :expressionless: :unamused: :sweat_smile: :sweat: :disappointed_relieved: :weary: :pensive: :disappointed: :confounded: :fearful: :cold_sweat: :persevere: :cry: :sob: :joy: :astonished: :scream: :neckbeard: :tired_face: :angry: :rage: :triumph: :sleepy: :yum: :mask: :sunglasses: :dizzy_face: :imp: :smiling_imp: :neutral_face: :no_mouth: :innocent: :alien: :yellow_heart: :blue_heart: :purple_heart: :heart: :green_heart: :broken_heart: :heartbeat: :heartpulse: :two_hearts: :revolving_hearts: :cupid: :sparkling_heart: :sparkles: :star: :star2: :dizzy: :boom: :collision: :anger: :exclamation: :question: :grey_exclamation: :grey_question: :zzz: :dash: :sweat_drops: :notes: :musical_note: :fire: :hankey: :poop: :shit: :+1: :thumbsup: :-1: :thumbsdown: :ok_hand: :punch: :facepunch: :fist: :v: :wave: :hand: :raised_hand: :open_hands: :point_up: :point_down: :point_left: :point_right: :raised_hands: :pray: :point_up_2: :clap: :muscle: :metal: :fu: :runner: :running: :couple: :family: :two_men_holding_hands: :two_women_holding_hands: :dancer: :dancers: :ok_woman: :no_good: :information_desk_person: :raising_hand: :bride_with_veil: :person_with_pouting_face: :person_frowning: :bow: :couplekiss: :couple_with_heart: :massage: :haircut: :nail_care: :boy: :girl: :woman: :man: :baby: :older_woman: :older_man: :person_with_blond_hair: :man_with_gua_pi_mao: :man_with_turban: :construction_worker: :cop: :angel: :princess: :smiley_cat: :smile_cat: :heart_eyes_cat: :kissing_cat: :smirk_cat: :scream_cat: :crying_cat_face: :joy_cat: :pouting_cat: :japanese_ogre: :japanese_goblin: :see_no_evil: :hear_no_evil: :speak_no_evil: :guardsman: :skull: :feet: :lips: :kiss: :droplet: :ear: :eyes: :nose: :tongue: :love_letter: :bust_in_silhouette: :busts_in_silhouette: :speech_balloon: :thought_balloon: :feelsgood: :finnadie: :goberserk: :godmode: :hurtrealbad: :rage1: :rage2: :rage3: :rage4: :suspect: :trollface:
-
-### Emoticons - Nature
-:sunny: :umbrella: :cloud: :snowflake: :snowman: :zap: :cyclone: :foggy: :ocean: :cat: :dog: :mouse: :hamster: :rabbit: :wolf: :frog: :tiger: :koala: :bear: :pig: :pig_nose: :cow: :boar: :monkey_face: :monkey: :horse: :racehorse: :camel: :sheep: :elephant: :panda_face: :snake: :bird: :baby_chick: :hatched_chick: :hatching_chick: :chicken: :penguin: :turtle: :bug: :honeybee: :ant: :beetle: :snail: :octopus: :tropical_fish: :fish: :whale: :whale2: :dolphin: :cow2: :ram: :rat: :water_buffalo: :tiger2: :rabbit2: :dragon: :goat: :rooster: :dog2: :pig2: :mouse2: :ox: :dragon_face: :blowfish: :crocodile: :dromedary_camel: :leopard: :cat2: :poodle: :paw_prints: :bouquet: :cherry_blossom: :tulip: :four_leaf_clover: :rose: :sunflower: :hibiscus: :maple_leaf: :leaves: :fallen_leaf: :herb: :mushroom: :cactus: :palm_tree: :evergreen_tree: :deciduous_tree: :chestnut: :seedling: :blossom: :ear_of_rice: :shell: :globe_with_meridians: :sun_with_face: :full_moon_with_face: :new_moon_with_face: :new_moon: :waxing_crescent_moon: :first_quarter_moon: :waxing_gibbous_moon: :full_moon: :waning_gibbous_moon: :last_quarter_moon: :waning_crescent_moon: :last_quarter_moon_with_face: :first_quarter_moon_with_face: :crescent_moon: :earth_africa: :earth_americas: :earth_asia: :volcano: :milky_way: :partly_sunny: :octocat: :squirrel:
-
-### Emoticons - Objects
-:bamboo: :gift_heart: :dolls: :school_satchel: :mortar_board: :flags: :fireworks: :sparkler: :wind_chime: :rice_scene: :jack_o_lantern: :ghost: :santa: :christmas_tree: :gift: :bell: :no_bell: :tanabata_tree: :tada: :confetti_ball: :balloon: :crystal_ball: :cd: :dvd: :floppy_disk: :camera: :video_camera: :movie_camera: :computer: :tv: :iphone: :phone: :telephone: :telephone_receiver: :pager: :fax: :minidisc: :vhs: :sound: :speaker: :mute: :loudspeaker: :mega: :hourglass: :hourglass_flowing_sand: :alarm_clock: :watch: :radio: :satellite: :loop: :mag: :mag_right: :unlock: :lock: :lock_with_ink_pen: :closed_lock_with_key: :key: :bulb: :flashlight: :high_brightness: :low_brightness: :electric_plug: :battery: :calling: :email: :mailbox: :postbox: :bath: :bathtub: :shower: :toilet: :wrench: :nut_and_bolt: :hammer: :seat: :moneybag: :yen: :dollar: :pound: :euro: :credit_card: :money_with_wings: :e-mail: :inbox_tray: :outbox_tray: :envelope: :incoming_envelope: :postal_horn: :mailbox_closed: :mailbox_with_mail: :mailbox_with_no_mail: :package: :door: :smoking: :bomb: :gun: :hocho: :pill: :syringe: :page_facing_up: :page_with_curl: :bookmark_tabs: :bar_chart: :chart_with_upwards_trend: :chart_with_downwards_trend: :scroll: :clipboard: :calendar: :date: :card_index: :file_folder: :open_file_folder: :scissors: :pushpin: :paperclip: :black_nib: :pencil2: :straight_ruler: :triangular_ruler: :closed_book: :green_book: :blue_book: :orange_book: :notebook: :notebook_with_decorative_cover: :ledger: :books: :bookmark: :name_badge: :microscope: :telescope: :newspaper: :football: :basketball: :soccer: :baseball: :tennis: :8ball: :8ball: :rugby_football: :bowling: :golf: :mountain_bicyclist: :bicyclist: :horse_racing: :snowboarder: :swimmer: :surfer: :ski: :spades: :hearts: :clubs: :diamonds: :gem: :ring: :trophy: :musical_score: :musical_keyboard: :violin: :space_invader: :video_game: :black_joker: :flower_playing_cards: :game_die: :dart: :mahjong: :clapper: :memo: :pencil: :book: :art: :microphone: :headphones: :trumpet: :saxophone: :guitar: :shoe: :sandal: :high_heel: :lipstick: :boot: :shirt: :tshirt: :necktie: :womans_clothes: :dress: :running_shirt_with_sash: :jeans: :kimono: :bikini: :ribbon: :tophat: :crown: :womans_hat: :mans_shoe: :closed_umbrella: :briefcase: :handbag: :pouch: :purse: :eyeglasses: :fishing_pole_and_fish: :coffee: :tea: :sake: :baby_bottle: :beer: :beers: :cocktail: :tropical_drink: :wine_glass: :fork_and_knife: :pizza: :hamburger: :fries: :poultry_leg: :meat_on_bone: :spaghetti: :curry: :fried_shrimp: :bento: :sushi: :fish_cake: :rice_ball: :rice_cracker: :rice: :ramen: :stew: :oden: :dango: :egg: :bread: :doughnut: :custard: :icecream: :ice_cream: :shaved_ice: :birthday: :cake: :cookie: :chocolate_bar: :candy: :lollipop: :honey_pot: :apple: :green_apple: :tangerine: :lemon: :cherries: :grapes: :watermelon: :strawberry: :peach: :melon: :banana: :pear: :pineapple: :sweet_potato: :eggplant: :tomato: :corn:
-
-### Emoticons - Places
-
-:house: :house_with_garden: :school: :office: :post_office: :hospital: :bank: :convenience_store: :love_hotel: :hotel: :wedding: :church: :department_store: :european_post_office: :city_sunrise: :city_sunset: :japanese_castle: :european_castle: :tent: :factory: :tokyo_tower: :japan: :mount_fuji: :sunrise_over_mountains: :sunrise: :stars: :statue_of_liberty: :bridge_at_night: :carousel_horse: :rainbow: :ferris_wheel: :fountain: :roller_coaster: :ship: :speedboat: :boat: :sailboat: :rowboat: :anchor: :rocket: :airplane: :helicopter: :steam_locomotive: :tram: :mountain_railway: :bike: :aerial_tramway: :suspension_railway: :mountain_cableway: :tractor: :blue_car: :oncoming_automobile: :car: :red_car: :taxi: :oncoming_taxi: :articulated_lorry: :bus: :oncoming_bus: :rotating_light: :police_car: :oncoming_police_car: :fire_engine: :ambulance: :minibus: :truck: :train: :station: :train2: :bullettrain_front: :bullettrain_side: :light_rail: :monorail: :railway_car: :trolleybus: :ticket: :fuelpump: :vertical_traffic_light: :traffic_light: :warning: :construction: :beginner: :atm: :slot_machine: :busstop: :barber: :hotsprings: :checkered_flag: :crossed_flags: :izakaya_lantern: :moyai: :circus_tent: :performing_arts: :round_pushpin: :triangular_flag_on_post: :jp: :kr: :cn: :us: :fr: :es: :it: :ru: :gb: :uk: :de:
-
-### Emoticons - Symbols
-:one: :two: :three: :four: :five: :six: :seven: :eight: :nine: :keycap_ten: :1234: :zero: :hash: :symbols: :arrow_backward: :arrow_down: :arrow_forward: :arrow_left: :capital_abcd: :abcd: :abc: :arrow_lower_left: :arrow_lower_right: :arrow_right: :arrow_up: :arrow_upper_left: :arrow_upper_right: :arrow_double_down: :arrow_double_up: :arrow_down_small: :arrow_heading_down: :arrow_heading_up: :leftwards_arrow_with_hook: :arrow_right_hook: :left_right_arrow: :arrow_up_down: :arrow_up_small: :arrows_clockwise: :arrows_counterclockwise: :rewind: :fast_forward: :information_source: :ok: :twisted_rightwards_arrows: :repeat: :repeat_one: :new: :top: :up: :cool: :free: :ng: :cinema: :koko: :signal_strength: :u5272: :u5408: :u55b6: :u6307: :u6708: :u6709: :u6e80: :u7121: :u7533: :u7a7a: :u7981: :sa: :restroom: :mens: :womens: :baby_symbol: :no_smoking: :parking: :wheelchair: :metro: :baggage_claim: :accept: :wc: :potable_water: :put_litter_in_its_place: :secret: :congratulations: :m: :passport_control: :left_luggage: :customs: :ideograph_advantage: :cl: :sos: :id: :no_entry_sign: :underage: :no_mobile_phones: :do_not_litter: :non-potable_water: :no_bicycles: :no_pedestrians: :children_crossing: :no_entry: :eight_spoked_asterisk: :sparkle: :eight_pointed_black_star: :heart_decoration: :vs: :vibration_mode: :mobile_phone_off: :chart: :currency_exchange: :aries: :taurus: :gemini: :cancer: :leo: :virgo: :libra: :scorpius: :sagittarius: :capricorn: :aquarius: :pisces: :ophiuchus: :six_pointed_star: :negative_squared_cross_mark: :a: :b: :ab: :o2: :diamond_shape_with_a_dot_inside: :recycle: :end: :back: :on: :soon: :clock1: :clock130: :clock10: :clock1030: :clock11: :clock1130: :clock12: :clock1230: :clock2: :clock230: :clock3: :clock330: :clock4: :clock430: :clock5: :clock530: :clock6: :clock630: :clock7: :clock730: :clock8: :clock830: :clock9: :clock930: :heavy_dollar_sign: :copyright: :registered: :tm: :x: :heavy_exclamation_mark: :bangbang: :interrobang: :o: :heavy_multiplication_x: :heavy_plus_sign: :heavy_minus_sign: :heavy_division_sign: :white_flower: :100: :heavy_check_mark: :ballot_box_with_check: :radio_button: :link: :curly_loop: :wavy_dash: :part_alternation_mark: :trident: :black_small_square: :white_small_square: :black_medium_small_square: :white_medium_small_square: :black_medium_square: :white_medium_square: :black_large_square: :white_large_square: :white_check_mark: :black_square_button: :white_square_button: :black_circle: :white_circle: :red_circle: :large_blue_circle: :large_blue_diamond: :large_orange_diamond: :small_blue_diamond: :small_orange_diamond: :small_red_triangle: :small_red_triangle_down: :shipit:
diff --git a/tests/test-emoticons1.md b/tests/test-emoticons1.md
new file mode 100644
index 000000000..855edbb1c
--- /dev/null
+++ b/tests/test-emoticons1.md
@@ -0,0 +1,12 @@
+# Emoticon Testing
+Verify that all emoticons render. This test should render in three separate messages since it's ~11000 characters.
+
+### Emoticon - Punctuation
+
+:) :-) ;) ;-) :o :O :-o :-O :] :-] :d :-D x-d x-D :p :-P :@ :( :-( :'( :/ :-/ :s :-s :| :-| :$ :-$ :-x <3 :+1: :-1:
+
+### Emoticons - People
+:bowtie: :smile: :laughing: :blush: :smiley: :relaxed: :smirk: :heart_eyes: :kissing_heart: :kissing_closed_eyes: :flushed: :relieved: :satisfied: :grin: :wink: :stuck_out_tongue_winking_eye: :stuck_out_tongue_closed_eyes: :grinning: :kissing: :kissing_smiling_eyes: :stuck_out_tongue: :sleeping: :worried: :frowning: :anguished: :open_mouth: :grimacing: :confused: :hushed: :expressionless: :unamused: :sweat_smile: :sweat: :disappointed_relieved: :weary: :pensive: :disappointed: :confounded: :fearful: :cold_sweat: :persevere: :cry: :sob: :joy: :astonished: :scream: :neckbeard: :tired_face: :angry: :rage: :triumph: :sleepy: :yum: :mask: :sunglasses: :dizzy_face: :imp: :smiling_imp: :neutral_face: :no_mouth: :innocent: :alien: :yellow_heart: :blue_heart: :purple_heart: :heart: :green_heart: :broken_heart: :heartbeat: :heartpulse: :two_hearts: :revolving_hearts: :cupid: :sparkling_heart: :sparkles: :star: :star2: :dizzy: :boom: :collision: :anger: :exclamation: :question: :grey_exclamation: :grey_question: :zzz: :dash: :sweat_drops: :notes: :musical_note: :fire: :hankey: :poop: :shit: :+1: :thumbsup: :-1: :thumbsdown: :ok_hand: :punch: :facepunch: :fist: :v: :wave: :hand: :raised_hand: :open_hands: :point_up: :point_down: :point_left: :point_right: :raised_hands: :pray: :point_up_2: :clap: :muscle: :metal: :fu: :runner: :running: :couple: :family: :two_men_holding_hands: :two_women_holding_hands: :dancer: :dancers: :ok_woman: :no_good: :information_desk_person: :raising_hand: :bride_with_veil: :person_with_pouting_face: :person_frowning: :bow: :couplekiss: :couple_with_heart: :massage: :haircut: :nail_care: :boy: :girl: :woman: :man: :baby: :older_woman: :older_man: :person_with_blond_hair: :man_with_gua_pi_mao: :man_with_turban: :construction_worker: :cop: :angel: :princess: :smiley_cat: :smile_cat: :heart_eyes_cat: :kissing_cat: :smirk_cat: :scream_cat: :crying_cat_face: :joy_cat: :pouting_cat: :japanese_ogre: :japanese_goblin: :see_no_evil: :hear_no_evil: :speak_no_evil: :guardsman: :skull: :feet: :lips: :kiss: :droplet: :ear: :eyes: :nose: :tongue: :love_letter: :bust_in_silhouette: :busts_in_silhouette: :speech_balloon: :thought_balloon: :feelsgood: :finnadie: :goberserk: :godmode: :hurtrealbad: :rage1: :rage2: :rage3: :rage4: :suspect: :trollface:
+
+### Emoticons - Nature
+:sunny: :umbrella: :cloud: :snowflake: :snowman: :zap: :cyclone: :foggy: :ocean: :cat: :dog: :mouse: :hamster: :rabbit: :wolf: :frog: :tiger: :koala: :bear: :pig: :pig_nose: :cow: :boar: :monkey_face: :monkey: :horse: :racehorse: :camel: :sheep: :elephant: :panda_face: :snake: :bird: :baby_chick: :hatched_chick: :hatching_chick: :chicken: :penguin: :turtle: :bug: :honeybee: :ant: :beetle: :snail: :octopus: :tropical_fish: :fish: :whale: :whale2: :dolphin: :cow2: :ram: :rat: :water_buffalo: :tiger2: :rabbit2: :dragon: :goat: :rooster: :dog2: :pig2: :mouse2: :ox: :dragon_face: :blowfish: :crocodile: :dromedary_camel: :leopard: :cat2: :poodle: :paw_prints: :bouquet: :cherry_blossom: :tulip: :four_leaf_clover: :rose: :sunflower: :hibiscus: :maple_leaf: :leaves: :fallen_leaf: :herb: :mushroom: :cactus: :palm_tree: :evergreen_tree: :deciduous_tree: :chestnut: :seedling: :blossom: :ear_of_rice: :shell: :globe_with_meridians: :sun_with_face: :full_moon_with_face: :new_moon_with_face: :new_moon: :waxing_crescent_moon: :first_quarter_moon: :waxing_gibbous_moon: :full_moon: :waning_gibbous_moon: :last_quarter_moon: :waning_crescent_moon: :last_quarter_moon_with_face: :first_quarter_moon_with_face: :crescent_moon: :earth_africa: :earth_americas: :earth_asia: :volcano: :milky_way: :partly_sunny: :octocat: :squirrel:
diff --git a/tests/test-emoticons2.md b/tests/test-emoticons2.md
new file mode 100644
index 000000000..e95235af2
--- /dev/null
+++ b/tests/test-emoticons2.md
@@ -0,0 +1,2 @@
+### Emoticons - Objects
+:bamboo: :gift_heart: :dolls: :school_satchel: :mortar_board: :flags: :fireworks: :sparkler: :wind_chime: :rice_scene: :jack_o_lantern: :ghost: :santa: :christmas_tree: :gift: :bell: :no_bell: :tanabata_tree: :tada: :confetti_ball: :balloon: :crystal_ball: :cd: :dvd: :floppy_disk: :camera: :video_camera: :movie_camera: :computer: :tv: :iphone: :phone: :telephone: :telephone_receiver: :pager: :fax: :minidisc: :vhs: :sound: :speaker: :mute: :loudspeaker: :mega: :hourglass: :hourglass_flowing_sand: :alarm_clock: :watch: :radio: :satellite: :loop: :mag: :mag_right: :unlock: :lock: :lock_with_ink_pen: :closed_lock_with_key: :key: :bulb: :flashlight: :high_brightness: :low_brightness: :electric_plug: :battery: :calling: :email: :mailbox: :postbox: :bath: :bathtub: :shower: :toilet: :wrench: :nut_and_bolt: :hammer: :seat: :moneybag: :yen: :dollar: :pound: :euro: :credit_card: :money_with_wings: :e-mail: :inbox_tray: :outbox_tray: :envelope: :incoming_envelope: :postal_horn: :mailbox_closed: :mailbox_with_mail: :mailbox_with_no_mail: :package: :door: :smoking: :bomb: :gun: :hocho: :pill: :syringe: :page_facing_up: :page_with_curl: :bookmark_tabs: :bar_chart: :chart_with_upwards_trend: :chart_with_downwards_trend: :scroll: :clipboard: :calendar: :date: :card_index: :file_folder: :open_file_folder: :scissors: :pushpin: :paperclip: :black_nib: :pencil2: :straight_ruler: :triangular_ruler: :closed_book: :green_book: :blue_book: :orange_book: :notebook: :notebook_with_decorative_cover: :ledger: :books: :bookmark: :name_badge: :microscope: :telescope: :newspaper: :football: :basketball: :soccer: :baseball: :tennis: :8ball: :8ball: :rugby_football: :bowling: :golf: :mountain_bicyclist: :bicyclist: :horse_racing: :snowboarder: :swimmer: :surfer: :ski: :spades: :hearts: :clubs: :diamonds: :gem: :ring: :trophy: :musical_score: :musical_keyboard: :violin: :space_invader: :video_game: :black_joker: :flower_playing_cards: :game_die: :dart: :mahjong: :clapper: :memo: :pencil: :book: :art: :microphone: :headphones: :trumpet: :saxophone: :guitar: :shoe: :sandal: :high_heel: :lipstick: :boot: :shirt: :tshirt: :necktie: :womans_clothes: :dress: :running_shirt_with_sash: :jeans: :kimono: :bikini: :ribbon: :tophat: :crown: :womans_hat: :mans_shoe: :closed_umbrella: :briefcase: :handbag: :pouch: :purse: :eyeglasses: :fishing_pole_and_fish: :coffee: :tea: :sake: :baby_bottle: :beer: :beers: :cocktail: :tropical_drink: :wine_glass: :fork_and_knife: :pizza: :hamburger: :fries: :poultry_leg: :meat_on_bone: :spaghetti: :curry: :fried_shrimp: :bento: :sushi: :fish_cake: :rice_ball: :rice_cracker: :rice: :ramen: :stew: :oden: :dango: :egg: :bread: :doughnut: :custard: :icecream: :ice_cream: :shaved_ice: :birthday: :cake: :cookie: :chocolate_bar: :candy: :lollipop: :honey_pot: :apple: :green_apple: :tangerine: :lemon: :cherries: :grapes: :watermelon: :strawberry: :peach: :melon: :banana: :pear: :pineapple: :sweet_potato: :eggplant: :tomato: :corn:
diff --git a/tests/test-emoticons3.md b/tests/test-emoticons3.md
new file mode 100644
index 000000000..e16026824
--- /dev/null
+++ b/tests/test-emoticons3.md
@@ -0,0 +1,3 @@
+### Emoticons - Places
+
+:house: :house_with_garden: :school: :office: :post_office: :hospital: :bank: :convenience_store: :love_hotel: :hotel: :wedding: :church: :department_store: :european_post_office: :city_sunrise: :city_sunset: :japanese_castle: :european_castle: :tent: :factory: :tokyo_tower: :japan: :mount_fuji: :sunrise_over_mountains: :sunrise: :stars: :statue_of_liberty: :bridge_at_night: :carousel_horse: :rainbow: :ferris_wheel: :fountain: :roller_coaster: :ship: :speedboat: :boat: :sailboat: :rowboat: :anchor: :rocket: :airplane: :helicopter: :steam_locomotive: :tram: :mountain_railway: :bike: :aerial_tramway: :suspension_railway: :mountain_cableway: :tractor: :blue_car: :oncoming_automobile: :car: :red_car: :taxi: :oncoming_taxi: :articulated_lorry: :bus: :oncoming_bus: :rotating_light: :police_car: :oncoming_police_car: :fire_engine: :ambulance: :minibus: :truck: :train: :station: :train2: :bullettrain_front: :bullettrain_side: :light_rail: :monorail: :railway_car: :trolleybus: :ticket: :fuelpump: :vertical_traffic_light: :traffic_light: :warning: :construction: :beginner: :atm: :slot_machine: :busstop: :barber: :hotsprings: :checkered_flag: :crossed_flags: :izakaya_lantern: :moyai: :circus_tent: :performing_arts: :round_pushpin: :triangular_flag_on_post: :jp: :kr: :cn: :us: :fr: :es: :it: :ru: :gb: :uk: :de:
diff --git a/tests/test-emoticons4.md b/tests/test-emoticons4.md
new file mode 100644
index 000000000..87c088fc8
--- /dev/null
+++ b/tests/test-emoticons4.md
@@ -0,0 +1,2 @@
+### Emoticons - Symbols
+:one: :two: :three: :four: :five: :six: :seven: :eight: :nine: :keycap_ten: :1234: :zero: :hash: :symbols: :arrow_backward: :arrow_down: :arrow_forward: :arrow_left: :capital_abcd: :abcd: :abc: :arrow_lower_left: :arrow_lower_right: :arrow_right: :arrow_up: :arrow_upper_left: :arrow_upper_right: :arrow_double_down: :arrow_double_up: :arrow_down_small: :arrow_heading_down: :arrow_heading_up: :leftwards_arrow_with_hook: :arrow_right_hook: :left_right_arrow: :arrow_up_down: :arrow_up_small: :arrows_clockwise: :arrows_counterclockwise: :rewind: :fast_forward: :information_source: :ok: :twisted_rightwards_arrows: :repeat: :repeat_one: :new: :top: :up: :cool: :free: :ng: :cinema: :koko: :signal_strength: :u5272: :u5408: :u55b6: :u6307: :u6708: :u6709: :u6e80: :u7121: :u7533: :u7a7a: :u7981: :sa: :restroom: :mens: :womens: :baby_symbol: :no_smoking: :parking: :wheelchair: :metro: :baggage_claim: :accept: :wc: :potable_water: :put_litter_in_its_place: :secret: :congratulations: :m: :passport_control: :left_luggage: :customs: :ideograph_advantage: :cl: :sos: :id: :no_entry_sign: :underage: :no_mobile_phones: :do_not_litter: :non-potable_water: :no_bicycles: :no_pedestrians: :children_crossing: :no_entry: :eight_spoked_asterisk: :sparkle: :eight_pointed_black_star: :heart_decoration: :vs: :vibration_mode: :mobile_phone_off: :chart: :currency_exchange: :aries: :taurus: :gemini: :cancer: :leo: :virgo: :libra: :scorpius: :sagittarius: :capricorn: :aquarius: :pisces: :ophiuchus: :six_pointed_star: :negative_squared_cross_mark: :a: :b: :ab: :o2: :diamond_shape_with_a_dot_inside: :recycle: :end: :back: :on: :soon: :clock1: :clock130: :clock10: :clock1030: :clock11: :clock1130: :clock12: :clock1230: :clock2: :clock230: :clock3: :clock330: :clock4: :clock430: :clock5: :clock530: :clock6: :clock630: :clock7: :clock730: :clock8: :clock830: :clock9: :clock930: :heavy_dollar_sign: :copyright: :registered: :tm: :x: :heavy_exclamation_mark: :bangbang: :interrobang: :o: :heavy_multiplication_x: :heavy_plus_sign: :heavy_minus_sign: :heavy_division_sign: :white_flower: :100: :heavy_check_mark: :ballot_box_with_check: :radio_button: :link: :curly_loop: :wavy_dash: :part_alternation_mark: :trident: :black_small_square: :white_small_square: :black_medium_small_square: :white_medium_small_square: :black_medium_square: :white_medium_square: :black_large_square: :white_large_square: :white_check_mark: :black_square_button: :white_square_button: :black_circle: :white_circle: :red_circle: :large_blue_circle: :large_blue_diamond: :large_orange_diamond: :small_blue_diamond: :small_orange_diamond: :small_red_triangle: :small_red_triangle_down: :shipit:
diff --git a/web/react/components/center_panel.jsx b/web/react/components/center_panel.jsx
index 97c615768..2422588cf 100644
--- a/web/react/components/center_panel.jsx
+++ b/web/react/components/center_panel.jsx
@@ -33,7 +33,8 @@ export default class CenterPanel extends React.Component {
this.state = {
showTutorialScreens: tutorialStep === TutorialSteps.INTRO_SCREENS,
showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS,
- user: UserStore.getCurrentUser()
+ user: UserStore.getCurrentUser(),
+ profiles: JSON.parse(JSON.stringify(UserStore.getProfiles()))
};
}
componentDidMount() {
@@ -54,7 +55,7 @@ export default class CenterPanel extends React.Component {
this.setState({showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS});
}
onUserChange() {
- this.setState({user: UserStore.getCurrentUser()});
+ this.setState({user: UserStore.getCurrentUser(), profiles: JSON.parse(JSON.stringify(UserStore.getProfiles()))});
}
render() {
const channel = ChannelStore.getCurrent();
@@ -65,7 +66,7 @@ export default class CenterPanel extends React.Component {
postsContainer = <TutorialIntroScreens/>;
createPost = null;
} else if (this.state.showPostFocus) {
- postsContainer = <PostFocusView/>;
+ postsContainer = <PostFocusView profiles={this.state.profiles}/>;
handleClick = function clickHandler(e) {
e.preventDefault();
@@ -87,7 +88,7 @@ export default class CenterPanel extends React.Component {
</div>
);
} else {
- postsContainer = <PostsViewContainer/>;
+ postsContainer = <PostsViewContainer profiles={this.state.profiles}/>;
createPost = (
<div
className='post-create__container'
diff --git a/web/react/components/delete_post_modal.jsx b/web/react/components/delete_post_modal.jsx
index f8e3e406a..5b2dd1197 100644
--- a/web/react/components/delete_post_modal.jsx
+++ b/web/react/components/delete_post_modal.jsx
@@ -5,7 +5,6 @@ import * as Client from '../utils/client.jsx';
import PostStore from '../stores/post_store.jsx';
import ModalStore from '../stores/modal_store.jsx';
var Modal = ReactBootstrap.Modal;
-import * as Utils from '../utils/utils.jsx';
import * as AsyncClient from '../utils/async_client.jsx';
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
import Constants from '../utils/constants.jsx';
@@ -21,9 +20,6 @@ export default class DeletePostModal extends React.Component {
this.handleDelete = this.handleDelete.bind(this);
this.handleToggle = this.handleToggle.bind(this);
this.handleHide = this.handleHide.bind(this);
- this.onListenerChange = this.onListenerChange.bind(this);
-
- this.selectedList = null;
this.state = {
show: false,
@@ -35,11 +31,9 @@ export default class DeletePostModal extends React.Component {
componentDidMount() {
ModalStore.addModalListener(ActionTypes.TOGGLE_DELETE_POST_MODAL, this.handleToggle);
- PostStore.addSelectedPostChangeListener(this.onListenerChange);
}
componentWillUnmount() {
- PostStore.removeSelectedPostChangeListener(this.onListenerChange);
ModalStore.removeModalListener(ActionTypes.TOGGLE_DELETE_POST_MODAL, this.handleToggle);
}
@@ -56,40 +50,15 @@ export default class DeletePostModal extends React.Component {
this.state.post.channel_id,
this.state.post.id,
() => {
- var selectedList = this.selectedList;
-
- if (selectedList && selectedList.order && selectedList.order.length > 0) {
- var selectedPost = selectedList.posts[selectedList.order[0]];
- if ((selectedPost.id === this.state.post.id && !this.state.root_id) || selectedPost.root_id === this.state.post.id) {
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH,
- results: null
- });
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_POST_SELECTED,
- postId: null
- });
- } else if (selectedPost.id === this.state.post.id && this.state.root_id) {
- if (selectedPost.root_id && selectedPost.root_id.length > 0 && selectedList.posts[selectedPost.root_id]) {
- selectedList.order = [selectedPost.root_id];
- delete selectedList.posts[selectedPost.id];
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_POST_SELECTED,
- postId: selectedPost.root_id
- });
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH,
- results: null
- });
- }
- }
- }
-
PostStore.deletePost(this.state.post);
AsyncClient.getPosts(this.state.post.channel_id);
+
+ if (this.state.post.id === PostStore.getSelectedPostId()) {
+ AppDispatcher.handleServerAction({
+ type: ActionTypes.RECEIVED_POST_SELECTED,
+ postId: null
+ });
+ }
},
(err) => {
AsyncClient.dispatchError(err, 'deletePost');
@@ -112,13 +81,6 @@ export default class DeletePostModal extends React.Component {
this.setState({show: false});
}
- onListenerChange() {
- var newList = PostStore.getSelectedPost();
- if (!Utils.areObjectsEqual(this.selectedList, newList)) {
- this.selectedList = newList;
- }
- }
-
render() {
if (!this.state.post) {
return null;
diff --git a/web/react/components/post_body_additional_content.jsx b/web/react/components/post_body_additional_content.jsx
index a76c59fb3..c2a928f3b 100644
--- a/web/react/components/post_body_additional_content.jsx
+++ b/web/react/components/post_body_additional_content.jsx
@@ -16,16 +16,28 @@ export default class PostBodyAdditionalContent extends React.Component {
this.getSlackAttachment = this.getSlackAttachment.bind(this);
this.getOEmbedProvider = this.getOEmbedProvider.bind(this);
+ this.generateEmbed = this.generateEmbed.bind(this);
+ this.toggleEmbedVisibility = this.toggleEmbedVisibility.bind(this);
+
+ this.state = {
+ embedVisible: true
+ };
}
- shouldComponentUpdate(nextProps) {
+ shouldComponentUpdate(nextProps, nextState) {
if (!Utils.areObjectsEqual(nextProps.post, this.props.post)) {
return true;
}
-
+ if (nextState.embedVisible !== this.state.embedVisible) {
+ return true;
+ }
return false;
}
+ toggleEmbedVisibility() {
+ this.setState({embedVisible: !this.state.embedVisible});
+ }
+
getSlackAttachment() {
let attachments = [];
if (this.props.post.props && this.props.post.props.attachments) {
@@ -51,7 +63,7 @@ export default class PostBodyAdditionalContent extends React.Component {
return null;
}
- render() {
+ generateEmbed() {
if (this.props.post.type === 'slack_attachment') {
return this.getSlackAttachment();
}
@@ -98,6 +110,28 @@ export default class PostBodyAdditionalContent extends React.Component {
return null;
}
+
+ render() {
+ var generateEmbed = this.generateEmbed();
+ if (generateEmbed) {
+ return (
+ <div>
+ <a className='post__embed-visibility'
+ data-expanded={this.state.embedVisible}
+ aria-label='Toggle Embed Visibility'
+ onClick={this.toggleEmbedVisibility}
+ >
+ </a>
+ <div className='post__embed-container'
+ hidden={!this.state.embedVisible}
+ >
+ {generateEmbed}
+ </div>
+ </div>
+ );
+ }
+ return null;
+ }
}
PostBodyAdditionalContent.propTypes = {
diff --git a/web/react/components/post_focus_view.jsx b/web/react/components/post_focus_view.jsx
index b9b6acd5f..44a0bae09 100644
--- a/web/react/components/post_focus_view.jsx
+++ b/web/react/components/post_focus_view.jsx
@@ -105,6 +105,7 @@ export default class PostFocusView extends React.Component {
introText={this.getIntroMessage()}
messageSeparatorTime={0}
postsToHighlight={postsToHighlight}
+ profiles={this.props.profiles}
/>
</div>
);
@@ -114,4 +115,5 @@ PostFocusView.defaultProps = {
};
PostFocusView.propTypes = {
+ profiles: React.PropTypes.object
};
diff --git a/web/react/components/posts_view.jsx b/web/react/components/posts_view.jsx
index 1ea7711ea..9a1673483 100644
--- a/web/react/components/posts_view.jsx
+++ b/web/react/components/posts_view.jsx
@@ -321,7 +321,7 @@ export default class PostsView extends React.Component {
if (this.refs.newMessageSeparator) {
var objDiv = this.refs.postlist;
objDiv.scrollTop = this.refs.newMessageSeparator.offsetTop; //scrolls node to top of Div
- } else {
+ } else if (this.refs.postlist) {
this.refs.postlist.scrollTop = this.refs.postlist.scrollHeight;
}
});
diff --git a/web/react/components/posts_view_container.jsx b/web/react/components/posts_view_container.jsx
index 1b14e8681..92d658b55 100644
--- a/web/react/components/posts_view_container.jsx
+++ b/web/react/components/posts_view_container.jsx
@@ -6,7 +6,6 @@ import LoadingScreen from './loading_screen.jsx';
import ChannelStore from '../stores/channel_store.jsx';
import PostStore from '../stores/post_store.jsx';
-import UserStore from '../stores/user_store.jsx';
import * as Utils from '../utils/utils.jsx';
import * as EventHelpers from '../dispatcher/event_helpers.jsx';
@@ -25,13 +24,11 @@ export default class PostsViewContainer extends React.Component {
this.handlePostsViewScroll = this.handlePostsViewScroll.bind(this);
this.loadMorePostsTop = this.loadMorePostsTop.bind(this);
this.handlePostsViewJumpRequest = this.handlePostsViewJumpRequest.bind(this);
- this.onUserChange = this.onUserChange.bind(this);
const currentChannelId = ChannelStore.getCurrentId();
const state = {
scrollType: PostsView.SCROLL_TYPE_BOTTOM,
- scrollPost: null,
- profiles: JSON.parse(JSON.stringify(UserStore.getProfiles()))
+ scrollPost: null
};
if (currentChannelId) {
Object.assign(state, {
@@ -57,14 +54,12 @@ export default class PostsViewContainer extends React.Component {
ChannelStore.addLeaveListener(this.onChannelLeave);
PostStore.addChangeListener(this.onPostsChange);
PostStore.addPostsViewJumpListener(this.handlePostsViewJumpRequest);
- UserStore.addChangeListener(this.onUserChange);
}
componentWillUnmount() {
ChannelStore.removeChangeListener(this.onChannelChange);
ChannelStore.removeLeaveListener(this.onChannelLeave);
PostStore.removeChangeListener(this.onPostsChange);
PostStore.removePostsViewJumpListener(this.handlePostsViewJumpRequest);
- UserStore.removeChangeListener(this.onUserChange);
}
handlePostsViewJumpRequest(type, post) {
switch (type) {
@@ -140,9 +135,6 @@ export default class PostsViewContainer extends React.Component {
atTop[this.state.currentChannelIndex] = PostStore.getVisibilityAtTop(currentChannelId);
this.setState({postLists, atTop});
}
- onUserChange() {
- this.setState({profiles: JSON.parse(JSON.stringify(UserStore.getProfiles()))});
- }
getChannelPosts(id) {
return PostStore.getVisiblePosts(id);
}
@@ -188,7 +180,7 @@ export default class PostsViewContainer extends React.Component {
showMoreMessagesBottom={false}
introText={channel ? createChannelIntroMessage(channel) : null}
messageSeparatorTime={this.state.currentLastViewed}
- profiles={this.state.profiles}
+ profiles={this.props.profiles}
/>
);
if (!postLists[i] && isActive) {
@@ -208,3 +200,7 @@ export default class PostsViewContainer extends React.Component {
);
}
}
+
+PostsViewContainer.propTypes = {
+ profiles: React.PropTypes.object
+};
diff --git a/web/react/components/rhs_thread.jsx b/web/react/components/rhs_thread.jsx
index 4d770287c..292624846 100644
--- a/web/react/components/rhs_thread.jsx
+++ b/web/react/components/rhs_thread.jsx
@@ -91,9 +91,11 @@ export default class RhsThread extends React.Component {
});
}
onPostChange() {
- const selected = PostStore.getSelectedPost();
- const posts = PostStore.getSelectedPostThread();
- this.setState({posts, selected});
+ if (this.mounted) {
+ const selected = PostStore.getSelectedPost();
+ const posts = PostStore.getSelectedPostThread();
+ this.setState({posts, selected});
+ }
}
onUserChange() {
const profiles = JSON.parse(JSON.stringify(UserStore.getProfiles()));
@@ -185,7 +187,7 @@ export default class RhsThread extends React.Component {
<div className='post-right-comments-container'>
{postsArray.map(function mapPosts(comPost) {
let p;
- if (UserStore.getCurrentId() === selected.user_id) {
+ if (UserStore.getCurrentId() === comPost.user_id) {
p = UserStore.getCurrentUser();
} else {
p = profiles[comPost.user_id];
diff --git a/web/react/components/search_results.jsx b/web/react/components/search_results.jsx
index 55ece2c97..8985063a0 100644
--- a/web/react/components/search_results.jsx
+++ b/web/react/components/search_results.jsx
@@ -61,7 +61,15 @@ export default class SearchResults extends React.Component {
}
shouldComponentUpdate(nextProps, nextState) {
- return !Utils.areObjectsEqual(this.props, nextProps) || !Utils.areObjectsEqual(this.state, nextState);
+ if (!Utils.areObjectsEqual(this.props, nextProps)) {
+ return true;
+ }
+
+ if (!Utils.areObjectsEqual(this.state, nextState)) {
+ return true;
+ }
+
+ return false;
}
componentDidUpdate() {
@@ -143,13 +151,19 @@ export default class SearchResults extends React.Component {
);
} else {
ctls = results.order.map(function mymap(id) {
- var post = results.posts[id];
+ const post = results.posts[id];
+ let profile;
+ if (UserStore.getCurrentId() === post.user_id) {
+ profile = UserStore.getCurrentUser();
+ } else {
+ profile = profiles[post.user_id];
+ }
return (
<SearchResultsItem
key={post.id}
channel={this.state.channels.get(post.channel_id)}
post={post}
- user={profiles[post.user_id]}
+ user={profile}
term={searchTerm}
isMentionSearch={this.props.isMentionSearch}
/>
diff --git a/web/react/components/tutorial/tutorial_intro_screens.jsx b/web/react/components/tutorial/tutorial_intro_screens.jsx
index 2bacdeb28..45ebceb28 100644
--- a/web/react/components/tutorial/tutorial_intro_screens.jsx
+++ b/web/react/components/tutorial/tutorial_intro_screens.jsx
@@ -211,26 +211,28 @@ export default class TutorialIntroScreens extends React.Component {
<div className='tutorial__content'>
<div className='tutorial__steps'>
{screen}
- <button
- className='btn btn-primary'
- tabIndex='1'
- onClick={this.handleNext}
- >
- <FormattedMessage
- id='tutorial_intro.next'
- defaultMessage='Next'
- />
- </button>
- <a
- className='tutorial-skip'
- href='#'
- onClick={this.skipTutorial}
- >
- <FormattedMessage
- id='tutorial_intro.skip'
- defaultMessage='Skip tutorial'
- />
- </a>
+ <div className='tutorial__footer'>
+ <button
+ className='btn btn-primary'
+ tabIndex='1'
+ onClick={this.handleNext}
+ >
+ <FormattedMessage
+ id='tutorial_intro.next'
+ defaultMessage='Next'
+ />
+ </button>
+ <a
+ className='tutorial-skip'
+ href='#'
+ onClick={this.skipTutorial}
+ >
+ <FormattedMessage
+ id='tutorial_intro.skip'
+ defaultMessage='Skip tutorial'
+ />
+ </a>
+ </div>
</div>
</div>
</div>
diff --git a/web/react/components/user_settings/manage_command_hooks.jsx b/web/react/components/user_settings/manage_command_hooks.jsx
index bd0659a47..2947138be 100644
--- a/web/react/components/user_settings/manage_command_hooks.jsx
+++ b/web/react/components/user_settings/manage_command_hooks.jsx
@@ -420,7 +420,7 @@ export default class ManageCommandCmds extends React.Component {
<div key='addCommandCmd'>
<FormattedHTMLMessage
id='user.settings.cmds.add_desc'
- defaultMessage='Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href="http://docs.mattermost.com/developer/slash-commands.html">Slash commands documentation</a> for detailed instructions.'
+ defaultMessage='Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href="http://docs.mattermost.com/developer/slash-commands.html">Slash commands documentation</a> for detailed instructions. View all slash commands configured on this team below.'
/>
<div><label className='control-label padding-top x2'>
<FormattedMessage
diff --git a/web/react/components/user_settings/manage_incoming_hooks.jsx b/web/react/components/user_settings/manage_incoming_hooks.jsx
index 68e99be7d..79a71b5ac 100644
--- a/web/react/components/user_settings/manage_incoming_hooks.jsx
+++ b/web/react/components/user_settings/manage_incoming_hooks.jsx
@@ -183,7 +183,7 @@ export default class ManageIncomingHooks extends React.Component {
<div key='addIncomingHook'>
<FormattedHTMLMessage
id='user.settings.hooks_in.description'
- defaultMessage='Create webhook URLs for use in external integrations. Please see <a href="http://docs.mattermost.com/developer/webhooks-incoming.html" target="_blank">incoming webhooks documentation</a> to learn more.'
+ defaultMessage='Create webhook URLs for use in external integrations. Please see <a href="http://docs.mattermost.com/developer/webhooks-incoming.html" target="_blank">incoming webhooks documentation</a> to learn more. View all incoming webhooks configured on this team below.'
/>
<div><label className='control-label padding-top x2'>
<FormattedMessage
diff --git a/web/react/components/user_settings/manage_outgoing_hooks.jsx b/web/react/components/user_settings/manage_outgoing_hooks.jsx
index 9c3a60ed5..487254d15 100644
--- a/web/react/components/user_settings/manage_outgoing_hooks.jsx
+++ b/web/react/components/user_settings/manage_outgoing_hooks.jsx
@@ -284,7 +284,7 @@ class ManageOutgoingHooks extends React.Component {
<div key='addOutgoingHook'>
<FormattedHTMLMessage
id='user.settings.hooks_out.addDescription'
- defaultMessage='Create webhooks to send new message events to an external integration. Please see <a href="http://docs.mattermost.com/developer/webhooks-outgoing.html" target="_blank">outgoing webhooks documentation</a> to learn more.'
+ defaultMessage='Create webhooks to send new message events to an external integration. Please see <a href="http://docs.mattermost.com/developer/webhooks-outgoing.html" target="_blank">outgoing webhooks documentation</a> to learn more. View all outgoing webhooks configured on this team below.'
/>
<div><label className='control-label padding-top x2'>
<FormattedMessage
diff --git a/web/react/components/user_settings/user_settings_advanced.jsx b/web/react/components/user_settings/user_settings_advanced.jsx
index e513f81d2..efaf63ada 100644
--- a/web/react/components/user_settings/user_settings_advanced.jsx
+++ b/web/react/components/user_settings/user_settings_advanced.jsx
@@ -47,6 +47,10 @@ const holders = defineMessages({
EMBED_PREVIEW: {
id: 'user.settings.advance.embed_preview',
defaultMessage: 'Show preview snippet of links below message'
+ },
+ EMBED_TOGGLE: {
+ id: 'user.settings.advance.embed_toggle',
+ defaultMessage: 'Show toggle for all embed previews'
}
});
@@ -240,7 +244,7 @@ class AdvancedSettingsDisplay extends React.Component {
this.toggleFeature(feature.label, e.target.checked);
}}
/>
- {formatMessage({id: 'user.settings.advance.' + feature.label})}
+ {formatMessage(holders[key])}
</label>
</div>
</div>
@@ -334,4 +338,4 @@ AdvancedSettingsDisplay.propTypes = {
collapseModal: React.PropTypes.func.isRequired
};
-export default injectIntl(AdvancedSettingsDisplay); \ No newline at end of file
+export default injectIntl(AdvancedSettingsDisplay);
diff --git a/web/react/dispatcher/event_helpers.jsx b/web/react/dispatcher/event_helpers.jsx
index 47a16950e..367347d4b 100644
--- a/web/react/dispatcher/event_helpers.jsx
+++ b/web/react/dispatcher/event_helpers.jsx
@@ -47,8 +47,15 @@ export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) {
post.id,
(data) => {
AppDispatcher.handleServerAction({
+ type: ActionTypes.RECEIVED_POSTS,
+ id: post.channel_id,
+ numRequested: 0,
+ post_list: data
+ });
+
+ AppDispatcher.handleServerAction({
type: ActionTypes.RECEIVED_POST_SELECTED,
- post_list: data,
+ postId: Utils.getRootId(post),
from_search: SearchStore.getSearchTerm()
});
diff --git a/web/react/stores/post_store.jsx b/web/react/stores/post_store.jsx
index 1dc0dc9bf..a6dfcd46f 100644
--- a/web/react/stores/post_store.jsx
+++ b/web/react/stores/post_store.jsx
@@ -303,6 +303,20 @@ class PostStoreClass extends EventEmitter {
postList.order.splice(index, 1);
}
+ for (const pid in postList.posts) {
+ if (!postList.posts.hasOwnProperty(pid)) {
+ continue;
+ }
+
+ if (postList.posts[pid].root_id === post.id) {
+ Reflect.deleteProperty(postList.posts, pid);
+ const commentIndex = postList.order.indexOf(pid);
+ if (commentIndex !== -1) {
+ postList.order.splice(commentIndex, 1);
+ }
+ }
+ }
+
this.postsInfo[channelId].postList = postList;
}
diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx
index 766a86686..0a4944708 100644
--- a/web/react/utils/constants.jsx
+++ b/web/react/utils/constants.jsx
@@ -479,6 +479,10 @@ export default {
EMBED_PREVIEW: {
label: 'embed_preview',
description: 'Show preview snippet of links below message'
+ },
+ EMBED_TOGGLE: {
+ label: 'embed_toggle',
+ description: 'Show toggle for all embed previews'
}
},
OVERLAY_TIME_DELAY: 400,
diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx
index a381d3bcc..02590bd93 100644
--- a/web/react/utils/utils.jsx
+++ b/web/react/utils/utils.jsx
@@ -1384,6 +1384,10 @@ export function languages() {
{
value: 'es',
name: 'Español (Beta)'
+ },
+ {
+ value: 'pt',
+ name: 'Portugues (Beta)'
}
]
);
diff --git a/web/sass-files/sass/partials/_modal.scss b/web/sass-files/sass/partials/_modal.scss
index 2136b9ffb..09c366c77 100644
--- a/web/sass-files/sass/partials/_modal.scss
+++ b/web/sass-files/sass/partials/_modal.scss
@@ -46,7 +46,6 @@
}
td {
width: 100%;
- white-space: nowrap;
@include legacy-pie-clearfix;
text-overflow: ellipsis;
padding: 8px 8px 8px 15px;
diff --git a/web/sass-files/sass/partials/_post.scss b/web/sass-files/sass/partials/_post.scss
index 0847318c1..4478b3f15 100644
--- a/web/sass-files/sass/partials/_post.scss
+++ b/web/sass-files/sass/partials/_post.scss
@@ -408,7 +408,7 @@ body.ios {
.post {
word-wrap: break-word;
- padding: 8px 1em 0;
+ padding: 8px .5em 0 1em;
position: relative;
max-width: 100%;
@include legacy-pie-clearfix;
@@ -457,7 +457,7 @@ body.ios {
&.same--root {
&.same--user {
- padding: 0 1em;
+ padding: 0 .5em 0 1em;
&:hover {
@@ -629,6 +629,16 @@ body.ios {
}
}
+ .post__embed-container{
+ display: block;
+ max-height: 1000px;
+ transition: max-height .5s ease;
+ overflow: hidden;
+ &[hidden]{
+ max-height: 0;
+ }
+ }
+
.dropdown {
display: inline-block;
visibility: hidden;
@@ -687,7 +697,7 @@ body.ios {
.post__body {
word-wrap: break-word;
- padding: 0.2em 0.5em 0em;
+ padding: 0.2em 0.5em;
@include legacy-pie-clearfix;
width: calc(100% - 75px);
@@ -753,7 +763,32 @@ body.ios {
white-space: nowrap;
}
- .post__time {
+ .post__embed-visibility {
+ cursor: pointer;
+ display: block;
+ font: normal normal normal 14px/1 FontAwesome;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-size: 0;
+ width: 30px;
+ margin-top: -5px;
+
+ &:hover{
+ text-decoration: none;
+ }
+
+ &:before {
+ content: "\f065";
+ font-size: 14px;
+ }
+
+ &[data-expanded="true"]:before{
+ content: "\f066";
+ }
+ }
+
+ .post__time{
font-size: 0.9em;
}
diff --git a/web/sass-files/sass/partials/_responsive.scss b/web/sass-files/sass/partials/_responsive.scss
index b724b8ced..ead65af2e 100644
--- a/web/sass-files/sass/partials/_responsive.scss
+++ b/web/sass-files/sass/partials/_responsive.scss
@@ -607,7 +607,7 @@
@include translate3d(0, 0, 0);
}
> div {
- padding-bottom: 0;
+ padding-bottom: 70px;
}
.nav-pills__unread-indicator-bottom {
bottom: 10px;
diff --git a/web/sass-files/sass/partials/_tutorial.scss b/web/sass-files/sass/partials/_tutorial.scss
index 1f93fc6a9..b21a2b7c3 100644
--- a/web/sass-files/sass/partials/_tutorial.scss
+++ b/web/sass-files/sass/partials/_tutorial.scss
@@ -32,7 +32,7 @@
&.tip-overlay--sidebar {
max-width: 75%;
margin: 50px 0 0 10px;
- min-height: 310px;
+ min-height: 330px;
.tutorial__footer {
position: absolute;
width: 100%;
@@ -165,17 +165,16 @@
.tutorial__steps {
position: relative;
max-width: 310px;
- min-height: 350px;
+ min-height: 370px;
margin-bottom: 50px;
text-align: left;
display: inline-block;
- padding-bottom: 30px;
- }
- .btn-primary {
- position: absolute;
- bottom: 0px;
}
}
+ .tutorial__footer {
+ position: absolute;
+ bottom: 0;
+ }
h1 {
font-size: em(40px);
margin: -20px 0 30px;
@@ -191,9 +190,7 @@
bottom: 40px;
}
.tutorial-skip {
- position: absolute;
- bottom: 7px;
- left: 80px;
+ margin-left: 13px;
}
}
diff --git a/web/static/i18n/en.json b/web/static/i18n/en.json
index 1e68ac1f6..b4c801f5d 100644
--- a/web/static/i18n/en.json
+++ b/web/static/i18n/en.json
@@ -1059,6 +1059,7 @@
"tutorial_tip.seen": "Seen this before? ",
"upload_overlay.info": "Drop a file to upload it.",
"user.settings.advance.embed_preview": "Show preview snippet of links below message",
+ "user.settings.advance.embed_toggle": "Show toggle for all embed previews",
"user.settings.advance.enabled": "enabled",
"user.settings.advance.feature": " Feature ",
"user.settings.advance.features": " Features ",
@@ -1071,7 +1072,7 @@
"user.settings.advance.sendTitle": "Send messages on Ctrl + Enter",
"user.settings.advance.title": "Advanced Settings",
"user.settings.cmds.add": "Add",
- "user.settings.cmds.add_desc": "Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href=\"http://docs.mattermost.com/developer/slash-commands.html\">Slash commands documentation</a> for detailed instructions.",
+ "user.settings.cmds.add_desc": "Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href=\"http://docs.mattermost.com/developer/slash-commands.html\">Slash commands documentation</a> for detailed instructions. View all slash commands configured on this team below.",
"user.settings.cmds.add_display_name.placeholder": "Example: \"Search patient records\"",
"user.settings.cmds.add_new": "Add a new command",
"user.settings.cmds.add_trigger.placeholder": "Command trigger e.g. \"hello\" not including the slash",
@@ -1184,11 +1185,11 @@
"user.settings.hooks_in.add": "Add",
"user.settings.hooks_in.addTitle": "Add a new incoming webhook",
"user.settings.hooks_in.channel": "Channel: ",
- "user.settings.hooks_in.description": "Create webhook URLs for use in external integrations. Please see <a href=\"http://docs.mattermost.com/developer/webhooks-incoming.html\" target=\"_blank\">incoming webhooks documentation</a> to learn more.",
+ "user.settings.hooks_in.description": "Create webhook URLs for use in external integrations. Please see <a href=\"http://docs.mattermost.com/developer/webhooks-incoming.html\" target=\"_blank\">incoming webhooks documentation</a> to learn more. View all incoming webhooks configured on this team below.",
"user.settings.hooks_in.existing": "Existing incoming webhooks",
"user.settings.hooks_in.none": "None",
"user.settings.hooks_out.add": "Add",
- "user.settings.hooks_out.addDescription": "Create webhooks to send new message events to an external integration. Please see <a href=\"http://docs.mattermost.com/developer/webhooks-outgoing.html\" target=\"_blank\">outgoing webhooks documentation</a> to learn more.",
+ "user.settings.hooks_out.addDescription": "Create webhooks to send new message events to an external integration. Please see <a href=\"http://docs.mattermost.com/developer/webhooks-outgoing.html\" target=\"_blank\">outgoing webhooks documentation</a> to learn more. View all outgoing webhooks configured on this team below.",
"user.settings.hooks_out.addTitle": "Add a new outgoing webhook",
"user.settings.hooks_out.callback": "Callback URLs: ",
"user.settings.hooks_out.callbackDesc": "New line separated URLs that will receive the HTTP POST event",
diff --git a/web/static/i18n/es.json b/web/static/i18n/es.json
index 1fa86e9ad..ea1b4663a 100644
--- a/web/static/i18n/es.json
+++ b/web/static/i18n/es.json
@@ -17,6 +17,7 @@
"activity_log.moreInfo": "Mas información",
"activity_log.os": "Sistema Operativo: {os}",
"activity_log.sessionId": "Sesión ID: {id}",
+ "activity_log.sessionsDescription": "Las sesiones son creadas cuando inicias sesión desde un nuevo navegador en un dispositivo. Las Sesiones te permiten utilizar Mattermost sin tener que volver a iniciar sesión por un período de tiempo especificado por el Administrador de Sistema. Si deseas cerrar sesión antes de que se cumpla este tiempo, Utiliza el botón de 'Cerrar Sesión' en la parte de abajo.",
"activity_log_modal.android": "Android",
"activity_log_modal.androidNativeApp": "Android App Nativa",
"activity_log_modal.iphoneNativeApp": "iPhone App Nativa",
@@ -189,7 +190,7 @@
"admin.ldap.lastnameAttrDesc": "El atributo en el servidor LDAP que será utilizado para poblar el apellido de los usuarios en Mattermost.",
"admin.ldap.lastnameAttrEx": "Ej \"sn\"",
"admin.ldap.lastnameAttrTitle": "Atributo Apellido:",
- "admin.ldap.noLicense": "<h4 class=\"banner__heading\">Nota:</h4><p>LDAP es una característica de la edición enterprise. Tu licencia actual no soporta LDAP. Pincha <a href=\"http://mattermost.com\" target=\"_blank\">aquí</a> para información y precios de las licencias enterprise.</p>",
+ "admin.ldap.noLicense": "<h4 class=\"banner__heading\">Nota:</h4><p>LDAP es una característica de la edición enterprise. Tu licencia actual no soporta LDAP. Pincha <a href=\"http://mattermost.com\" target=\"_blank\">aquí</a> para obtener información y precios de las licencias de la edición enterprise.</p>",
"admin.ldap.portDesc": "El puerto que Mattermost utilizará para conectarse al servidor LDAP. El predeterminado es 389.",
"admin.ldap.portEx": "Ej \"389\"",
"admin.ldap.portTitle": "Puerto LDAP:",
@@ -581,7 +582,7 @@
"claim.email_to_sso.pwd": "Contraseña",
"claim.email_to_sso.pwdError": "Por favor introduce tu contraseña.",
"claim.email_to_sso.ssoNote": "Debes tener una cuenta válida con {type}",
- "claim.email_to_sso.ssoType": "Al reclamar tu cuenta, sólo podrás iniciar sesión con {type}",
+ "claim.email_to_sso.ssoType": "Al reclamar tu cuenta, sólo podrás iniciar sesión con {type} SSO",
"claim.email_to_sso.switchTo": "Cambiar cuenta a {uiType}",
"claim.email_to_sso.title": "Cambiar Cuenta de Correo/Contraseña a {uiType}",
"claim.sso_to_email.confirm": "Confirmar Contraseña",
@@ -1058,6 +1059,7 @@
"tutorial_tip.seen": "¿Haz visto esto antes? ",
"upload_overlay.info": "Arrastra un archivo para subirlo.",
"user.settings.advance.embed_preview": "Mostrar la previsualización de enlaces",
+ "user.settings.advance.embed_toggle": "Capacidad de Mostrar/Esconder las previsualizaciones",
"user.settings.advance.enabled": "habilitada(s)",
"user.settings.advance.feature": " Característica ",
"user.settings.advance.features": " Características ",
@@ -1070,7 +1072,7 @@
"user.settings.advance.sendTitle": "Enviar mensajes con Ctrl + Retorno",
"user.settings.advance.title": "Configuración Avanzada",
"user.settings.cmds.add": "Agregar",
- "user.settings.cmds.add_desc": "Crea comandos de barra para enviar eventos a integraciones externas y recibir una respuesta. Por ejemplo al escribir `/paciente Joe Smith` podría retornar resultados de una búsqueda en tu sistema de adminitración de salud para el nombre “Joe Smith”. Por favor revisa la <a href=\"http://docs.mattermost.com/developer/slash-commands.html\">Documentación de comandos de barra</a> para instrucciones detallas.",
+ "user.settings.cmds.add_desc": "Crea comandos de barra para enviar eventos a integraciones externas recibiendo una respuesta. Por ejemplo al escribir `/paciente Joe Smith` podría retornar los resultados de una búsqueda de los regístros de salud en tu sistema de administración para el nombre “Joe Smith”. Revisa la <a href=\"http://docs.mattermost.com/developer/slash-commands.html\">documentación de Comandos de Barra</a> para instrucciones detalladas. Ver todos los comandos de barra configurados para este equipo en la parte de abajo.",
"user.settings.cmds.add_display_name.placeholder": "Ejemplo: \"Buscar registros del paciente\"",
"user.settings.cmds.add_new": "Agregar un nuevo comando",
"user.settings.cmds.add_trigger.placeholder": "Gatillador del Comando ej. \"hola\" no se debe incluir la barra",
@@ -1183,11 +1185,11 @@
"user.settings.hooks_in.add": "Agregar",
"user.settings.hooks_in.addTitle": "Agregar un nuevo webhook de entrada",
"user.settings.hooks_in.channel": "Canal: ",
- "user.settings.hooks_in.description": "Crea webhooks URLs para utilizarlos con integraciones externas. Por favor revisa <a href=\"http://docs.mattermost.com/developer/webhooks-incoming.html\" target=\"_blank\">documentación de webhook de entrada</a> para conocer más.",
+ "user.settings.hooks_in.description": "Crea URLs para webhooks a utilizar con integraciones externas. Revisa la <a href=\"http://docs.mattermost.com/developer/webhooks-incoming.html\" target=\"_blank\">documentación de webhooks de entrada</a> para conocer más. Ver todos los webhooks de entrada configurados para este equipo en la parte de abajo.",
"user.settings.hooks_in.existing": "Webhooks de entrada existentes",
"user.settings.hooks_in.none": "Ninguno",
"user.settings.hooks_out.add": "Agregar",
- "user.settings.hooks_out.addDescription": "Crea webhooks para enviar los nuevos mensajes a una integración externa. Por favor revisa <a href=\"http://docs.mattermost.com/developer/webhooks-outgoing.html\" target=\"_blank\">documentación de webhook de salida</a> para conocer más.",
+ "user.settings.hooks_out.addDescription": "Crea webhooks para enviar mensajes a ingraciones externas. Revisa la <a href=\"http://docs.mattermost.com/developer/webhooks-outgoing.html\" target=\"_blank\">documentación de webhooks de saldida</a> para conocer más. Ver todos los webhooks de salida configurados para este equipo en la parte de abajo.",
"user.settings.hooks_out.addTitle": "Agregar un nuevo webhook de salida",
"user.settings.hooks_out.callback": "Callback URLs:",
"user.settings.hooks_out.callbackDesc": "Separa por una nueva linea cada URL donde quieres recibir el evento de HTTP POST",
diff --git a/web/static/i18n/pt.json b/web/static/i18n/pt.json
new file mode 100644
index 000000000..e95ca3b9f
--- /dev/null
+++ b/web/static/i18n/pt.json
@@ -0,0 +1,1274 @@
+{
+ "about.close": "Fechar",
+ "about.date": "Data De Criação:",
+ "about.enterpriseEdition": "Enterprise Edition",
+ "about.hash": "Hash de Compilação:",
+ "about.licensed": "Licenciado pela:",
+ "about.number": "O Número De Compilação:",
+ "about.teamEdtion": "Team Edition",
+ "about.title": "Sobre o Mattermost",
+ "about.version": "Versão:",
+ "access_history.title": "Histórico de Acesso",
+ "activity_log.activeSessions": "Sessões ativas",
+ "activity_log.browser": "Browser: {browser}",
+ "activity_log.firstTime": "Primeira vez atico: {date}, {time}",
+ "activity_log.lastActivity": "Última atividade: {date}, {time}",
+ "activity_log.logout": "Logout",
+ "activity_log.moreInfo": "Mais informações",
+ "activity_log.os": "SO: {os}",
+ "activity_log.sessionId": "ID da Sessão: {id}",
+ "activity_log.sessionsDescription": "Sessões são criadas quando você efetuar login em um novo navegador em um dispositivo. Sessões permitem que você use Mattermost sem ter que logar novamente por um período de tempo especificado pelo administrador do sistema. Se você deseja sair mais cedo, use o botão 'Logout' abaixo para terminar uma sessão.",
+ "activity_log_modal.android": "Android",
+ "activity_log_modal.androidNativeApp": "App Nativo Android",
+ "activity_log_modal.iphoneNativeApp": "App Nativo para iPhone",
+ "admin.analytics.activeUsers": "Usuários Ativos Com Postagens",
+ "admin.analytics.channelTypes": "Tipos de Canal",
+ "admin.analytics.loading": "Carregando...",
+ "admin.analytics.meaningful": "Não há dados suficientes para uma representação significativa.",
+ "admin.analytics.newlyCreated": "Novos Usuários Criados",
+ "admin.analytics.postTypes": "Postagens, Arquivos e Hashtags",
+ "admin.analytics.privateGroups": "Grupos Privados",
+ "admin.analytics.publicChannels": "Canais Publicos",
+ "admin.analytics.recentActive": "Usuários Ativos Recentes",
+ "admin.analytics.textPosts": "Post com texto somente",
+ "admin.analytics.title": "Estatísticas para {title}",
+ "admin.analytics.totalFilePosts": "Posts com Arquivos",
+ "admin.analytics.totalHashtagPosts": "Posts com Hashtags",
+ "admin.analytics.totalIncomingWebhooks": "Webhooks Entrada",
+ "admin.analytics.totalOutgoingWebhooks": "Webhooks Saída",
+ "admin.analytics.totalPosts": "Total Posts",
+ "admin.analytics.totalUsers": "Total de Usuários",
+ "admin.audits.reload": "Recarregar",
+ "admin.audits.title": "Atividade de Usuário",
+ "admin.email.allowEmailSignInDescription": "Quando verdadeiro, Mattermost permite aos usuários fazer login usando o e-mail e senha.",
+ "admin.email.allowEmailSignInTitle": "Permitir Login Com E-mail: ",
+ "admin.email.allowSignupDescription": "Quando verdadeiro, Mattermost permite a criação de equipe e conta de inscrição através de e-mail e senha. Este valor deve ser falso somente quando você deseja limitar a entrada para o single-sign-on service como OAuth ou LDAP.",
+ "admin.email.allowSignupTitle": "Permitir Login com E-Mail: ",
+ "admin.email.allowUsernameSignInDescription": "Quando verdadeiro, Mattermost permite os usuários fazer login usando seu nome de usuário e senha. Esta configuração é normalmente utilizado apenas quando a verificação de e-mail está desativada.",
+ "admin.email.allowUsernameSignInTitle": "Permitir Login Com Usuário: ",
+ "admin.email.connectionSecurityNone": "Nenhum",
+ "admin.email.connectionSecurityNoneDescription": "Mattermost irá enviar usando uma conexão insegura.",
+ "admin.email.connectionSecurityStart": "STARTTLS",
+ "admin.email.connectionSecurityStartDescription": "Obtém uma conexão insegura existente e tenta atualizá-la para uma conexão segura usando TLS.",
+ "admin.email.connectionSecurityTest": "Testar Conexão",
+ "admin.email.connectionSecurityTitle": "Segurança da Conexão:",
+ "admin.email.connectionSecurityTls": "TLS (Recomendado)",
+ "admin.email.connectionSecurityTlsDescription": "Encriptar a comunicação entre Mattermost e o seu servidor de email.",
+ "admin.email.emailFail": "Conexão falhou: {error}",
+ "admin.email.emailSettings": "Configuração do e-mail",
+ "admin.email.emailSuccess": "Nenhum erro foram relatados durante o envio de um e-mail. Por favor verifique a sua caixa de entrada para se certificar.",
+ "admin.email.false": "falso",
+ "admin.email.inviteSaltDescription": "32-caracteres salt adicionados a assinatura de convites por e-mail. Aleatoriamente gerados na instalação. Click \"Re-Gerar\" para criar um novo salt.",
+ "admin.email.inviteSaltExample": "Ex \"bjlSR4QqkXFBr7TP4oDzlfZmcNuH9Yo\"",
+ "admin.email.inviteSaltTitle": "Convidar Salt:",
+ "admin.email.notificationDisplayDescription": "Mostra o nome da conta de e-mail usada quando a notificação de e-mail é enviado do Mattermost.",
+ "admin.email.notificationDisplayExample": "Ex: \"Mattermost Notificação\", \"Sistema\", \"Não-Responda\"",
+ "admin.email.notificationDisplayTitle": "Notificação Nome de Exibição:",
+ "admin.email.notificationEmailDescription": "Endereço de email mostrado na conta de email quando envia notificações do Mattermost.",
+ "admin.email.notificationEmailExample": "Ex: \"mattermost@yourcompany.com\", \"admin@yourcompany.com\"",
+ "admin.email.notificationEmailTitle": "Endereços de e-mail da notificação:",
+ "admin.email.notificationsDescription": "Normalmente definido como verdadeiro em produção. Quando verdadeiro, Mattermost tenta enviar notificações por e-mail. Os desenvolvedores podem definir este campo como falso para ignorar configuração de e-mail para o desenvolvimento mais rápido.<br /> A definição deste como verdadeiro remove a bandeira modo de visualização (requer sair e entrar novamente após a alteração).",
+ "admin.email.notificationsTitle": "Enviar Notificações por E-mail: ",
+ "admin.email.passwordSaltDescription": "32-caracteres de salt adicionado para assinar o redefinição de senha de e-mails. Gerada aleatoriamente na instalação. Clique em \"Re-Gerar\" para criar novos salt.",
+ "admin.email.passwordSaltExample": "Ex \"bjlSR4QqkXFBr7TP4oDzlfZmcNuH9Yo\"",
+ "admin.email.passwordSaltTitle": "Salt Reset Senha:",
+ "admin.email.pushDesc": "Normalmente definida como verdadeiro na produção. Quando verdadeiro, Mattermost tenta enviar notificações no iOS e Android, através do servidor de notificação.",
+ "admin.email.pushServerDesc": "Localização do serviço de notificação push Mattermost você pode configurar por trás do firewall usando https://github.com/mattermost/push-proxy. Para testar, você pode usar http://push-test.mattermost.com, que liga à amostra do app Mattermost iOS na Apple AppStore pública. Por favor, não use o serviço de teste para implantações de produção.",
+ "admin.email.pushServerEx": "Ex: \"http://push-test.mattermost.com\"",
+ "admin.email.pushServerTitle": "Servidor de Notificação:",
+ "admin.email.pushTitle": "Enviar Notificações Push: ",
+ "admin.email.regenerate": "Re-Gerar",
+ "admin.email.requireVerificationDescription": "Normalmente definido como verdadeiro em produção. Quando verdadeiro, Mattermost requer a verificação de e-mail após a criação da conta antes de permitir login. Os desenvolvedores podem definir este campo como falso para ignorar o envio de e-mails de verificação para o desenvolvimento mais rápido.",
+ "admin.email.requireVerificationTitle": "Requer Verificação de E-mail: ",
+ "admin.email.save": "Salvar",
+ "admin.email.saving": "Salvando Config...",
+ "admin.email.smtpPasswordDescription": " Obter essa credencial do administrador das configurações do servidor de email.",
+ "admin.email.smtpPasswordExample": "Ex: \"suasenha\", \"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"",
+ "admin.email.smtpPasswordTitle": "Senha SMTP:",
+ "admin.email.smtpPortDescription": "Porta do servidor de e-mail SMTP.",
+ "admin.email.smtpPortExample": "Ex: \"25\", \"465\"",
+ "admin.email.smtpPortTitle": "Porta SMTP:",
+ "admin.email.smtpServerDescription": "Localização do servidor de e-mail SMTP.",
+ "admin.email.smtpServerExample": "Ex: \"smtp.suaempresa.com\", \"email-smtp.us-east-1.amazonaws.com\"",
+ "admin.email.smtpServerTitle": "Servidor SMTP:",
+ "admin.email.smtpUsernameDescription": " Obter essa credencial do administrador das configurações do servidor de email.",
+ "admin.email.smtpUsernameExample": "Ex: \"admin@yourcompany.com\", \"AKIADTOVBGERKLCBV\"",
+ "admin.email.smtpUsernameTitle": "Usuário SMTP:",
+ "admin.email.testing": "Testando...",
+ "admin.email.true": "verdadeiro",
+ "admin.gitab.clientSecretDescription": "Obter este valor de acordo com as instruções acima para logar no GitLab.",
+ "admin.gitlab.EnableHtmlDesc": "<ol><li>Faça login na sua conta do GitLab e vá para Aplicativos -> Configurações do perfil.</li><li>Digite redirecionamento URIs \"<your-mattermost-url>/login/gitlab/complete\" (exemplo: http://localhost:8065/login/gitlab/complete) e \"<your-mattermost-url>/signup/gitlab/complete\".</li><li>Em seguida, use os campos \"Secret\" e \"Id\" do Gitlab para completar as opções abaixo.</li><li>Complete o Endpoint com as URLs abaixo. </li></ol>",
+ "admin.gitlab.authDescription": "Entre https://<your-gitlab-url>/oauth/authorize (exemplo https://example.com:3000/oauth/authorize). Tenha certeza de usar HTTP ou HTTPS na sua URL dependendo da configuração do seu servidor.",
+ "admin.gitlab.authExample": "Ex \"\"",
+ "admin.gitlab.authTitle": "Autenticação Endpoint:",
+ "admin.gitlab.clientIdDescription": "Obter este valor de acordo com as instruções acima para logar no GitLab",
+ "admin.gitlab.clientIdExample": "Ex \"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"",
+ "admin.gitlab.clientIdTitle": "Id:",
+ "admin.gitlab.clientSecretExample": "Ex \"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"",
+ "admin.gitlab.clientSecretTitle": "Segredo:",
+ "admin.gitlab.enableDescription": "Quando verdadeiro, Mattermost permite a criação de equipes e inscrições de conta usando GitLab OAuth.",
+ "admin.gitlab.enableTitle": "Permitir Inscrição Com GitLab: ",
+ "admin.gitlab.false": "falso",
+ "admin.gitlab.save": "Salvar",
+ "admin.gitlab.saving": "Salvando Config...",
+ "admin.gitlab.settingsTitle": "Configurações GitLab",
+ "admin.gitlab.tokenDescription": "Digite https://<your-gitlab-url>/oauth/token. Certifique-se de usar HTTP ou HTTPS na sua URL dependendo da configuração de seu servidor.",
+ "admin.gitlab.tokenExample": "Ex \"\"",
+ "admin.gitlab.tokenTitle": "Token Endpoint:",
+ "admin.gitlab.true": "verdadeiro",
+ "admin.gitlab.userDescription": "Digite https://<your-gitlab-url>/api/v3/user. Certifique-se de usar HTTP ou HTTPS na sua URL dependendo da configuração de seu servidor.",
+ "admin.gitlab.userExample": "Ex \"\"",
+ "admin.gitlab.userTitle": "API Usuário Endpoint:",
+ "admin.image.amazonS3BucketDescription": "Nome selecionado para o seu S3 bucket in AWS.",
+ "admin.image.amazonS3BucketExample": "Ex \"mattermost-media\"",
+ "admin.image.amazonS3BucketTitle": "Amazon S3 Bucket:",
+ "admin.image.amazonS3IdDescription": "Obter essa credencial do seu administrador Amazon EC2.",
+ "admin.image.amazonS3IdExample": "Ex \"AKIADTOVBGERKLCBV\"",
+ "admin.image.amazonS3IdTitle": "Amazon S3 Access Key Id:",
+ "admin.image.amazonS3RegionDescription": "Região AWS selecionada para a criação do seu S3 bucket.",
+ "admin.image.amazonS3RegionExample": "Ex \"us-east-1\"",
+ "admin.image.amazonS3RegionTitle": "Amazon S3 Region:",
+ "admin.image.amazonS3SecretDescription": "Obter essa credencial do seu administrador Amazon EC2.",
+ "admin.image.amazonS3SecretExample": "Ex \"jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY\"",
+ "admin.image.amazonS3SecretTitle": "Amazon S3 Secret Access Key:",
+ "admin.image.false": "falso",
+ "admin.image.fileSettings": "Configurações do arquivo",
+ "admin.image.localDescription": "Diretório o qual os arquivos de imagens são gravados, Se estiver em branco, será usado ./data/.",
+ "admin.image.localExample": "Ex \"./data/\"",
+ "admin.image.localTitle": "Localização do Diretório Local:",
+ "admin.image.previewHeightDescription": "Altura máxima da imagem de pré-visualização (\"0\": Define como tamanho automático). Atualizando este valor muda como as imagens de pré-visualização serão exibidas no futuro, mas não altera as imagens já criadas.",
+ "admin.image.previewHeightExample": "Ex \"0\"",
+ "admin.image.previewHeightTitle": "Visualização Altura:",
+ "admin.image.previewWidthDescription": "Largura máxima da imagem de pré-visualização. Atualizando este valor muda como as imagens de pré-visualização serão mostradas no futuro, mas não altera as imagens já criadas.",
+ "admin.image.previewWidthExample": "Ex \"1024\"",
+ "admin.image.previewWidthTitle": "Largura da Visualização:",
+ "admin.image.profileHeightDescription": "Altura da imagem do perfil.",
+ "admin.image.profileHeightExample": "Ex \"0\"",
+ "admin.image.profileHeightTitle": "Altura Perfil:",
+ "admin.image.profileWidthDescription": "Largura do imagem do perfil.",
+ "admin.image.profileWidthExample": "Ex \"1024\"",
+ "admin.image.profileWidthTitle": "Perfil Largura:",
+ "admin.image.publicLinkDescription": "32-caracteres salt adicionados a assinatura de links de imagens publicas. Aleatoriamente gerados na instalação. Click \"Re-Gerar\" para criar um novo salt.",
+ "admin.image.publicLinkExample": "Ex \"gxHVDcKUyP2y1eiyW8S8na1UYQAfq6J6\"",
+ "admin.image.publicLinkTitle": "Link Público Salt:",
+ "admin.image.regenerate": "Re-Gerar",
+ "admin.image.save": "Salvar",
+ "admin.image.saving": "Salvando Configurações...",
+ "admin.image.shareDescription": "Permitir aos usuários compartilhar links públicos para arquivos e imagens.",
+ "admin.image.shareTitle": "Compartilhar Link Arquivo: ",
+ "admin.image.storeAmazonS3": "Amazon S3",
+ "admin.image.storeLocal": "Sistema de Arquivos Local",
+ "admin.image.storeTitle": "Armazenar Arquivos Em:",
+ "admin.image.thumbHeightDescription": "Altura dos thumbnails gerados das imagens enviadas. Atualizando este valor muda como o thumbnail das imagens serão geradas no futuro, mas não muda as imagens já criadas no passado.",
+ "admin.image.thumbHeightExample": "Ex \"100\"",
+ "admin.image.thumbHeightTitle": "Altura do Thumbnail:",
+ "admin.image.thumbWidthDescription": "Largura dos thumbnails gerados das imagens enviadas. Atualizando este valor muda como o thumbnail das imagens serão geradas no futuro, mas não muda as imagens já criadas no passado.",
+ "admin.image.thumbWidthExample": "Ex \"120\"",
+ "admin.image.thumbWidthTitle": "Largura do Thumbnail:",
+ "admin.image.true": "verdadeiro",
+ "admin.ldap.bannerDesc": "Se um atributo de usuário de mudar no servidor LDAP, ele será atualizado na próxima vez que o usuário inserir suas credenciais para iniciar sessão no Mattermost. Isso inclui se um usuário estiver inativo ou removido de um servidor LDAP. Sincronização com servidores LDAP está prevista para um lançamento futuro.",
+ "admin.ldap.bannerHeading": "Nota:",
+ "admin.ldap.baseDesc": "Base DN é o nome distinto do local onde Mattermost deve começar sua busca para os usuários na árvore LDAP.",
+ "admin.ldap.baseEx": "Ex \"dc=mydomain,dc=com\"",
+ "admin.ldap.baseTitle": "BaseDN:",
+ "admin.ldap.bindPwdDesc": "Senha do usuário fornecido em \"Bind Username\".",
+ "admin.ldap.bindPwdTitle": "Vincular Senha:",
+ "admin.ldap.bindUserDesc": "O nome de usuário usado para realizar a pesquisa LDAP. Isso deve ser tipicamente uma conta criada especificamente para uso do Mattermost. Deve ter acesso limitado a ler a parte da árvore LDAP especificado no campo BaseDN.",
+ "admin.ldap.bindUserTitle": "Bind Username:",
+ "admin.ldap.emailAttrDesc": "O atributo no servidor LDAP que será usado para preencher os endereços de e-mail de usuários no Mattermost.",
+ "admin.ldap.emailAttrEx": "Ex \"mail\"",
+ "admin.ldap.emailAttrTitle": "Atributo de E-mail:",
+ "admin.ldap.enableDesc": "Quando verdadeiro, Mattermost permite login utilizando LDAP",
+ "admin.ldap.enableTitle": "Ativar Login With LDAP:",
+ "admin.ldap.false": "falso",
+ "admin.ldap.firstnameAttrDesc": "O atributo no servidor LDAP será usado para preencher o primeiro nome dos usuários no Mattermost.",
+ "admin.ldap.firstnameAttrEx": "Ex \"givenName\"",
+ "admin.ldap.firstnameAttrTitle": "Primeiro Nome do Atributo",
+ "admin.ldap.idAttrDesc": "O atributo no servidor LDAP que vai ser utilizado como um identificador único no Mattermost. Ele deve ser um atributo LDAP com um valor que não muda, como nome de usuário ou uid. Se atributo Id do usuário mudar, isto irá criar uma nova conta Mattermost não associada com a sua antiga. Este é o valor utilizado para efetuar login no Mattermost no campo \"Nome de usuário LDAP\" na página de login. Normalmente, este atributo é o mesmo que o campo “Atributo Nome de Usuário” acima. Se sua equipe usa tipicamente de domínio\\\\nome de usuário para fazer login em outros serviços com LDAP, você pode optar por colocar domínio\\\\nome de usuário neste campo para manter a consistência entre sites.",
+ "admin.ldap.idAttrEx": "Ex \"sAMAccountName\"",
+ "admin.ldap.idAttrTitle": "Atributo Id: ",
+ "admin.ldap.lastnameAttrDesc": "O atributo no servidor LDAP será usado para preencher o último nome dos usuários no Mattermost.",
+ "admin.ldap.lastnameAttrEx": "Ex \"sn\"",
+ "admin.ldap.lastnameAttrTitle": "Atributo Último Nome:",
+ "admin.ldap.noLicense": "<h4 class=\"banner__heading\">Nota:</h4><p>LDAP é um recurso empresarial. Sua licença atual não suporta LDAP. Clique <a href=\"http://mattermost.com\" target=\"_blank\">aqui</a> para informações e preços da licença empresarial.</p>",
+ "admin.ldap.portDesc": "A porta que o Mattermost irá usar para conectar ao servidor LDAP. Padrão é 389.",
+ "admin.ldap.portEx": "Ex \"389\"",
+ "admin.ldap.portTitle": "Porta LDAP:",
+ "admin.ldap.queryDesc": "O valor de tempo limite para consultas para o servidor LDAP. Aumentar se você está recebendo erros de tempo limite causados por um servidor LDAP lento.",
+ "admin.ldap.queryEx": "Ex \"60\"",
+ "admin.ldap.queryTitle": "Tempo limite de Consulta (segundos):",
+ "admin.ldap.save": "Salvar",
+ "admin.ldap.saving": "Salvando Config...",
+ "admin.ldap.serverDesc": "O domínio ou o endereço IP do servidor LDAP.",
+ "admin.ldap.serverEx": "Ex \"10.0.0.23\"",
+ "admin.ldap.serverTitle": "Servidor LDAP:",
+ "admin.ldap.title": "Configurações LDAP",
+ "admin.ldap.true": "verdadeiro",
+ "admin.ldap.uernameAttrDesc": "O atributo no servidor LDAP que será usado para preencher o campo nome de usuário no Mattermost. Este pode ser o mesmo que o Atributo ID.",
+ "admin.ldap.usernameAttrEx": "Ex \"sAMAccountName\"",
+ "admin.ldap.usernameAttrTitle": "Atributo do Usuário:",
+ "admin.licence.keyMigration": "Se você estiver migrando seu servidor você pode precisar remover sua chave da licença deste servidor a pedido para instala-la em um novo servidor. Para iniciar,<a href=\"http://mattermost.com\" target=\"_blank\">desativar todos os recursos Enterprise Edition deste servidor</a>.Isto irá habilitar para remover a chave da licença e fazer downgrade deste servidor Enterprise Edition para Team Edition.",
+ "admin.license.edition": "Edição: ",
+ "admin.license.enterpriseEdition": "Mattermost Enterprise Edition. Desenvolvido para escala empresarial de comunicação.",
+ "admin.license.enterpriseType": "<div><p>Esta versão compilada da plataforma Mattermost é fornecida sob a <a href=\"http://mattermost.com\" target=\"_blank\">licença comercial</a>para Mattermost, Inc. com base em seu nível de subscrição e está sujeito a <a href=\"{terms}\" target=\"_blank\">Termos de Serviço.</a></p><p>Os detalhes de sua assinatura, são como segue:</p>Nome: {name}<br />Nome da Empresa ou organização: {company}<br/>Número de usuários: {users}<br/>Licença emitida: {issued}<br/>Data de Início da licença: {start}<br/>Data de expiração da licença: {expires}<br/>LDAP: {ldap}<br/></div>",
+ "admin.license.key": "Chave da Licença: ",
+ "admin.license.keyRemove": "Remover a Licença Enterprise e fazer Downgrade do Servidor",
+ "admin.license.removing": "Removendo a Licença...",
+ "admin.license.teamEdition": "Mattermost Team Edition. Desenvolvido para equipes de 5 a 50 usuários.",
+ "admin.license.teamType": "<span><p>Esta versão compilada da plataforma Mattermost é oferecido sob uma licença MIT.</p><p>Ver MIT-COMPILED-LICENSE.txt no raiz do diretório de instalação para obter detalhes. Ver NOTICES.txt para obter informações sobre o software open source usados neste sistema.</p></span>",
+ "admin.license.title": "Edição e Licença",
+ "admin.license.type": "Licença: ",
+ "admin.license.upload": "Enviar",
+ "admin.license.uploadDesc": "Enviar uma chave da licença para Mattermost Enterprise Edition para fazer upgrade deste servidor. <a href=\"http://mattermost.com\" target=\"_blank\">Visite-nos online</a> para saber mais sobre os beneficios da Enterprise Edition ou para comprar uma chave.",
+ "admin.license.uploading": "Enviando Licença...",
+ "admin.log.consoleDescription": "Normalmente definido como falso em produção. Os desenvolvedores podem definir este campo como verdadeiro para mensagens de log de saída no console baseado na opção de nível de console. Se verdadeiro, o servidor escreve mensagens para o fluxo de saída padrão (stdout).",
+ "admin.log.consoleTitle": "Log Do Console: ",
+ "admin.log.false": "falso",
+ "admin.log.fileDescription": "Normalmente definido como verdadeiro em produção. Quando verdadeiro, arquivos de log são gravados no arquivo de log especificado no campo de localização abaixo.",
+ "admin.log.fileLevelDescription": "Esta configuração determina o nível de detalhe que são gravados no log de eventos no console. ERROR: Saídas somente mensagens de erro. INFO: Saídas de mensagens de erro e informações em torno de inicialização. DEBUG: Impressões de alto detalhe para desenvolvedores que trabalham na depuração de problemas.",
+ "admin.log.fileLevelTitle": "Nível do Arquivo de Log:",
+ "admin.log.fileTitle": "Log para o Arquivo: ",
+ "admin.log.formatDateLong": "Data (2006/01/02)",
+ "admin.log.formatDateShort": "Data (01/02/06)",
+ "admin.log.formatDescription": "Formato da mensagem de saída do log. Se branco será ajustador para \"[%D %T] [%L] %M\", onde:",
+ "admin.log.formatLevel": "Nível (DEBG, INFO, EROR)",
+ "admin.log.formatMessage": "Mensagem",
+ "admin.log.formatPlaceholder": "Entre seu formato de arquivo",
+ "admin.log.formatSource": "Origem",
+ "admin.log.formatTime": "Hora (15:04:05 MST)",
+ "admin.log.formatTitle": "Formato do Arquivo:",
+ "admin.log.levelDescription": "Esta configuração determina o nível de detalhe que são gravados no log de eventos no console. ERROR: Saídas somente mensagens de erro. INFO: Saídas de mensagens de erro e informações em torno de inicialização. DEBUG: Impressões de alto detalhe para desenvolvedores que trabalham na depuração de problemas.",
+ "admin.log.levelTitle": "Nível de Log Console:",
+ "admin.log.locationDescription": "Arquivo para o qual os arquivos de log são escritos. Se estiver em branco, será definido para ./logs/mattermost, que grava logs em mattermost.log. Rotação de log está habilitada a cada 10.000 linhas de informações de log gravada para novos arquivos armazenados no mesmo diretório, por exemplo mattermost.2015-09-23.001, mattermost.2015-09-23.002, e assim por diante.",
+ "admin.log.locationPlaceholder": "Entre a localização do seu arquivo",
+ "admin.log.locationTitle": "Local do Arquivo:",
+ "admin.log.logSettings": "Configurações de Log",
+ "admin.log.save": "Salvar",
+ "admin.log.saving": "Salvando Config...",
+ "admin.log.true": "verdadeiro",
+ "admin.logs.reload": "Recarregar",
+ "admin.logs.title": "Log do Servidor",
+ "admin.nav.help": "Ajuda",
+ "admin.nav.logout": "Sair",
+ "admin.nav.report": "Relatar um Problema",
+ "admin.nav.switch": "Mudar para {display_name}",
+ "admin.privacy.false": "falso",
+ "admin.privacy.save": "Salvar",
+ "admin.privacy.saving": "Salvando Config...",
+ "admin.privacy.showEmailDescription": "Quando falso, esconde endereço de e-mail dos outros usuários na interface do usuário, incluindo donos da equipe e administradores da equipe. Usado quando o sistema está configurado para gerenciar equipes onde alguns usuários optam por manter suas informações de contato privado.",
+ "admin.privacy.showEmailTitle": "Mostrar Endereços de Email: ",
+ "admin.privacy.showFullNameDescription": "Quando falso, oculta o nome completo dos usuários dos outros usuários, incluindo donos de equipe e administradores de equipe. Nome de usuário é mostrado no lugar do nome completo.",
+ "admin.privacy.showFullNameTitle": "Mostrar Nome Completo: ",
+ "admin.privacy.title": "Configurações De Privacidade",
+ "admin.privacy.true": "verdadeiro",
+ "admin.rate.enableLimiterDescription": "Quando verdadeiro, as APIs são estranguladas para as taxas especificadas abaixo.",
+ "admin.rate.enableLimiterTitle": "Ativar Rate Limiter: ",
+ "admin.rate.false": "falso",
+ "admin.rate.httpHeaderDescription": "Quando preenchido, variam limitação de taxa pelo compo cabeçalho HTTP especificado (ex. quando configurado NGINX ajustado para \"X-Real-IP\", quando configurado AmazonELB ajustado para \"X-Forwarded-For\").",
+ "admin.rate.httpHeaderExample": "Ex \"X-Real-IP\", \"X-Forwarded-For\"",
+ "admin.rate.httpHeaderTitle": "Varia Pelo Cabeçalho HTTP:",
+ "admin.rate.memoryDescription": "Número máximo de sessões de usuários conectados ao sistema conforme determinado nas configurações abaixo \"Varia Por Endereço Remoto\" e \"Varia Pelo Cabeçalho\".",
+ "admin.rate.memoryExample": "Ex \"10000\"",
+ "admin.rate.memoryTitle": "Tamanho da Memória de Armazenamento:",
+ "admin.rate.noteDescription": "Alterando as propriedades nesta seção irá exigir que o servidor seja reiniciado para que tenha efeito.",
+ "admin.rate.noteTitle": "Nota:",
+ "admin.rate.queriesDescription": "Estrangula API neste número de solicitações por segundo.",
+ "admin.rate.queriesExample": "Ex \"10\"",
+ "admin.rate.queriesTitle": "Número De Consultas Por Segundo:",
+ "admin.rate.remoteDescription": "Quando verdadeiro, taxa limite de acesso de API por endereço de IP.",
+ "admin.rate.remoteTitle": "Varia Por Endereço Remoto: ",
+ "admin.rate.save": "Salvar",
+ "admin.rate.saving": "Salvando Config...",
+ "admin.rate.title": "Configurações Rate Limit",
+ "admin.rate.true": "verdadeiro",
+ "admin.reset_password.close": "Fechar",
+ "admin.reset_password.newPassword": "Nova Senha",
+ "admin.reset_password.select": "Selecionar",
+ "admin.reset_password.submit": "Por favor, insira pelo menos {chars} caracteres.",
+ "admin.reset_password.title": "Resetar Senha",
+ "admin.select_team.close": "Fechar",
+ "admin.select_team.select": "Selecionar",
+ "admin.select_team.selectTeam": "Selecione Equipe",
+ "admin.service.attemptDescription": "Tentativas de login permitidas antes que do usuário ser bloqueado e necessário redefinir a senha por e-mail.",
+ "admin.service.attemptExample": "Ex \"10\"",
+ "admin.service.attemptTitle": "Máxima Tentativas de Login:",
+ "admin.service.cmdsDesc": "Quando verdadeiro, comandos slash criados por usuários serão permitidos.",
+ "admin.service.cmdsTitle": "Ativar Comandos Slash: ",
+ "admin.service.developerDesc": "(Opção dos desenvolvedores) Quando verdadeira, a informação extra em torno dos erros será exibida na UI.",
+ "admin.service.developerTitle": "Ativar o Modo Desenvolvedor: ",
+ "admin.service.false": "falso",
+ "admin.service.googleDescription": "Defina esta chave para permitir a incorporação de pré-visualizações de vídeo do YouTube com base em hiperlinks que aparecem nas mensagens ou comentários. Instruções para obter uma chave disponível em <a href=\"https://www.youtube.com/watch?v=Im69kzhpR3I\" target=\"_blank\">https://www.youtube.com/watch?v=Im69kzhpR3I</a>. Deixando o campo em branco desabilita a geração automática de pré-visualizações de vídeo do YouTube a partir de links.",
+ "admin.service.googleExample": "Ex \"7rAh6iwQCkV4cA1Gsg3fgGOXJAQ43QV\"",
+ "admin.service.googleTitle": "Chave do Google Developer:",
+ "admin.service.iconDescription": "Quando verdadeiro, será permitido webhooks e comandos slash mudar o icone com que eles postam. Note, combinado com permitir substituição de usuário, isto pode permitir que o usuário faça ataque phishing.",
+ "admin.service.iconTitle": "Ativar substituição do Ícone de Webhooks e Comandos Slash: ",
+ "admin.service.insecureTlsDesc": "Quando verdadeiro, quaisquer pedidos de HTTPS de saída vão aceitar certificados não verificados ou auto-assinados. Por exemplo, webhooks de saída para um servidor com um certificado TLS auto-assinado, usando qualquer domínio, serão permitidos. Note-se que isso faz com que essas conexões sejam suscetíveis a ataques man-in-the-middle.",
+ "admin.service.insecureTlsTitle": "Ativar Conexões de Saída Inseguras: ",
+ "admin.service.integrationAdmin": "Ativar Integração para Admin Somente: ",
+ "admin.service.integrationAdminDesc": "Quando verdadeiro, integrações de usuário somente poderão ser criadas pelos admins.",
+ "admin.service.listenAddress": "Endereço à Escutar:",
+ "admin.service.listenDescription": "O endereço para o qual ligar e ouvir. Inserir \":8065\" irá ligar para todas as interfaces, ou você pode escolher um como \"127.0.0.1:8065\". Essa mudança irá exigir uma reinicialização do servidor antes de ter efeito.",
+ "admin.service.listenExample": "Ex \":8065\"",
+ "admin.service.mobileSessionDays": "Duração da sessão para o dispositivo móvel em Dias:",
+ "admin.service.mobileSessionDaysDesc": "A sessão móvel irá expirar depois do número de dias especificado e será requerido um usuário para logar novamente.",
+ "admin.service.outWebhooksDesc": "Quando verdadeiro, webhooks de saída serão permitidos.",
+ "admin.service.outWebhooksTitle": "Ativar Webhooks Saída: ",
+ "admin.service.overrideDescription": "Quando verdadeiro, será permitido webhooks e comandos slash mudar o icone com que eles postam. Note, combinado com permitir substituição de usuário, isto pode permitir que o usuário faça ataque phishing.",
+ "admin.service.overrideTitle": "Ativar Sobrescrever os Nomes de usuário a partir de Webhooks e Comandos Slash: ",
+ "admin.service.save": "Salvar",
+ "admin.service.saving": "Salvando Config...",
+ "admin.service.securityDesc": "Quando verdadeiro, os Administradores de Sistema são notificados por e-mail se uma relevante correção de segurança foi anunciado nos últimos 12 horas. Requer o e-mail para ser ativado.",
+ "admin.service.securityTitle": "Ativar Alertas de Segurança: ",
+ "admin.service.segmentDescription": "Para usuários usando um serviço SaaS, inscrever-se para uma chave no Segment.com para acompanhar métricas.",
+ "admin.service.segmentExample": "Ex \"g3fgGOXJAQ43QV7rAh6iwQCkV4cA1Gs\"",
+ "admin.service.segmentTitle": "Desenvolvedor Segmento Chave:",
+ "admin.service.sessionCache": "Cache da Sessão em Minutos:",
+ "admin.service.sessionCacheDesc": "O número de minutos para o cache de uma sessão na memória.",
+ "admin.service.sessionDaysEx": "Ex \"30\"",
+ "admin.service.ssoSessionDays": "Duração da Sessão para SSO em Dias:",
+ "admin.service.ssoSessionDaysDesc": "A sessão SSO irá expirar depois do número de dias especificado e será requerido um usuário para logar novamente.",
+ "admin.service.testingDescription": "(Opção Desenvolvedor) Quando verdadeiro, comando slash /loadtest está habilitado para carregar contas e testar e dados. Mudar isso exigirá um reinício do servidor antes que tenha efeito.",
+ "admin.service.testingTitle": "Ativar Teste: ",
+ "admin.service.title": "Configurações do Serviço",
+ "admin.service.true": "verdadeiro",
+ "admin.service.webSessionDays": "Duração da Sessão em Dias para Web:",
+ "admin.service.webSessionDaysDesc": "A sessão web irá expirar depois do número de dias especificado e será requerido um usuário para logar novamente.",
+ "admin.service.webhooksDescription": "Quando verdadeiro, será permitido webhooks entrada. Para ajudar a combater os ataques de phishing, todos os posts de webhooks serão marcados por uma etiqueta BOT.",
+ "admin.service.webhooksTitle": "Ativar Webhooks Entrada: ",
+ "admin.sidebar.addTeamSidebar": "Adicionar equipe do menu lateral",
+ "admin.sidebar.audits": "Conformidade e Auditoria",
+ "admin.sidebar.email": "Configuração do e-mail",
+ "admin.sidebar.file": "Configurações do arquivo",
+ "admin.sidebar.gitlab": "Configurações GitLab",
+ "admin.sidebar.ldap": "Configurações LDAP",
+ "admin.sidebar.license": "Edição e Licença",
+ "admin.sidebar.loading": "Carregando",
+ "admin.sidebar.log": "Configurações de Log",
+ "admin.sidebar.logs": "Logs",
+ "admin.sidebar.other": "OUTROS",
+ "admin.sidebar.privacy": "Configurações De Privacidade",
+ "admin.sidebar.rate_limit": "Configurações Rate Limit",
+ "admin.sidebar.reports": "RELATÓRIOS DO SITE",
+ "admin.sidebar.rmTeamSidebar": "Remover equipe do menu lateral",
+ "admin.sidebar.service": "Configurações do Serviço",
+ "admin.sidebar.settings": "CONFIGURAÇÕES",
+ "admin.sidebar.sql": "Configurações SQL",
+ "admin.sidebar.statistics": "- Estátisticas",
+ "admin.sidebar.support": "Configurações jurídico e apoio",
+ "admin.sidebar.team": "Configurações De Equipe",
+ "admin.sidebar.teams": "EQUIPES ({count})",
+ "admin.sidebar.users": "- Usuários",
+ "admin.sidebar.view_statistics": "Ver Estatísticas",
+ "admin.sidebarHeader.systemConsole": "Console do Sistema",
+ "admin.sql.dataSource": "Fonte de Dados:",
+ "admin.sql.driverName": "Nome do Driver:",
+ "admin.sql.false": "falso",
+ "admin.sql.keyDescription": "32-caracteres de salt disponível para encriptar e desencriptar campos no banco de dados.",
+ "admin.sql.keyExample": "Ex \"gxHVDcKUyP2y1eiyW8S8na1UYQAfq6J6\"",
+ "admin.sql.keyTitle": "At Rest Encrypt Key:",
+ "admin.sql.maxConnectionsDescription": "Número máximo de conexões ociosas abertas para o banco de dados.",
+ "admin.sql.maxConnectionsExample": "Ex \"10\"",
+ "admin.sql.maxConnectionsTitle": "Máximo de Conexões Inativas:",
+ "admin.sql.maxOpenDescription": "Número máximo de conexões abertas para o banco de dados.",
+ "admin.sql.maxOpenExample": "Ex \"10\"",
+ "admin.sql.maxOpenTitle": "Máximo de Conexões Abertas:",
+ "admin.sql.noteDescription": "Alterando as propriedades nesta seção irá exigir que o servidor seja reiniciado para que tenha efeito.",
+ "admin.sql.noteTitle": "Nota:",
+ "admin.sql.regenerate": "Re-Gerar",
+ "admin.sql.replicas": "Replicas Fonte de Dados:",
+ "admin.sql.save": "Salvar",
+ "admin.sql.saving": "Salvando Configurações...",
+ "admin.sql.title": "Configurações do SQL",
+ "admin.sql.traceDescription": "(Modo Desenvolvedor) Quando verdadeiro, execução de instruções SQL será gravado no log.",
+ "admin.sql.traceTitle": "Rastreamento: ",
+ "admin.sql.true": "verdadeiro",
+ "admin.sql.warning": "Aviso: re-gerar este salt pode causar algumas colunas no banco de dados para retornar resultados vazios.",
+ "admin.support.aboutDesc": "Link para página Sobre para mais informações sobre a implantação do Mattermost, por exemplo a sua finalidade e público dentro de sua organização. Padrão página de informação Mattermost.",
+ "admin.support.aboutTitle": "Sobre link:",
+ "admin.support.emailHelp": "Email mostrado durante o tutorial para o usuário pedir suporte.",
+ "admin.support.emailTitle": "E-mail de suporte:",
+ "admin.support.helpDesc": "Link para documentação de ajuda para o site da equipe no menu principal. Normalmente não é alterado ao menos se sua empresa escolha criar uma documentação customizada.",
+ "admin.support.helpTitle": "Link de ajuda:",
+ "admin.support.privacyDesc": "Link para Política de Privacidade para os usuários no desktop ou móvel. Deixando este espaço em branco irá esconder a opção de exibir um aviso.",
+ "admin.support.privacyTitle": "Link da Política de Privacidade:",
+ "admin.support.problemDesc": "Link para a documentação de ajuda do site no menu principal. Por padrão este aponta para um fórum peer-to-peer de solução de problemas onde os usuários podem pesquisar, encontrar e pedir ajuda com problemas técnicos.",
+ "admin.support.problemTitle": "Link para Reportar um Problema:",
+ "admin.support.save": "Salvar",
+ "admin.support.saving": "Salvando Config...",
+ "admin.support.termsDesc": "Link para os Termos de Serviço para os usuários no desktop ou móvel. Deixando este espaço em branco irá esconder a opção de exibir um aviso.",
+ "admin.support.termsTitle": "Link Termos do Serviço:",
+ "admin.support.title": "Configurações jurídico e apoio",
+ "admin.system_analytics.activeUsers": "Usuários Ativos com Postagens",
+ "admin.system_analytics.title": "o Sistema",
+ "admin.system_analytics.totalPosts": "Total Posts",
+ "admin.team.dirDesc": "Quando verdadeiro, as equipes que estão configuradas para mostrar o diretório de equipe irá mostrar na página principal, em lugar de criar uma nova equipe.",
+ "admin.team.dirTitle": "Ativar Diretório de Equipe: ",
+ "admin.team.false": "falso",
+ "admin.team.maxUsersDescription": "Número máximo total de usuários por equipe, incluindo ambos usuários ativos e inativos.",
+ "admin.team.maxUsersExample": "Ex \"25\"",
+ "admin.team.maxUsersTitle": "Máximo Usuários Por Equipe:",
+ "admin.team.restrictDescription": "Equipes e contas de usuário só pode ser criada a partir de um domínio específico (ex. \"mattermost.org\") ou lista separada por vírgulas de domínios (ex. \"corp.mattermost.com, mattermost.org\").",
+ "admin.team.restrictExample": "Ex \"corp.mattermost.com, mattermost.org\"",
+ "admin.team.restrictNameDesc": "Quando verdadeiro, você não pode criar um nome de equipe com as palavras reservadas www, admin, support, test, channel, etc",
+ "admin.team.restrictNameTitle": "Restringir Nomes de Equipe: ",
+ "admin.team.restrictTitle": "Restringir Criação Para os Domínios:",
+ "admin.team.save": "Salvar",
+ "admin.team.saving": "Salvando Config...",
+ "admin.team.siteNameDescription": "Nome do serviço mostrado na tela de início da sessão e na UI.",
+ "admin.team.siteNameExample": "Ex \"Mattermost\"",
+ "admin.team.siteNameTitle": "Nome do Site:",
+ "admin.team.teamCreationDescription": "Quando falso, a capacidade de criar equipes é desativada. O botão criar equipe apresenta erro quando pressionado.",
+ "admin.team.teamCreationTitle": "Habilitar a Criação de Equipes: ",
+ "admin.team.title": "Configurações da Equipe",
+ "admin.team.true": "verdadeiro",
+ "admin.team.userCreationDescription": "Quando falso, a capacidade de criar contas é desativada. O botão criar conta apresenta erro quando pressionado.",
+ "admin.team.userCreationTitle": "Permitir A Criação De Usuário: ",
+ "admin.team_analytics.activeUsers": "Usuários Ativos Com Postagens",
+ "admin.team_analytics.totalPosts": "Total Posts",
+ "admin.userList.title": "Usuários para {team}",
+ "admin.userList.title2": "Usuários para {team} ({count})",
+ "admin.user_item.confirmDemoteDescription": "Se você rebaixar você mesmo de Admin de Sistema e não exista outro usuário como privilegios de Admin de Sistema, você precisa-rá re-inscrever um Admin de Sistema acessando o servidor Mattermost através do terminal e executando o seguinte comando.",
+ "admin.user_item.confirmDemoteRoleTitle": "Confirmar rebaixamento para Admin do Sistema",
+ "admin.user_item.confirmDemotion": "Confirmar Rebaixamento",
+ "admin.user_item.confirmDemotionCmd": "platform -assign_role -team_name=\"yourteam\" -email=\"name@yourcompany.com\" -role=\"system_admin\"",
+ "admin.user_item.inactive": "Inativo",
+ "admin.user_item.makeActive": "Tornar Ativo",
+ "admin.user_item.makeInactive": "Tornar Inativo",
+ "admin.user_item.makeMember": "Tornar um Membro",
+ "admin.user_item.makeSysAdmin": "Tornar Admin do Sistema",
+ "admin.user_item.makeTeamAdmin": "Tornar Admin de Equipe",
+ "admin.user_item.member": "Membro",
+ "admin.user_item.resetPwd": "Resetar Senha",
+ "admin.user_item.sysAdmin": "Admin do Sistema",
+ "admin.user_item.teamAdmin": "Admin Equipe",
+ "audit_table.accountActive": "Conta inativada",
+ "audit_table.accountInactive": "Conta inativada",
+ "audit_table.action": "Ação",
+ "audit_table.attemptedAllowOAuthAccess": "Tentativa de permitir um novo acesso ao serviço OAuth",
+ "audit_table.attemptedLicenseAdd": "Tentativa de adicionar uma nova licença",
+ "audit_table.attemptedLogin": "Tentou login",
+ "audit_table.attemptedOAuthToken": "Tentativa de obter um token de acesso OAuth",
+ "audit_table.attemptedPassword": "Tentativa de mudar a senha",
+ "audit_table.attemptedRegisterApp": "Tentativa de registrar um novo Aplicativo OAuth com ID {id}",
+ "audit_table.attemptedReset": "Tentativa de resetar a senha",
+ "audit_table.attemptedWebhookCreate": "Tentativa de criar um webhook",
+ "audit_table.attemptedWebhookDelete": "Tentativa de deletar um webhook",
+ "audit_table.by": " por {username}",
+ "audit_table.byAdmin": " por um admin",
+ "audit_table.channelCreated": "Criado o {channelName} canal/grupo",
+ "audit_table.channelDeleted": "Excluído o canal/grupo com a URL {url}",
+ "audit_table.establishedDM": "Estabelecido uma mensagem direta para o canal com {username}",
+ "audit_table.failedExpiredLicenseAdd": "Falha ao adicionar uma nova licença uma vez que expirou ou ainda não foi iniciado",
+ "audit_table.failedInvalidLicenseAdd": "Falha ao adicionar um licença inválida",
+ "audit_table.failedLogin": "FALHA na tentativa de login",
+ "audit_table.failedOAuthAccess": "Falha ao permitir um novo acesso ao serviço OAuth - a URI de redirecionamento não coincide com o retorno de chamada registrado anteriormente",
+ "audit_table.failedPassword": "Falha ao alterar a senha - tentado atualizar a senha do usuário que estava conectado através do oauth",
+ "audit_table.failedWebhookCreate": "Falha ao criar uma webhook - sem permissão do canal",
+ "audit_table.failedWebhookDelete": "Falha ao deletar um webhook - condições inapropriadas",
+ "audit_table.headerUpdated": "Atualizado o {channelName} canal/cabeçalho de grupo",
+ "audit_table.ip": "Endereço de IP",
+ "audit_table.licenseRemoved": "Licença removida com sucesso",
+ "audit_table.loginAttempt": " (Tentativa de login)",
+ "audit_table.loginFailure": " (Falha de login)",
+ "audit_table.logout": "Logado fora da sua conta",
+ "audit_table.member": "membro",
+ "audit_table.nameUpdated": "Atualizado nome canal/grupo {channelName}",
+ "audit_table.oauthTokenFailed": "Falha ao obter um token de acesso OAuth - {token}",
+ "audit_table.revokedAll": "Revogada todas as sessões atuais para a equipe",
+ "audit_table.sentEmail": "Enviado um email para {email} para resetar sua senha",
+ "audit_table.session": "ID da Sessão",
+ "audit_table.sessionRevoked": "A sessão com id {sessionId} foi revogada",
+ "audit_table.successfullLicenseAdd": "Nova licença adicionada com sucesso",
+ "audit_table.successfullLogin": "Logado com sucesso",
+ "audit_table.successfullOAuthAccess": "Dado novo acesso ao serviço OAuth com sucesso",
+ "audit_table.successfullOAuthToken": "Adicionado um novo serviço OAuth com sucesso",
+ "audit_table.successfullPassword": "Senha alterada com sucesso",
+ "audit_table.successfullReset": "Senha resetada com sucesso",
+ "audit_table.successfullWebhookCreate": "Criado com sucesso um webhook",
+ "audit_table.successfullWebhookDelete": "Criado com sucesso um webhook",
+ "audit_table.timestamp": "Timestamp",
+ "audit_table.updateGeneral": "Atualizado as configurações gerais da sua conta",
+ "audit_table.updateGlobalNotifications": "Atualizado suas definições globais de notificação",
+ "audit_table.updatePicture": "Atualizado sua imagem do perfil",
+ "audit_table.updatedRol": "Atualizado as função(ões) do usuário para ",
+ "audit_table.userAdded": "Adicionado {username} para o canal/grupo {channelName}",
+ "audit_table.userId": "Usuário ID",
+ "audit_table.userRemoved": "Removido {username} canal/grupo {channelName}",
+ "audit_table.verified": "Seu endereço de e-mail foi verificado com suscesso",
+ "authorize.access": "Permitir acesso <strong>{appName}</strong>?",
+ "authorize.allow": "Permitir",
+ "authorize.app": "O app <strong>{appName}</strong> gostaria de ter a capacidade de acessar e modificar suas informações básicas.",
+ "authorize.deny": "Negar",
+ "authorize.title": "Um aplicativo gostaria de conectar na sua conta {teamName}",
+ "center_panel.recent": "Clique aqui para pular para mensagens recentes. ",
+ "chanel_header.addMembers": "Adicionar Membros",
+ "change_url.close": "Fechar",
+ "change_url.endWithLetter": "Deve teminar com uma letra ou número",
+ "change_url.invalidUrl": "URL inválida",
+ "change_url.longer": "Deve ter mais de dois caracteres",
+ "change_url.noUnderscore": "Não pode conter dois sublinhados consecutivos.",
+ "change_url.startWithLetter": "Deve começar com uma letra ou número",
+ "channel_flow.alreadyExist": "Um canal com essa URL já existe",
+ "channel_flow.changeUrlDescription": "Alguns caracteres não são permitidos nas URLs e podem ser removidos.",
+ "channel_flow.changeUrlTitle": "Alterar URL {term}",
+ "channel_flow.channel": "Canal",
+ "channel_flow.create": "Criar {term}",
+ "channel_flow.group": "Grupo",
+ "channel_flow.invalidName": "Nome do Canal Inválido",
+ "channel_flow.set_url_title": "Ajustar URL {term}",
+ "channel_header.channel": "Canal",
+ "channel_header.channelHeader": "Definir Cabeçalho do Canal...",
+ "channel_header.delete": "Deletar {term}...",
+ "channel_header.group": "Grupo",
+ "channel_header.leave": "Sair {term}",
+ "channel_header.manageMembers": "Gerenciar Membros",
+ "channel_header.notificationPreferences": "Preferências de Notificação",
+ "channel_header.recentMentions": "Menções Recentes",
+ "channel_header.rename": "Renomear {term}...",
+ "channel_header.setHeader": "Definir Cabeçalho do {term}...",
+ "channel_header.setPurpose": "Ajustar Propósito {term}...",
+ "channel_header.viewInfo": "Ver Informações",
+ "channel_info.close": "Fechar",
+ "channel_info.id": "Canal ID:",
+ "channel_info.name": "Nome do Canal:",
+ "channel_info.notFound": "Nenhum Canal Encontrado",
+ "channel_info.purpose": "Propósito do Canal:",
+ "channel_info.url": "URL do Canal:",
+ "channel_invite.addNewMembers": "Adicionar Novo Membro para ",
+ "channel_invite.close": "Fechar",
+ "channel_loader.posted": "Postado",
+ "channel_loader.socketError": "Por favor verifique sua conexão, Mattermost está inalcançável. Se este problema persistir, peça ao administrador para verificar a porta WebSocket.",
+ "channel_loader.someone": "Alguém",
+ "channel_loader.something": " fez algo novo",
+ "channel_loader.uploadedFile": " enviado um arquivo",
+ "channel_loader.uploadedImage": " enviado uma imagem",
+ "channel_loader.wrote": " escreveu: ",
+ "channel_members_modal.addNew": " Adicionar Novos Membros",
+ "channel_members_modal.close": "Fechar",
+ "channel_memebers_modal.members": " Membros",
+ "channel_modal.cancel": "Cancelar",
+ "channel_modal.channel": "Canal",
+ "channel_modal.createNew": "Criar Novo ",
+ "channel_modal.descriptionHelp": "Descreva como este {term} pode ser usado.",
+ "channel_modal.displayNameError": "Este campo é obrigatório",
+ "channel_modal.edit": "Editar",
+ "channel_modal.group": "Grupo",
+ "channel_modal.modalTitle": "Novo ",
+ "channel_modal.name": "Nome",
+ "channel_modal.nameEx": "Ex.: \"Bugs\", \"Marketing\", \"办公室恋情\"",
+ "channel_modal.optional": "(opcional)",
+ "channel_modal.privateGroup1": "Criar um novo grupo privado com membros restritos. ",
+ "channel_modal.privateGroup2": "Criar um grupo privado",
+ "channel_modal.publicChannel1": "Criar um canal público",
+ "channel_modal.publicChannel2": "Criar um novo canal publico para qualquer um participar. ",
+ "channel_modal.purpose": "Propósito",
+ "channel_notifications.allActivity": "Para todas as atividades",
+ "channel_notifications.allUnread": "Para todas as mensagens não lidas",
+ "channel_notifications.globalDefault": "Global padrão ({notifyLevel})",
+ "channel_notifications.markUnread": "Marcar Canal como Não Lido",
+ "channel_notifications.never": "Nunca",
+ "channel_notifications.onlyMentions": "Somente para menções",
+ "channel_notifications.override": "Selecionar uma opção diferente do \"Padrão\" vai substituir as configurações de notificação global. Notificações na área de trabalho estão disponíveis no Firefox, Safari e Chrome.",
+ "channel_notifications.preferences": "Preferências de Notificação para ",
+ "channel_notifications.sendDesktop": "Enviar notificações de desktop",
+ "channel_notifications.unreadInfo": "O nome do canal fica em negrito na barra lateral quando houver mensagens não lidas. Selecionando \"Apenas menções\" o canal vai ficar em negrito apenas quando você for mencionado.",
+ "choose_auth_page.emailCreate": "Criar uma nova equipe com endereço de email",
+ "choose_auth_page.find": "Encontrar minhas equipes",
+ "choose_auth_page.gitlabCreate": "Criar uma equipe com uma conta GitLab",
+ "choose_auth_page.googleCreate": "Criar nova equipe com a Conta do Google Apps",
+ "choose_auth_page.noSignup": "Nenhum método de inscrição configurado, por favor contate seu administrador do sistema.",
+ "claim.account.noEmail": "Nenhum email específicado",
+ "claim.email_to_sso.enterPwd": "Entre a senha para o sua conta {team} {site}",
+ "claim.email_to_sso.pwd": "Senha",
+ "claim.email_to_sso.pwdError": "Por favor digite a sua senha.",
+ "claim.email_to_sso.ssoNote": "Você precisa já ter uma conta {type} válida",
+ "claim.email_to_sso.ssoType": "Ao retirar a sua conta, você só vai ser capaz de logar com SSO {type}",
+ "claim.email_to_sso.switchTo": "Trocar a conta para {uiType}",
+ "claim.email_to_sso.title": "Trocar E-mail/Senha da Conta para {uiType}",
+ "claim.sso_to_email.confirm": "Confirmar senha",
+ "claim.sso_to_email.description": "Após a alteração do tipo de conta, você só vai ser capaz de logar com seu e-mail e senha.",
+ "claim.sso_to_email.enterPwd": "Por favor entre uma senha.",
+ "claim.sso_to_email.newPwd": "Nova Senha",
+ "claim.sso_to_email.pwdNotMatch": "As senha não correspondem.",
+ "claim.sso_to_email.switchTo": "Trocar {type} para email e senha",
+ "claim.sso_to_email.title": "Trocar Conta {type} para E-mail",
+ "claim.sso_to_email_newPwd": "Entre a nova senha para o sua conta {team} {site}",
+ "confirm_modal.cancel": "Cancelar",
+ "create_comment.addComment": "Adicionar um comentário...",
+ "create_comment.comment": "Adicionar Comentário",
+ "create_comment.commentLength": "Tamanho dos comentários precisa ter menos de {max} caracteres.",
+ "create_comment.commentTitle": "Comentário",
+ "create_comment.file": "Enviando arquivo",
+ "create_comment.files": "Enviando arquivos",
+ "create_post.comment": "Comentário",
+ "create_post.post": "Post",
+ "create_post.tutorialTip": "<h4>Enviando Mensagens</h4><p>Digite aqui para escrever uma mensagem e pressione <strong>Enter</strong> para posta-lá.</p><p>Clique no botão <strong>Anexo</strong> para enviar uma imagem ou arquivo.</p>",
+ "create_post.write": "Escreva uma mensagem...",
+ "delete_channel.cancel": "Cancelar",
+ "delete_channel.channel": "canal",
+ "delete_channel.confirm": "Confirmar EXCLUSÃO do Canal",
+ "delete_channel.del": "Deletar",
+ "delete_channel.group": "grupo",
+ "delete_channel.question": "Você tem certeza que deseja deletar o {display_name} {term}?",
+ "delete_post.cancel": "Cancelar",
+ "delete_post.comment": "Comentário",
+ "delete_post.confirm": "Confirmar Delete {term}",
+ "delete_post.del": "Deletar",
+ "delete_post.post": "Post",
+ "delete_post.question": "Tem certeza de que deseja excluir este {term}?",
+ "delete_post.warning": "Este post tem {count} comentário(s).",
+ "edit_channel_header_modal.cancel": "Cancelar",
+ "edit_channel_header_modal.description": "Editar o texto que aparece junto ao nome do canal dentro do cabeçalho do canal.",
+ "edit_channel_header_modal.error": "Este cabeçalho de canal é muito longo, por favor insira um menor",
+ "edit_channel_header_modal.save": "Salvar",
+ "edit_channel_header_modal.title": "Editar Cabeçalho para o {channel}",
+ "edit_channel_purpose_modal.body": "Descreva como este {type} deve ser usado. Este texto aparece na lista de canais no menu \"Mais...\" e ajuda os outros a decidir se deseja participar.",
+ "edit_channel_purpose_modal.cancel": "Cancelar",
+ "edit_channel_purpose_modal.channel": "Canal",
+ "edit_channel_purpose_modal.error": "Este propósito do canal é muito longo, por favor insira um menor",
+ "edit_channel_purpose_modal.group": "Grupo",
+ "edit_channel_purpose_modal.save": "Salvar",
+ "edit_channel_purpose_modal.title1": "Editar Propósito",
+ "edit_channel_purpose_modal.title2": "Editar Propósito para ",
+ "edit_post.cancel": "Cancelar",
+ "edit_post.edit": "Editar {title}",
+ "edit_post.editPost": "Editar o post...",
+ "edit_post.save": "Salvar",
+ "email_signup.address": "Endereço de E-mail",
+ "email_signup.createTeam": "Criar Equipe",
+ "email_signup.emailError": "Por favor introduza um endereço de e-mail válido",
+ "email_signup.find": "Encontrar minhas equipes",
+ "email_verify.almost": "{siteName}: Você está quase pronto",
+ "email_verify.notVerifiedBody": "Por favor verifique seu endereço de email. Verifique por um email em sua caixa de entrada.",
+ "email_verify.resend": "Re-enviar Email",
+ "email_verify.sent": " Verificação de email enviado.",
+ "email_verify.verified": "{siteName} Email Verificado",
+ "email_verify.verifiedBody": "<p>Seu email foi verificado! Clique <a href={url}>aqui</a> para login.</p>",
+ "error_bar.preview_mode": "Modo de visualização: Notificações por E-mail não foram configuradas",
+ "file_attachment.download": "Download",
+ "file_info_preview.size": "Tamanho ",
+ "file_info_preview.type": "Tipo do arquivo ",
+ "file_upload.fileAbove": "Arquivos acima {max}MB não podem ser enviados: {filename}",
+ "file_upload.filesAbove": "Arquivos acima {max}MB não podem ser enviados: {filenames}",
+ "file_upload.limited": "Limite máximo de uploads de {count} arquivos. Por favor use um post adicional para mais arquivos.",
+ "file_upload.pasted": "Imagem Colada em ",
+ "find_team.email": "E-mail",
+ "find_team.findDescription": "Foi enviado um e-mail com links para todas as equipes do qual você é membro.",
+ "find_team.findTitle": "Encontre Sua Equipe",
+ "find_team.getLinks": "Obter um e-mail com links para quaisquer equipes do qual você é membro.",
+ "find_team.placeholder": "voce@dominio.com",
+ "find_team.send": "Enviar",
+ "find_team.submitError": "Por favor entre um endereço de e-mail válido",
+ "general_tab.chooseName": "Por favor escolha um novo nome para sua equipe",
+ "general_tab.codeDesc": "Clique 'Edit' para re-gerar o Código de Convite.",
+ "general_tab.codeLongDesc": "O Código de convite é usado como parte da URL no link de convite da equipe criado por **Obter Link de Convite de Equipe** no menu principal. Re-gerar cria um novo link de convite de equipe e invalida os link anteriores.",
+ "general_tab.codeTitle": "Código de Convite",
+ "general_tab.dirContact": "Contate o seu administrador do sistema para ativar o diretório de equipe na página inicial do sistema.",
+ "general_tab.dirDisabled": "Diretório de equipe foi desativado. Por favor peça a um Administrador de Sistema para ativar o Diretório de Equipe nas configurações do Console do Sistema.",
+ "general_tab.dirOff": "Diretório de equipe está desativado para este sistema.",
+ "general_tab.includeDirDesc": "Incluindo esta equipe irá exibir o nome da equipe da seção Diretório Equipe da página inicial, e fornecer um link para a página de login.",
+ "general_tab.includeDirTitle": "Incluir esta equipe no Diretório de Equipe",
+ "general_tab.no": "Não",
+ "general_tab.openInviteDesc": "Quando permitido, um link para a criação da conta será incluído na página de login da equipe e permitir que qualquer visitante inscreva-se.",
+ "general_tab.openInviteTitle": "Permitir que qualquer pessoa se inscreva a partir da página de login",
+ "general_tab.regenerate": "Re-Gerar",
+ "general_tab.required": "Este campo é obrigatório",
+ "general_tab.teamName": "Nome da Equipe",
+ "general_tab.teamNameInfo": "Defina o nome da equipe como aparece na sua tela inicial e no topo na lateral esquerda.",
+ "general_tab.title": "Definições Gerais",
+ "general_tab.yes": "Sim",
+ "get_link.clipboard": " Link copiado para a área de transferência.",
+ "get_link.close": "Fechar",
+ "get_link.copy": "Copiar Link",
+ "get_post_link_modal.help": "O link abaixo permite que usuários autorizados possam ver seus posts.",
+ "get_post_link_modal.title": "Copiar Permalink",
+ "get_team_invite_link_modal.help": "Enviar a equipe de trabalho o link abaixo para eles se inscreverem nesta equipe.",
+ "get_team_invite_link_modal.helpDisabled": "Criação de usuários está desabilitada para sua equipe. Por favor peça ao administrador de equipe por detalhes.",
+ "get_team_invite_link_modal.title": "Link para Convite de Equipe",
+ "intro_messages.DM": "Este é o início do seu histórico de mensagens diretas com {teammate}.<br />Mensagens diretas e arquivos compartilhados aqui não são mostrados para pessoas de fora desta área.",
+ "intro_messages.anyMember": " Qualquer membro pode participar e ler este canal.",
+ "intro_messages.beginning": "Início do {name}",
+ "intro_messages.channel": "canal",
+ "intro_messages.creator": "Este é o inicio do <strong>{name}</strong> {type}, criado por <strong>{creator}</strong> em <strong>{date}</strong>",
+ "intro_messages.default": "<h4 class='channel-intro__title'>Inicio do {display_name}</h4><p class='channel-intro__content'><strong>Bem-vindo a {display_name}!</strong><br/><br/>Este é o primeiro canal que sua equipe de trabalho vê quando eles se inscrevem - use para postar atualizações que todos precisam saber.</p>",
+ "intro_messages.group": "grupos privados",
+ "intro_messages.invite": "Convidar outras pessoas para este {type}",
+ "intro_messages.inviteOthers": "Convide outros para esta equipe",
+ "intro_messages.noCreator": "Este é o início do {name} {type}, criado em {date}.",
+ "intro_messages.offTopic": "<h4 class=\"channel-intro__title\">Início do {display_name}</h4><p class=\"channel-intro__content\">Este é o início do {display_name}, um canal para conversas não relacionadas ao trabalho<br/></p>",
+ "intro_messages.onlyInvited": " Somente membros convidados podem ver este grupo privado.",
+ "intro_messages.setHeader": "Definir um Cabeçalho",
+ "intro_messages.teammate": "Este é o início de seu histórico de mensagens com esta equipe. Mensagens diretas e arquivos compartilhados aqui não são mostrados para pessoas fora dessa área.",
+ "invite_member.addAnother": "Adicionar outro",
+ "invite_member.autoJoin": "Pessoas convidadas a participar automaticamente do canal <strong>{channel}</strong>.",
+ "invite_member.cancel": "Cancelar",
+ "invite_member.content": "E-mail está desativado para a sua equipe, e emails de convites não podem ser enviados. Contate o seu administrador do sistema para ativar e-mail e convites por e-mail.",
+ "invite_member.disabled": "Criação de usuários está desabilitada para sua equipe. Por favor peça ao administrador de equipe por detalhes.",
+ "invite_member.emailError": "Por favor entre um endereço de e-mail válido",
+ "invite_member.firstname": "Primeiro nome",
+ "invite_member.inviteLink": "Link para Convite de Equipe",
+ "invite_member.lastname": "Último nome",
+ "invite_member.modalButton": "Sim, Descartar",
+ "invite_member.modalMessage": "Você tem convites não enviados, você tem certeza que quer descartar eles?",
+ "invite_member.modalTitle": "Descartar Convites?",
+ "invite_member.newMember": "Convidar Membros da Equipe",
+ "invite_member.send": "Enviar Convite",
+ "invite_member.send2": "Enviar Convites",
+ "invite_member.sending": " Enviando",
+ "invite_member.teamInviteLink": "Você também pode convidar pessoas usando o {link}",
+ "loading_screen.loading": "Carregando",
+ "login.changed": " Método de login alterada com sucesso",
+ "login.create": "Crie um agora",
+ "login.createTeam": "Criar uma nova equipe",
+ "login.find": "Encontre suas outras equipes",
+ "login.forgot": "Eu esqueci a minha senha",
+ "login.gitlab": "com GitLab",
+ "login.google": "com Google Apps",
+ "login.noAccount": "Não tem uma conta? ",
+ "login.on": "no {siteName}",
+ "login.or": "ou",
+ "login.signTo": "Entrar em:",
+ "login.verified": " Email Verificado",
+ "login_email.badTeam": "Nome ruim de equipe",
+ "login_email.email": "E-mail",
+ "login_email.emailReq": "Um email é necessário",
+ "login_email.pwd": "Senha",
+ "login_email.pwdReq": "É necessário uma senha",
+ "login_email.signin": "Login",
+ "login_ldap.badTeam": "Nome de equipe ruim",
+ "login_ldap.idlReq": "Um ID LDAP é necessário",
+ "login_ldap.pwd": "Senha LDAP",
+ "login_ldap.pwdReq": "É necessário uma senha do LDAP",
+ "login_ldap.signin": "Login",
+ "login_ldap.username": "Usuário LDAP",
+ "login_username.badTeam": "Nome de equipe ruim",
+ "login_username.pwd": "Senha",
+ "login_username.pwdReq": "É necessário uma senha",
+ "login_username.signin": "Login",
+ "login_username.userNotFoundError": "Não foi possível encontrar uma conta existente que corresponda ao seu usuário para esta equipe.",
+ "login_username.username": "Usuário",
+ "login_username.usernameReq": "Um nome de usuário é necessário",
+ "login_username.verifyEmailError": "Por favor verifique seu endereço de email. Verifique por um email na sua caixa de entrada.",
+ "member_item.add": " Adicionar",
+ "member_item.makeAdmin": "Tornar Admin",
+ "member_item.member": "Membro",
+ "member_item.removeMember": "Remover Membro",
+ "member_team_item.confirmDemoteDescription": "Se você rebaixar você mesmo de Admin de Sistema e não exista outro usuário como privilegios de Admin de Sistema, você precisa-rá re-inscrever um Admin de Sistema acessando o servidor Mattermost através do terminal e executando o seguinte comando.",
+ "member_team_item.confirmDemoteRoleTitle": "Confirmar o rebaixamento de Admin Sistema",
+ "member_team_item.confirmDemotion": "Confirmar Rebaixamento",
+ "member_team_item.confirmDemotionCmd": "platform -assign_role -team_name=\"yourteam\" -email=\"name@yourcompany.com\" -role=\"system_admin\"",
+ "member_team_item.inactive": "Inativo",
+ "member_team_item.makeActive": "Tornar Ativo",
+ "member_team_item.makeAdmin": "Tornar Admin de Equipe",
+ "member_team_item.makeInactive": "Tornar Inativo",
+ "member_team_item.makeMember": "Tornar Membro",
+ "member_team_item.member": "Membro",
+ "member_team_item.systemAdmin": "Admin do Sistema",
+ "member_team_item.teamAdmin": "Admin Equipe",
+ "members_popover.msg": "Mensagem",
+ "members_popover.title": "Membros",
+ "more_channels.close": "Fechar",
+ "more_channels.create": "Criar Novo Canal",
+ "more_channels.createClick": "Clique em 'Criar Novo Canal' para fazer um novo",
+ "more_channels.join": "Participar",
+ "more_channels.noMore": "Não há mais canais para participar",
+ "more_channels.title": "Mais Canais",
+ "more_direct_channels.close": "Fechar",
+ "more_direct_channels.count": "{count} {member}",
+ "more_direct_channels.countTotal": "{count} {member} de {total} Total",
+ "more_direct_channels.member": "Membro",
+ "more_direct_channels.message": "Mensagem",
+ "more_direct_channels.notFound": "Nenhum usuário encontrado :(",
+ "more_direct_channels.search": "Procurar membros",
+ "more_direct_channels.title": "Mensagens Diretas",
+ "msg_typing.areTyping": "{users} e {last} estão digitando...",
+ "msg_typing.isTyping": "{user} está digitando...",
+ "msg_typing.someone": "Alguém",
+ "navbar.addMembers": "Adicionar Membros",
+ "navbar.click": "Clique aqui",
+ "navbar.delete": "Deletar Canal...",
+ "navbar.leave": "Deixar o Canal",
+ "navbar.manageMembers": "Gerenciar Membros",
+ "navbar.noHeader": "Sem cabeçalho de canal.{newline}{link} adicionar um.",
+ "navbar.preferences": "Preferências de Notificação",
+ "navbar.rename": "Renomear Canal...",
+ "navbar.setHeader": "Definir Cabeçalho do Canal...",
+ "navbar.setPurpose": "Definir Propósito do Canal...",
+ "navbar.toggle1": "Alternar barra lateral",
+ "navbar.toggle2": "Alternar barra lateral",
+ "navbar.viewInfo": "Ver Informações",
+ "navbar_dropdown.about": "Sobre o Mattermost",
+ "navbar_dropdown.accountSettings": "Definições de Conta",
+ "navbar_dropdown.console": "Console do Sistema",
+ "navbar_dropdown.create": "Criar uma Nova Equipe",
+ "navbar_dropdown.help": "Ajuda",
+ "navbar_dropdown.inviteMember": "Convidar Membros da Equipe",
+ "navbar_dropdown.logout": "Logout",
+ "navbar_dropdown.manageMembers": "Gerenciar Membros",
+ "navbar_dropdown.report": "Relatar um Problema",
+ "navbar_dropdown.switchTeam": "Mudar para {team}",
+ "navbar_dropdown.teamLink": "Obter Link para Convite de Equipe",
+ "navbar_dropdown.teamSettings": "Configurações da Equipe",
+ "password_form.change": "Alterar minha senha",
+ "password_form.click": "Clique <a href={url}>aqui</a> para logar.",
+ "password_form.enter": "Entre uma nova senha para sua conta {teamDisplayName} {siteName}.",
+ "password_form.error": "Por favor, insira pelo menos {chars} caracteres.",
+ "password_form.pwd": "Senha",
+ "password_form.title": "Resetar Senha",
+ "password_form.update": "Sua senha foi atualizada com sucesso.",
+ "password_send.checkInbox": "Por favor verifique sua caixa de entrada.",
+ "password_send.description": "Para resetar sua senha, entre o endereço de email que você usou para se inscrever em {teamName}.",
+ "password_send.email": "E-mail",
+ "password_send.error": "Por favor entre um endereço de e-mail válido.",
+ "password_send.link": "<p>Um link para resetar a sua senha na equipe <b>{teamDisplayName}</b> em {hostname} foi enviado para <b>{email}</b>.</p>",
+ "password_send.reset": "Resetar minha senha",
+ "password_send.title": "Resetar Senha",
+ "post_attachment.collapse": "▲ recolher texto",
+ "post_attachment.more": "▼ leia mais",
+ "post_body.commentedOn": "Comentado de {name}{apostrophe} mensagem: ",
+ "post_body.deleted": "(mensagem deletada)",
+ "post_body.plusMore": " mais {count} outros arquivos",
+ "post_body.plusOne": " mais 1 outro arquivo",
+ "post_body.retry": "Tentar novamente",
+ "post_delete.notPosted": "Comentário não pode ser postado",
+ "post_delete.okay": "Ok",
+ "post_delete.someone": "Alguém deletou a mensagem no qual você tentou postar um comentário.",
+ "post_focus_view.beginning": "Início do Canal de Arquivos",
+ "post_info.del": "Deletar",
+ "post_info.edit": "Editar",
+ "post_info.permalink": "Permalink",
+ "post_info.reply": "Responder",
+ "posts_view.loadMore": "Carregar mais mensagens",
+ "posts_view.newMsg": "Novas Mensagens",
+ "register_app.callback": "Callback URL",
+ "register_app.callbackError": "Pelo menos uma URL de retorno de chamada deve ser preenchida.",
+ "register_app.cancel": "Cancelar",
+ "register_app.clientId": "ID do Cliente",
+ "register_app.clientSecret": "Segredo Cliente",
+ "register_app.close": "Fechar",
+ "register_app.credentialsDescription": "Guardá-las em algum lugar SEGURO. Trate o seu ID de cliente, como nome de usuário da sua aplicação e o seu Senha de Cliente como uma senha de app.",
+ "register_app.credentialsSave": "Eu salvei ambos meu Id de Cliente e o Segredo Cliente em um local seguro",
+ "register_app.credentialsTitle": "Suas Credenciais de Aplicação",
+ "register_app.description": "Descrição",
+ "register_app.dev": "Aplicativos Desenvolvedor",
+ "register_app.homepage": "URL da página principal",
+ "register_app.homepageError": "Página principal precisa ser preenchida.",
+ "register_app.name": "Nome do Aplicativo",
+ "register_app.nameError": "Nome da aplicação precisa ser preenchida.",
+ "register_app.optional": "Opcional",
+ "register_app.register": "Registrar",
+ "register_app.required": "Necessário",
+ "register_app.title": "Registar um Novo Aplicativo",
+ "removed_channel.channelName": "o canal",
+ "removed_channel.from": "Removido de ",
+ "removed_channel.okay": "Ok",
+ "removed_channel.remover": "{remover} removido você do {channel}",
+ "removed_channel.someone": "Alguém",
+ "rename_channel.cancel": "Cancelar",
+ "rename_channel.defaultError": " - Não pode ser alterado para o canal padrão",
+ "rename_channel.displayName": "Nome De Exibição",
+ "rename_channel.displayNameHolder": "Insira o nome de exibição",
+ "rename_channel.handle": "Handle",
+ "rename_channel.handleHolder": "alfanuméricos minúsculos somente",
+ "rename_channel.lowercase": "Tem de ser caracteres minúsculos alfanuméricos",
+ "rename_channel.maxLength": "Este campo deve ser menor do que 22 caracteres",
+ "rename_channel.required": "Este campo é obrigatório",
+ "rename_channel.save": "Salvar",
+ "rename_channel.title": "Renomear Canal",
+ "rhs_comment.comment": "Comentário",
+ "rhs_comment.del": "Deletar",
+ "rhs_comment.edit": "Editar",
+ "rhs_comment.permalink": "Permalink",
+ "rhs_comment.retry": "Tentar novamente",
+ "rhs_header.details": "Detalhes da Mensagem",
+ "rhs_root.del": "Deletar",
+ "rhs_root.direct": "Mensagem Direta",
+ "rhs_root.edit": "Editar",
+ "rhs_root.permalink": "Permalink",
+ "search_bar.cancel": "Cancelar",
+ "search_bar.search": "Procurar",
+ "search_bar.usage": "<h4>Opções de Pesquisa</h4><ul><li><span>Utilize </span><b>\"aspas\"</b><span> para pesquisar frases</span></li><li><span>Use </span><b>from:</b><span> para encontrar mensagens de usuários específicos e </span><b>in:</b><span> para encontrar postagens em canais específicos</span></li></ul>",
+ "search_header.results": "Resultados da Pesquisa",
+ "search_header.title2": "Menções Recentes",
+ "search_item.direct": "Mensagem Direta",
+ "search_item.jump": "Pular",
+ "search_results.because": "<ul><li>Se você está pesquisando uma frase (ex. pesquisando \"rea\", procurando por \"reagir\" ou \"reação\"), acrescente um * ao seu termo de pesquisa</li><li>Devido ao grande volume de resultados, pesquisas com duas letras e palavras comuns como \"este\", \"um\" e \"é\" não aparecerão nos resultados de pesquisa</li></ul>",
+ "search_results.noResults": "SEM RESULTADOS",
+ "search_results.usage": "<ul><li>Use <b>\"aspas\"</b> para pesquisar frases</li><li>Use <b>from:</b> para encontrar mensagens de usuários específicos e <b>in:</b> para encontrar postagens em canais específicos</li></ul>",
+ "setting_item_max.cancel": "Cancelar",
+ "setting_item_max.save": "Salvar",
+ "setting_item_min.edit": "Editar",
+ "setting_picture.cancel": "Cancelar",
+ "setting_picture.help": "Enviar uma imagem do perfil no formato JPG ou PNG, com pelo menos {width}px na largura e {height}px na altura.",
+ "setting_picture.save": "Salvar",
+ "setting_picture.select": "Selecionar",
+ "setting_upload.import": "Importar",
+ "setting_upload.noFile": "Nenhum arquivo selecionado.",
+ "setting_upload.select": "Selecione o arquivo",
+ "sidebar.channels": "Canais",
+ "sidebar.createChannel": "Criar novo canal",
+ "sidebar.createGroup": "Criar um novo grupo",
+ "sidebar.direct": "Mensagens Diretas",
+ "sidebar.more": "Mais ({count})",
+ "sidebar.moreElips": "Mais...",
+ "sidebar.pg": "Grupos Privados",
+ "sidebar.removeList": "Remover da lista",
+ "sidebar.tutorialScreen1": "<h4>Canais</h4><p><strong>Canais</strong> organizar conversas em diferentes tópicos. Eles estão abertos a todos em sua equipe. Para enviar comunicações privadas utilize <strong>Mensagens Diretas</strong> para uma única pessoa ou <strong>Grupos Privados</strong> para várias pessoas.</p>",
+ "sidebar.tutorialScreen2": "<h4>Canais \"Town Square\" e \"Off-Topic\"</h4><p>Aqui estão dois canais publicos para começar:</p><p><strong>Town Square</strong> é um lugar comunicação de toda equipe. Todo mundo em sua equipe é um mendro deste canal.</p><p><strong>Off-Topic</strong> é um lugar para diversão e humor fora dos canais relacionados com o trabalho. Você e sua equipe podem decidir qual outros canais serão criados.</p>",
+ "sidebar.tutorialScreen3": "<h4>Criando e participando de Canais</h4><p>Clique em <strong>\"Mais...\"</strong> para criar um novo canal ou participar de um já existente.</p><p>Você também pode criar um novo canal ou grupo privado ao clicar em <strong>no símbolo \"+\"</strong> ao lado do canal ou grupo privado no cabeçalho.</p>",
+ "sidebar.unreadAbove": "Post(s) não lidos abaixo",
+ "sidebar.unreadBelow": "Post(s) não lidos abaixo",
+ "sidebar_header.tutorial": "<h4>Menu Principal</h4><p>O <strong>Menu Principal</strong> é onde você pode <strong>Convidar novos membros</strong>, acessar sua <strong>Definição de Conta</strong> e ajustar o seu <strong>Tema de Cores</strong>.</p><p>Administradores de equipe podem também acessar suas <strong>Configurações de Equipe</strong> a partir deste menu.</p><p>Administradores de Sistema vão encontrar em <strong>Console do Sistema</strong> opções para administrar todo o sistema.</p>",
+ "sidebar_right_menu.accountSettings": "Definições de Conta",
+ "sidebar_right_menu.console": "Console do Sistema",
+ "sidebar_right_menu.help": "Ajuda",
+ "sidebar_right_menu.inviteNew": "Convidar Membros para Equipe",
+ "sidebar_right_menu.logout": "Logout",
+ "sidebar_right_menu.manageMembers": "Gerenciar Membros",
+ "sidebar_right_menu.report": "Relatar um Problema",
+ "sidebar_right_menu.teamLink": "Obter Link para Convite de Equipe",
+ "sidebar_right_menu.teamSettings": "Configurações da Equipe",
+ "signup_team.choose": "Escolha uma Equipe",
+ "signup_team.createTeam": "Ou Criar uma Equipe",
+ "signup_team.disabled": "A criação de equipe foi desativada. Por favor, entre em contato com um administrador para o acesso.",
+ "signup_team.noTeams": "Não existe equipes incluidas no Diretório de Equipe e a criação de equipes foi desativada.",
+ "signup_team.none": "Nenhum método de criação da equipe foi habilitado. Por favor, entre em contato com um administrador para o acesso.",
+ "signup_team_complete.completed": "Você já concluiu o processo de inscrição para este convite ou este convite expirou.",
+ "signup_team_confirm.checkEmail": "Por favor, verifique seu e-mail: <strong>{email}</strong><br />Seu e-mail contém um link para configurar a sua equipe",
+ "signup_team_confirm.title": "Inscrição Completa",
+ "signup_user_completed.choosePwd": "Escolha sua senha",
+ "signup_user_completed.chooseUser": "Escolha o seu nome de usuário",
+ "signup_user_completed.create": "Criar Conta",
+ "signup_user_completed.emailHelp": "Email valido necessário para inscrição",
+ "signup_user_completed.emailIs": "Seu endereço de e-mail é <strong>{email}</strong>. Você irá usar esse endereço para entrar em {siteName}.",
+ "signup_user_completed.expired": "Você já concluiu o processo de inscrição para este convite ou este convite expirou.",
+ "signup_user_completed.gitlab": "com GitLab",
+ "signup_user_completed.google": "com Google",
+ "signup_user_completed.lets": "Vamos criar a sua conta",
+ "signup_user_completed.none": "Nenhum método de criação de equipe foi habilitado. Por favor, entre em contato com um administrador para o acesso.",
+ "signup_user_completed.onSite": "no {siteName}",
+ "signup_user_completed.or": "ou",
+ "signup_user_completed.passwordLength": "Por favor entre no mínimo {min} caracteres",
+ "signup_user_completed.required": "Este campo é obrigatório",
+ "signup_user_completed.reserved": "Este nome de usuário é reservado, por favor, escolha um novo.",
+ "signup_user_completed.userHelp": "O nome de usuário precisa começar com uma letra, e conter entre {min} e {max} caracteres minúsculos contendo números, letras, e os símbolos '.', '-' e '_'",
+ "signup_user_completed.usernameLength": "O nome de usuário precisa começar com uma letra, e conter entre {min} e {max} caracteres minúsculos contendo números, letras, e os símbolos '.', '-' e '_'.",
+ "signup_user_completed.validEmail": "Por favor entre um endereço de e-mail válido",
+ "signup_user_completed.welcome": "Bem-vindo:",
+ "signup_user_completed.whatis": "Qual é o seu endereço de e-mail?",
+ "sso_signup.find": "Encontrar minhas equipes",
+ "sso_signup.gitlab": "Criar uma equipe com uma conta GitLab",
+ "sso_signup.google": "Criar equipe com a Conta do Google Apps",
+ "sso_signup.length_error": "O nome deve ser de 3 ou mais caracteres até um máximo de 15",
+ "sso_signup.teamName": "Entre o nome da nova equipe",
+ "sso_signup.team_error": "Por favor entre o nome da equipe",
+ "suggestion.mention.all": "Notificar todo mundo na equipe",
+ "suggestion.mention.channel": "Notifica todos no canal",
+ "suggestion.search.private": "Grupos Publicos",
+ "suggestion.search.public": "Canais Publicos",
+ "team_export_tab.download": "download",
+ "team_export_tab.export": "Exportar",
+ "team_export_tab.exportTeam": "Exportar sua equipe",
+ "team_export_tab.exporting": " Exportando...",
+ "team_export_tab.ready": " Pronto para ",
+ "team_export_tab.unable": " Não foi possível exportar: {error}",
+ "team_import_tab.failure": " Falha na importação: ",
+ "team_import_tab.import": "Importar",
+ "team_import_tab.importHelp": "<p>Para importar uma equipe do Slack, vá para a Slack > Definições de Equipe > Importar/Exportar Dados > Exportar > Iniciar Exportação. Slack não permite que você exporte arquivos, imagens, grupos privados ou as mensagens diretas armazenadas no Slack. Portanto, Importação Slack para Mattermost só suporta a importação de mensagens de texto dos canais publicos da sua equipe Slack.</p><p>O Importação Slack para Mattermost está em 'Beta'. Slack bot posts ainda não pode ser importado e Slack @mentions não são suportados no momento.</p>",
+ "team_import_tab.importSlack": "Importar do Slack (Beta)",
+ "team_import_tab.importing": " Importando...",
+ "team_import_tab.successful": " Importado com sucesso: ",
+ "team_import_tab.summary": "Ver Resumo",
+ "team_member_modal.close": "Fechar",
+ "team_member_modal.members": "{team} Membros",
+ "team_settings_modal.exportTab": "Exportar",
+ "team_settings_modal.generalTab": "Geral",
+ "team_settings_modal.importTab": "Importar",
+ "team_settings_modal.title": "Configurações da Equipe",
+ "team_signup_display_name.back": "Voltar para o passo anterior",
+ "team_signup_display_name.charLength": "O nome deve ser de 4 ou mais caracteres até um máximo de 15",
+ "team_signup_display_name.nameHelp": "Nome da sua equipe em qualquer idioma. Seu nome de equipe é mostrado em menus e títulos.",
+ "team_signup_display_name.next": "Próximo",
+ "team_signup_display_name.required": "Este campo é obrigatório",
+ "team_signup_display_name.teamName": "Nome Da Equipe",
+ "team_signup_email.address": "Endereço de E-mail",
+ "team_signup_email.different": "Por favor, use um e-mail diferente do que o usado no login",
+ "team_signup_email.validEmail": "Por favor entre um endereço de e-mail válido",
+ "team_signup_password.agreement": "Ao prosseguir para criar sua conta e usar {siteName}, você concorda com nosso <a href='/static/help/terms.html'>Termo de Serviço</a> e <a href='/static/help/privacy.html'>Politica de Privacidade</a>. Se você não concorda, você não pode usar {siteName}.",
+ "team_signup_password.back": "Voltar para o passo anterior",
+ "team_signup_password.choosePwd": "Escolha sua senha",
+ "team_signup_password.creating": "Criando um equipe...",
+ "team_signup_password.email": "E-mail",
+ "team_signup_password.finish": "Terminar",
+ "team_signup_password.hint": "Senhas precisam conter {min} a {max} caracteres. Sua senha será segura se conter uma mistura de símbolos, números, e caracteres maiúsculos e minúsculos.",
+ "team_signup_password.passwordError": "Por favor, insira pelo menos {chars} caracteres",
+ "team_signup_password.selectPassword": "Selecione uma senha que você irá usar no login com seu endereço de email:",
+ "team_signup_password.yourPassword": "Sua senha",
+ "team_signup_send_invites.addInvitation": "Adicionar Convite",
+ "team_signup_send_invites.back": "Voltar para o passo anterior",
+ "team_signup_send_invites.disabled": "Email está desativado para a sua equipe, e emails e não podem ser enviados. Contate o seu administrador do sistema para ativar e-mail e convites por e-mail.",
+ "team_signup_send_invites.forNow": "agora.",
+ "team_signup_send_invites.next": "Próximo",
+ "team_signup_send_invites.prefer": "se você preferir, você pode convidar membros da equipe depois<br /> e ",
+ "team_signup_send_invites.skip": "pular este passo ",
+ "team_signup_send_invites.title": "Convidar Membros da Equipe",
+ "team_signup_url.back": "Voltar para o passo anterior",
+ "team_signup_url.charLength": "O nome deve ser de 4 ou mais caracteres até um máximo de 15",
+ "team_signup_url.hint": "<li>Curto e memorizável é o melhor</li><li>Use letras minúsculas, números e traços</li><li>Deve começar com uma letra e não pode terminar em um traço</li>",
+ "team_signup_url.next": "Próximo",
+ "team_signup_url.regex": "Utilize apenas letras minúsculas, números e traços. Deve começar com uma letra e não pode terminar em um traço.",
+ "team_signup_url.required": "Este campo é obrigatório",
+ "team_signup_url.taken": "URL é usada ou contém uma palavra reservada",
+ "team_signup_url.teamUrl": "Equipe URL",
+ "team_signup_url.unavailable": "Está URL está indisponível. Por favor tente outra.",
+ "team_signup_url.webAddress": "Escolha o endereço web para sua nova equipe:",
+ "team_signup_username.back": "Voltar para o passo anterior",
+ "team_signup_username.chooseUsername": "Escolha o seu nome de usuário",
+ "team_signup_username.hint": "O nome de usuário precisa começar com uma letra, e conter entre {min} e {max} caracteres minúsculos contendo números, letras, e os símbolos '.', '-' e '_'",
+ "team_signup_username.invalid": "O nome de usuário precisa começar com uma letra, e conter entre {min} e {max} caracteres no total, podendo ser números, letras minúsculas, ou qualquer dos símbolos '.', '-' ou '_'",
+ "team_signup_username.memorable": "Escolha um nome de usuário memorizável que torna fácil para sua equipe de trabalho identificá-lo:",
+ "team_signup_username.next": "Próximo",
+ "team_signup_username.reserved": "Este nome de usuário é reservado, por favor, escolha uma nova.",
+ "team_signup_username.username": "Seu usuário",
+ "team_signup_welcome.address": "Endereço de E-mail",
+ "team_signup_welcome.admin": "Sua conta irá administrar no novo site da equipe. <br />Você pode adicionar outros administradores depois.",
+ "team_signup_welcome.confirm": "Por favor confirme seu endereço de e-mail:",
+ "team_signup_welcome.different": "Utilize um e-mail diferente",
+ "team_signup_welcome.instead": "Use este ao invez",
+ "team_signup_welcome.lets": "Vamos configurar sua nova equipe",
+ "team_signup_welcome.storageError": "Este serviço requer um armazenamento local para ser ativado. Por favor, habilite ou saia da navegação privada.",
+ "team_signup_welcome.validEmailError": "Por favor entre um endereço de e-mail válido",
+ "team_signup_welcome.welcome": "Bem-vindo:",
+ "team_signup_welcome.yes": "Sim, este endereço de email está correto",
+ "textbox.edit": "Editar mensagem",
+ "textbox.help": "Ajuda",
+ "textbox.preview": "Pré-visualização",
+ "tutorial_intro.allSet": "Está tudo pronto",
+ "tutorial_intro.end": "Clique em “Próximo” para entrar Town Square. Este é o primeiro canal que sua equipe de trabalho vê quando eles se inscrevem. Use para postar atualizações que todos precisam saber.",
+ "tutorial_intro.invite": "Convidar pessoas para equipe",
+ "tutorial_intro.next": "Próximo",
+ "tutorial_intro.screenOne": "<h3>Bem vindo ao:</h3><h1>Mattermost</h1><p>Sua equipe de comunicação em um só lugar, pesquisas instantâneas disponível em qualquer lugar</p><p>Mantenha sua equipe conectada para ajudá-los a conseguir o que mais importa.</p>",
+ "tutorial_intro.screenTwo": "<h3>Como Mattermost funciona:</h3><p>A comunicação acontece em canais de discussão pública, grupos privados e mensagens diretas.</p><p>Tudo é arquivadas e pesquisável a partir de qualquer desktop, laptop ou telefone com suporte a web.</p>",
+ "tutorial_intro.skip": "Pular o tutorial",
+ "tutorial_intro.support": "Precisa de alguma coisa, envie um e-mail para nós no ",
+ "tutorial_intro.teamInvite": "Convite de Equipe",
+ "tutorial_intro.whenReady": " quando você estiver pronto.",
+ "tutorial_tip.next": "Próximo",
+ "tutorial_tip.ok": "Ok",
+ "tutorial_tip.out": "Recusar estas dicas.",
+ "tutorial_tip.seen": "Viu isso antes? ",
+ "upload_overlay.info": "Soltar um arquivo para enviá-lo.",
+ "user.settings.advance.embed_preview": "Mostrar pré-visualização dos links abaixo da mensagem",
+ "user.settings.advance.enabled": "habilitado",
+ "user.settings.advance.feature": " Recursos ",
+ "user.settings.advance.features": " Recursos ",
+ "user.settings.advance.markdown_preview": "Mostrar opção pré-visualização markdown na caixa de entrada de mensagens",
+ "user.settings.advance.off": "Desligado",
+ "user.settings.advance.on": "On",
+ "user.settings.advance.preReleaseDesc": "Verifique todos os recursos de pré-lançamento que você gostaria de visualizar. Você também pode precisar atualizar a página antes das configuração terem efeito.",
+ "user.settings.advance.preReleaseTitle": "Visualizar recursos de pré-lançamento",
+ "user.settings.advance.sendDesc": "Se habilitado 'Enter' insere uma nova linha e 'Ctrl + Enter' envia a mensagem.",
+ "user.settings.advance.sendTitle": "Enviar mensagens Ctrl + Enter",
+ "user.settings.advance.title": "Configurações Avançadas",
+ "user.settings.cmds.add": "Adicionar",
+ "user.settings.cmds.add_display_name.placeholder": "Exemplo: \"Procurar registros de pacientes\"",
+ "user.settings.cmds.add_new": "Adicionar um novo comando",
+ "user.settings.cmds.add_trigger.placeholder": "Comando de gatilho ex. \"hello\", não incluí a barra",
+ "user.settings.cmds.add_username.placeholder": "Usuário",
+ "user.settings.cmds.auto_complete": "Autocompletar: ",
+ "user.settings.cmds.auto_complete.no": "não",
+ "user.settings.cmds.auto_complete.yes": "sim",
+ "user.settings.cmds.auto_complete_desc": "Autocompletar Descrição: ",
+ "user.settings.cmds.auto_complete_desc.placeholder": "Exemplo: \"Retorna os resultados da pesquisa, prontuário\"",
+ "user.settings.cmds.auto_complete_desc_desc": "Breve descrição opcional do comando slash para a lista de preenchimento automático.",
+ "user.settings.cmds.auto_complete_help": " Mostrar este comando na lista de preenchimento automático.",
+ "user.settings.cmds.auto_complete_hint": "Autocompletar Sugestão: ",
+ "user.settings.cmds.auto_complete_hint.placeholder": "Exemplo: [Nome Do Paciente]",
+ "user.settings.cmds.auto_complete_hint_desc": "Sugestão opcional na lista autocompletada sobre os parâmetros necessários para o comando.",
+ "user.settings.cmds.cmd_display_name": "Breve descrição do comando slash para mostrar em listas.",
+ "user.settings.cmds.display_name": "Etiqueta Descritiva: ",
+ "user.settings.cmds.existing": "Comando existente",
+ "user.settings.cmds.icon_url": "Ícone de Resposta: ",
+ "user.settings.cmds.icon_url_desc": "Escolha uma imagem do perfil para substituir as respostas dos posts deste comando slash. Digite a URL de um arquivo .png ou .jpg com pelo menos 128 pixels por 128 pixels.",
+ "user.settings.cmds.none": "Nenhum",
+ "user.settings.cmds.regen": "Regen Token",
+ "user.settings.cmds.request_type": "Método de Requisição: ",
+ "user.settings.cmds.request_type_desc": "O tipo de solicitação do comando emitido para a URL requisitada.",
+ "user.settings.cmds.request_type_get": "OBTER",
+ "user.settings.cmds.request_type_post": "POST",
+ "user.settings.cmds.token": "Token: ",
+ "user.settings.cmds.trigger": "Comando Palavra Gatilho: ",
+ "user.settings.cmds.trigger_desc": "Exemplos: /patient, /client, /employee Reserved: /echo, /join, /logout, /me, /shrug",
+ "user.settings.cmds.url": "URL de solicitação: ",
+ "user.settings.cmds.url.placeholder": "Deve começar com http:// ou https://",
+ "user.settings.cmds.url_desc": "A URL callback para receber o evento HTTP POST ou GET quando o comando slash for executado.",
+ "user.settings.cmds.username": "Usuário de Resposta: ",
+ "user.settings.cmds.username_desc": "Escolha um nome de usuário para substituir as respostas deste comando slash. O nome de usuário deve ter até 22 caracteres contendo letras minúsculas, números e os símbolos \"-\", \"_\", e \".\" .",
+ "user.settings.custom_theme.awayIndicator": "Indicador de Afastamento",
+ "user.settings.custom_theme.buttonBg": "Fundo Botão",
+ "user.settings.custom_theme.buttonColor": "Texto do Botão",
+ "user.settings.custom_theme.centerChannelBg": "Fundo Centro Canal",
+ "user.settings.custom_theme.centerChannelColor": "Canal Central Texto",
+ "user.settings.custom_theme.codeTheme": "Código do Tema",
+ "user.settings.custom_theme.copyPaste": "Copie e cole para compartilhar o tema de cores:",
+ "user.settings.custom_theme.linkColor": "Cor do link",
+ "user.settings.custom_theme.mentionBj": "Fundo Menção Jewel",
+ "user.settings.custom_theme.mentionColor": "Menção Texto Jewel",
+ "user.settings.custom_theme.mentionHighlightBg": "Fundo Menção Realçar",
+ "user.settings.custom_theme.mentionHighlightLink": "Menção Realçar Link",
+ "user.settings.custom_theme.newMessageSeparator": "Novo Separador de Mensagem",
+ "user.settings.custom_theme.onlineIndicator": "Indicador Online",
+ "user.settings.custom_theme.sidebarBg": "Fundo Barra lateral",
+ "user.settings.custom_theme.sidebarHeaderBg": "Fundo Barra latera Cabeçalho",
+ "user.settings.custom_theme.sidebarHeaderTextColor": "Barra lateral Texto",
+ "user.settings.custom_theme.sidebarText": "Texto Barra lateral",
+ "user.settings.custom_theme.sidebarTextActiveBorder": "Barra lateral Borda Texto Ativo",
+ "user.settings.custom_theme.sidebarTextActiveColor": "Barra lateral Cor Texto Ativo",
+ "user.settings.custom_theme.sidebarTextHoverBg": "Fundo Barra lateral Sobre Texto",
+ "user.settings.custom_theme.sidebarUnreadText": "Barra Lateral Texto Não Lido",
+ "user.settings.developer.applicationsPreview": "Aplicativos (Pré-visualização)",
+ "user.settings.developer.register": "Registar Novo Aplicativo",
+ "user.settings.developer.thirdParty": "Abrir para registrar um novo aplicativo de terceiros",
+ "user.settings.developer.title": "Configurações de Desenvolvedor",
+ "user.settings.display.clockDisplay": "Exibição do Relógio",
+ "user.settings.display.fontDesc": "Selecione a fonte mostrada na interface do usuário no Mattermost.",
+ "user.settings.display.fontTitle": "Fonte Exibição",
+ "user.settings.display.language": "Idioma",
+ "user.settings.display.militaryClock": "Relógio de 24 horas (exemplo: 16:00)",
+ "user.settings.display.nameOptsDesc": "Ajustar como mostrar outros nomes de usuários nas postagens e lista de Mensagens Diretas.",
+ "user.settings.display.normalClock": "Relógio de 12 horas (exemplo: 4:00 PM)",
+ "user.settings.display.preferTime": "Selecione como você prefere que a hora seja mostrada.",
+ "user.settings.display.showFullname": "Mostrar primeiro e último nome",
+ "user.settings.display.showNickname": "Mostras apelidos se um existir, caso contrário mostrar o primeiro e último nome",
+ "user.settings.display.showUsername": "Mostrar nome de usuário (equipe padrão)",
+ "user.settings.display.teammateDisplay": "Nome de Exibição da Equipe de Trabalho",
+ "user.settings.display.theme.customTheme": "Tema Customizado",
+ "user.settings.display.theme.describe": "Abrir para gerenciar seu tema",
+ "user.settings.display.theme.import": "Importar tema de cores do Slack",
+ "user.settings.display.theme.themeColors": "Tema de Cores",
+ "user.settings.display.theme.title": "Tema",
+ "user.settings.display.title": "Configurações de Exibição",
+ "user.settings.general.checkEmail": "Verifique seu email em {email} para confirmar o endereço.",
+ "user.settings.general.checkEmailNoAddress": "Verifique seu email para confirmar seu novo endereço",
+ "user.settings.general.close": "Fechar",
+ "user.settings.general.confirmEmail": "Confirmar o email",
+ "user.settings.general.email": "E-mail",
+ "user.settings.general.emailCantUpdate": "Login ocorreu através do GitLab. Email não pode ser atualizado.",
+ "user.settings.general.emailHelp1": "Email é usado para login, notificações, e redefinição de senha. Requer verificação de email se alterado.",
+ "user.settings.general.emailHelp2": "Email foi desativado pelo seu administrador de sistema. Nenhuma notificação por email será enviada até isto ser habilitado.",
+ "user.settings.general.emailHelp3": "Email é usado para login, notificações e redefinição de senha.",
+ "user.settings.general.emailHelp4": "Uma verificação por email foi enviada para {email}.",
+ "user.settings.general.emailMatch": "Os novos emails que você inseriu não correspondem.",
+ "user.settings.general.firstName": "Primeiro nome",
+ "user.settings.general.fullName": "Nome Completo",
+ "user.settings.general.imageTooLarge": "Não é possível fazer upload da imagem de perfil. O arquivo é muito grande.",
+ "user.settings.general.imageUpdated": "Imagem última atualização {date}",
+ "user.settings.general.lastName": "Último Nome",
+ "user.settings.general.loginGitlab": "Login feito através do GitLab",
+ "user.settings.general.newAddress": "Novo Endereço: {email}<br />Verifique seu email para checar o endereço acima.",
+ "user.settings.general.nickname": "Apelido",
+ "user.settings.general.nicknameExtra": "Use Apelidos para um nome você pode ser chamado assim, isso é diferente de seu primeiro nome e nome de usuário. Este é mais frequentemente usado quando duas ou mais pessoas têm nomes semelhantes de usuário.",
+ "user.settings.general.notificationsExtra": "Por padrão, você receberá uma notificação de menção quando alguém digitar seu nome. Vá para definições {notify} para alterar esse padrão.",
+ "user.settings.general.notificationsLink": "Notificações",
+ "user.settings.general.primaryEmail": "Email Primário",
+ "user.settings.general.profilePicture": "Imagem do Perfil",
+ "user.settings.general.title": "Definições Gerais",
+ "user.settings.general.uploadImage": "Clique em 'Editar' para enviar uma imagem.",
+ "user.settings.general.username": "Usuário",
+ "user.settings.general.usernameInfo": "Coloque alguma coisa fácil para sua equipe de trabalho te reconhecer e lembrar.",
+ "user.settings.general.usernameReserved": "Este nome de usuário é reservado, por favor escolha um novo.",
+ "user.settings.general.usernameRestrictions": "O nome de usuário precisa começar com uma letra, e conter entre {min} e {max} caracteres minúsculos contendo números, letras, e os símbolos '.', '-' e '_'.",
+ "user.settings.general.validEmail": "Por favor entre um endereço de e-mail válido",
+ "user.settings.general.validImage": "Somente imagens em JPG ou PNG podem ser usadas como imagem do perfil",
+ "user.settings.hooks_in.add": "Adicionar",
+ "user.settings.hooks_in.addTitle": "Adicionar um novo webhook entrada",
+ "user.settings.hooks_in.channel": "Canal: ",
+ "user.settings.hooks_in.existing": "Webhooks de entrada existentes",
+ "user.settings.hooks_in.none": "Nenhum",
+ "user.settings.hooks_out.add": "Adicionar",
+ "user.settings.hooks_out.addTitle": "Adicionar um novo webhook saída",
+ "user.settings.hooks_out.callback": "Callback URLs: ",
+ "user.settings.hooks_out.callbackDesc": "Nova linha separada de URLs que receberá o evento HTTP POST",
+ "user.settings.hooks_out.callbackHolder": "Cada URL deve começar com http:// ou https://",
+ "user.settings.hooks_out.channel": "Canal: ",
+ "user.settings.hooks_out.comma": "Palavras separadas por virgula para gatilho em",
+ "user.settings.hooks_out.existing": "Webhooks de saída existentes",
+ "user.settings.hooks_out.none": "Nenhum",
+ "user.settings.hooks_out.only": "Apenas canais públicos pode ser usado",
+ "user.settings.hooks_out.optional": "Opcional se o canal selecionado",
+ "user.settings.hooks_out.regen": "Re-Gerar Token",
+ "user.settings.hooks_out.select": "--- Selecione um canal ---",
+ "user.settings.hooks_out.trigger": "Palavras de Gatilho: ",
+ "user.settings.import_theme.cancel": "Cancelar",
+ "user.settings.import_theme.importBody": "Para importar um tema, vá para uma equipe no Slack e olhe para “Preferences -> Sidebar Theme”. Abra a opção de tema customizado, copie os valores das cores do tema e cole eles aqui:",
+ "user.settings.import_theme.importHeader": "Importar Tema Slack",
+ "user.settings.import_theme.submit": "Enviar",
+ "user.settings.import_theme.submitError": "Formato inválido, por favor tente copiar e colar novamente.",
+ "user.settings.integrations.commands": "Comandos Slash",
+ "user.settings.integrations.commandsDescription": "Gerenciar seus comandos slash",
+ "user.settings.integrations.incomingWebhooks": "Webhooks Entrada",
+ "user.settings.integrations.incomingWebhooksDescription": "Gerencie seus webhooks entrada",
+ "user.settings.integrations.outWebhooks": "Webhooks Saída",
+ "user.settings.integrations.outWebhooksDescription": "Gerencie seus webhooks saída",
+ "user.settings.integrations.title": "Configuração de Integração",
+ "user.settings.languages": "Definir idioma",
+ "user.settings.languages.change": "Alterar o idioma da interface",
+ "user.settings.modal.advanced": "Avançado",
+ "user.settings.modal.confirmBtns": "Sim, Descartar",
+ "user.settings.modal.confirmMsg": "Você tem alterações não salvas, você tem certeza que quer descartar elas?",
+ "user.settings.modal.confirmTitle": "Descartar alterações?",
+ "user.settings.modal.developer": "Desenvolvedor",
+ "user.settings.modal.display": "Exibir",
+ "user.settings.modal.general": "Geral",
+ "user.settings.modal.integrations": "Integrações",
+ "user.settings.modal.notifications": "Notificações",
+ "user.settings.modal.security": "Segurança",
+ "user.settings.modal.title": "Definições de Conta",
+ "user.settings.notification.allActivity": "Para todas atividades",
+ "user.settings.notification.soundConfig": "Por favor configurar sons de notificações nas configurações do seu navegador",
+ "user.settings.notifications.channelWide": "Menção para todo canal \"@channel\"",
+ "user.settings.notifications.close": "Fechar",
+ "user.settings.notifications.desktop": "Enviar notificações de desktop",
+ "user.settings.notifications.desktopSounds": "Som de notificação no Desktop",
+ "user.settings.notifications.emailInfo": "Notificações de e-mail são enviadas por menções e mensagens diretas, depois de ter ficado offline por mais de 60 segundos ou longe do {siteName} por mais de 5 minutos.",
+ "user.settings.notifications.emailNotifications": "Notificações por email",
+ "user.settings.notifications.header": "Notificações",
+ "user.settings.notifications.info": "Notificações na área de trabalho estão disponíveis no Firefox, Safari, Chrome, Internet Explorer, e Edge.",
+ "user.settings.notifications.never": "Nunca",
+ "user.settings.notifications.noWords": "Nenhuma palavra configurada",
+ "user.settings.notifications.off": "Desligado",
+ "user.settings.notifications.on": "Ligado",
+ "user.settings.notifications.onlyMentions": "Somente para menções e mensagens diretas",
+ "user.settings.notifications.sensitiveName": "Seu primeiro nome sensível a maiúsculas e minúsculas \"{first_name}\"",
+ "user.settings.notifications.sensitiveUsername": "Seu usuário não sensível a maiúsculas \"{username}\"",
+ "user.settings.notifications.sensitiveWords": "Outras palavras não sensível a maiúscula, separadas por virgulas:",
+ "user.settings.notifications.sounds_info": "Notificações na área de trabalho estão disponíveis no Firefox, Safari, Chrome, Internet Explorer, e Edge.",
+ "user.settings.notifications.teamWide": "Mencionar toda a equipe \"@all\"",
+ "user.settings.notifications.title": "Configurações de Notificação",
+ "user.settings.notifications.usernameMention": "Seu usuário mencionado \"@{username}\"",
+ "user.settings.notifications.wordsTrigger": "Palavras que desencadeiam menções",
+ "user.settings.security.close": "Fechar",
+ "user.settings.security.currentPassword": "Senha Atual",
+ "user.settings.security.currentPasswordError": "Por favor entre sua senha atual",
+ "user.settings.security.emailPwd": "Email e Senha",
+ "user.settings.security.gitlab": "GitLab SSO",
+ "user.settings.security.lastUpdated": "Última atualização {date} {time}",
+ "user.settings.security.logoutActiveSessions": "Ver e fazer Logout das Sessões Ativas",
+ "user.settings.security.method": "Método de Login",
+ "user.settings.security.newPassword": "Nova Senha",
+ "user.settings.security.oneSignin": "Você pode ter somente um método de inscrição por vez. Trocando o método de inscrição será enviado um email de notificação se você alterar com sucesso.",
+ "user.settings.security.password": "Senha",
+ "user.settings.security.passwordLengthError": "Novas senhas precisam ter pelo menos {chars} characters",
+ "user.settings.security.passwordMatchError": "As novas senhas que você inseriu não correspondem",
+ "user.settings.security.retypePassword": "Digite Novamente a nova Senha",
+ "user.settings.security.switchEmail": "Trocar para usar email e senha",
+ "user.settings.security.switchGitlab": "Trocar para usar GitLab SSO",
+ "user.settings.security.switchGoogle": "Trocar para usar Google SSO",
+ "user.settings.security.title": "Configurações de Segurança",
+ "user.settings.security.viewHistory": "Ver Histórico de Acesso",
+ "user_profile.notShared": "E-mail não compartilhado",
+ "view_image.loading": "Carregando ",
+ "view_image_popover.download": "Download",
+ "view_image_popover.file": "Arquivo {count} de {total}",
+ "view_image_popover.publicLink": "Obter O Link Público"
+}
diff --git a/web/templates/head.html b/web/templates/head.html
index 3a1439ab0..61b1aa12b 100644
--- a/web/templates/head.html
+++ b/web/templates/head.html
@@ -44,12 +44,14 @@
<script src="/static/js/intl-1.0.0/Intl.js"></script>
<script src="/static/js/intl-1.0.0/locale-data/jsonp/en.js"></script>
<script src="/static/js/intl-1.0.0/locale-data/jsonp/es.js"></script>
+ <script src="/static/js/intl-1.0.0/locale-data/jsonp/pt.js"></script>
<script src="/static/js/react-0.14.3.js"></script>
<script src="/static/js/react-dom-0.14.3.js"></script>
<script src="/static/js/react-intl-2.0.0-beta-2/react-intl.js"></script>
<script src="/static/js/react-intl-2.0.0-beta-2/locale-data/en.js"></script>
<script src="/static/js/react-intl-2.0.0-beta-2/locale-data/es.js"></script>
+ <script src="/static/js/react-intl-2.0.0-beta-2/locale-data/pt.js"></script>
<script src="/static/js/jquery-2.1.4.js"></script>
<script src="/static/js/bootstrap-3.3.5.js"></script>
<script src="/static/js/bootstrap-colorpicker.min.js"></script>