diff --git a/frontend/check-locales.cjs b/frontend/check-locales.cjs index 240b300cc..4ad642bbc 100755 --- a/frontend/check-locales.cjs +++ b/frontend/check-locales.cjs @@ -18,6 +18,7 @@ const allLocales = [ ["sk", "sk-SK"], ["vi", "vi-VN"], ["zh", "zh-CN"], + ["pt-br", "pt-BR"], ["ko", "ko-KR"], ["bg", "bg-BG"], ]; diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index d38df0d45..0eafb92f1 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -7,6 +7,7 @@ import langJa from "./lang/ja.json"; import langList from "./lang/lang-list.json"; import langNl from "./lang/nl.json"; import langPl from "./lang/pl.json"; +import langPt from "./lang/pt-br.json"; import langRu from "./lang/ru.json"; import langSk from "./lang/sk.json"; import langVi from "./lang/vi.json"; @@ -25,6 +26,7 @@ const localeOptions = [ ["it", "it-IT", langIt], ["nl", "nl-NL", langNl], ["pl", "pl-PL", langPl], + ["pt-br", "pt-BR", langPt], ["ru", "ru-RU", langRu], ["sk", "sk-SK", langSk], ["vi", "vi-VN", langVi], @@ -34,7 +36,14 @@ const localeOptions = [ ]; const loadMessages = (locale?: string): typeof langList & typeof langEn => { - const thisLocale = (locale || "en").slice(0, 2); + // Try to find an exact match first + let thisLocale = locale || "en"; + if (localeOptions.some(([code]) => code === thisLocale)) { + return Object.assign({}, langList, langEn, localeOptions.find(([code]) => code === thisLocale)?.[2]); + } + + // Fallback to 2-char code + thisLocale = (locale || "en").slice(0, 2); // ensure this lang exists in localeOptions above, otherwise fallback to en if (thisLocale === "en" || !localeOptions.some(([code]) => code === thisLocale)) { @@ -52,6 +61,8 @@ const getFlagCodeForLocale = (locale?: string) => { ja: "jp", // Japan zh: "cn", // China vi: "vn", // Vietnam + pt: "br", // Brazil + "pt-br": "br", // Brazil ko: "kr", // Korea }; diff --git a/frontend/src/locale/src/HelpDoc/index.ts b/frontend/src/locale/src/HelpDoc/index.ts index f70dff698..0e608d0ba 100644 --- a/frontend/src/locale/src/HelpDoc/index.ts +++ b/frontend/src/locale/src/HelpDoc/index.ts @@ -4,6 +4,7 @@ import * as it from "./it/index"; import * as ja from "./ja/index"; import * as nl from "./nl/index"; import * as pl from "./pl/index"; +import * as pt_br from "./pt-br/index"; import * as ru from "./ru/index"; import * as sk from "./sk/index"; import * as vi from "./vi/index"; @@ -11,6 +12,7 @@ import * as zh from "./zh/index"; import * as ko from "./ko/index"; import * as bg from "./bg/index"; +const items: any = { en, de, ja, sk, zh, pl, "pt-br": pt_br, ru, it, vi, nl }; const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl, bg, ko }; const fallbackLang = "en"; diff --git a/frontend/src/locale/src/HelpDoc/pt-br/AccessLists.md b/frontend/src/locale/src/HelpDoc/pt-br/AccessLists.md new file mode 100644 index 000000000..6d15db530 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/AccessLists.md @@ -0,0 +1,7 @@ +## O que é uma Lista de Acesso? + +Listas de Acesso fornecem uma lista negra ou lista branca de endereços IP de clientes específicos, juntamente com autenticação para os Hosts Proxy via Autenticação Básica HTTP. + +Você pode configurar várias regras de cliente, nomes de usuário e senhas para uma única Lista de Acesso e, em seguida, aplicá-la a um ou mais _Hosts Proxy_. + +Isso é mais útil para serviços web encaminhados que não possuem mecanismos de autenticação integrados ou quando você deseja proteger contra clientes desconhecidos. diff --git a/frontend/src/locale/src/HelpDoc/pt-br/Certificates.md b/frontend/src/locale/src/HelpDoc/pt-br/Certificates.md new file mode 100644 index 000000000..fbd880f04 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/Certificates.md @@ -0,0 +1,32 @@ +## Ajuda sobre Certificados + +### Certificado HTTP + +Um certificado validado por HTTP significa que os servidores da Let's Encrypt tentarão +alcançar seus domínios via HTTP (não HTTPS!) e, se bem-sucedidos, eles +emitirão seu certificado. + +Para este método, você deve ter um _Host Proxy_ criado para seu(s) domínio(s) que +seja acessível via HTTP e aponte para esta instalação do Nginx. Após um certificado +ter sido concedido, você pode modificar o _Host Proxy_ para também usar este certificado para conexões HTTPS. +No entanto, o _Host Proxy_ ainda precisará ser configurado para acesso HTTP +para que o certificado seja renovado. + +Este processo _não_ suporta domínios curinga (wildcard). + +### Certificado DNS + +Um certificado validado por DNS requer que você use um plugin de Provedor DNS. Este Provedor +DNS será usado para criar registros temporários em seu domínio e, em seguida, a Let's +Encrypt consultará esses registros para ter certeza de que você é o proprietário e, se bem-sucedido, eles +emitirão seu certificado. + +Você não precisa que um _Host Proxy_ seja criado antes de solicitar este tipo de +certificado. Nem precisa ter seu _Host Proxy_ configurado para acesso HTTP. + +Este processo _suporta_ domínios curinga (wildcard). + +### Certificado Personalizado + +Use esta opção para enviar seu próprio Certificado SSL, conforme fornecido por sua própria +Autoridade de Certificação. diff --git a/frontend/src/locale/src/HelpDoc/pt-br/DeadHosts.md b/frontend/src/locale/src/HelpDoc/pt-br/DeadHosts.md new file mode 100644 index 000000000..e6c600733 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/DeadHosts.md @@ -0,0 +1,10 @@ +## O que é um Host 404? + +Um Host 404 é simplesmente uma configuração de host que mostra uma página 404. + +Isso pode ser útil quando seu domínio está listado em mecanismos de busca e você deseja +fornecer uma página de erro mais agradável ou especificamente para informar aos indexadores de busca que +as páginas do domínio não existem mais. + +Outro benefício de ter este host é rastrear os logs de acessos a ele e +ver os referenciadores. diff --git a/frontend/src/locale/src/HelpDoc/pt-br/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/pt-br/ProxyHosts.md new file mode 100644 index 000000000..1c880e67d --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/ProxyHosts.md @@ -0,0 +1,7 @@ +## O que é um Host Proxy? + +Um Host Proxy é o ponto de entrada para um serviço web que você deseja encaminhar. + +Ele fornece terminação SSL opcional para seu serviço que pode não ter suporte a SSL integrado. + +Hosts Proxy são o uso mais comum para o Nginx Proxy Manager. diff --git a/frontend/src/locale/src/HelpDoc/pt-br/RedirectionHosts.md b/frontend/src/locale/src/HelpDoc/pt-br/RedirectionHosts.md new file mode 100644 index 000000000..5db32ad4a --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/RedirectionHosts.md @@ -0,0 +1,7 @@ +## O que é um Host de Redirecionamento? + +Um Host de Redirecionamento redirecionará as solicitações do domínio de entrada e enviará o +visualizador para outro domínio. + +A razão mais comum para usar este tipo de host é quando seu site muda de +domínio, mas você ainda tem links de mecanismos de busca ou referenciadores apontando para o domínio antigo. diff --git a/frontend/src/locale/src/HelpDoc/pt-br/Streams.md b/frontend/src/locale/src/HelpDoc/pt-br/Streams.md new file mode 100644 index 000000000..56549685c --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/Streams.md @@ -0,0 +1,6 @@ +## O que é um Stream? + +Um recurso relativamente novo para o Nginx, um Stream servirá para encaminhar tráfego TCP/UDP +diretamente para outro computador na rede. + +Se você estiver executando servidores de jogos, servidores FTP ou SSH, isso pode ser útil. diff --git a/frontend/src/locale/src/HelpDoc/pt-br/index.ts b/frontend/src/locale/src/HelpDoc/pt-br/index.ts new file mode 100644 index 000000000..a9bb46ba7 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt-br/index.ts @@ -0,0 +1,6 @@ +export * as AccessLists from "./AccessLists.md"; +export * as Certificates from "./Certificates.md"; +export * as DeadHosts from "./DeadHosts.md"; +export * as ProxyHosts from "./ProxyHosts.md"; +export * as RedirectionHosts from "./RedirectionHosts.md"; +export * as Streams from "./Streams.md"; diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index 520eef247..ea3e54538 100755 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -32,10 +32,13 @@ "locale-nl-NL": { "defaultMessage": "Nederlands" }, + "locale-pt-BR": { + "defaultMessage": "Português (Brasil)" + }, "locale-ko-KR": { "defaultMessage": "한국어" }, "locale-bg-BG": { "defaultMessage": "Български" } -} +} \ No newline at end of file diff --git a/frontend/src/locale/src/pt-br.json b/frontend/src/locale/src/pt-br.json new file mode 100644 index 000000000..abf63add5 --- /dev/null +++ b/frontend/src/locale/src/pt-br.json @@ -0,0 +1,686 @@ +{ + "access-list": { + "defaultMessage": "Lista de Acesso" + }, + "access-list.access-count": { + "defaultMessage": "{count} {count, plural, one {Regra} other {Regras}}" + }, + "access-list.auth-count": { + "defaultMessage": "{count} {count, plural, one {Usuário} other {Usuários}}" + }, + "access-list.help-rules-last": { + "defaultMessage": "Quando existir pelo menos 1 regra, esta regra de negar tudo será adicionada por último" + }, + "access-list.help.rules-order": { + "defaultMessage": "Observe que as diretivas de permitir e negar serão aplicadas na ordem em que forem definidas." + }, + "access-list.pass-auth": { + "defaultMessage": "Passar Autenticação ao Upstream" + }, + "access-list.public": { + "defaultMessage": "Acesso Público" + }, + "access-list.public.subtitle": { + "defaultMessage": "Nenhuma autenticação básica necessária" + }, + "access-list.rule-source.placeholder": { + "defaultMessage": "192.168.1.100 ou 192.168.1.0/24 ou 2001:0db8::/32" + }, + "access-list.satisfy-any": { + "defaultMessage": "Satisfazer Qualquer" + }, + "access-list.subtitle": { + "defaultMessage": "{users} {users, plural, one {Usuário} other {Usuários}}, {rules} {rules, plural, one {Regra} other {Regras}} - Criado: {date}" + }, + "access-lists": { + "defaultMessage": "Listas de Acesso" + }, + "action.add": { + "defaultMessage": "Adicionar" + }, + "action.add-location": { + "defaultMessage": "Adicionar Local" + }, + "action.allow": { + "defaultMessage": "Permitir" + }, + "action.clone": { + "defaultMessage": "Clonar" + }, + "action.close": { + "defaultMessage": "Fechar" + }, + "action.delete": { + "defaultMessage": "Excluir" + }, + "action.deny": { + "defaultMessage": "Negar" + }, + "action.disable": { + "defaultMessage": "Desativar" + }, + "action.download": { + "defaultMessage": "Baixar" + }, + "action.edit": { + "defaultMessage": "Editar" + }, + "action.enable": { + "defaultMessage": "Ativar" + }, + "action.permissions": { + "defaultMessage": "Permissões" + }, + "action.renew": { + "defaultMessage": "Renovar" + }, + "action.view-details": { + "defaultMessage": "Ver Detalhes" + }, + "auditlogs": { + "defaultMessage": "Logs de Auditoria" + }, + "auto": { + "defaultMessage": "Automático" + }, + "cancel": { + "defaultMessage": "Cancelar" + }, + "certificate": { + "defaultMessage": "Certificado" + }, + "certificate.custom-certificate": { + "defaultMessage": "Certificado" + }, + "certificate.custom-certificate-key": { + "defaultMessage": "Chave do Certificado" + }, + "certificate.custom-intermediate": { + "defaultMessage": "Certificado Intermediário" + }, + "certificate.in-use": { + "defaultMessage": "Em Uso" + }, + "certificate.none.subtitle": { + "defaultMessage": "Nenhum certificado atribuído" + }, + "certificate.none.subtitle.for-http": { + "defaultMessage": "Este host não utilizará HTTPS" + }, + "certificate.none.title": { + "defaultMessage": "Nenhum" + }, + "certificate.not-in-use": { + "defaultMessage": "Não Utilizado" + }, + "certificate.renew": { + "defaultMessage": "Renovar Certificado" + }, + "certificates": { + "defaultMessage": "Certificados" + }, + "certificates.custom": { + "defaultMessage": "Certificado Personalizado" + }, + "certificates.custom.warning": { + "defaultMessage": "Arquivos de chave protegidos com senha não são suportados." + }, + "certificates.dns.credentials": { + "defaultMessage": "Conteúdo do Arquivo de Credenciais" + }, + "certificates.dns.credentials-note": { + "defaultMessage": "Este plugin requer um arquivo de configuração contendo um token de API ou outras credenciais do seu provedor" + }, + "certificates.dns.credentials-warning": { + "defaultMessage": "Esses dados serão armazenados como texto simples no banco de dados e em um arquivo!" + }, + "certificates.dns.propagation-seconds": { + "defaultMessage": "Segundos de Propagação" + }, + "certificates.dns.propagation-seconds-note": { + "defaultMessage": "Deixe vazio para usar o valor padrão do plugin. Número de segundos para aguardar a propagação DNS." + }, + "certificates.dns.provider": { + "defaultMessage": "Provedor DNS" + }, + "certificates.dns.provider.placeholder": { + "defaultMessage": "Selecione um Provedor..." + }, + "certificates.dns.warning": { + "defaultMessage": "Esta seção requer conhecimento sobre o Certbot e seus plugins DNS. Consulte a documentação do plugin." + }, + "certificates.http.reachability-404": { + "defaultMessage": "Há um servidor neste domínio, mas ele não parece ser o Nginx Proxy Manager. Verifique se seu domínio aponta para o IP onde sua instância NPM está rodando." + }, + "certificates.http.reachability-failed-to-check": { + "defaultMessage": "Falha ao verificar a acessibilidade devido a erro de comunicação com site24x7.com." + }, + "certificates.http.reachability-not-resolved": { + "defaultMessage": "Não há servidor disponível neste domínio. Verifique se seu domínio existe e aponta para o IP onde sua instância NPM está rodando e, se necessário, se a porta 80 está encaminhada no seu roteador." + }, + "certificates.http.reachability-ok": { + "defaultMessage": "Seu servidor está acessível e deve ser possível criar certificados." + }, + "certificates.http.reachability-other": { + "defaultMessage": "Há um servidor neste domínio, mas ele retornou um código inesperado {code}. É o servidor NPM? Verifique se o domínio aponta para o IP correto." + }, + "certificates.http.reachability-wrong-data": { + "defaultMessage": "Há um servidor neste domínio, mas ele retornou dados inesperados. É o servidor NPM? Verifique se o domínio aponta para o IP correto." + }, + "certificates.http.test-results": { + "defaultMessage": "Resultados do Teste" + }, + "certificates.http.warning": { + "defaultMessage": "Esses domínios devem estar previamente configurados para apontar para esta instalação." + }, + "certificates.request.subtitle": { + "defaultMessage": "com Let's Encrypt" + }, + "certificates.request.title": { + "defaultMessage": "Solicitar Novo Certificado" + }, + "column.access": { + "defaultMessage": "Acesso" + }, + "column.authorization": { + "defaultMessage": "Autorização" + }, + "column.authorizations": { + "defaultMessage": "Autorizações" + }, + "column.custom-locations": { + "defaultMessage": "Locais Personalizados" + }, + "column.destination": { + "defaultMessage": "Destino" + }, + "column.details": { + "defaultMessage": "Detalhes" + }, + "column.email": { + "defaultMessage": "E-mail" + }, + "column.event": { + "defaultMessage": "Evento" + }, + "column.expires": { + "defaultMessage": "Expira" + }, + "column.http-code": { + "defaultMessage": "Código HTTP" + }, + "column.incoming-port": { + "defaultMessage": "Porta de Entrada" + }, + "column.name": { + "defaultMessage": "Nome" + }, + "column.protocol": { + "defaultMessage": "Protocolo" + }, + "column.provider": { + "defaultMessage": "Provedor" + }, + "column.roles": { + "defaultMessage": "Funções" + }, + "column.rules": { + "defaultMessage": "Regras" + }, + "column.satisfy": { + "defaultMessage": "Satisfazer" + }, + "column.satisfy-all": { + "defaultMessage": "Todos" + }, + "column.satisfy-any": { + "defaultMessage": "Qualquer" + }, + "column.scheme": { + "defaultMessage": "Esquema" + }, + "column.source": { + "defaultMessage": "Origem" + }, + "column.ssl": { + "defaultMessage": "SSL" + }, + "column.status": { + "defaultMessage": "Status" + }, + "created-on": { + "defaultMessage": "Criado: {date}" + }, + "dashboard": { + "defaultMessage": "Painel" + }, + "dead-host": { + "defaultMessage": "Host 404" + }, + "dead-hosts": { + "defaultMessage": "Hosts 404" + }, + "dead-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Host 404} other {Hosts 404}}" + }, + "disabled": { + "defaultMessage": "Desativado" + }, + "domain-names": { + "defaultMessage": "Nomes de Domínio" + }, + "domain-names.max": { + "defaultMessage": "Máximo de {count} nomes de domínio" + }, + "domain-names.placeholder": { + "defaultMessage": "Comece a digitar para adicionar um domínio..." + }, + "domain-names.wildcards-not-permitted": { + "defaultMessage": "Curingas não são permitidos para este tipo" + }, + "domain-names.wildcards-not-supported": { + "defaultMessage": "Curingas não são suportados por esta AC" + }, + "domains.force-ssl": { + "defaultMessage": "Forçar SSL" + }, + "domains.hsts-enabled": { + "defaultMessage": "HSTS Ativado" + }, + "domains.hsts-subdomains": { + "defaultMessage": "HSTS Subdomínios" + }, + "domains.http2-support": { + "defaultMessage": "Suporte a HTTP/2" + }, + "domains.use-dns": { + "defaultMessage": "Usar Desafio DNS" + }, + "email-address": { + "defaultMessage": "Endereço de e-mail" + }, + "empty-search": { + "defaultMessage": "Nenhum resultado encontrado" + }, + "empty-subtitle": { + "defaultMessage": "Que tal criar um?" + }, + "enabled": { + "defaultMessage": "Ativado" + }, + "error.access.at-least-one": { + "defaultMessage": "É necessária ao menos uma Autorização ou uma Regra de Acesso" + }, + "error.access.duplicate-usernames": { + "defaultMessage": "Nomes de usuário de autorização devem ser únicos" + }, + "error.invalid-auth": { + "defaultMessage": "E-mail ou senha inválidos" + }, + "error.invalid-domain": { + "defaultMessage": "Domínio inválido: {domain}" + }, + "error.invalid-email": { + "defaultMessage": "Endereço de e-mail inválido" + }, + "error.max-character-length": { + "defaultMessage": "O tamanho máximo é {max} caractere{max, plural, one {} other {s}}" + }, + "error.max-domains": { + "defaultMessage": "Domínios demais, o máximo é {max}" + }, + "error.maximum": { + "defaultMessage": "O máximo é {max}" + }, + "error.min-character-length": { + "defaultMessage": "O tamanho mínimo é {min} caractere{min, plural, one {} other {s}}" + }, + "error.minimum": { + "defaultMessage": "O mínimo é {min}" + }, + "error.passwords-must-match": { + "defaultMessage": "As senhas devem coincidir" + }, + "error.required": { + "defaultMessage": "Este campo é obrigatório" + }, + "expires.on": { + "defaultMessage": "Expira: {date}" + }, + "footer.github-fork": { + "defaultMessage": "Faça um fork no Github" + }, + "host.flags.block-exploits": { + "defaultMessage": "Bloquear Exploits Comuns" + }, + "host.flags.cache-assets": { + "defaultMessage": "Cachear Arquivos" + }, + "host.flags.preserve-path": { + "defaultMessage": "Preservar Caminho" + }, + "host.flags.protocols": { + "defaultMessage": "Protocolos" + }, + "host.flags.websockets-upgrade": { + "defaultMessage": "Suporte a Websockets" + }, + "host.forward-port": { + "defaultMessage": "Porta de Encaminhamento" + }, + "host.forward-scheme": { + "defaultMessage": "Esquema" + }, + "hosts": { + "defaultMessage": "Hosts" + }, + "http-only": { + "defaultMessage": "Apenas HTTP" + }, + "lets-encrypt": { + "defaultMessage": "Let's Encrypt" + }, + "lets-encrypt-via-dns": { + "defaultMessage": "Let's Encrypt via DNS" + }, + "lets-encrypt-via-http": { + "defaultMessage": "Let's Encrypt via HTTP" + }, + "loading": { + "defaultMessage": "Carregando…" + }, + "login.title": { + "defaultMessage": "Entre na sua conta" + }, + "nginx-config.label": { + "defaultMessage": "Configuração Personalizada do Nginx" + }, + "nginx-config.placeholder": { + "defaultMessage": "# Insira sua configuração personalizada do Nginx aqui por sua conta e risco!" + }, + "no-permission-error": { + "defaultMessage": "Você não tem permissão para visualizar isto." + }, + "notfound.action": { + "defaultMessage": "Voltar para o início" + }, + "notfound.content": { + "defaultMessage": "Desculpe, mas a página que você procura não foi encontrada" + }, + "notfound.title": { + "defaultMessage": "Ops… Você encontrou uma página de erro" + }, + "notification.error": { + "defaultMessage": "Erro" + }, + "notification.object-deleted": { + "defaultMessage": "{object} foi excluído" + }, + "notification.object-disabled": { + "defaultMessage": "{object} foi desativado" + }, + "notification.object-enabled": { + "defaultMessage": "{object} foi ativado" + }, + "notification.object-renewed": { + "defaultMessage": "{object} foi renovado" + }, + "notification.object-saved": { + "defaultMessage": "{object} foi salvo" + }, + "notification.success": { + "defaultMessage": "Sucesso" + }, + "object.actions-title": { + "defaultMessage": "{object} #{id}" + }, + "object.add": { + "defaultMessage": "Adicionar {object}" + }, + "object.delete": { + "defaultMessage": "Excluir {object}" + }, + "object.delete.content": { + "defaultMessage": "Tem certeza de que deseja excluir este {object}?" + }, + "object.edit": { + "defaultMessage": "Editar {object}" + }, + "object.empty": { + "defaultMessage": "Não há {objects}" + }, + "object.event.created": { + "defaultMessage": "Criado {object}" + }, + "object.event.deleted": { + "defaultMessage": "Excluído {object}" + }, + "object.event.disabled": { + "defaultMessage": "Desativado {object}" + }, + "object.event.enabled": { + "defaultMessage": "Ativado {object}" + }, + "object.event.renewed": { + "defaultMessage": "Renovado {object}" + }, + "object.event.updated": { + "defaultMessage": "Atualizado {object}" + }, + "offline": { + "defaultMessage": "Offline" + }, + "online": { + "defaultMessage": "Online" + }, + "options": { + "defaultMessage": "Opções" + }, + "password": { + "defaultMessage": "Senha" + }, + "password.generate": { + "defaultMessage": "Gerar senha aleatória" + }, + "password.hide": { + "defaultMessage": "Ocultar Senha" + }, + "password.show": { + "defaultMessage": "Mostrar Senha" + }, + "permissions.hidden": { + "defaultMessage": "Oculto" + }, + "permissions.manage": { + "defaultMessage": "Gerenciar" + }, + "permissions.view": { + "defaultMessage": "Apenas Visualizar" + }, + "permissions.visibility.all": { + "defaultMessage": "Todos os Itens" + }, + "permissions.visibility.title": { + "defaultMessage": "Visibilidade do Item" + }, + "permissions.visibility.user": { + "defaultMessage": "Apenas Itens Criados" + }, + "proxy-host": { + "defaultMessage": "Host Proxy" + }, + "proxy-host.forward-host": { + "defaultMessage": "Hostname/IP de Encaminhamento" + }, + "proxy-hosts": { + "defaultMessage": "Hosts Proxy" + }, + "proxy-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Host Proxy} other {Hosts Proxy}}" + }, + "public": { + "defaultMessage": "Público" + }, + "redirection-host": { + "defaultMessage": "Host de Redirecionamento" + }, + "redirection-host.forward-domain": { + "defaultMessage": "Domínio de Encaminhamento" + }, + "redirection-host.forward-http-code": { + "defaultMessage": "Código HTTP" + }, + "redirection-hosts": { + "defaultMessage": "Hosts de Redirecionamento" + }, + "redirection-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Host de Redirecionamento} other {Hosts de Redirecionamento}}" + }, + "redirection-hosts.http-code.300": { + "defaultMessage": "300 Múltiplas Escolhas" + }, + "redirection-hosts.http-code.301": { + "defaultMessage": "301 Movido Permanentemente" + }, + "redirection-hosts.http-code.302": { + "defaultMessage": "302 Movido Temporariamente" + }, + "redirection-hosts.http-code.303": { + "defaultMessage": "303 Ver Outro" + }, + "redirection-hosts.http-code.307": { + "defaultMessage": "307 Redirecionamento Temporário" + }, + "redirection-hosts.http-code.308": { + "defaultMessage": "308 Redirecionamento Permanente" + }, + "role.admin": { + "defaultMessage": "Administrador" + }, + "role.standard-user": { + "defaultMessage": "Usuário Padrão" + }, + "save": { + "defaultMessage": "Salvar" + }, + "setting": { + "defaultMessage": "Configuração" + }, + "settings": { + "defaultMessage": "Configurações" + }, + "settings.default-site": { + "defaultMessage": "Site Padrão" + }, + "settings.default-site.404": { + "defaultMessage": "Página 404" + }, + "settings.default-site.444": { + "defaultMessage": "Sem Resposta (444)" + }, + "settings.default-site.congratulations": { + "defaultMessage": "Página de Parabéns" + }, + "settings.default-site.description": { + "defaultMessage": "O que exibir quando o Nginx receber um Host desconhecido" + }, + "settings.default-site.html": { + "defaultMessage": "HTML Personalizado" + }, + "settings.default-site.html.placeholder": { + "defaultMessage": "" + }, + "settings.default-site.redirect": { + "defaultMessage": "Redirecionar" + }, + "setup.preamble": { + "defaultMessage": "Comece criando sua conta de administrador." + }, + "setup.title": { + "defaultMessage": "Bem-vindo!" + }, + "sign-in": { + "defaultMessage": "Entrar" + }, + "ssl-certificate": { + "defaultMessage": "Certificado SSL" + }, + "stream": { + "defaultMessage": "Stream" + }, + "stream.forward-host": { + "defaultMessage": "Host de Encaminhamento" + }, + "stream.forward-host.placeholder": { + "defaultMessage": "example.com ou 10.0.0.1 ou 2001:db8:3333:4444:5555:6666:7777:8888" + }, + "stream.incoming-port": { + "defaultMessage": "Porta de Entrada" + }, + "streams": { + "defaultMessage": "Streams" + }, + "streams.count": { + "defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}" + }, + "streams.tcp": { + "defaultMessage": "TCP" + }, + "streams.udp": { + "defaultMessage": "UDP" + }, + "test": { + "defaultMessage": "Testar" + }, + "update-available": { + "defaultMessage": "Atualização Disponível: {latestVersion}" + }, + "user": { + "defaultMessage": "Usuário" + }, + "user.change-password": { + "defaultMessage": "Alterar Senha" + }, + "user.confirm-password": { + "defaultMessage": "Confirmar Senha" + }, + "user.current-password": { + "defaultMessage": "Senha Atual" + }, + "user.edit-profile": { + "defaultMessage": "Editar Perfil" + }, + "user.full-name": { + "defaultMessage": "Nome Completo" + }, + "user.login-as": { + "defaultMessage": "Entrar como {name}" + }, + "user.logout": { + "defaultMessage": "Sair" + }, + "user.new-password": { + "defaultMessage": "Nova Senha" + }, + "user.nickname": { + "defaultMessage": "Apelido" + }, + "user.set-password": { + "defaultMessage": "Definir Senha" + }, + "user.set-permissions": { + "defaultMessage": "Definir Permissões para {name}" + }, + "user.switch-dark": { + "defaultMessage": "Mudar para modo Escuro" + }, + "user.switch-light": { + "defaultMessage": "Mudar para modo Claro" + }, + "username": { + "defaultMessage": "Nome de Usuário" + }, + "users": { + "defaultMessage": "Usuários" + } +}