diff options
-rw-r--r-- | options/locale/locale_fr-FR.ini | 1 | ||||
-rw-r--r-- | options/locale/locale_pt-PT.ini | 171 | ||||
-rw-r--r-- | routers/api/v1/repo/action.go | 30 | ||||
-rw-r--r-- | templates/repo/issue/view_content/conversation.tmpl | 2 | ||||
-rw-r--r-- | tests/integration/api_actions_run_test.go (renamed from tests/integration/api_actions_delete_run_test.go) | 38 |
5 files changed, 231 insertions, 11 deletions
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 6f0008af67..3ea317f96e 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -1322,6 +1322,7 @@ commit_graph.color=Couleur commit.contained_in=Cette révision appartient à : commit.contained_in_default_branch=Cette révision appartient à la branche par défaut commit.load_referencing_branches_and_tags=Charger les branches et étiquettes référençant cette révision +commit.merged_in_pr=Cette révision a été fusionnée dans la demande d’ajour %s. blame=Annotations download_file=Télécharger le fichier normal_view=Vue normale diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index 2b96ed5102..099d4a7816 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -44,6 +44,7 @@ webauthn_use_twofa=Usar um código de dois passos do seu telefone webauthn_error=Não foi possível ler a sua chave de segurança. webauthn_unsupported_browser=O seu navegador não oferece suporte ao WebAuthn. webauthn_error_unknown=Ocorreu um erro desconhecido. Tente novamente, por favor. +webauthn_error_insecure=WebAuthn apenas suporta conexões seguras. Para testar sobre HTTP, pode usar a origem "localhost" ou "127.0.0.1". webauthn_error_unable_to_process=O servidor não conseguiu processar o seu pedido. webauthn_error_duplicated=A chave de segurança não é permitida neste pedido. Certifique-se de que a chave não está já registada. webauthn_error_empty=Tem de definir um nome para esta chave. @@ -167,6 +168,7 @@ no_results_found=Não foram encontrados quaisquer resultados. internal_error_skipped=Ocorreu um erro interno mas foi ignorado: %s [search] +search=Pesquisar… type_tooltip=Tipo de pesquisa fuzzy=Aproximada fuzzy_tooltip=Incluir também os resultados que estejam próximos do termo de pesquisa @@ -176,10 +178,23 @@ regexp=Regexp regexp_tooltip=Incluir apenas os resultados que correspondam ao termo de pesquisa com expressões regulares exact=Fiel exact_tooltip=Incluir somente os resultados que correspondam rigorosamente ao termo de pesquisa +repo_kind=Pesquisar repositórios… +user_kind=Pesquisar utilizadores… +org_kind=Pesquisar organizações… +team_kind=Pesquisar equipas… +code_kind=Pesquisar código-fonte… code_search_unavailable=A pesquisa de código não está disponível, neste momento. Entre em contacto com o administrador. code_search_by_git_grep=Os resultados da pesquisa no código-fonte neste momento são fornecidos pelo "git grep". Esses resultados podem ser melhores se o administrador habilitar o indexador do repositório. +package_kind=Pesquisar pacotes… +project_kind=Pesquisar planeamentos… +branch_kind=Pesquisar ramos… +tag_kind=Pesquisar etiquetas… tag_tooltip=Pesquisar etiquetas correspondentes. Use '%' para corresponder a qualquer sequência de números. +commit_kind=Pesquisar cometimentos… +runner_kind=Pesquisar executores… no_results=Não foram encontrados resultados correspondentes. +issue_kind=Pesquisar questões… +pull_kind=Pesquisar puxadas… keyword_search_unavailable=Pesquisar por palavra-chave não está disponível, neste momento. Entre em contacto com o administrador. [aria] @@ -215,6 +230,8 @@ buttons.enable_monospace_font=Habilitar tipo de letra mono-espaçado buttons.disable_monospace_font=Desabilitar tipo de letra mono-espaçado [filter] +string.asc=A–Z +string.desc=Z–A [error] occurred=Ocorreu um erro @@ -235,6 +252,7 @@ license_desc=Vá buscar <a target="_blank" rel="noopener noreferrer" href="%[1]s [install] install=Instalação +installing_desc=Instalando agora, por favor aguarde… title=Configuração inicial docker_helper=Se correr o Gitea dentro do Docker, leia a <a target="_blank" rel="noopener noreferrer" href="%s">documentação</a> antes de alterar quaisquer configurações. require_db_desc=Gitea requer MySQL, PostgreSQL, MSSQL, SQLite3 ou TiDB (protocolo MySQL). @@ -251,10 +269,16 @@ path=Localização sqlite_helper=Localização do ficheiro da base de dados em SQLite3.<br>Insira um caminho absoluto se corre o Gitea como um serviço. reinstall_error=Está a tentar instalar numa base de dados do Gitea já existente reinstall_confirm_message=Reinstalar com uma base de dados do Gitea já existente pode causar múltiplos problemas. Na maioria dos casos deve usar o seu "app.ini" existente para correr o Gitea. Se souber o que está a fazer, confirme o seguinte: +reinstall_confirm_check_1=Os dados encriptados pela chave secreta (SECRET_KEY) no ficheiro app.ini poderão ser perdidos: os utilizadores poderão não ser capazes de iniciar a sessão com autenticação em dois passos (2FA) ou com chaves de utilização única (OTP) e as réplicas poderão deixar de funcionar adequadamente. Ao marcar esta opção estará a confirmar que o ficheiro app.ini vigente contém a SECRET_KEY certa. +reinstall_confirm_check_2=Os repositórios e as configurações poderão ter de voltar a ser sincronizados. Ao marcar esta opção estará a confirmar que vai voltar a sincronizar manualmente os automatismos para os repositórios e o ficheiro authorized_keys. Estará também a confirmar que vai assegurar que as configurações do repositório e das réplicas estão certas. reinstall_confirm_check_3=Você confirma que tem a certeza absoluta de que este Gitea está a correr com a localização certa do ficheiro app.ini e que tem a certeza de que tem de voltar a instalar. Você confirma que tomou conhecimento dos riscos acima descritos. err_empty_db_path=A localização da base de dados SQLite3 não pode estar vazia. no_admin_and_disable_registration=Não pode desabilitar a auto-inscrição de utilizadores sem criar uma conta de administrador. err_empty_admin_password=A senha do administrador não pode estar em branco. +err_empty_admin_email=O endereço de email do administrador não pode estar em branco. +err_admin_name_is_reserved=O nome de utilizador do administrador é inválido porque está reservado +err_admin_name_pattern_not_allowed=O nome de utilizador do administrador é inválido porque corresponde a um padrão reservado. +err_admin_name_is_invalid=O nome de utilizador do administrador é inválido general_title=Configurações gerais app_name=Título do sítio @@ -270,6 +294,7 @@ domain_helper=Domínio ou endereço do servidor. ssh_port=Porto do servidor SSH ssh_port_helper=O número do porto que o seu servidor SSH usa. Deixe em branco para desabilitar. http_port=Porto de escuta HTTP do Gitea +http_port_helper=O número do porto onde o servidor web do Gitea estará à escuta. app_url=URL base do Gitea app_url_helper=Endereço base para os URLs e notificações por email das clonagens por HTTP(S). log_root_path=Localização dos registos @@ -405,6 +430,8 @@ allow_password_change=Exigir que o utilizador mude a senha (recomendado) reset_password_mail_sent_prompt=Foi enviado um email de confirmação para <b>%s</b>. Verifique a sua caixa de entrada dentro de %s para completar o processo de recuperação. active_your_account=Ponha a sua conta em funcionamento account_activated=A conta foi posta em funcionamento +prohibit_login=Início de sessão proibido +prohibit_login_desc=A sua conta está proibida de iniciar sessão. Contacte o administrador. resent_limit_prompt=Já fez um pedido recentemente para enviar um email para pôr a conta em funcionamento. Espere 3 minutos e tente novamente. has_unconfirmed_mail=Olá %s, tem um endereço de email não confirmado (<b>%s</b>). Se não recebeu um email de confirmação ou precisa de o voltar a enviar, clique no botão abaixo. change_unconfirmed_mail_address=Se o seu endereço de email estiver errado, pode mudá-lo aqui e enviar um novo email de confirmação. @@ -425,6 +452,7 @@ use_scratch_code=Usar um código de recuperação twofa_scratch_used=Você usou o seu código de recuperação. Foi reencaminhado para a página de configurações da autenticação em dois passos para poder remover o registo do seu dispositivo ou gerar um novo código de recuperação. twofa_passcode_incorrect=A senha está errada. Se perdeu o seu dispositivo, use o código de recuperação para iniciar a sessão. twofa_scratch_token_incorrect=O código de recuperação está errado. +twofa_required=Tem de configurar a autenticação em dois passos para obter acesso aos repositórios ou então tentar iniciar a sessão novamente. login_userpass=Iniciar sessão login_openid=OpenID oauth_signup_tab=Fazer inscrição @@ -443,13 +471,17 @@ openid_connect_desc=O URI do OpenID escolhido é desconhecido. Associe-o a uma n openid_register_title=Criar uma conta nova openid_register_desc=O URI do OpenID escolhido é desconhecido. Associe-o a uma nova conta aqui. openid_signin_desc=Insira o seu URI OpenID. Por exemplo: alice.openid.exemplo.org or https://openid.exemplo.org/alice. +disable_forgot_password_mail=A recuperação de conta está desabilitada porque não foi definido um endereço de email. Entre em contacto com o administrador do sítio. +disable_forgot_password_mail_admin=A recuperação de conta só está disponível quando está configurado um endereço de email. email_domain_blacklisted=Não pode fazer um registo com o seu endereço de email. authorize_application=Autorizar aplicação authorize_redirect_notice=Irá ser reencaminhado para %s se autorizar esta aplicação. authorize_application_created_by=Esta aplicação foi criada por %s. +authorize_application_description=Se conceder o acesso, a aplicação terá privilégios para aceder e alterar toda a informação da sua conta, incluindo organizações e repositórios privados. authorize_application_with_scopes=Com âmbitos: %s authorize_title=Autorizar o acesso de "%s" à sua conta? authorization_failed=A autorização falhou +authorization_failed_desc=A autorização falhou porque encontrámos um pedido inválido. Entre em contacto com o responsável pela aplicação que tentou autorizar. sspi_auth_failed=Falhou a autenticação SSPI password_pwned=A senha que escolheu está numa <a target="_blank" rel="noopener noreferrer" href="%s">lista de senhas roubadas</a> anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sítios. password_pwned_err=Não foi possível completar o pedido ao HaveIBeenPwned @@ -513,6 +545,7 @@ release.download.targz=Código fonte (TAR.GZ) repo.transfer.subject_to=%s gostaria de transferir "%s" para %s repo.transfer.subject_to_you=%s gostaria de transferir "%s" para si repo.transfer.to_you=você +repo.transfer.body=Para o aceitar ou rejeitar, visite %s ou ignore-o, simplesmente. repo.collaborator.added.subject=%s adicionou você a %s repo.collaborator.added.text=Foi adicionado(a) como colaborador(a) do repositório: @@ -564,6 +597,7 @@ url_error=`"%s" não é um URL válido.` include_error=` tem que conter o texto "%s".` glob_pattern_error=` o padrão glob é inválido: %s.` regex_pattern_error=` o padrão regex é inválido: %s.` +username_error=` só pode conter caracteres alfanuméricos ('0-9','a-z','A-Z'), hífen ('-'), sublinhado ('_') e ponto ('.') Não pode começar nem terminar com caracteres não alfanuméricos e caracteres não alfanuméricos consecutivos também são proibidos.` invalid_group_team_map_error=` o mapeamento é inválido: %s` unknown_error=Erro desconhecido: captcha_incorrect=O código CAPTCHA está errado. @@ -578,14 +612,17 @@ username_has_not_been_changed=O nome de utilizador não foi modificado repo_name_been_taken=O nome do repositório já foi usado. repository_force_private=Forçar Privado está habilitado: repositórios privados não podem ser tornados públicos. repository_files_already_exist=Já existem ficheiros neste repositório. Contacte o administrador do sistema. +repository_files_already_exist.adopt=Já existem ficheiros neste repositório e só podem ser adoptados. repository_files_already_exist.delete=Já existem ficheiros neste repositório. Tem que os eliminar. repository_files_already_exist.adopt_or_delete=Já existem ficheiros neste repositório. Adopte-os ou elimine-os. visit_rate_limit=Limitação da taxa de visita remota. +2fa_auth_required=A visita remota requer autenticação em dois passos. org_name_been_taken=O nome da organização já foi tomado. team_name_been_taken=O nome da equipa já foi tomado. team_no_units_error=Permitir acesso a pelo menos uma secção do repositório. email_been_used=O endereço de email já está em uso. email_invalid=O endereço de email é inválido. +email_domain_is_not_allowed=O domínio do endereço de email do utilizador <b>%s</b> entra en conflito com o EMAIL_DOMAIN_ALLOWLIST ou com o EMAIL_DOMAIN_BLOCKLIST. Verifique se a operação estava prevista. openid_been_used=O endereço OpenID "%s" já está em uso. username_password_incorrect=O nome de utilizador ou a senha estão errados. password_complexity=A senha não passa nos requisitos de complexidade: @@ -610,8 +647,14 @@ invalid_ssh_key=Não é possível validar a sua chave SSH: %s invalid_gpg_key=Não é possível validar a sua chave GPG: %s invalid_ssh_principal=Protagonista inválido: %s must_use_public_key=A chave que você forneceu é privada. Não carregue a sua chave em lugar nenhum, em vez disso use a sua chave pública. +unable_verify_ssh_key=Não é possível validar a chave SSH. Verifique se tem erros. auth_failed=Falhou a autenticação: %v +still_own_repo=A sua conta possui um ou mais repositórios. Elimine-os ou transfira-os primeiro. +still_has_org=A sua conta é membro de uma ou mais organizações. Saia delas primeiro. +still_own_packages=A sua conta possui um ou mais pacotes. Elimine-os primeiro. +org_still_own_repo=Esta organização ainda possui um ou mais repositórios. Elimine-os ou transfira-os primeiro. +org_still_own_packages=Esta organização ainda possui um ou mais pacotes. Elimine-os primeiro. target_branch_not_exist=O ramo de destino não existe. target_ref_not_exist=A referência de destino não existe %s @@ -642,6 +685,7 @@ settings=Configurações do utilizador form.name_reserved=O nome de utilizador "%s" está reservado. form.name_pattern_not_allowed=O padrão "%s" não é permitido no nome de utilizador. +form.name_chars_not_allowed=O nome de utilizador "%s" contém caracteres inválidos. block.block=Bloquear block.block.user=Bloquear utilizador @@ -658,6 +702,7 @@ block.info_3=enviar-lhe notificações ao @mencionar o seu nome de utilizador block.info_4=convidá-lo/a para ser colaborador/a nos repositórios dele/dela block.info_5=juntar aos favoritos, derivar ou vigiar repositórios block.info_6=abrir e comentar questões ou pedidos de integração +block.info_7=reagir aos seus comentários em questões ou pedidos de integração block.user_to_block=Utilizador a bloquear block.note=Nota block.note.title=Nota opcional: @@ -708,6 +753,7 @@ cancel=Cancelar language=Idioma ui=Tema hidden_comment_types=Tipos de comentários ocultos +hidden_comment_types_description=Os tipos de comentário marcados aqui não serão mostrados nas páginas das questões. Marcar "Rótulo", por exemplo, remove todos os comentários "{utilizador} adicionou/removeu {rótulo}". hidden_comment_types.ref_tooltip=Comentários onde esta questão foi referenciada a partir de outra questão/cometimento/… hidden_comment_types.issue_ref_tooltip=Comentários onde o utilizador altera o ramo/etiqueta associado à questão comment_type_group_reference=Referência @@ -755,12 +801,15 @@ manage_themes=Escolher o tema padrão manage_openid=Gerir endereços OpenID email_desc=O seu endereço de email principal irá ser usado para notificações, recuperação de senha e, desde que não esteja oculto, operações Git baseados na web. theme_desc=Este será o seu tema padrão em todo o sítio. +theme_colorblindness_help=Suporte a temas para daltónicos +theme_colorblindness_prompt=O Gitea apenas tem alguns temas com suporte básico para daltónicos que têm apenas algumas cores definidas. O trabalho ainda está em andamento. Poderiam ser feitos mais melhoramentos se fossem definidas mais cores nos ficheiros CSS do tema. primary=Principal activated=Em uso requires_activation=Tem que ser habilitado primary_email=Tornar no principal activate_email=Enviar pedido de verificação activations_pending=Habilitações pendentes +can_not_add_email_activations_pending=Existe uma validação pendente. Tente de novo dentro de alguns minutos, se quiser adicionar um novo endereço de email. delete_email=Remover email_deletion=Remover endereço de email email_deletion_desc=Este endereço de email e informações relacionadas serão removidos da sua conta. Os cometimentos feitos no Git com este endereço de email permanecerão inalterados. Quer continuar? @@ -806,6 +855,7 @@ gpg_key_matched_identities_long=As identidades incorporadas nesta chave correspo gpg_key_verified=Chave validada gpg_key_verified_long=A chave foi validada com um código e pode ser usada para validar cometimentos que correspondam a qualquer dos endereços de email em uso por parte deste utilizador, para além das identidades correspondentes a esta chave. gpg_key_verify=Validar +gpg_invalid_token_signature=A chave GPG, assinatura ou código fornecidos não correspondem, ou então o código expirou. gpg_token_required=Tem que fornecer uma assinatura para o código abaixo gpg_token=Código gpg_token_help=Pode gerar uma assinatura usando o seguinte comando: @@ -815,6 +865,7 @@ verify_gpg_key_success=A chave GPG "%s" foi validada. ssh_key_verified=Chave validada ssh_key_verified_long=A chave foi validada com um código e pode ser usada para validar cometimentos que correspondam a qualquer dos endereços de email em uso por parte deste utilizador. ssh_key_verify=Validar +ssh_invalid_token_signature=A chave SSH, assinatura ou código fornecidos não correspondem, ou então o código expirou. ssh_token_required=Tem que fornecer uma assinatura para o código abaixo ssh_token=Código ssh_token_help=Pode gerar uma assinatura usando o seguinte comando: @@ -835,6 +886,7 @@ gpg_key_deletion=Remover chave GPG ssh_principal_deletion=Remover Protagonista de Certificado SSH ssh_key_deletion_desc=Remover uma chave SSH revoga o acesso dessa chave à sua conta. Quer continuar? gpg_key_deletion_desc=Remover uma chave GPG retira as validações feitas sobre os cometimentos assinados com ela. Quer continuar? +ssh_principal_deletion_desc=Remover um Protagonista de Certificado SSH revoga o acesso dele à sua conta. Quer continuar? ssh_key_deletion_success=A chave SSH foi removida. gpg_key_deletion_success=A chave GPG foi removida. ssh_principal_deletion_success=O protagonista foi removido. @@ -896,6 +948,7 @@ create_oauth2_application_button=Criar aplicação create_oauth2_application_success=Criou com sucesso uma nova aplicação OAuth2. update_oauth2_application_success=Modificou com sucesso a aplicação OAuth2. oauth2_application_name=Nome da aplicação +oauth2_confidential_client=Cliente confidencial. Escolha esta opção para aplicações que mantêm o segredo confidencial, tais como aplicações web. Não escolha esta opção para aplicações nativas, incluindo aplicações para computador e aplicações móveis. oauth2_skip_secondary_authorization=Saltar a autorização para clientes públicos depois de lhes ceder acesso uma vez. <strong>Pode representar um risco de segurança.</strong> oauth2_redirect_uris=URIs de reencaminhamento. Use uma linha por URI. save_application=Guardar @@ -910,8 +963,10 @@ oauth2_application_remove_description=A remoção de uma aplicação OAuth2 impe oauth2_application_locked=O Gitea pré-regista algumas aplicações OAuth2 no arranque, se forem habilitadas na configuração. Para evitar comportamentos inesperados, estas não podem ser editadas nem removidas. Consulte a documentação sobre o OAuth2 para obter mais informações. authorized_oauth2_applications=Aplicações OAuth2 autorizadas +authorized_oauth2_applications_description=Concedeu acesso à sua conta pessoal do Gitea a estas aplicações de terceiros. Revogue o acesso às aplicações que já não precisa. revoke_key=Revogar revoke_oauth2_grant=Revogar acesso +revoke_oauth2_grant_description=Revogar o acesso desta aplicação de terceiros impedi-la-á de aceder aos seus dados. Tem a certeza? revoke_oauth2_grant_success=Acesso revogado com sucesso. twofa_desc=Para proteger a sua conta contra o roubo de senhas, pode usar um telemóvel ou outro dispositivo para recerber um código de utilização única baseado no tempo ("TOTP"). @@ -921,6 +976,7 @@ twofa_not_enrolled=A autenticação em dois passos não está neste momento habi twofa_disable=Desabilitar autenticação em dois passos twofa_scratch_token_regenerate=Voltar a gerar o código de recuperação de utilização única twofa_scratch_token_regenerated=O seu código de recuperação de utilização única agora é %s. Guarde-o num lugar seguro, uma vez que nunca mais vai ser mostrado. +twofa_enroll=Habilitar autenticação em dois passos twofa_disable_note=Pode desabilitar a autenticação em dois passos, se for necessário. twofa_disable_desc=Desabilitar a autenticação em dois passos tornará a sua conta menos segura. Quer continuar? regenerate_scratch_token_desc=Se perdeu o seu código de recuperação ou já o usou para iniciar uma sessão, pode restaurá-lo aqui. @@ -936,6 +992,7 @@ webauthn_desc=Chaves de segurança são dispositivos de hardware contendo chaves webauthn_register_key=Adicionar chave de segurança webauthn_nickname=Apelido webauthn_delete_key=Remover chave de segurança +webauthn_delete_key_desc=Se remover uma chave de segurança, deixará de poder usá-la para iniciar a sessão. Quer continuar? webauthn_key_loss_warning=Se perder as suas chaves de segurança, perderá acesso à sua conta. webauthn_alternative_tip=Poderá querer configurar um método de autenticação adicional. @@ -1052,6 +1109,7 @@ mirror_address_protocol_invalid=O URL fornecido é inválido. Só se pode replic mirror_lfs=Armazenamento de Ficheiros Grandes (LFS) mirror_lfs_desc=Habilitar a réplica de dados LFS. mirror_lfs_endpoint=Destino LFS +mirror_lfs_endpoint_desc=A sincronização irá tentar usar o URL de clonagem para <a target="_blank" rel="noopener noreferrer" href="%s">determinar o servidor LFS</a>. Também pode especificar um destino personalizado se os dados do repositório LFS forem armazenados noutro lugar. mirror_last_synced=Última sincronização mirror_password_placeholder=(inalterada) mirror_password_blank_placeholder=(não definida) @@ -1064,6 +1122,7 @@ stars=Favoritos reactions_more=e mais %d unit_disabled=O administrador desabilitou esta secção do repositório. language_other=Outros +adopt_search=Insira o nome de utilizador para procurar repositórios adoptados… (deixe em branco para encontrar todos) adopt_preexisting_label=Adoptar ficheiros adopt_preexisting=Adoptar ficheiros pré-existentes adopt_preexisting_content=Criar repositório a partir de %s @@ -1105,6 +1164,8 @@ template.issue_labels=Rótulos das questões template.one_item=Tem que escolher pelo menos um item do modelo template.invalid=Tem que escolher um repositório modelo +archive.title=Este repositório está arquivado. Pode ver os seus ficheiros e cloná-lo. Não pode lançar questões nem fazer pedidos de integração nem fazer envios. +archive.title_date=Este repositório foi arquivado em %s. Pode ver os ficheiros e cloná-lo. Não pode abrir questões nem fazer pedidos de integração nem enviar cometimentos. archive.issue.nocomment=Este repositório está arquivado. Não pode comentar nas questões. archive.pull.nocomment=Este repositório está arquivado. Não pode comentar nos pedidos de integração. @@ -1121,6 +1182,7 @@ migrate_options_lfs=Migrar ficheiros LFS migrate_options_lfs_endpoint.label=Destino LFS migrate_options_lfs_endpoint.description=A migração irá tentar usar o seu controlo remoto do Git para <a target="_blank" rel="noopener noreferrer" href="%s">determinar o servidor LFS</a>. Também pode especificar um destino personalizado se os dados do repositório LFS forem armazenados noutro lugar. migrate_options_lfs_endpoint.description.local=Uma localização de servidor local também é suportada. +migrate_options_lfs_endpoint.placeholder=Se for deixado em branco, o destino será determinado a partir do URL do clone. migrate_items=Itens da migração migrate_items_wiki=Wiki migrate_items_milestones=Etapas @@ -1132,8 +1194,10 @@ migrate_items_releases=Lançamentos migrate_repo=Migrar o repositório migrate.clone_address=Migrar / clonar a partir do URL migrate.clone_address_desc=O URL de clonagem HTTP(S) ou Git de um repositório existente +migrate.github_token_desc=Pode colocar aqui um ou mais códigos, separados por vírgulas, para tornar mais rápida a migração, para compensar a limitação de velocidade da API do GitHub. AVISO: O abuso desta funcionalidade poderá violar a política do seu fornecedor de serviço e levar ao bloqueio da(s) sua(a) conta(s). migrate.clone_local_path=ou uma localização no servidor local migrate.permission_denied=Não está autorizado a importar repositórios locais. +migrate.permission_denied_blocked=Não pode importar de servidores não permitidos. Peça ao administrador para verificar as configurações ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS. migrate.invalid_local_path=A localização local é inválida. Não existe ou não é uma pasta. migrate.invalid_lfs_endpoint=O destino LFS não é válido. migrate.failed=A migração falhou: %v @@ -1141,6 +1205,7 @@ migrate.migrate_items_options=É necessário um código de acesso para migrar it migrated_from=Migrado de <a href="%[1]s">%[2]s</a> migrated_from_fake=Migrado de %[1]s migrate.migrate=Migrar de %s +migrate.migrating=Migrando a partir de <b>%s</b>… migrate.migrating_failed=A migração de <b>%s</b> falhou. migrate.migrating_failed.error=Falhou a migração: %s migrate.migrating_failed_no_addr=A migração falhou. @@ -1189,6 +1254,7 @@ clone_this_repo=Clonar este repositório cite_this_repo=Citar este repositório create_new_repo_command=Criando um novo repositório na linha de comandos push_exist_repo=Enviando, pela linha de comandos, um repositório existente +empty_message=Este repositório não tem qualquer conteúdo. broken_message=Os dados Git subjacentes a este repositório não podem ser lidos. Contacte o administrador desta instância ou elimine este repositório. no_branch=Este repositório não tem quaisquer ramos. @@ -1207,6 +1273,7 @@ projects=Planeamentos packages=Pacotes actions=Operações labels=Rótulos +org_labels_desc=Rótulos ao nível da organização que podem ser usados em <strong>todos os repositórios</strong> desta organização org_labels_desc_manage=gerir milestone=Etapa @@ -1255,6 +1322,7 @@ commit_graph.color=Colorido commit.contained_in=Este cometimento está contido em: commit.contained_in_default_branch=Este cometimento é parte do ramo principal commit.load_referencing_branches_and_tags=Carregar ramos e etiquetas que referenciem este cometimento +commit.merged_in_pr=Este cometimento foi integrado dentro do pedido de integração %s. blame=Responsabilidade download_file=Descarregar ficheiro normal_view=Vista normal @@ -1303,13 +1371,17 @@ editor.new_branch_name_desc=Nome do novo ramo… editor.cancel=Cancelar editor.filename_cannot_be_empty=O nome do ficheiro não pode estar em branco. editor.filename_is_invalid=O nome do ficheiro é inválido: "%s". +editor.commit_email=Endereço de email do cometimento +editor.invalid_commit_email=O endereço de email do comentimento é inválido. editor.branch_does_not_exist=O ramo "%s" não existe neste repositório. editor.branch_already_exists=O ramo "%s" já existe neste repositório. editor.directory_is_a_file=O nome da pasta "%s" já é usado como um nome de ficheiro neste repositório. +editor.file_is_a_symlink=`"%s" é uma ligação simbólica. Ligações simbólicas não podem ser editadas no editor web.` editor.filename_is_a_directory=O nome de ficheiro "%s" já está a ser usado como um nome de pasta neste repositório. editor.file_modifying_no_longer_exists=O ficheiro que está a ser modificado, "%s", já não existe neste repositório. editor.file_changed_while_editing=O conteúdo do ficheiro mudou desde que começou a editar. <a target="_blank" rel="noopener noreferrer" href="%s">Clique aqui</a> para ver as modificações ou clique em <strong>Cometer novamente</strong> para escrever por cima. editor.file_already_exists=Já existe um ficheiro com o nome "%s" neste repositório. +editor.commit_id_not_matching=O ID do cometimento não corresponde ao ID de quando começou a editar. Faça o cometimento para um ramo de remendo (patch) e depois faça a integração. editor.push_out_of_date=O envio parece estar obsoleto. editor.commit_empty_file_header=Cometer um ficheiro vazio editor.commit_empty_file_text=O ficheiro que está prestes a cometer está vazio. Quer continuar? @@ -1335,6 +1407,7 @@ editor.fork_create_description=Não pode editar este repositório. Ao invés dis editor.fork_edit_description=Não pode editar este repositório. As modificações irão ser escritas na sua derivação <b>%s</b>, para que possa criar um pedido de integração. editor.fork_not_editable=Fez uma derivação deste repositório, mas a sua derivação não é editável. editor.fork_failed_to_push_branch=Falhou ao enviar o ramo %s para o seu repositório. +editor.fork_branch_exists=O ramo "%s" já existe na sua derivação. Escolha outro nome para o ramo. commits.desc=Navegar pelo histórico de modificações no código fonte. commits.commits=Cometimentos @@ -1436,6 +1509,7 @@ issues.new.clear_assignees=Retirar todos os encarregados issues.new.no_assignees=Sem encarregados issues.new.no_reviewers=Sem revisores issues.new.blocked_user=Não pode criar a questão porque foi bloqueado/a pelo/a proprietário/a do repositório. +issues.edit.already_changed=Não foi possível guardar as modificações da questão. O conteúdo parece ter sido modificado por outro utilizador, entretanto. Refresque a página e tente editar de novo para evitar sobrepor as modificações dele. issues.edit.blocked_user=Não pode editar o conteúdo porque foi bloqueado/a pelo/a remetente ou pelo/a proprietário/a do repositório. issues.choose.get_started=Começar issues.choose.open_external_link=Abrir @@ -1507,6 +1581,7 @@ issues.filter_type.reviewed_by_you=Revistos por si issues.filter_sort=Ordem issues.filter_sort.latest=Mais recentes issues.filter_sort.oldest=Mais antigas +issues.filter_sort.recentupdate=Modificadas recentemente issues.filter_sort.leastupdate=Modificadas há muito tempo issues.filter_sort.mostcomment=Mais comentadas issues.filter_sort.leastcomment=Menos comentadas @@ -1706,7 +1781,9 @@ issues.dependency.pr_closing_blockedby=O encerramento deste pedido de integraç issues.dependency.issue_closing_blockedby=O encerramento desta questão está bloqueado pelas seguintes questões issues.dependency.issue_close_blocks=Esta questão bloqueia o encerramento das seguintes questões issues.dependency.pr_close_blocks=Este pedido de integração bloqueia o encerramento das seguintes questões +issues.dependency.issue_close_blocked=Tem que encerrar todas as questões que bloqueiam esta questão antes de a poder encerrar. issues.dependency.issue_batch_close_blocked=Não é possível fechar em lote as questões que escolheu porque a questão #%d ainda tem dependências em aberto +issues.dependency.pr_close_blocked=Tem que encerrar todas as questões que bloqueiam este pedido de integração antes de poder proceder à integração. issues.dependency.blocks_short=Bloqueia issues.dependency.blocked_by_short=Depende de issues.dependency.remove_header=Remover dependência @@ -1717,11 +1794,13 @@ issues.dependency.add_error_same_issue=Não pode fazer uma questão depender de issues.dependency.add_error_dep_issue_not_exist=A questão dependente não existe. issues.dependency.add_error_dep_not_exist=A dependência não existe. issues.dependency.add_error_dep_exists=A dependência já existe. +issues.dependency.add_error_cannot_create_circular=Não pode criar uma dependência com duas questões em que cada uma bloqueia a outra. issues.dependency.add_error_dep_not_same_repo=Ambas as questões têm que estar no mesmo repositório. issues.review.self.approval=Não pode aprovar o seu próprio pedido de integração. issues.review.self.rejection=Não pode solicitar modificações sobre o seu próprio pedido de integração. issues.review.approve=aprovou estas modificações %s issues.review.comment=reviu %s +issues.review.dismissed=descartou a revisão de %s %s issues.review.dismissed_label=Descartada issues.review.left_comment=deixou um comentário issues.review.content.empty=Tem que deixar um comentário indicando a(s) modificação(ões) solicitada(s). @@ -1729,6 +1808,7 @@ issues.review.reject=modificações solicitadas %s issues.review.wait=foi solicitada para revisão %s issues.review.add_review_request=solicitou revisão de %s %s issues.review.remove_review_request=removeu a solicitação de revisão para %s %s +issues.review.remove_review_request_self=recusou rever %s issues.review.pending=Pendente issues.review.pending.tooltip=Este comentário não está visível para os outros utilizadores, neste momento. Para submeter os seus comentários pendentes, escolha "%s" → "%s/%s/%s" no topo da página. issues.review.review=Revisão @@ -1750,6 +1830,7 @@ issues.review.requested=Revisão pendente issues.review.rejected=Modificações solicitadas issues.review.stale=Modificada depois da aprovação issues.review.unofficial=Aprovação não oficial +issues.assignee.error=Nem todos os encarregados foram adicionados, devido a um erro inesperado. issues.reference_issue.body=Conteúdo issues.content_history.deleted=eliminado issues.content_history.edited=editado @@ -1766,6 +1847,7 @@ pulls.desc=Habilitar pedidos de integração e revisão de código-fonte. pulls.new=Novo pedido de integração pulls.new.blocked_user=Não pode criar o pedido de integração porque foi bloqueado/a pelo/a proprietário/a do repositório. pulls.new.must_collaborator=Tem de ser um/a colaborador/a para criar um pedido de integração. +pulls.edit.already_changed=Não foi possível guardar as modificações do pedido de integração. O conteúdo parece ter sido modificado por outro utilizador, entretanto. Refresque a página e tente editar de novo para evitar sobrepor as modificações dele. pulls.view=Ver pedido de integração pulls.compare_changes=Novo pedido de integração pulls.allow_edits_from_maintainers=Permitir edições por parte dos responsáveis @@ -1786,6 +1868,7 @@ pulls.show_all_commits=Mostrar todos os cometimentos pulls.show_changes_since_your_last_review=Mostrar modificações desde a sua última revisão pulls.showing_only_single_commit=Mostrando apenas as modificações do comentimento %[1]s pulls.showing_specified_commit_range=Mostrando apenas as modificações entre %[1]s..%[2]s +pulls.select_commit_hold_shift_for_range=Escolha o comentimento. Para escolher um intervalo, mantenha premido o shift enquanto clica. pulls.review_only_possible_for_full_diff=A revisão só é possível ao visualizar o diff completo pulls.filter_changes_by_commit=Filtrar por cometimento pulls.nothing_to_compare=Estes ramos são iguais. Não há necessidade de criar um pedido de integração. @@ -1814,6 +1897,7 @@ pulls.add_prefix=Adicione o prefixo <strong>%s</strong> pulls.remove_prefix=Remover o prefixo <strong>%s</strong> pulls.data_broken=Este pedido de integração está danificado devido à falta de informação da derivação. pulls.files_conflicted=Este pedido de integração contém modificações que entram em conflito com o ramo de destino. +pulls.is_checking=Verificando se existem conflitos na integração… pulls.is_ancestor=Este ramo já está incluído no ramo de destino. Não há nada a integrar. pulls.is_empty=As modificações feitas neste ramo já existem no ramo de destino. Este cometimento ficará vazio. pulls.required_status_check_failed=Algumas das verificações obrigatórias não foram bem sucedidas. @@ -1837,12 +1921,16 @@ pulls.reject_count_1=%d pedido de modificação pulls.reject_count_n=%d pedidos de modificação pulls.waiting_count_1=%d revisão pendente pulls.waiting_count_n=%d revisões pendentes +pulls.wrong_commit_id=ID do cometimento tem que ser um ID de cometimento no ramo de destino pulls.no_merge_desc=A integração constante neste pedido não pode ser executada porque todas as opções de integração do repositório estão desabilitadas. pulls.no_merge_helper=Habilite as opções de integração nas configurações do repositório ou faça a integração manualmente. pulls.no_merge_wip=A integração constante neste pedido não pode ser executada porque está marcada como sendo trabalho em andamento. +pulls.no_merge_not_ready=A integração constante neste pedido não pode ser executada. Verifique o estado da revisão e as verificações de estado. pulls.no_merge_access=Não tem autorização para executar a integração constante neste pedido. pulls.merge_pull_request=Criar um cometimento de integração +pulls.rebase_merge_pull_request=Mudar a base e avançar rapidamente +pulls.rebase_merge_commit_pull_request=Mudar a base e criar um cometimento de integração pulls.squash_merge_pull_request=Criar cometimento de compactação pulls.fast_forward_only_merge_pull_request=Avançar rapidamente apenas pulls.merge_manually=Integrar manualmente @@ -1850,10 +1938,17 @@ pulls.merge_commit_id=O ID de cometimento da integração pulls.require_signed_wont_sign=O ramo requer que os cometimentos sejam assinados mas esta integração não vai ser assinada pulls.invalid_merge_option=Não pode usar esta opção de integração neste pedido de integração. +pulls.merge_conflict=A integração falhou: Houve um conflito durante a integração. Dica: Tente uma estratégia diferente. pulls.merge_conflict_summary=Mensagem de erro +pulls.rebase_conflict=A integração falhou: Houve um conflito durante a mudança de base do cometimento %[1]s. Dica: Tente uma estratégia diferente. pulls.rebase_conflict_summary=Mensagem de erro +pulls.unrelated_histories=A integração falhou: O topo da integração e a base não partilham um histórico comum. Dica: Tente uma estratégia diferente. +pulls.merge_out_of_date=Falhou a integração: Enquanto gerava a integração, a base foi modificada. Dica: Tente de novo. +pulls.head_out_of_date=Falhou a integração: Enquanto gerava a integração, o topo foi modificado. Dica: Tente de novo. +pulls.has_merged=Falhou: A integração constante do pedido foi executada. Não pode integrar novamente nem modificar o ramo alvo. pulls.push_rejected=O envio falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório. pulls.push_rejected_summary=Mensagem completa de rejeição +pulls.push_rejected_no_message=O envio falhou: O envio foi rejeitado mas não houve qualquer mensagem remota. Reveja os Automatismos do Git para este repositório. pulls.open_unmerged_pull_exists=`Não pode executar uma operação de reabertura porque há um pedido de integração pendente (#%d) com propriedades idênticas.` pulls.status_checking=Algumas verificações estão pendentes pulls.status_checks_success=Todas as verificações foram bem sucedidas @@ -1879,6 +1974,7 @@ pulls.cmd_instruction_merge_title=Integrar pulls.cmd_instruction_merge_desc=Integrar as modificações e enviar para o Gitea. pulls.cmd_instruction_merge_warning=Aviso: Esta operação não pode executar pedidos de integração porque a opção "auto-identificar integração manual" não está habilitada. pulls.clear_merge_message=Apagar mensagem de integração +pulls.clear_merge_message_hint=Apagar a mensagem de integração apenas remove o conteúdo da mensagem de cometimento e mantém os rodapés gerados pelo git, tais como "Co-Autorado-Por…". pulls.auto_merge_button_when_succeed=(quando as verificações forem bem-sucedidas) pulls.auto_merge_when_succeed=Integrar automaticamente quando todas as verificações forem bem-sucedidas @@ -1944,6 +2040,7 @@ signing.wont_sign.nokey=Não existe qualquer chave disponível para assinar este signing.wont_sign.never=Os cometimentos nunca são assinados. signing.wont_sign.always=Os cometimentos são sempre assinados. signing.wont_sign.pubkey=O cometimento não será assinado porque não tem uma chave pública associada à sua conta. +signing.wont_sign.twofa=Tem que ter a autenticação em dois passos habilitada para ter cometimentos assinados. signing.wont_sign.parentsigned=O cometimento não pode ser assinado, uma vez que o anterior também não está. signing.wont_sign.basesigned=A integração não irá ser assinada, uma vez que o cometimento base não foi assinado. signing.wont_sign.headsigned=A integração não irá ser assinada, uma vez que o cometimento de topo não foi assinado. @@ -2057,11 +2154,13 @@ contributors.contribution_type.additions=Adições contributors.contribution_type.deletions=Eliminações settings=Configurações +settings.desc=Configurações é onde pode gerir as configurações do repositório. settings.options=Repositório settings.public_access=Acesso público settings.public_access_desc=Configurar as permissões de acesso público do visitante para substituir os valores predefinidos deste repositório. settings.public_access.docs.not_set=Não definido: nenhuma permissão extra de acesso público. As permissões do visitante seguem a visibilidade e as permissões de membro do repositório. settings.public_access.docs.anonymous_read=Leitura anónima: utilizadores sem sessão iniciada podem consultar a unidade. +settings.public_access.docs.everyone_read=Leitura pública: todos os utilizadores com sessão iniciada podem aceder à unidade com permissão de leitura. Permissão de leitura das unidades de questões / pedidos de integração também significa que os utilizadores podem criar novas questões / pedidos de integração. settings.public_access.docs.everyone_write=Escrita pública: Todos os utilizadores com sessão iniciada têm permissão de escrita na unidade. Apenas a unidade Wiki suporta esta permissão. settings.collaboration=Colaboradores settings.collaboration.admin=Administrador @@ -2079,6 +2178,7 @@ settings.mirror_settings.docs.disabled_pull_mirror.instructions=Configure o seu settings.mirror_settings.docs.disabled_push_mirror.instructions=Configure os seu planeamento para puxar, automaticamente, cometimentos, etiquetas e ramos a partir de outro repositório. settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Neste momento isto só pode ser feito no menu "Nova migração". Para obter mais informação, consulte: settings.mirror_settings.docs.disabled_push_mirror.info=As réplicas foram desabilitadas pelo administrador deste sítio. +settings.mirror_settings.docs.no_new_mirrors=O seu repositório está a replicar modificações para, ou a partir de, outro repositório. Tenha em mente que neste momento não pode criar novas réplicas. settings.mirror_settings.docs.can_still_use=Embora não possa modificar réplicas existentes ou criar novas, ainda pode usar a sua réplica existente. settings.mirror_settings.docs.pull_mirror_instructions=Para configurar uma réplica de outro repositório, consulte settings.mirror_settings.docs.more_information_if_disabled=Pode aprender mais sobre réplicas de envios e de puxadas aqui: @@ -2153,6 +2253,7 @@ settings.admin_indexer_commit_sha=Último SHA indexado settings.admin_indexer_unindexed=Não indexado settings.reindex_button=Adicionar à fila de reindexação settings.reindex_requested=Reindexação solicitada +settings.admin_enable_close_issues_via_commit_in_any_branch=Fechar uma questão através de um cometimento feito num ramo que não seja o principal settings.danger_zone=Zona de perigo settings.new_owner_has_same_repo=O novo dono já tem um repositório com o mesmo nome. Por favor, escolha outro nome. settings.convert=Converter para um repositório normal @@ -2174,6 +2275,7 @@ settings.transfer_abort_invalid=Não pode cancelar a transferência de um reposi settings.transfer_abort_success=A transferência de repositório para %s foi cancelada com sucesso. settings.transfer_desc=Transferir este repositório para um utilizador ou para uma organização na qual você tenha direitos de administrador. settings.transfer_form_title=Insira o nome do repositório para confirmar: +settings.transfer_in_progress=Está a ser feita uma transferência. Cancele-a, por favor, se quiser transferir este repositório para outro utilizador. settings.transfer_notices_1=- Você perderá o acesso ao repositório se o transferir para um utilizador individual. settings.transfer_notices_2=- Você manterá o acesso ao repositório se o transferir para uma organização da qual você é (co-)proprietário(a). settings.transfer_notices_3=- Se o repositório for privado e for transferido para um utilizador individual, esta operação certifica que o utilizador tem pelo menos a permissão de leitura (e altera as permissões se for necessário). @@ -2188,9 +2290,13 @@ settings.trust_model.default=Modelo de confiança padrão settings.trust_model.default.desc=Usar o modelo de confiança padrão do repositório para esta instalação. settings.trust_model.collaborator=Colaborador settings.trust_model.collaborator.long=Colaborador: Confiar nas assinaturas dos colaboradores +settings.trust_model.collaborator.desc=Assinaturas válidas dos colaboradores deste repositório serão marcadas como "fiável", independentemente de corresponderem, ou não, ao autor do cometimento. Caso contrário, assinaturas válidas serão marcadas como "não fiável" se a assinatura corresponder ao autor do cometimento e "não corresponde", se não corresponder. settings.trust_model.committer=Autor do cometimento +settings.trust_model.committer.long=Autor do cometimento: Confiar nas assinaturas que correspondam aos autores dos cometimentos. Isto corresponde ao comportamento do GitHub e força a que os cometimentos assinados do Gitea tenham o Gitea como autor do cometimento. +settings.trust_model.committer.desc=Assinaturas válidas apenas serão marcadas como "fiável" se corresponderem ao autor do cometimento, caso contrário serão marcadas como "não corresponde". Isto irá forçar o Gitea a ser o autor do cometimento nos cometimentos assinados, ficando o autor real marcado como "Co-autorado-por:" e "Co-cometido-por:" no rodapé do cometimento. A chave padrão do Gitea tem que corresponder a um utilizador na base de dados. settings.trust_model.collaboratorcommitter=Colaborador + Autor do cometimento settings.trust_model.collaboratorcommitter.long=Colaborador + Autor do cometimento: Confiar nas assinaturas dos colaboradores que correspondam ao autor do cometimento +settings.trust_model.collaboratorcommitter.desc=Assinaturas válidas feitas por colaboradores deste repositório serão marcadas como "fiável" se corresponderem ao autor do cometimento. Caso contrário, assinaturas válidas serão marcadas como "não fiável" se a assinatura corresponder ao autor do cometimento e "não corresponde" se não corresponder. Isto irá forçar a que o Gitea seja marcado como sendo o autor do cometimento nos cometimentos assinados, ficando o autor real marcado como "Co-autorado-por:" e "Co-cometido-por:" no rodapé do cometimento. A chave padrão do Gitea tem que corresponder a um utilizador na base de dados. settings.wiki_delete=Eliminar dados do wiki settings.wiki_delete_desc=Eliminar os dados do repositório do wiki é permanente e não pode ser revertido. settings.wiki_delete_notices_1=- Isso excluirá e desabilitará permanentemente o wiki do repositório para %s. @@ -2199,6 +2305,7 @@ settings.wiki_deletion_success=Os dados do repositório do wiki foram eliminados settings.delete=Eliminar este repositório settings.delete_desc=Eliminar um repositório é permanente e não pode ser revertido. settings.delete_notices_1=- Esta operação <strong>NÃO PODERÁ</strong> ser revertida. +settings.delete_notices_2=- Esta operação eliminará permanentemente o repositório <strong>%s</strong>, incluindo código-fonte, questões, comentários, dados do wiki e configurações dos colaboradores. settings.delete_notices_fork_1=- Derivações deste repositório tornar-se-ão independentes, após a eliminação. settings.deletion_success=O repositório foi eliminado. settings.update_settings_success=As configurações do repositório foram modificadas. @@ -2220,6 +2327,8 @@ settings.team_not_in_organization=A equipa não está na mesma organização que settings.teams=Equipas settings.add_team=Adicionar equipa settings.add_team_duplicate=A equipa já tem o repositório +settings.add_team_success=A equipa agora tem acesso ao repositório. +settings.change_team_permission_tip=A permissão da equipa é definida na página de configurações da equipa e não pode ter modificações específicas de cada repositório settings.delete_team_tip=Esta equipa tem acesso a todos os repositórios e não pode ser removida settings.remove_team_success=O acesso da equipa ao repositório foi removido. settings.add_webhook=Adicionar automatismo web @@ -2484,6 +2593,7 @@ settings.archive.tagsettings_unavailable=As configurações sobre etiquetas não settings.archive.mirrors_unavailable=As réplicas não estão disponíveis se o repositório estiver arquivado. settings.unarchive.button=Desarquivar repositório settings.unarchive.header=Desarquivar este repositório +settings.unarchive.text=Desarquivar o repositório irá restaurar a capacidade de receber cometimentos e envios, assim como novas questões e pedidos de integração. settings.unarchive.success=O repositório foi desarquivado com sucesso. settings.unarchive.error=Ocorreu um erro enquanto decorria o processo de desarquivar o repositório. Veja os registos para obter mais detalhes. settings.update_avatar_success=O avatar do repositório foi modificado. @@ -2501,9 +2611,11 @@ settings.lfs_invalid_locking_path=Localização inválida: %s settings.lfs_invalid_lock_directory=Não foi possível bloquear a pasta: %s settings.lfs_lock_already_exists=Já existe um bloqueio: %s settings.lfs_lock=Bloquear +settings.lfs_lock_path=Localização do ficheiro a bloquear… settings.lfs_locks_no_locks=Sem bloqueios settings.lfs_lock_file_no_exist=O ficheiro bloqueado não existe no ramo principal settings.lfs_force_unlock=Forçar desbloqueio +settings.lfs_pointers.found=Encontrado(s) %d ponteiro(s) de blob — %d associado(a), %d desassociado(a) (%d ausente do armazenamento) settings.lfs_pointers.sha=SHA do blob settings.lfs_pointers.oid=OID settings.lfs_pointers.inRepo=No repositório @@ -2661,6 +2773,7 @@ branch.new_branch_from=`Criar um novo ramo a partir do ramo "%s"` branch.renamed=O ramo %s foi renomeado para %s. branch.rename_default_or_protected_branch_error=Só os administradores é que podem renomear o ramo principal ou ramos protegidos. branch.rename_protected_branch_failed=Este ramo está protegido por regras de salvaguarda baseadas em padrões glob. +branch.commits_divergence_from=Divergência nos cometimentos: %[1]d atrás e %[2]d à frente de %[3]s branch.commits_no_divergence=Idêntico ao ramo %[1]s tag.create_tag=Criar etiqueta %s @@ -2685,6 +2798,7 @@ error.csv.invalid_field_count=Não é possível apresentar este ficheiro porque error.broken_git_hook=Os automatismos git deste repositório parecem estar danificados. Consulte a <a target="_blank" rel="noreferrer" href="%s">documentação</a> sobre como os consertar e depois envie alguns cometimentos para refrescar o estado. [graphs] +component_loading=A carregar %s… component_loading_failed=Não foi possível carregar %s component_loading_info=Isto pode demorar um pouco… component_failed_to_load=Ocorreu um erro inesperado. @@ -2723,6 +2837,7 @@ form.create_org_not_allowed=Não tem permissão para criar uma organização. settings=Configurações settings.options=Organização settings.full_name=Nome completo +settings.email=Endereço de email de contacto settings.website=Sítio web settings.location=Localização settings.permission=Permissões @@ -2739,7 +2854,10 @@ settings.update_setting_success=As configurações da organização foram modifi settings.rename=Renomear organização settings.rename_desc=Mudar o nome da organização também irá mudar o URL da organização e libertar o nome antigo. +settings.rename_success=A organização %[1]s foi renomeada para %[2]s com sucesso. +settings.rename_no_change=O nome da organização não foi alterado. settings.rename_new_org_name=Novo nome da organização +settings.rename_failed=A renomeação da organização falhou por causa de um erro interno settings.rename_notices_1=Esta operação <strong>NÃO PODERÁ</strong> ser revertida. settings.rename_notices_2=O antigo nome, enquanto não for reivindicado, irá reencaminhar para o novo. @@ -2749,9 +2867,11 @@ settings.delete_account=Eliminar esta organização settings.delete_prompt=A organização será removida permanentemente. Essa operação <strong>NÃO PODERÁ</strong> ser revertida! settings.name_confirm=Insira o nome da organização para confirmar: settings.delete_notices_1=Esta operação <strong>NÃO PODERÁ</strong> ser revertida. +settings.delete_notices_2=Esta operação irá eliminar de forma permanente todos os <strong>repositórios</strong> de <strong>%s</strong>, incluindo código-fonte, questões, comentários, dados do wiki e configurações dos colaboradores. settings.delete_notices_3=Esta operação irá eliminar de forma permanente todos os <strong>pacotes</strong> de <strong>%s</strong>. settings.delete_notices_4=Esta operação irá eliminar de forma permanente todos os <strong>planeamentos</strong> de <strong>%s</strong>. settings.confirm_delete_account=Confirme a eliminação +settings.delete_failed=A eliminação da organização falhou por causa de um erro interno settings.delete_successful=A organização <b>%s</b> foi eliminada com sucesso. settings.hooks_desc=Adicionar automatismos web que serão despoletados para <strong>todos os repositórios</strong> desta organização. @@ -2808,6 +2928,7 @@ teams.remove_all_repos_title=Remover todos os repositórios da equipa teams.remove_all_repos_desc=Isto irá remover todos os repositórios da equipa. teams.add_all_repos_title=Adicionar todos os repositórios teams.add_all_repos_desc=Isto irá adicionar todos os repositórios da organização à equipa. +teams.add_nonexistent_repo=O repositório que está a tentar adicionar não existe. Crie-o primeiro. teams.add_duplicate_users=O utilizador já é um membro da equipa. teams.repos.none=Não há repositórios que possam ser acedidos por esta equipa. teams.members.none=Não há membros nesta equipa. @@ -2848,6 +2969,7 @@ repositories=Repositórios hooks=Automatismos web integrations=Integrações authentication=Fontes de autenticação +emails=Endereços de email do utilizador config=Configuração config_summary=Resumo config_settings=Configurações @@ -2879,8 +3001,11 @@ dashboard.cron.cancelled=Cron: %[1]s cancelado: %[3]s dashboard.cron.error=Erro no cron: %s: %[3]s dashboard.cron.finished=Cron: %[1]s concluído dashboard.delete_inactive_accounts=Eliminar todas as contas que não tenham sido habilitadas +dashboard.delete_inactive_accounts.started=Foi iniciada a eliminação de todas as contas que não foram habilitadas. dashboard.delete_repo_archives=Eliminar todos os arquivos dos repositórios (ZIP, TAR.GZ, etc) +dashboard.delete_repo_archives.started=Foi iniciada a tarefa de eliminação de todos os repositórios arquivados. dashboard.delete_missing_repos=Eliminar todos os repositórios que não tenham os seus ficheiros Git +dashboard.delete_missing_repos.started=Foi iniciada a tarefa de eliminação de todos os repositórios que não têm ficheiros git. dashboard.delete_generated_repository_avatars=Eliminar avatares gerados do repositório dashboard.sync_repo_branches=Sincronizar ramos perdidos de dados do git para bases de dados dashboard.sync_repo_tags=Sincronizar etiquetas dos dados do git para a base de dados @@ -2888,7 +3013,12 @@ dashboard.update_mirrors=Sincronizar réplicas dashboard.repo_health_check=Verificar a saúde de todos os repositórios dashboard.check_repo_stats=Verificar as estatísticas de todos os repositórios dashboard.archive_cleanup=Eliminar arquivos de repositórios antigos +dashboard.deleted_branches_cleanup=Limpar ramos eliminados dashboard.update_migration_poster_id=Sincronizar os IDs do remetente da migração +dashboard.git_gc_repos=Fazer a recolha do lixo em todos os repositórios +dashboard.resync_all_sshkeys=Sincronizar o ficheiro '.ssh/authorized_keys' com as chaves SSH do Gitea +dashboard.resync_all_sshprincipals=Modificar o ficheiro '.ssh/authorized_principals' com os protagonistas SSH do Gitea +dashboard.resync_all_hooks=Voltar a sincronizar automatismos de pré-acolhimento, modificação e pós-acolhimento de todos os repositórios dashboard.reinit_missing_repos=Reinicializar todos os repositórios Git em falta para os quais existam registos dashboard.sync_external_users=Sincronizar dados externos do utilizador dashboard.cleanup_hook_task_table=Limpar a tabela hook_task @@ -2924,8 +3054,10 @@ dashboard.total_gc_pause=Pausa total da recolha de lixo dashboard.last_gc_pause=Última pausa da recolha de lixo dashboard.gc_times=N.º de recolhas de lixo dashboard.delete_old_actions=Eliminar todo o trabalho antigo da base de dados +dashboard.delete_old_actions.started=Foi iniciado o processo de eliminação de todo o trabalho antigo da base de dados dashboard.update_checker=Verificador de novas versões dashboard.delete_old_system_notices=Eliminar todas as notificações do sistema antigas da base de dados +dashboard.gc_lfs=Recolher lixo dos meta-elementos LFS dashboard.stop_zombie_tasks=Parar tarefas zombie das operações dashboard.stop_endless_tasks=Parar tarefas intermináveis das operações dashboard.cancel_abandoned_jobs=Cancelar trabalhos abandonados das operações @@ -2949,6 +3081,7 @@ users.2fa=Autenticação em dois passos users.repos=Repos. users.created=Criada users.last_login=Último acesso +users.never_login=Nunca acedeu users.send_register_notify=Enviar notificação de registo de utilizador users.new_success=A conta de utilizador "%s" foi criada. users.edit=Editar @@ -2975,6 +3108,7 @@ users.still_own_repo=Este utilizador ainda possui um ou mais repositórios. Elim users.still_has_org=Este utilizador é membro de uma organização. Remova, primeiro, o utilizador de todas as organizações. users.purge=Eliminar utilizador users.purge_help=Eliminar o utilizador à força, juntamente com todos os seus repositórios, organizações e pacotes. Também serão eliminados todos os seus comentários. +users.still_own_packages=Este utilizador ainda possui um ou mais pacotes. Elimine esses pacotes primeiro. users.deletion_success=A conta de utilizador foi eliminada. users.reset_2fa=Reinicializar a autenticação em dois passos users.list_status_filter.menu_text=Filtro @@ -2994,7 +3128,11 @@ users.details=Detalhes do utilizador emails.email_manage_panel=Gestão de endereços de email do utilizador emails.primary=Principal emails.activated=Em uso +emails.filter_sort.email=Endereço de email +emails.filter_sort.email_reverse=Endereço de email (inverso) emails.filter_sort.name=Nome de utilizador +emails.filter_sort.name_reverse=Nome de utilizador (inverso) +emails.updated=Endereço de email modificado emails.not_updated=Falhou a modificação do endereço de email solicitado: %v emails.duplicate_active=Este endereço de email já está a ser usado por outro utilizador. emails.change_email_header=Modificar propriedades do email @@ -3002,6 +3140,7 @@ emails.change_email_text=Tem a certeza que quer modificar este endereço de emai emails.delete=Eliminar email emails.delete_desc=Tem a certeza que quer eliminar este endereço de email? emails.deletion_success=O endereço de email foi eliminado. +emails.delete_primary_email_error=Não pode eliminar o endereço de email principal. orgs.org_manage_panel=Gestão das organizações orgs.name=Nome @@ -3115,20 +3254,29 @@ auths.oauth2_required_claim_name_helper=Defina este nome para restringir o iníc auths.oauth2_required_claim_value=Valor de Reivindicação obrigatório auths.oauth2_required_claim_value_helper=Defina este valor para restringir o início de sessão desta fonte a utilizadores que tenham uma reivindicação com este nome e este valor auths.oauth2_group_claim_name=Reivindicar nome que fornece nomes de grupo para esta fonte. (Opcional) +auths.oauth2_full_name_claim_name=Nome completo reivindicado. (Opcional — se for definido, o nome completo do utilizador será sempre sincronizado com este reivindicado) auths.oauth2_ssh_public_key_claim_name=Nome reivindicado da chave pública SSH +auths.oauth2_admin_group=Valor da Reivindicação de Grupo para utilizadores administradores. (Opcional — exige a reivindicação de nome acima) +auths.oauth2_restricted_group=Valor da Reivindicação de Grupo para utilizadores restritos. (Opcional — exige a reivindicação de nome acima) +auths.oauth2_map_group_to_team=Mapear grupos reclamados em equipas da organização. (Opcional — exige a reivindicação de nome acima) auths.oauth2_map_group_to_team_removal=Remover utilizadores das equipas sincronizadas se esses utilizadores não pertencerem ao grupo correspondente. auths.enable_auto_register=Habilitar o registo automático auths.sspi_auto_create_users=Criar utilizadores automaticamente +auths.sspi_auto_create_users_helper=Permitir que o método de autenticação SSPI crie, automaticamente, novas contas para utilizadores que iniciam a sessão pela primeira vez auths.sspi_auto_activate_users=Habilitar utilizadores automaticamente auths.sspi_auto_activate_users_helper=Permitir que o método de autenticação SSPI habilite automaticamente os novos utilizadores auths.sspi_strip_domain_names=Remover nomes de domínio dos nomes de utilizador +auths.sspi_strip_domain_names_helper=Se esta opção estiver marcada, os nomes de domínio serão removidos dos nomes do início de sessão (ex.: "DOMÍNIO\utilizador" e "utilizador@exemplo.org" tornar-se-ão "utilizador", simplesmente). auths.sspi_separator_replacement=Separador a usar em vez de \, / e @ +auths.sspi_separator_replacement_helper=O caractere a ser usado para substituir os separadores de nomes de início de sessão de nível inferior (ex.: o \ em "DOMÍNIO\utilizador") e os nomes principais do utilizador (ex.: o @ em "utilizador@exemplo.org"). auths.sspi_default_language=Idioma predefinido do utilizador +auths.sspi_default_language_helper=Idioma predefinido para utilizadores criados automaticamente pelo método de autenticação SSPI. Deixe em branco se preferir que o idioma seja determinado automaticamente. auths.tips=Dicas auths.tips.oauth2.general=Autenticação OAuth2 auths.tips.oauth2.general.tip=Ao registar uma nova autenticação OAuth2, o URL da ligação de retorno ou do reencaminhamento deve ser: auths.tip.oauth2_provider=Fornecedor OAuth2 auths.tip.bitbucket=Registe um novo consumidor de OAuth em %s e adicione a permissão 'Account' - 'Read' +auths.tip.nextcloud=`Registe um novo consumidor OAuth na sua instância usando o seguinte menu "Configurações → Segurança → Cliente OAuth 2.0"` auths.tip.dropbox=Crie uma nova aplicação em %s auths.tip.facebook=`Registe uma nova aplicação em %s e adicione o produto "Facebook Login"` auths.tip.github=Registe uma nova aplicação OAuth em %s @@ -3238,6 +3386,7 @@ config.mailer_sendmail_path=Localização do sendmail config.mailer_sendmail_args=Argumentos extras para o sendmail config.mailer_sendmail_timeout=Tempo limite do Sendmail config.mailer_use_dummy=Fictício +config.test_email_placeholder=Endereço de email (ex.: teste@exemplo.com) config.send_test_mail=Enviar email de teste config.send_test_mail_submit=Enviar config.test_mail_failed=Falhou o envio de um email de teste para "%s": %v @@ -3326,6 +3475,7 @@ monitor.queue.numberinqueue=N.º na fila monitor.queue.review_add=Rever / Adicionar trabalhadores monitor.queue.settings.title=Configurações do agregado monitor.queue.settings.desc=Agregados crescem dinamicamente em resposta aos bloqueios da sua fila de trabalhadores. +monitor.queue.settings.maxnumberworkers=N.º máximo de trabalhadores monitor.queue.settings.maxnumberworkers.placeholder=De momento %[1]d monitor.queue.settings.maxnumberworkers.error=O número máximo de trabalhadores tem que ser um número monitor.queue.settings.submit=Modificar configurações @@ -3351,6 +3501,10 @@ notices.delete_success=As notificações do sistema foram eliminadas. self_check.no_problem_found=Nenhum problema encontrado até agora. self_check.startup_warnings=Alertas do arranque: self_check.database_collation_mismatch=Supor que a base de dados usa a colação: %s +self_check.database_collation_case_insensitive=A base de dados está a usar a colação %s, que é insensível à diferença entre maiúsculas e minúsculas. Embora o Gitea possa trabalhar com ela, pode haver alguns casos raros que não funcionem como esperado. +self_check.database_inconsistent_collation_columns=A base de dados está a usar a colação %s, mas estas colunas estão a usar colações diferentes. Isso poderá causar alguns problemas inesperados. +self_check.database_fix_mysql=Para utilizadores do MySQL/MariaDB, pode usar o comando "gitea doctor convert" para resolver os problemas de colação. Também pode resolver o problema manualmente com comandos SQL "ALTER ... COLLATE ...". +self_check.database_fix_mssql=Para utilizadores do MSSQL só pode resolver o problema manualmente com comandos SQL "ALTER ... COLLATE ...", por enquanto. self_check.location_origin_mismatch=O URL corrente (%[1]s) não corresponde ao URL visto pelo Gitea (%[2]s). Se estiver a usar um reverse proxy, certifique-se que os cabeçalhos "Host" e "X-Forwarded-Proto" estão bem definidos. [action] @@ -3434,6 +3588,8 @@ error.no_committer_account=Não existe qualquer conta ligada ao endereço de ema error.no_gpg_keys_found=Não foi encontrada uma chave conhecida para esta assinatura, na base de dados error.not_signed_commit=Não é um cometimento assinado error.failed_retrieval_gpg_keys=Falhou ao obter uma chave ligada à conta de quem cometeu +error.probable_bad_signature=AVISO! Embora exista uma chave com este ID na base de dados, ela não valida este cometimento! Este cometimento é SUSPEITO. +error.probable_bad_default_signature=AVISO! Embora a chave padrão tenha este ID, ela não valida este cometimento! Este cometimento é SUSPEITO. [units] unit=Unidade @@ -3472,6 +3628,7 @@ versions.view_all=Ver todas dependency.id=ID dependency.version=Versão search_in_external_registry=Procurar em %s +alpine.registry=Configure este registo adicionando o URL no seu ficheiro <code>/etc/apk/repositories</code>: alpine.registry.key=Descarregue a chave RSA pública do registo para dentro da pasta <code>/etc/apk/keys/</code> para verificar a assinatura do índice: alpine.registry.info=Escolha $branch e $repository da lista abaixo. alpine.install=Para instalar o pacote, execute o seguinte comando: @@ -3484,13 +3641,18 @@ arch.install=Sincronizar pacote com pacman: arch.repository=Informação do repositório arch.repository.repositories=Repositórios arch.repository.architectures=Arquitecturas +cargo.registry=Configure este registo no ficheiro de configuração do Cargo (por exemplo: <code>~/.cargo/config.toml</code>): cargo.install=Para instalar o pacote usando o Cargo, execute o seguinte comando: +chef.registry=Configure este registo no seu ficheiro <code>~/.chef/config.rb</code>: chef.install=Para instalar o pacote, execute o seguinte comando: +composer.registry=Configure este registo no seu ficheiro <code>~/.composer/config.json</code>: composer.install=Para instalar o pacote usando o Composer, execute o seguinte comando: composer.dependencies=Dependências composer.dependencies.development=Dependências de desenvolvimento conan.details.repository=Repositório +conan.registry=Configure este registo usando a linha de comandos: conan.install=Para instalar o pacote usando o Conan, execute o seguinte comando: +conda.registry=Configure este registo como um repositório Conda no seu ficheiro <code>.condarc</code>: conda.install=Para instalar o pacote usando o Conda, execute o seguinte comando: container.details.type=Tipo de imagem container.details.platform=Plataforma @@ -3502,7 +3664,9 @@ container.layers=Camadas de imagem container.labels=Rótulos container.labels.key=Chave container.labels.value=Valor +cran.registry=Configure este registo no seu ficheiro <code>Rprofile.site</code>: cran.install=Para instalar o pacote, execute o seguinte comando: +debian.registry=Configure este registo usando a linha de comandos: debian.registry.info=Escolha $distribution e $component da lista abaixo. debian.install=Para instalar o pacote, execute o seguinte comando: debian.repository=Informação do repositório @@ -3511,11 +3675,16 @@ debian.repository.components=Componentes debian.repository.architectures=Arquitecturas generic.download=Descarregar pacote usando a linha de comandos: go.install=Instale o pacote a partir da linha de comandos: +helm.registry=Configure este registo usando a linha de comandos: helm.install=Para instalar o pacote, execute o seguinte comando: +maven.registry=Configure este registo no seu ficheiro <code>pom.xml</code> do projecto: +maven.install=Para usar este pacote, inclua no bloco <code>dependencies</code> do ficheiro <code>pom.xml</code> o seguinte: maven.install2=Executar usando a linha de comandos: maven.download=Para descarregar a dependência, execute na linha de comandos: +nuget.registry=Configure este registo usando a linha de comandos: nuget.install=Para instalar o pacote usando NuGet, execute o seguinte comando: nuget.dependency.framework=Estrutura alvo +npm.registry=Configure este registo no seu ficheiro <code>.npmrc</code> do projecto: npm.install=Para instalar o pacote usando o npm, execute o seguinte comando: npm.install2=ou adicione-o ao ficheiro <code>package.json</code>: npm.dependencies=Dependências @@ -3527,6 +3696,7 @@ npm.details.tag=Etiqueta pub.install=Para instalar o pacote usando o Dart, execute o seguinte comando: pypi.requires=Requer Python pypi.install=Para instalar o pacote usando o pip, execute o seguinte comando: +rpm.registry=Configure este registo usando a linha de comandos: rpm.distros.redhat=em distribuições baseadas no RedHat rpm.distros.suse=em distribuições baseadas no SUSE rpm.install=Para instalar o pacote, execute o seguinte comando: @@ -3539,6 +3709,7 @@ rubygems.dependencies.runtime=Dependências do tempo de execução (runtime) rubygems.dependencies.development=Dependências de desenvolvimento rubygems.required.ruby=Requer a versão do Ruby rubygems.required.rubygems=Requer a versão do RubyGem +swift.registry=Configure este registo usando a linha de comandos: swift.install=Adicione o pacote no seu ficheiro <code>Package.swift</code>: swift.install2=e execute o seguinte comando: vagrant.install=Para adicionar uma máquina virtual Vagrant, execute o seguinte comando: diff --git a/routers/api/v1/repo/action.go b/routers/api/v1/repo/action.go index 99eef2f53b..25aabe6dd2 100644 --- a/routers/api/v1/repo/action.go +++ b/routers/api/v1/repo/action.go @@ -1132,18 +1132,23 @@ func GetWorkflowRun(ctx *context.APIContext) { // "$ref": "#/responses/notFound" runID := ctx.PathParamInt64("run") - job, _, err := db.GetByID[actions_model.ActionRun](ctx, runID) + job, has, err := db.GetByID[actions_model.ActionRun](ctx, runID) + if err != nil { + ctx.APIErrorInternal(err) + return + } - if err != nil || job.RepoID != ctx.Repo.Repository.ID { - ctx.APIError(http.StatusNotFound, util.ErrNotExist) + if !has || job.RepoID != ctx.Repo.Repository.ID { + ctx.APIErrorNotFound(util.ErrNotExist) + return } - convertedArtifact, err := convert.ToActionWorkflowRun(ctx, ctx.Repo.Repository, job) + convertedRun, err := convert.ToActionWorkflowRun(ctx, ctx.Repo.Repository, job) if err != nil { ctx.APIErrorInternal(err) return } - ctx.JSON(http.StatusOK, convertedArtifact) + ctx.JSON(http.StatusOK, convertedRun) } // ListWorkflowRunJobs Lists all jobs for a workflow run. @@ -1237,10 +1242,15 @@ func GetWorkflowJob(ctx *context.APIContext) { // "$ref": "#/responses/notFound" jobID := ctx.PathParamInt64("job_id") - job, _, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID) + job, has, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID) + if err != nil { + ctx.APIErrorInternal(err) + return + } - if err != nil || job.RepoID != ctx.Repo.Repository.ID { - ctx.APIError(http.StatusNotFound, util.ErrNotExist) + if !has || job.RepoID != ctx.Repo.Repository.ID { + ctx.APIErrorNotFound(util.ErrNotExist) + return } convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, nil, job) @@ -1251,7 +1261,7 @@ func GetWorkflowJob(ctx *context.APIContext) { ctx.JSON(http.StatusOK, convertedWorkflowJob) } -// GetArtifacts Lists all artifacts for a repository. +// GetArtifactsOfRun Lists all artifacts for a repository. func GetArtifactsOfRun(ctx *context.APIContext) { // swagger:operation GET /repos/{owner}/{repo}/actions/runs/{run}/artifacts repository getArtifactsOfRun // --- @@ -1354,7 +1364,7 @@ func DeleteActionRun(ctx *context.APIContext) { runID := ctx.PathParamInt64("run") run, err := actions_model.GetRunByRepoAndID(ctx, ctx.Repo.Repository.ID, runID) if errors.Is(err, util.ErrNotExist) { - ctx.APIError(http.StatusNotFound, err) + ctx.APIErrorNotFound(err) return } else if err != nil { ctx.APIErrorInternal(err) diff --git a/templates/repo/issue/view_content/conversation.tmpl b/templates/repo/issue/view_content/conversation.tmpl index 07051d5ec0..189b9d6259 100644 --- a/templates/repo/issue/view_content/conversation.tmpl +++ b/templates/repo/issue/view_content/conversation.tmpl @@ -15,7 +15,7 @@ </span> {{end}} </div> - <div> + <div class="tw-flex tw-items-center"> {{if or $invalid $resolved}} <button id="show-outdated-{{$comment.ID}}" data-comment="{{$comment.ID}}" class="{{if not $resolved}}tw-hidden{{end}} btn tiny show-outdated"> {{svg "octicon-unfold" 16 "tw-mr-2"}} diff --git a/tests/integration/api_actions_delete_run_test.go b/tests/integration/api_actions_run_test.go index 5b41702c57..a0292f8f8b 100644 --- a/tests/integration/api_actions_delete_run_test.go +++ b/tests/integration/api_actions_run_test.go @@ -18,6 +18,44 @@ import ( "github.com/stretchr/testify/assert" ) +func TestAPIActionsGetWorkflowRun(t *testing.T) { + defer prepareTestEnvActionsArtifacts(t)() + + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) + session := loginUser(t, user.Name) + token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository) + + req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/802802", repo.FullName())). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusNotFound) + req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/802", repo.FullName())). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusNotFound) + req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/803", repo.FullName())). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusOK) +} + +func TestAPIActionsGetWorkflowJob(t *testing.T) { + defer prepareTestEnvActionsArtifacts(t)() + + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) + session := loginUser(t, user.Name) + token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository) + + req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/198198", repo.FullName())). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusNotFound) + req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/198", repo.FullName())). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusOK) + req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/196", repo.FullName())). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusNotFound) +} + func TestAPIActionsDeleteRunCheckPermission(t *testing.T) { defer prepareTestEnvActionsArtifacts(t)() |