%[2]s
v %[3]s ze zrcadla
approve_pull_request=`schválil/a %[3]s#%[2]s`
reject_pull_request=`navrhl/a změny pro %[3]s#%[2]s`
-publish_release=`vydal/a "%[4]s" v %[3]s`
+publish_release=`vydal/a %[4]s v %[3]s`
review_dismissed=`zamítl/a posouzení z %[4]s pro %[3]s#%[2]s`
review_dismissed_reason=Důvod:
create_branch=vytvořil/a větev %[3]s v %[4]s
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index 01178d23d2..59eb11240d 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -2746,6 +2746,8 @@ release.hide_archive_links = Automatisch generierte Archive verstecken
release.hide_archive_links_helper = Verstecke automatisch generierte Quellcodearchive für diesen Release. Zum Beispiel, wenn du deine eigenen hochlädst.
settings.transfer.button = Besitz übertragen
settings.transfer.modal.title = Besitz übertragen
+wiki.no_search_results = Keine Ergebnisse
+wiki.search = Wiki durchsuchen
[graphs]
@@ -3444,7 +3446,7 @@ mirror_sync_create=neue Referenz %[3]s bei %
mirror_sync_delete=hat die Referenz des Spiegels %[2]s
in %[3]s synchronisiert und gelöscht
approve_pull_request=`hat %[3]s#%[2]s genehmigt`
reject_pull_request=`schlug Änderungen für %[3]s#%[2]s vor`
-publish_release=`veröffentlichte Release „%[4]s“ in %[3]s`
+publish_release=`veröffentlichte Release %[4]s in %[3]s`
review_dismissed=`verwarf das Review von %[4]s in %[3]s#%[2]s`
review_dismissed_reason=Grund:
create_branch=legte den Branch %[3]s in %[4]s an
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index e0b6c7b981..ff501d8004 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -351,15 +351,15 @@ env_config_keys = Environment Configuration
env_config_keys_prompt = The following environment variables will also be applied to your configuration file:
[home]
-uname_holder = Username or Email address
+uname_holder = Username or email address
password_holder = Password
-switch_dashboard_context = Switch Dashboard Context
+switch_dashboard_context = Switch dashboard context
my_repos = Repositories
my_orgs = Organizations
show_more_repos = Show more repositories…
-collaborative_repos = Collaborative Repositories
+collaborative_repos = Collaborative repositories
view_home = View %s
-filter = Other Filters
+filter = Other filters
filter_by_team_repositories = Filter by team repositories
feed_of = Feed of "%s"
@@ -390,7 +390,7 @@ relevant_repositories_tooltip = Repositories that are forks or that have no topi
relevant_repositories = Only relevant repositories are being shown, show unfiltered results.
[auth]
-create_new_account = Register Account
+create_new_account = Register account
register_helper_msg = Already have an account? Sign in now!
social_register_helper_msg = Already have an account? Link it now!
disable_register_prompt = Registration is disabled. Please contact your site administrator.
@@ -398,7 +398,7 @@ disable_register_mail = Email confirmation for registration is disabled.
manual_activation_only = Contact your site administrator to complete activation.
remember_me = Remember this device
remember_me.compromised = The login token is not valid anymore which may indicate a compromised account. Please check your account for unusual activities.
-forgot_password_title= Forgot Password
+forgot_password_title= Forgot password
forgot_password = Forgot password?
sign_up_now = Need an account? Register now.
sign_up_successful = Account was successfully created. Welcome!
@@ -406,7 +406,7 @@ confirmation_mail_sent_prompt = A new confirmation email has been sent to %s<
must_change_password = Update your password
allow_password_change = Require user to change password (recommended)
reset_password_mail_sent_prompt = A confirmation email has been sent to %s. Please check your inbox within the next %s to complete the account recovery process.
-active_your_account = Activate Your Account
+active_your_account = Activate your account
account_activated = Account has been activated
prohibit_login = Signing in is prohibited
prohibit_login_desc = Your account is prohibited from signing in, please contact your site administrator.
@@ -417,8 +417,8 @@ change_unconfirmed_email = If you have given the wrong email address during regi
change_unconfirmed_email_error = Unable to change the email address: %v
resend_mail = Click here to resend your activation email
email_not_associate = The email address is not associated with any account.
-send_reset_mail = Send Account Recovery Email
-reset_password = Account Recovery
+send_reset_mail = Send recovery email
+reset_password = Account recovery
invalid_code = Your confirmation code is invalid or has expired.
invalid_code_forgot_password = Your confirmation code is invalid or has expired. Click here to start a new session.
invalid_password = Your password does not match the password that was used to create the account.
@@ -436,12 +436,12 @@ login_userpass = Sign In
tab_signin = Sign In
tab_signup = Sign Up
tab_openid = OpenID
-oauth_signup_tab = Register New Account
-oauth_signup_title = Complete New Account
-oauth_signup_submit = Complete Account
+oauth_signup_tab = Register new account
+oauth_signup_title = Complete new account
+oauth_signup_submit = Complete account
oauth_signin_tab = Link to an existing account
oauth_signin_title = Sign in to authorize linked account
-oauth_signin_submit = Link Account
+oauth_signin_submit = Link account
oauth.signin.error = There was an error processing the authorization request. If this error persists, please contact the site administrator.
oauth.signin.error.access_denied = The authorization request was denied.
oauth.signin.error.temporarily_unavailable = Authorization failed because the authentication server is temporarily unavailable. Please try again later.
@@ -1607,7 +1607,7 @@ issues.role.collaborator_helper = This user has been invited to collaborate on t
issues.role.first_time_contributor = First-time contributor
issues.role.first_time_contributor_helper = This is the first contribution of this user to the repository.
issues.role.contributor = Contributor
-issues.role.contributor_helper = This user has previously committed to the repository.
+issues.role.contributor_helper = This user has previously committed in this repository.
issues.re_request_review=Re-request review
issues.is_stale = There have been changes to this PR since this review
issues.remove_request_review=Remove review request
@@ -1890,9 +1890,9 @@ pulls.unrelated_histories = Merge failed: The merge head and base do not share a
pulls.merge_out_of_date = Merge failed: Whilst generating the merge, the base was updated. Hint: Try again.
pulls.head_out_of_date = Merge failed: Whilst generating the merge, the head was updated. Hint: Try again.
pulls.has_merged = Failed: The pull request has been merged, you cannot merge again or change the target branch.
-pulls.push_rejected = Push Failed: The push was rejected. Review the Git hooks for this repository.
+pulls.push_rejected = Push failed: The push was rejected. Review the Git hooks for this repository.
pulls.push_rejected_summary = Full rejection message
-pulls.push_rejected_no_message = Push Failed: The push was rejected but there was no remote message. Review the Git hooks for this repository
+pulls.push_rejected_no_message = Push failed: The push was rejected but there was no remote message. Review the Git hooks for this repository
pulls.open_unmerged_pull_exists = `You cannot perform a reopen operation because there is a pending pull request (#%d) with identical properties.`
pulls.status_checking = Some checks are pending
pulls.status_checks_success = All checks were successful
@@ -2035,8 +2035,8 @@ activity.period.quarterly = 3 months
activity.period.semiyearly = 6 months
activity.period.yearly = 1 year
activity.overview = Overview
-activity.active_prs_count_1 = %d Active pull request
-activity.active_prs_count_n = %d Active pull requests
+activity.active_prs_count_1 = %d active pull request
+activity.active_prs_count_n = %d active pull requests
activity.merged_prs_count_1 = Merged pull request
activity.merged_prs_count_n = Merged pull requests
activity.opened_prs_count_1 = Proposed pull request
diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini
index 0df2569d14..5f67d0e7cf 100644
--- a/options/locale/locale_fil.ini
+++ b/options/locale/locale_fil.ini
@@ -463,7 +463,7 @@ reset_password.text = Kung ikaw ito, paki-click ang sumusunod na link para i-rec
register_success = Matagumpay ang pag-rehistro
issue_assigned.issue = Itinalaga ka ni @%[1]s sa isyu na %[2]s sa repositoryo na %[3]s.
issue.x_mentioned_you = Binanggit ka ni %s:
-issue.action.force_push = Na-force push ni %[1]s ang %[2]s mula %[3]s sa %[4]s.
+issue.action.force_push = Na-force push ni/ng %[1]s ang %[2]s mula %[3]s sa %[4]s.
issue.action.push_n = Nag-push si @%[1]s ng %[3]d (mga) commit sa %[2]s
issue.action.close = Sinara ni @%[1]s ang #%[2]d.
issue.action.reopen = Binuksan muli ni @%[1]s ang #%[2]d.
@@ -1084,7 +1084,7 @@ file.title = %s sa %s
file_view_raw = Tingnan ng raw
editor.new_file = Bagong file
editor.edit_file = Baguhin ang file
-commit_graph.hide_pr_refs = Itago ang mga hiling sa paghatak
+commit_graph.hide_pr_refs = Itago ang mga hiling sa paghila
editor.or = o
editor.cancel_lower = kanselahin
issues.filter_sort.latest = Pinakabago
@@ -1375,7 +1375,7 @@ issues.create = Gumawa ng isyu
commits.gpg_key_id = ID ng susi ng GPG
editor.no_changes_to_show = Walang maipapakitang pagbabago.
editor.name_your_file = Ipangalan ang iyong file…
-pulls.new = Bagong hiling sa paghatak
+pulls.new = Bagong hiling sa paghila
issues.ref_reopened_from = `binuksang muli ang isyung %[4]s %[2]s`
settings.event_issues_desc = Binuksan, sinara, muling binuksan, o binago ang isyu.
activity.new_issue_label = Nabuksan
@@ -1539,6 +1539,12 @@ projects.column.new_title = Pangalan
projects.card_type.desc = Mga preview ng card
commits.desc = I-browse ang history ng pagbabago ng source code.
commits.search.tooltip = Maari kang mag-prefix ng mga keyword gamit ang "author:", "committer:", "after:", o "before:", hal. "revert author:Nijika before:2022-10-09".
+issues.force_push_codes = `puwersahang itinulak ang %[1]s mula %[2]s
sa %[4]s
%[6]s`
+issues.push_commit_1 = idinagdag ang %d [commit] %s
+issues.push_commits_n = idinagdag ang %d mga [commit] %s
+issues.new.no_reviewers = Walang mga tagasuri
+pulls.title_desc_one = nais na isama ang %[1]d [commit] mula %[2]s
hanggang %[3]s
+pulls.title_desc_few = nais na isama ang %[1]d mga [commit] mula %[2]s
hanggang %[3]s
[search]
commit_kind = Maghanap ng mga commit...
@@ -1915,6 +1921,8 @@ create_branch = ginawa ang branch na %[3]s sa %s
starred_repo = na-star ang %[2]s
watched_repo = ay sinimulang panoorin ang %[2]s
+compare_commits_general = Ikumpara ang mga [commit]
+compare_commits = Ikumpara ang %d mga [commit]
[tool]
1m = 1 minuto
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index d00caafb7f..90b4742a87 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -770,11 +770,11 @@ primary=Principale
activated=Activé
requires_activation=Nécessite une activation
primary_email=Faire de cette adresse votre adresse principale
-activate_email=Envoyer l’activation
+activate_email=Envoyer un courriel d'activation
activations_pending=Activations en attente
can_not_add_email_activations_pending=Il y a une activation en attente, réessayez dans quelques minutes si vous souhaitez ajouter un nouvel e-mail.
delete_email=Exclure
-email_deletion=Supprimer l'adresse e-mail
+email_deletion=Supprimer l'adresse email
email_deletion_desc=L’adresse e-mail et les informations associées seront retirées de votre compte. Les révisions Git effectuées par cette adresse resteront inchangées. Continuer ?
email_deletion_success=L'adresse e-mail a été supprimée.
theme_update_success=Votre thème a été mis à jour.
@@ -866,7 +866,7 @@ token_state_desc=Ce jeton a été utilisé au cours des 7 derniers jours
principal_state_desc=Ce Principal a été utilisé au cours des 7 derniers jours
show_openid=Afficher sur le profil
hide_openid=Masquer du profil
-ssh_disabled=SSH désactivé
+ssh_disabled=SSH est désactivé
ssh_signonly=SSH étant désactivé, ces clés ne servent qu'à vérifier la signature des révisions.
ssh_externally_managed=Cette clé SSH est gérée de manière externe pour cet utilisateur
manage_social=Gérer les réseaux sociaux associés
@@ -1335,10 +1335,10 @@ editor.commit_empty_file_header=Réviser un fichier vide
editor.commit_empty_file_text=Le fichier que vous allez réviser est vide. Continuer ?
editor.no_changes_to_show=Il n’y a aucune modification à afficher.
editor.fail_to_update_file=Impossible de mettre à jour/créer le fichier "%s".
-editor.fail_to_update_file_summary=Message d'erreur :
+editor.fail_to_update_file_summary=Message d'erreur :
editor.push_rejected_no_message=La modification a été rejetée par le serveur sans message. Veuillez vérifier les Git hooks.
editor.push_rejected=La modification a été rejetée par le serveur. Veuillez vérifier vos Git hooks.
-editor.push_rejected_summary=Message de rejet complet :
+editor.push_rejected_summary=Message de rejet complet :
editor.add_subdir=Ajouter un dossier…
editor.unable_to_upload_files=Impossible d'envoyer le fichier "%s" : %v
editor.upload_file_is_locked=Le fichier "%s" est verrouillé par %s.
@@ -1855,13 +1855,13 @@ pulls.merge_commit_id=L'ID de la révision de fusion
pulls.require_signed_wont_sign=La branche nécessite des révisions signées mais cette fusion ne sera pas signée
pulls.invalid_merge_option=Vous ne pouvez pas utiliser cette option de fusion pour cette demande.
-pulls.merge_conflict=Échec de la fusion : il y a eu un conflit lors de la fusion. Indice : Essayez une autre stratégie
+pulls.merge_conflict=Fusion échouée : il y a eu un conflit lors de la fusion. Indice : Essayez une stratégie différente
pulls.merge_conflict_summary=Message d'erreur
-pulls.rebase_conflict=Fusion échouée : il y a eu un conflit lors du rebasage de la révision %[1]s. Astuce : Essayez une stratégie différente
+pulls.rebase_conflict=Fusion échouée : il y a eu un conflit lors du rebasage de la révision %[1]s. Indice : Essayez une stratégie différente
pulls.rebase_conflict_summary=Message d'erreur
-pulls.unrelated_histories=Échec de la fusion : La tête de fusion et la base ne partagent pas d'historique commun. Indice : Essayez une stratégie différente
-pulls.merge_out_of_date=Échec de la fusion : La base a été mise à jour en cours de fusion. Indice : Réessayez.
-pulls.head_out_of_date=Échec de la fusion : L’en-tête a été mis à jour pendant la fusion. Conseil : réessayez.
+pulls.unrelated_histories=Fusion échouée : La tête de fusion et la base ne partagent pas d'historique commun. Indice : Essayez une stratégie différente
+pulls.merge_out_of_date=Fusion échouée : La base a été mise à jour en cours de fusion. Indice : Réessayez.
+pulls.head_out_of_date=Fusion échouée : L’en-tête a été mis à jour pendant la fusion. Indice : réessayez.
pulls.has_merged=Échec : La demande d’ajout est déjà fusionnée, vous ne pouvez plus la fusionner, ni modifier sa branche cible.
pulls.push_rejected=Échec du push : la soumission a été rejetée. Revoyez les Git hook pour ce dépôt.
pulls.push_rejected_summary=Message de rejet complet
@@ -2412,9 +2412,9 @@ settings.protect_branch_name_pattern=Motif de nom de branche protégé
settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la documentation pour la syntaxe du motif. Exemples : main, release/**
settings.protect_patterns=Motifs
settings.protect_protected_file_patterns=Liste des fichiers et motifs protégés (séparés par un point virgule ";") :
-settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule ( ;). Voir la documentation de github.com/gobwas/glob pour la syntaxe des motifs. Exemples : .forgejo/workflows/test.yml
, /docs/**/*.txt
.
+settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule (";"). Veuillez voir github.com/gobwas/glob la documentation pour la syntaxe des motifs. Exemples : .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Liste des fichiers et motifs exclus (séparés par un point virgule ";") :
-settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule ( ;). Voir la documentation de github.com/gobwas/glob pour la syntaxe des motifs. Exemples : .forgejo/workflows/test.yml
, /docs/**/*.txt
.
+settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule (";"). Veuillez voir github.com/gobwas/glob la documentation pour la syntaxe des motifs. Exemples : .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=Activer la protection
settings.delete_protected_branch=Désactiver la protection
settings.update_protect_branch_success=La règle de protection de branche "%s" a été mise à jour.
@@ -2526,8 +2526,8 @@ diff.file_after=Après
diff.file_image_width=Largeur
diff.file_image_height=Hauteur
diff.file_byte_size=Taille
-diff.file_suppressed=Diff de fichier supprimé car celui-ci est trop grand
-diff.file_suppressed_line_too_long=Diff de fichier supprimé car une ou plusieurs lignes sont trop longues
+diff.file_suppressed=Le diff du fichier est caché, car celui-ci est trop grand
+diff.file_suppressed_line_too_long=Le diff du fichier est caché, car une ou plusieurs lignes sont trop longues
diff.too_many_files=Certains fichiers ne sont pas affichés car ce diff contient trop de modifications
diff.show_more=Voir plus
diff.load=Voir la diff
@@ -2756,6 +2756,8 @@ release.hide_archive_links = Masquer les archives générées automatiquement
release.hide_archive_links_helper = Masquer les archives de code source générées automatiquement pour cette publication. Par exemple, si vous téléchargez vos propres archives.
settings.transfer.button = Changer de propriétaire
settings.transfer.modal.title = Changer de propriétaire
+wiki.search = Recherche dans le wiki
+wiki.no_search_results = Pas de résultats
[graphs]
component_loading=Chargement de %s…
@@ -3467,7 +3469,7 @@ mirror_sync_create=a synchronisé la nouvelle référence %[3]s<
mirror_sync_delete=a synchronisé puis supprimé la nouvelle référence %[2]s
vers %[3]s depuis le miroir
approve_pull_request=`a approuvé %[3]s#%[2]s`
reject_pull_request=`a suggérés des changements pour %[3]s#%[2]s`
-publish_release=`a publié "%[4]s" dans %[3]s`
+publish_release=`a publié %[4]s dans %[3]s`
review_dismissed=`a révoqué l’évaluation de %[4]s dans %[3]s#%[2]s`
review_dismissed_reason=Raison :
create_branch=a créé la branche %[3]s dans %[4]s
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index f4e1bcd663..1f4e0f6d7c 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -146,7 +146,7 @@ filter.is_archived = アーカイブ
filter.not_archived = アーカイブされていない
filter.is_fork = フォーク
filter.is_mirror = ミラー
-filter.not_mirror = ミラーされていない
+filter.not_mirror = ミラーではない
filter.is_template = テンプレート
filter = フィルター
filter.not_fork = フォークされていない
@@ -171,8 +171,8 @@ contributions_zero=貢献なし
less=少
more=多
contributions_one = 貢献
-contributions_few = 貢献たち
-contributions_format = {month} {day}, {year} に {contributions} 件の貢献
+contributions_few = 貢献
+contributions_format = {month} {day}, {year} に {contributions}
[editor]
buttons.heading.tooltip=見出し追加
@@ -647,7 +647,7 @@ joined_on=%sに登録
repositories=リポジトリ
activity=公開アクティビティ
followers_few=%d フォロワー
-starred=スターを付けたリポジトリたち
+starred=スターを付けたリポジトリ
watched=ウォッチ中のリポジトリ
code=コード
projects=プロジェクト
@@ -2648,7 +2648,7 @@ find_file.no_matching=一致するファイルが見つかりません
error.csv.too_large=このファイルは大きすぎるため表示できません。
error.csv.unexpected=このファイルは %d 行目の %d 文字目に予期しない文字が含まれているため表示できません。
error.csv.invalid_field_count=このファイルは %d 行目のフィールドの数が正しくないため表示できません。
-admin.enabled_flags = このリポジトリで有効になっているフラグたち:
+admin.enabled_flags = このリポジトリで有効になっているフラグ:
clone_in_vscodium = VSCodiumでcloneする
desc.sha256 = SHA256
wiki.cancel = キャンセル
@@ -2737,7 +2737,7 @@ component_loading_failed = %s を読み込めませんでした
component_loading_info = 少し時間がかかるかもしれません…
component_failed_to_load = 予期しないエラーが発生しました。
code_frequency.what = コード頻度
-contributors.what = 貢献たち
+contributors.what = 貢献
recent_commits.what = 最近のコミット
[org]
diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini
index f8a9a17ba7..9aa7ce14e1 100644
--- a/options/locale/locale_ko-KR.ini
+++ b/options/locale/locale_ko-KR.ini
@@ -15,7 +15,7 @@ page=페이지
template=템플릿
language=언어
notifications=알림
-create_new=생성하기
+create_new=새로 만들기…
user_profile_and_more=프로파일 및 설정…
signed_in_as=다음 사용자로 로그인됨
@@ -100,8 +100,8 @@ remove_label_str = "%s" 항목 제거
disabled = 비활성화됨
locked = 잠김
filter = 필터
-filter.not_fork = 포크되지 않음
-filter.is_mirror = 미러됨
+filter.not_fork = 포크가 아님
+filter.is_mirror = 미러
webauthn_press_button = 보안 키의 버튼을 누르세요…
toggle_menu = 토글 메뉴
webauthn_error = 보안 키를 읽을 수 없습니다.
@@ -146,13 +146,16 @@ confirm_delete_selected = 선택된 모든 항목을 삭제하시겠습니까?
value = 값
filter.is_archived = 보관됨
filter.not_archived = 보관되지 않음
-filter.is_fork = 포크됨
-filter.not_mirror = 미러되지 않음
+filter.is_fork = 포크
+filter.not_mirror = 미러가 아님
filter.is_template =템플릿
filter.clear = 필터 지우기
ok = 확인
confirm_delete_artifact = 정말 artifact "%s"를 삭제하실건가요?
artifacts = Artifacts
+filter.public = 공개
+filter.private = 비공개
+filter.not_template = 템플릿이 아님
[aria]
navbar = 네비게이션 바
@@ -204,18 +207,18 @@ err_admin_name_is_reserved=관리자 사용자 이름이 올바르지 않습니
err_admin_name_is_invalid=관리자 사용자 이름이 올바르지 않습니다
general_title=기본설정
-app_name=사이트 제목
+app_name=인스턴스 제목
app_name_helper=회사이름을 넣으세요.
repo_path=저장소 최상위 경로
repo_path_helper=Git 원격 저장소는 이 디렉터리에 저장 됩니다.
lfs_path=Git LFS 루트 경로
lfs_path_helper=Git LFS에 저장된 파일들은 이 디렉토리에 저장됩니다. LFS를 사용하지 않는다면 빈칸으로 남겨주세요.
-run_user=실행 사용자명
+run_user=다음 사용자로 실행
ssh_port=SSH 서버 포트
-ssh_port_helper=SSH 서버가 실행되고 있는 포트를 입력하세요. 비워둘 경우 SSH를 사용하지 않습니다.
-http_port=Forgejo HTTP 수신 포트
+ssh_port_helper=SSH 서버를 실행할 포트를 입력하세요. 비워둘 경우 SSH를 사용하지 않습니다.
+http_port=HTTP 수신 포트
http_port_helper=Forgejo 웹서버가 수신할 포트 번호입니다.
-app_url=Forgejo 기본 URL
+app_url=기본 URL
app_url_helper=HTTP(S) clone URL 및 이메일 알림 기본 주소입니다.
log_root_path=로그 경로
log_root_path_helper=로그파일은 이 디렉토리에 저장됩니다.
@@ -235,17 +238,17 @@ offline_mode=로컬 모드 켜기
offline_mode_popup=타사 콘텐츠 전송 네트워크를 사용하지 않도록 설정하고 모든 리소스를 로컬로 제공하십시오.
disable_gravatar=Gravatar 사용안함
disable_gravatar_popup=Gravatar 및 타사 아바타 소스를 사용하지 않도록 설정합니다. 사용자가 로컬로 아바타를 업로드하지 않는 한 기본 아바타가 사용됩니다.
-federated_avatar_lookup=아바타 연동 사용여부
+federated_avatar_lookup=탈중앙화 아바타 사용
federated_avatar_lookup_popup=libravatar 기반 오픈소스 연합 아바타 조회를 허용합니다.
disable_registration=사용자 등록 비활성화
disable_registration_popup=사용자가 직접 등록할 수 없게 합니다. 관리자만이 추가할 수 있습니다.
-allow_only_external_registration_popup=외부 서비스를 통한 등록을 허용여부
+allow_only_external_registration_popup=외부 서비스를 통한 등록을 허용
openid_signin=OpenID 로그인 사용
openid_signin_popup=OpenID 를 이용한 로그인을 허용합니다.
-openid_signup=OpenID 가입 가능여부
+openid_signup=OpenID 가입 허용
openid_signup_popup=OpenID를 통한 가입을 허용합니다.
enable_captcha_popup=사용자 등록시 캡차를 요구합니다.
-require_sign_in_view=페이지를 보기 위해 로그인 하기
+require_sign_in_view=인스턴스의 콘텐츠를 볼때 로그인 요구
admin_setting_desc=관리자 계정을 만드는 것은 선택사항입니다. 첫번째로 등록된 사용자는 자동적으로 관리자로 지정됩니다.
admin_title=관리자 계정 설정
admin_name=관리자 이름
@@ -257,7 +260,7 @@ test_git_failed='git' 명령 테스트 실패: %v
sqlite3_not_available=해당 버전에서는 SQLite3를 지원하지 않습니다. %s에서 공식 버전을 다운로드해주세요. ('gobuild' 버전이 아닙니다).
invalid_db_setting=데이터베이스 설정이 올바르지 않습니다: %v
invalid_repo_path=저장소(레파지토리) 의 경로가 올바르지 않습니다: %v
-run_user_not_match=실행 사용자명이 현재 사용자명과 다릅니다.: %s -> %s
+run_user_not_match=실행 사용자명이 현재 사용자명과 다릅니다: %s -> %s
save_config_failed=설정을 저장할 수 없습니다: %v
invalid_admin_setting=관리자 계정 설정이 올바르지 않습니다: %v
invalid_log_root_path=로그(Log) 의 경로가 올바르지 않습니다: %v
@@ -267,15 +270,15 @@ default_allow_create_organization=조직 생성 허용을 기본값으로 설정
default_allow_create_organization_popup=신규 사용자 생성시 조직 생성을 기본값으로 설정합니다.
default_enable_timetracking=시간 추적 사용을 기본값으로 설정
default_enable_timetracking_popup=신규 레포지토리에 대한 시간 추적 사용을 기본값으로 설정합니다.
-no_reply_address=숨김처리된 이메일 도메인
-no_reply_address_helper=숨겨진 이메일을 가진 사용자에게 적용될 이메일 도메인입니다. 예를 들어, 사용자 'joe'의 숨겨진 이메일 도메인이 'noreply.example.org'로 설정되어 있으면 'joe@noreply.example.org'로 로그인 됩니다.
+no_reply_address=가려진 이메일 도메인
+no_reply_address_helper=가려진 이메일을 가진 사용자에게 적용될 이메일 도메인입니다. 예를 들어, 사용자 'joe'의 가려잔 이메일 도메인이 'noreply.example.org'로 설정되어 있으면 'joe@noreply.example.org'로 처리 됩니다.
[home]
uname_holder=사용자 이름 또는 이메일 주소
password_holder=비밀번호
switch_dashboard_context=대시보드 컨텍스트 바꾸기
my_repos=저장소
-show_more_repos=더 많은 저장소 보기
+show_more_repos=더 많은 저장소 보기…
collaborative_repos=협업 저장소
my_orgs=내 조직
my_mirrors=내 미러 저장소들
@@ -313,7 +316,7 @@ allow_password_change=사용자에게 비밀번호 변경을 요청 (권장됨)
reset_password_mail_sent_prompt=확인 메일이 %s로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오.
active_your_account=계정 활성화
account_activated=계정이 활성화 되었습니다
-prohibit_login=로그인이 금지됨
+prohibit_login=
resent_limit_prompt=활성화를 위한 이메일을 이미 전송했습니다. 3분 내로 이메일을 받지 못한 경우 재시도해주세요.
has_unconfirmed_mail=안녕하세요 %s, 이메일 주소(%s)가 확인되지 않았습니다. 확인 메일을 받으시지 못하겼거나 새로운 확인 메일이 필요하다면, 아래 버튼을 클릭해 재발송하실 수 있습니다.
resend_mail=여기를 눌러 확인 메일 재전송
@@ -355,11 +358,12 @@ activate_account=계정을 활성화하세요
activate_email=이메일 주소 확인
-register_notify=Forgejo에 오신것을 환영합니다!
+register_notify=Forgejo에 오신것을 환영합니다
reset_password=계정 복구
register_success=등록 완료
+issue.action.close = @%[1]s님이 #%[2]d를 닫았습니다.
@@ -432,7 +436,7 @@ target_branch_not_exist=대상 브랜치가 존재하지 않습니다.
[user]
-change_avatar=아바타 변경
+change_avatar=아바타 변경…
repositories=저장소
activity=공개 활동
followers_few=%d 팔로워
@@ -443,6 +447,7 @@ follow=추적하기
unfollow=추적해제
user_bio=소개
projects = 프로젝트
+watched = 주시중인 저장소
[settings]
@@ -497,9 +502,9 @@ manage_emails=이메일 주소 관리
manage_themes=기본 테마 선택
manage_openid=OpenID 주소 관리
theme_desc=이 테마가 사이트 전체 기본 테마가 됩니다.
-primary=기본
+primary=대표
activated=활성화됨
-primary_email=프라이머리로 만들기
+primary_email=대표로 만들기
delete_email=삭제
email_deletion=이메일 주소 삭제
email_deletion_desc=계정의 이메일 주소와 관련된 정보가 삭제됩니다. 이메일 주소로 이미 커밋된 내용들은 바뀌지 않고 남아있게 됩니다. 계속 진행하시겠습니까?
@@ -617,6 +622,8 @@ email_notifications.enable=이메일 알림 켜기
email_notifications.disable=이메일 알림 끄기
visibility.private=비공개
+change_password = 비밀번호 변경
+email_desc = 당신의 대표 이메일 주소는 알림, 비밀번호 재설정과 웹에서의 Git 작동에 사용되며 가려지지 않습니다.
[repo]
owner=소유자
@@ -681,8 +688,8 @@ mirror_from=의 미러
forked_from=원본 프로젝트
fork_from_self=자신의 저장소를 포크 할 수 없습니다.
fork_guest_user=로그인하고 Fork 이 창고.
-unwatch=보지않기
-watch=보기
+unwatch=주시 중단
+watch=주시
unstar=좋아요 취소
star=좋아요
fork=포크
@@ -775,7 +782,7 @@ issues.new.milestone=마일스톤
issues.new.no_milestone=마일스톤 없음
issues.new.clear_milestone=마일스톤 초기화
issues.new.open_milestone=마일스톤 생성
-issues.new.closed_milestone=마일스톤 닫기
+issues.new.closed_milestone=닫힌 마일스톤
issues.new.assignees=담당자
issues.new.clear_assignees=담당자 초기화
issues.new.no_assignees=담당자 없음
@@ -982,7 +989,7 @@ wiki.create_first_page=첫 페이지 작성
wiki.page=페이지
wiki.filter_page=페이지 필터링
wiki.new_page=페이지
-wiki.default_commit_message=이 페이지 수정에 대한 메모를 작성하세요.(선택사항)
+wiki.default_commit_message=이 페이지 수정에 대한 메모를 작성하세요 (선택).
wiki.save_page=페이지 저장하기
wiki.last_commit_info=%s이(가) %s에 이 페이지를 수정함
wiki.edit_page_button=수정하기
@@ -1166,8 +1173,8 @@ settings.deploy_key_deletion_success=배포키가 삭제되었습니다.
settings.branches=브랜치
settings.protected_branch=브랜치 보호
settings.protected_branch_can_push=푸시를 허용하시겠습니까?
-settings.protected_branch_can_push_yes=푸시할 수 있습니다.
-settings.protected_branch_can_push_no=푸시할 수 없습니다.
+settings.protected_branch_can_push_yes=푸시할 수 있음
+settings.protected_branch_can_push_no=푸시할 수 없음
settings.branch_protection='%s' 브랜치 보호
settings.protect_this_branch=브랜치 보호 활성화
settings.protect_disable_push=푸시 끄기
@@ -1180,7 +1187,7 @@ settings.protect_approvals_whitelist_users=화이트리스트된 리뷰어:
settings.add_protected_branch=보호 활성화
settings.delete_protected_branch=보호 비활성화
settings.protected_branch_deletion=브랜치 보호 비활성화
-settings.choose_branch=브랜치 선택...
+settings.choose_branch=브랜치 선택…
settings.no_protected_branch=보호된 브랜치가 없습니다.
settings.edit_protected_branch=편집
settings.archive.button=아카이브 저장소
@@ -1199,7 +1206,7 @@ diff.stats_desc=%d개의 변경된 파일과 %d개의
diff.bin=BIN
diff.view_file=파일 보기
diff.file_byte_size=크기
-diff.file_suppressed=파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+diff.file_suppressed=파일 크기가 너무 커 변경을 표시할 수 없음
diff.comment.placeholder=댓글 남기기
diff.comment.add_single_comment=간단한 설명 추가
diff.comment.add_review_comment=댓글 추가
@@ -1236,13 +1243,13 @@ branch.name=브랜치명
branch.delete_head=삭제
branch.delete_html=브랜치 삭제
branch.create_branch=%s 브랜치 생성
-branch.deleted_by=%s 에 의해 삭제되었습니다.
+branch.deleted_by=%s 에 의해 삭제되었음
topic.manage_topics=토픽 관리
topic.done=완료
-topic.count_prompt=25개 이상의 토픽을 선택하실 수 없습니다.
+topic.count_prompt=25개 이상의 토픽을 선택하실 수 없음
settings.trust_model.collaboratorcommitter.desc = 이 저장소의 협업자가 작성한 유효한 서명이 커미터와 일치하는 경우 "신뢰할 수 있음"으로 표시됩니다. 협업자가 아니되 유효한 서명이 커미터와 일치하면 "신뢰할 수 없음"으로 표시되고 그렇지 않으면 "일치하지 않음"으로 표시됩니다. 커밋에 Co-Authored-By: 또는 Co-Committed-By: 트레일러로 표시된 실제 커미터와 함께 서명된 커밋이 있다면 Forgejo가 커미터로 표시됩니다. 기본 Forgejo 키는 데이터베이스의 사용자와 일치해야 합니다.
settings.matrix.access_token_helper = 이 작업을 위한 개별적인 Matrix 계정을 만드는것이 권장됩니다. 엑세스 토큰은 Element 웹 클라이언트(개인정보 보호 브라우징 권장) > 유저 메뉴(좌상단) > All settings > Help & About > Advanced > Access Token (홈서버 주소 바로 아래) 에서 찾을 수 있습니다. 로그아웃시 토큰이 만료됨을 주의하시고, 창을 닫아주세요.
settings.trust_model.collaboratorcommitter = 협업자+커미터
@@ -1274,6 +1281,14 @@ pulls.approve_count_1 = %d명의 승인
pulls.blocked_by_approvals = 이 풀 리퀘스트는 충분히 승인되지 않았습니다. %d/%d 승인됨.
settings.event_pull_request_approvals = 풀 리퀘스트 승인
pulls.blocked_by_official_review_requests = 이 풀 리퀘스트는 공식 검토자에 의한 승인이 부족하여 차단되었습니다.
+watch_guest_user = 이 저장소를 주시하려면 로그인 해야합니다.
+issues.closed_by_fake = %[2]s님이 %[1]s에 닫음
+issues.new.closed_projects = 닫힌 프로젝트
+pulls.merged_by_fake = %[2]s님이 %[1]s에 머지함
+issues.closed_by = %[3]s님이 %[1]s에 닫음
+issues.closed_at = `%[2]s`에 이 이슈를 닫음
+issues.filter_milestone_closed = 닫힌 마일스톤
+issues.opened_by_fake = %[2]s님이 %[1]s에 열음
@@ -1307,7 +1322,7 @@ settings.update_settings=설정 업데이트
settings.update_setting_success=조직 설정이 변경되었습니다.
settings.update_avatar_success=조직의 아바타가 갱신되었습니다.
settings.delete=조직 삭제
-settings.delete_account=이 조직을 삭제합니다.
+settings.delete_account=이 조직을 삭제하기
settings.confirm_delete_account=삭제 승인
settings.delete_org_title=조직 삭제
settings.delete_org_desc=이 조직이 영구히 삭제됩니다. 계속 하시겠습니까?
@@ -1330,7 +1345,7 @@ teams.join=가입
teams.leave=탈퇴
teams.read_access=읽음
teams.admin_access=관리자 액세스
-teams.no_desc=이 팀은 설명이 없습니다.
+teams.no_desc=이 팀은 설명이 없음
teams.settings=설정
teams.members=팀 구성원
teams.update_settings=설정 업데이트
@@ -1402,7 +1417,7 @@ users.admin=관리자
users.repos=저장소
users.created=작성일
users.last_login=마지막 로그인
-users.never_login=로그인 한 적이 없습니다.
+users.never_login=로그인 한 적이 없음
users.send_register_notify=사용자 등록 알림 전송
users.edit=수정하기
users.auth_source=인증 소스
@@ -1412,7 +1427,7 @@ users.password_helper=비밀번호를 비워두시면 변경하지 않고 유지
users.update_profile_success=사용자 계정이 갱신되었습니다.
users.edit_account=사용자 계정 편집
users.max_repo_creation_desc=(-1을 입력하면 전역 설정된 기본 제한을 따릅니다.)
-users.is_activated=사용자 계정이 활성화 되었습니다.
+users.is_activated=사용자 계정이 활성화 되었음
users.prohibit_login=로그인 비활성화
users.is_admin=관리자
users.allow_git_hook=Git 훅 생성 허용
@@ -1496,7 +1511,7 @@ auths.tips=도움말
auths.tips.oauth2.general=OAuth2 인증
auths.tip.oauth2_provider=OAuth2 프로바이더
auths.edit=인증 소스 편집
-auths.activated=인증 소스가 활성화 되었습니다.
+auths.activated=인증 소스가 활성화 되었음
auths.update_success=인증 소스가 갱신되었습니다.
auths.update=인증 소스 갱신
auths.delete=인증 소스 삭제
@@ -1556,7 +1571,7 @@ config.default_allow_create_organization=기본적으로 조직 생성을 허용
config.enable_timetracking=타임 트래킹 활성화
config.default_enable_timetracking=기본 타임 트래킹 활성화
config.default_allow_only_contributors_to_track_time=기여자 트랙 타임만
-config.no_reply_address=답변 받지 않을 이메일 주소
+config.no_reply_address=가려진 이메일 도메인
config.default_enable_dependencies=기본적으로 이슈 종속성을 활성화
config.webhook_config=웹훅 설정
@@ -1639,14 +1654,15 @@ notices.desc=설명
notices.op=일.
notices.delete_success=시스템 알림이 삭제되었습니다.
users.allow_git_hook_tooltip = Git 훅은 Forgejo가 실행중인 OS 유저로 실행되며 같은 수준의 권한을 갖습니다. 결과적으로, Git 훅 사용권한이 있는 사용자는 Forgejo에서 사용하는 데이터베이스를 포함한 모든 저장소에 접근하거나 수정할 수 있습니다. 궁극적으로 이러한 사용자들은 Forgejo의 관리자 권한을 획득할 수 있습니다.
+emails.primary = 대표
[action]
create_repo=저장소를 만들었습니다. %s
-rename_repo=%[1]s에서
에서 %[3]s으로 저장소 이름을 바꾸었습니다.
-transfer_repo=%s
에서 %s로 저장소가 전송되었습니다.
+rename_repo=저장소 이름을 %[1]s에서
에서 %[3]s으로 변경함
+transfer_repo=저장소가 %s
에서 %s로 이동됨
compare_commits=%d 커밋들 비교
-watched_repo = %[2]s에대한 감시를 시작합니다
+watched_repo = %[2]s에대한 주시를 시작함
[tool]
now=현재
@@ -1685,12 +1701,12 @@ mark_as_unread=읽지 않음으로 표시
mark_all_as_read=모두 읽음으로 표시
subscriptions = 구독된 알림
no_subscriptions = 알림이 없음
-watching = 감시
+watching = 주시중
[gpg]
error.extract_sign=서명 추출에 실패
error.generate_hash=커밋의 해시 생성에 실패
-error.not_signed_commit=서명되지 않은 커밋입니다.
+error.not_signed_commit=서명되지 않은 커밋
[units]
error.no_unit_allowed_repo=이 저장소의 어떤 섹션에도 접근할 수 없습니다.
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index d8bb0908db..ec24ab7a38 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -146,10 +146,18 @@ filter = Filtro
filter.clear = Limpar filtros
filter.is_archived = Arquivado
filter.public = Público
-filter.is_template = Modelo
+filter.is_template = Modelos
filter.private = Privado
invalid_data = Dados inválidos: %v
more_items = Mais itens
+filter.is_fork = Forks
+filter.is_mirror = Espelhos
+toggle_menu = Alternar menu
+filter.not_archived = Não arquivado
+filter.not_fork = Sem forks
+filter.not_mirror = Sem espelhos
+filter.not_template = Sem modelos
+copy_generic = Copiar para área de transferência
[aria]
navbar=Barra de navegação
@@ -296,7 +304,7 @@ invalid_db_setting=Configuração de banco de dados está inválida: %v
invalid_db_table=A tabela "%s" do banco de dados é inválida: %v
invalid_repo_path=A raiz do repositório está inválida: %v
invalid_app_data_path=O caminho dos dados do aplicativo é inválido: %v
-run_user_not_match=O nome de usuário 'Executar como' não é o nome de usuário atual: %s -> %s
+run_user_not_match=
internal_token_failed=Falha ao gerar o token interno: %v
secret_key_failed=Falha ao gerar a chave secreta: %v
save_config_failed=Falha ao salvar a configuração: %v
@@ -306,10 +314,10 @@ default_keep_email_private=Ocultar endereços de e-mail por padrão
default_keep_email_private_popup=Ocultar endereços de e-mail de novas contas de usuário por padrão.
default_allow_create_organization=Permitir a criação de organizações
default_allow_create_organization_popup=Permitir que novas contas de usuários criem organizações por padrão.
-default_enable_timetracking=Habilitar o Cronômetro por Padrão
+default_enable_timetracking=Habilitar o cronômetro por padrão
default_enable_timetracking_popup=Habilitar o cronômetro para novos repositórios por padrão.
no_reply_address=Domínio de e-mail oculto
-no_reply_address_helper=Nome de domínio para usuários com um endereço de e-mail oculto. Por exemplo, o nome de usuário 'joe' será registrado no Git como 'joe@noreply.example.org' se o domínio de e-mail oculto estiver definido como 'noreply.example.org'.
+no_reply_address_helper=Nome de domínio para usuários com endereço de e-mail oculto. Por exemplo, o nome de usuário "joe" será registrado no Git como "joe@noreply.example.org" se o domínio de e-mail oculto estiver definido como "noreply.example.org".
password_algorithm=Algoritmo de hash de senhas
invalid_password_algorithm=Algoritmo de hash de senha inválido
password_algorithm_helper=Escolha o algoritmo de hash para as senhas. Diferentes algoritmos têm requerimentos e forças diversos. O algoritmo argon2 é bastante seguro, mas usa muita memória e pode ser inapropriado para sistemas com menos recursos.
@@ -318,6 +326,8 @@ env_config_keys=Configuração do ambiente
env_config_keys_prompt=As seguintes variáveis de ambiente também serão aplicadas ao seu arquivo de configuração:
allow_dots_in_usernames = Permitir pontos em nomes de usuário. Esta opção não afeta contas já existentes.
enable_update_checker_helper_forgejo = Confere periodicamente um registro TXT de DNS em release.forgejo.org para verificar se há uma nova versão do Forgejo disponível.
+smtp_from_invalid = O endereço "Enviar e-mail como" é inválido
+config_location_hint = Essas opções de configuração serão salvas em:
[home]
uname_holder=Usuário ou e-mail
@@ -369,6 +379,8 @@ relevant_repositories_tooltip=Repositórios que são forks ou que não possuem t
relevant_repositories=Apenas repositórios relevantes estão sendo mostrados, mostrar resultados não filtrados.
stars_one = %d estrela
stars_few = %d estrelas
+forks_one = %d fork
+forks_few = %d forks
[auth]
create_new_account=Cadastrar conta
@@ -388,7 +400,7 @@ allow_password_change=Exigir que o usuário redefina a senha (recomendado)
reset_password_mail_sent_prompt=Um e-mail de confirmação foi enviado para %s. Por favor, verifique sua caixa de entrada dentro do(s) próximo(s) %s para concluir o processo de recuperação de conta.
active_your_account=Ativar sua conta
account_activated=Conta foi ativada
-prohibit_login=Acesso proibido
+prohibit_login=É proibido fazer login
prohibit_login_desc=Sua conta está proibida de fazer login, entre em contato com o administrador do site.
resent_limit_prompt=Você já solicitou recentemente um e-mail de ativação. Por favor, aguarde 3 minutos e tente novamente.
has_unconfirmed_mail=Oi %s, você possui um endereço de e-mail não confirmado (%s). Se você não recebeu um e-mail de confirmação ou precisa reenviar um novo, clique no botão abaixo.
@@ -414,8 +426,8 @@ tab_openid=OpenID
oauth_signup_tab=Cadastrar nova conta
oauth_signup_title=Completar Nova Conta
oauth_signup_submit=Completar conta
-oauth_signin_tab=Vincular à uma conta existente
-oauth_signin_title=Acesse com uma conta vinculada
+oauth_signin_tab=Vincular a uma conta existente
+oauth_signin_title=Faça login para autorizar a conta vinculada
oauth_signin_submit=Vincular conta
oauth.signin.error=Ocorreu um erro durante o processamento do pedido de autorização. Se este erro persistir, contate o administrador.
oauth.signin.error.access_denied=O pedido de autorização foi negado.
@@ -445,6 +457,7 @@ last_admin = Não é possível remover o último administrador. Deve haver ao me
change_unconfirmed_email = Se você colocou o endereço de e-mail errado durante o cadastro, você pode alterá-lo abaixo, e uma confirmação será enviada para o novo endereço.
remember_me.compromised = O token de login foi invalidado, o que pode indicar que a sua conta foi comprometida. Verifique se não há atividades suspeitas em sua conta.
tab_signin = Iniciar sessão
+tab_signup = Inscrever-se
[mail]
view_it_on=Veja em %s
@@ -546,8 +559,8 @@ SSPISeparatorReplacement=Separador
SSPIDefaultLanguage=Idioma padrão
require_error=` não pode estar em branco.`
-alpha_dash_error=` deve conter somente alfanumérico, caracteres de traço ('-') e sublinhado ('_').`
-alpha_dash_dot_error=` deve conter somente alfanumérico, caracteres de traço ('-'), sublinhado ('_') e ponto ('. ') .`
+alpha_dash_error=`deve conter apenas caracteres alfanuméricos, traço ("-") e sublinhado ("_").`
+alpha_dash_dot_error=`deve conter apenas caracteres alfanuméricos, traço ("-"), sublinhado ("_") e ponto (".").`
git_ref_name_error=` deve ser um nome de referência Git válido.`
size_error=`deve ser do tamanho %s.`
min_size_error=` deve conter pelo menos %s caracteres.`
@@ -593,7 +606,7 @@ enterred_invalid_owner_name=O nome do novo proprietário não é válido.
enterred_invalid_password=A senha que você digitou está incorreta.
user_not_exist=O usuário não existe.
team_not_exist=A equipe não existe.
-last_org_owner=Você não pode remover o último usuário do time 'proprietários'. Deve haver pelo menos um proprietário em uma organização.
+last_org_owner=Você não pode remover o último usuário da equipe de “proprietários”. Deve haver pelo menos um proprietário para uma organização.
cannot_add_org_to_team=Uma organização não pode ser adicionada como membro de uma equipe.
duplicate_invite_to_team=O usuário já foi convidado para se juntar da equipe.
organization_leave_success=Você saiu da organização %s com sucesso.
@@ -606,15 +619,25 @@ unable_verify_ssh_key=Não foi possível validar a chave SSH. Certifique-se de q
auth_failed=Autenticação falhou: %v
still_own_repo=A sua conta possui um ou mais repositórios. Exclua ou transfira-os antes de excluir a conta.
-still_has_org=Sua conta é um membro de uma ou mais organizações, deixe-as primeiro.
+still_has_org=Sua conta é membro de uma ou mais organizações, saia delas primeiro.
still_own_packages=Sua conta possui um ou mais pacotes, exclua-os primeiro.
-org_still_own_repo=Esta organização ainda possui repositórios, exclua ou transfira-os primeiro.
-org_still_own_packages=Esta organização ainda possui pacotes, exclua-os primeiro.
+org_still_own_repo=Esta organização ainda possui um ou mais repositórios. Exclua-os ou transfira-os primeiro.
+org_still_own_packages=Esta organização ainda possui um ou mais pacotes. Exclua-os primeiro.
target_branch_not_exist=O branch de destino não existe.
username_error_no_dots = ` pode conter apenas caracteres alfanuméricos ("0-9, "a-z", "A-Z"), hífens ("-") e traços inferiores ("_"). Não é permitido conter caracteres não alfanuméricos no início ou fim. Caracteres não alfanuméricos consecutivos também não são permitidos.`
admin_cannot_delete_self = Você não pode excluir a si mesmo quando você é um administrador. Por favor, remova suas permissões de administrador primeiro.
AccessToken = Token de acesso
+To = Nome do Branch
+Website = Site
+Pronouns = Pronomes
+Biography = Biografia
+Location = Localização
+unsupported_login_type = O tipo de login não é compatível para excluir conta.
+required_prefix = A entrada deve começar com "%s"
+FullName = Nome completo
+Description = Descrição
+unset_password = O usuário de login não definiu a senha.
[user]
@@ -649,6 +672,7 @@ follow_blocked_user = Você não pode seguir este usuário, pois você o bloqueo
block_user.detail_3 = Este usuário não poderá adicionar-lhe como colaborador e você também não poderá adicioná-lo como colaborador.
block_user.detail = Por favor, entenda que se você bloquear este usuário, outras ações serão tomadas. Tais como:
followers_one = %d seguidor
+following_one = %d seguindo
[settings]
profile=Perfil
@@ -660,7 +684,7 @@ avatar=Avatar
ssh_gpg_keys=Chaves SSH / GPG
social=Contas sociais
applications=Aplicativos
-orgs=Gerenciar organizações
+orgs=Organizações
repos=Repositórios
delete=Excluir conta
twofa=Autenticação de dois fatores
@@ -703,7 +727,7 @@ comment_type_group_branch=Branch
comment_type_group_time_tracking=Contagem de tempo
comment_type_group_deadline=Prazo final
comment_type_group_dependency=Dependência
-comment_type_group_lock=Status de Bloqueio
+comment_type_group_lock=Status de bloqueio
comment_type_group_review_request=Revisar solicitação
comment_type_group_pull_request_push=Commits adicionados
comment_type_group_project=Projeto
@@ -713,11 +737,11 @@ privacy=Privacidade
keep_activity_private=Ocultar atividade da página de perfil
keep_activity_private_popup=A sua atividade estará visível apenas para você e os admnistradores
-lookup_avatar_by_mail=Procurar o avatar do endereço de e-mail
-federated_avatar_lookup=Busca de avatar federativo
+lookup_avatar_by_mail=Pesquisar avatar por endereço de e-mail
+federated_avatar_lookup=Pesquisa de avatar federado
enable_custom_avatar=Usar avatar personalizado
choose_new_avatar=Escolha um novo avatar
-update_avatar=Atualizar o avatar
+update_avatar=Atualizar avatar
delete_current_avatar=Excluir avatar atual
uploaded_avatar_not_a_image=O arquivo enviado não é uma imagem.
uploaded_avatar_is_too_big=O tamanho do arquivo enviado (%d KiB) excede o tamanho máximo permitido (%d KiB).
@@ -734,15 +758,15 @@ password_change_disabled=Contas não-locais não podem alterar sua senha atravé
emails=Endereços de e-mail
manage_emails=Gerenciar endereços de e-mail
-manage_themes=Selecione o tema padrão
-manage_openid=Gerenciar endereços OpenID
+manage_themes=Tema Padrão
+manage_openid=Endereços OpenID
email_desc=Seu endereço de e-mail principal será usado para notificações, recuperação de senha e, desde que não esteja oculto, para operações do Git baseadas na Web.
theme_desc=Este será o seu tema padrão em todo o site.
primary=Principal
activated=Ativado
requires_activation=Requer ativação
-primary_email=Tornar Principal
-activate_email=Enviar Ativação
+primary_email=Tornar primário
+activate_email=Enviar ativação
activations_pending=Ativações pendentes
can_not_add_email_activations_pending=Há uma ativação pendente, tente novamente em alguns minutos se quiser adicionar um novo e-mail.
delete_email=Remover
@@ -770,16 +794,16 @@ manage_ssh_keys=Gerenciar chaves SSH
manage_ssh_principals=Gerenciar Nomes Principais do certificado SSH
manage_gpg_keys=Gerenciar chaves GPG
add_key=Adicionar chave
-ssh_desc=Estas chaves SSH públicas estão associados a sua conta. Chaves privadas correspondentes permitam acesso completo a seus repositórios.
+ssh_desc=Essas chaves SSH públicas estão associadas à sua conta. As chaves privadas correspondentes permitem acesso total aos seus repositórios. As chaves SSH que foram verificadas podem ser usadas para verificar commits do Git assinados por SSH.
principal_desc=Estes nomes principais do certificado SSH estão associados à sua conta e permitem acesso total aos seus repositórios.
-gpg_desc=Essas chaves GPG públicas estão associadas à sua conta. Mantenha suas chaves privadas seguras, pois elas permitem que os commits sejam verificados.
+gpg_desc=Essas chaves GPG públicas são associadas à sua conta e usadas para verificar seus commits. Mantenha suas chaves privadas seguras, pois elas permitem assinar commits com sua identidade.
ssh_helper=Precisa de ajuda? Dê uma olhada no guia do GitHub para criar suas próprias chaves SSH ou resolver problemas comuns que você pode ter usando SSH.
gpg_helper=Precisa de ajuda? Dê uma olhada no guia do GitHub sobre GPG.
add_new_key=Adicionar chave SSH
add_new_gpg_key=Adicionar chave GPG
key_content_ssh_placeholder=Começa com "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com" ou "sk-ssh-ed25519@openssh.com"
key_content_gpg_placeholder=Começa com "-----BEGIN PGP PUBLIC KEY BLOCK-----"
-add_new_principal=Adicionar Nome Principal
+add_new_principal=Adicionar principal
ssh_key_been_used=Esta chave SSH já foi adicionada ao servidor.
ssh_key_name_used=Uma chave SSH com o mesmo nome já existe em sua conta.
ssh_principal_been_used=Este nome principal já foi adicionada ao servidor.
@@ -838,7 +862,7 @@ token_state_desc=Este token tem sido utilizado nos últimos 7 dias
principal_state_desc=Este nome principal foi utilizado nos últimos 7 dias
show_openid=Mostrar no perfil
hide_openid=Ocultar no perfil
-ssh_disabled=SSH desabilitado
+ssh_disabled=SSH está desativado
ssh_signonly=O SSH está desativado no momento, portanto, essas chaves são usadas apenas para verificação de assinatura de confirmação.
ssh_externally_managed=Esta chave SSH para este usuário é gerenciada externamente
manage_social=Gerenciar contas sociais associadas
@@ -846,7 +870,7 @@ social_desc=Essas contas sociais podem ser usadas para fazer login em sua conta.
unbind=Desvincular
unbind_success=A conta social foi removida com sucesso.
-manage_access_token=Gerenciar tokens de acesso
+manage_access_token=Tokens de acesso
generate_new_token=Gerar novo token
tokens_desc=Esses tokens concedem acesso à sua conta usando a API do Forgejo.
token_name=Nome do token
@@ -880,12 +904,12 @@ create_oauth2_application_button=Criar aplicativo
create_oauth2_application_success=Você criou um aplicativo OAuth2 com sucesso.
update_oauth2_application_success=Você atualizou o aplicativo OAuth2 com sucesso.
oauth2_application_name=Nome do aplicativo
-oauth2_confidential_client=Cliente Confidencial. Selecione para aplicativos que mantêm a confidencialidade do segredo, como aplicativos web. Não selecione para aplicativos nativos, incluindo aplicativos desktop e celulares.
+oauth2_confidential_client=Cliente confidencial. Selecione para aplicativos que mantêm o segredo confidencial, como aplicativos da web. Não selecione aplicativos nativos, incluindo aplicativos de desktop e móveis.
oauth2_redirect_uris=URIs de redirecionamento. Por favor use uma nova linha para cada URI.
save_application=Salvar
oauth2_client_id=Client ID
-oauth2_client_secret=Client Secret
-oauth2_regenerate_secret=Gerar novamente o Client Secret
+oauth2_client_secret=Segredo do cliente
+oauth2_regenerate_secret=Regenerar segredo
oauth2_regenerate_secret_hint=Perdeu seu Client Secret?
oauth2_client_secret_hint=O segredo não será exibido novamente depois que você sair ou atualizar esta página. Certifique-se de que você o salvou.
oauth2_application_edit=Editar
@@ -967,6 +991,15 @@ blocked_users_none = Nenhum usuário bloqueado.
access_token_desc = As permissões selecionadas para o token limitam o acesso apenas às rotas da API correspondentes. Veja a documentação para mais informações.
webauthn_alternative_tip = Você talvez queira configurar um método adicional de autenticação.
change_password = Alterar senha
+hints = Dicas
+pronouns = Pronomes
+pronouns_custom = Personalizado
+pronouns_unspecified = Não especificado
+language.title = Idioma padrão
+additional_repo_units_hint = Sugira habilitar unidades de repositório adicionais
+additional_repo_units_hint_description = Exiba um botão "Adicionar mais unidades..." para repositórios que não possuem todas as unidades disponíveis habilitadas.
+update_hints = Dicas de atualização
+update_hints_success = As dicas foram atualizadas.
[repo]
owner=Proprietário
@@ -1126,7 +1159,7 @@ migrate.migrating=Migrando a partir de %s ...
migrate.migrating_failed=Migração a partir de %s falhou.
migrate.migrating_failed.error=Falha ao migrar: %s
migrate.migrating_failed_no_addr=A migração falhou.
-migrate.github.description=Migrar dados de github.com ou de outras instâncias do GitHub.
+migrate.github.description=Migre dados do servidor github.com ou GitHub Enterprise.
migrate.git.description=Migrar um repositório somente de qualquer serviço Git.
migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo.
@@ -2602,6 +2635,8 @@ settings.units.units = Funcionalidades
vendored = Externo
issues.num_participants_one = %d participante
issues.archived_label_description = (arquivada) %s
+n_branch_few = %s branches
+stars = Favoritos
[graphs]
@@ -3615,4 +3650,9 @@ fuzzy_tooltip = Inclui resultados que se aproximam dos termos de busca
match = Correspondente
match_tooltip = Inclui apenas os resultados que correspondem exatamente aos termos de busca
repo_kind = Buscar repositórios...
-type_tooltip = Tipo de busca
\ No newline at end of file
+type_tooltip = Tipo de busca
+code_search_by_git_grep = Os resultados atuais da pesquisa de código são fornecidos por "git grep". Pode haver melhores resultados se o administrador do site ativar o indexador de código.
+branch_kind = Pesquisar branches…
+commit_kind = Pesquisar commits…
+runner_kind = Pesquisar runners...
+code_search_unavailable = A pesquisa de código não está disponível no momento. Entre em contato com o administrador do site.
\ No newline at end of file
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 8f781fe85f..ca3009157a 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -142,19 +142,19 @@ confirm_delete_selected=Confirma a exclusão de todos os itens marcados?
name=Nome
value=Valor
-filter.is_fork = Derivado
-filter.is_mirror = Replicado
-filter.is_template = Modelo
+filter.is_fork = Derivações
+filter.is_mirror = Réplicas
+filter.is_template = Modelos
filter.public = Público
filter.not_archived = Não arquivado
filter.private = Privado
-filter.not_fork = Não derivado
-filter.not_mirror = Não replicado
+filter.not_fork = Não derivações
+filter.not_mirror = Não réplicas
more_items = Mais itens
invalid_data = Dados inválidos: %v
filter.clear = Retirar filtros
filter.is_archived = Arquivado
-filter.not_template = Não modelo
+filter.not_template = Não modelos
toggle_menu = Comutar menu
filter = Filtro
copy_generic = Copiar para a área de transferência
@@ -556,7 +556,7 @@ TreeName=Localização do ficheiro
Content=Conteúdo
SSPISeparatorReplacement=Separador
-SSPIDefaultLanguage=Idioma predefinido
+SSPIDefaultLanguage=Idioma padrão
require_error=` não pode estar em branco.`
alpha_dash_error=` deve conter apenas caracteres alfanuméricos, hífen ("-") e sublinhado ("_").`
@@ -685,7 +685,7 @@ avatar=Avatar
ssh_gpg_keys=Chaves SSH / GPG
social=Contas sociais
applications=Aplicações
-orgs=Gerir organizações
+orgs=Organizações
repos=Repositórios
delete=Eliminar a conta
twofa=Autenticação em dois passos (TOTP)
@@ -759,8 +759,8 @@ password_change_disabled=Os utilizadores não-locais não podem alterar a sua se
emails=Endereços de email
manage_emails=Gerir endereços de email
-manage_themes=Escolher o tema padrão
-manage_openid=Gerir endereços OpenID
+manage_themes=Tema padrão
+manage_openid=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.
primary=Principal
@@ -804,7 +804,7 @@ add_new_key=Adicionar chave SSH
add_new_gpg_key=Adicionar chave GPG
key_content_ssh_placeholder=Começa com "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", ou "sk-ssh-ed25519@openssh.com"
key_content_gpg_placeholder=Começa com "-----BEGIN PGP PUBLIC KEY BLOCK-----"
-add_new_principal=Adicional Protagonista
+add_new_principal=Adicionar protagonista
ssh_key_been_used=Esta chave SSH já tinha sido adicionada ao servidor.
ssh_key_name_used=Já existe uma chave SSH com o mesmo nome na sua conta.
ssh_principal_been_used=Este protagonista já tinha sido adicionado ao servidor.
@@ -871,7 +871,7 @@ social_desc=Estas contas sociais podem ser usadas para iniciar sessão na sua co
unbind=Desvincular
unbind_success=A conta social foi removida com sucesso.
-manage_access_token=Gerir códigos de acesso
+manage_access_token=Códigos de acesso
generate_new_token=Gerar um novo código
tokens_desc=Esses códigos concedem acesso à sua conta usando a API do Forgejo.
token_name=Nome do código
@@ -953,7 +953,7 @@ webauthn_delete_key_desc=Se remover uma chave de segurança, deixará de poder u
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.
-manage_account_links=Gerir contas vinculadas
+manage_account_links=Contas vinculadas
manage_account_links_desc=Estas contas externas estão vinculadas à sua conta do Forgejo.
account_links_not_available=Neste momento não existem contas externas vinculadas à sua conta do Forgejo.
link_account=Vincular conta
@@ -986,7 +986,7 @@ visibility.limited=Limitada
visibility.limited_tooltip=Visível apenas para utilizadores autenticados
visibility.private=Privada
visibility.private_tooltip=Visível apenas para membros das organizações a que se associou
-additional_repo_units_hint = Encorajar a habilitação de unidades do repositório adicionais
+additional_repo_units_hint = Sugere a habilitação de unidades do repositório adicionais
update_hints = Modificar sugestões
change_password = Modificar a senha
pronouns = Pronomes
@@ -1000,6 +1000,7 @@ additional_repo_units_hint_description = Mostrar um botão "Adicionar mais unida
update_hints_success = As sugestões foram modificadas.
blocked_users_none = Não há utilizadores bloqueados.
user_unblock_success = O utilizador foi desbloqueado com sucesso.
+language.title = Idioma predefinido
[repo]
new_repo_helper=Um repositório contém todos os ficheiros do trabalho, incluindo o histórico das revisões. Já tem um hospedado noutro sítio? Migre o repositório.
@@ -1171,7 +1172,7 @@ migrate.migrating=Migrando a partir de %s ...
migrate.migrating_failed=A migração de %s falhou.
migrate.migrating_failed.error=Falhou a migração: %s
migrate.migrating_failed_no_addr=A migração falhou.
-migrate.github.description=Migrar dados de github.com ou de outras instâncias do GitHub.
+migrate.github.description=Migrar dados do github.com ou do GitHub Enterprise server.
migrate.git.description=Migrar um repositório somente de qualquer serviço Git.
migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo.
@@ -1258,9 +1259,9 @@ ambiguous_character=`%[1]c [U+%04[1]X] pode confundir-se com %[2]c [U+%04[2]X]`
escape_control_characters=Revelar
unescape_control_characters=Esconder
file_copy_permalink=Copiar ligação permanente
-view_git_blame=Ver Git Blame
-video_not_supported_in_browser=O seu navegador não suporta a etiqueta 'video' do HTML5.
-audio_not_supported_in_browser=O seu navegador não suporta a etiqueta 'audio' do HTML5.
+view_git_blame=Ver git blame
+video_not_supported_in_browser=O seu navegador não suporta a etiqueta "video" do HTML5.
+audio_not_supported_in_browser=O seu navegador não suporta a etiqueta "audio" do HTML5.
stored_lfs=Armazenado com Git LFS
symbolic_link=Ligação simbólica
executable_file=Ficheiro executável
@@ -1296,12 +1297,12 @@ editor.delete_this_file=Eliminar ficheiro
editor.must_have_write_access=Tem que ter permissões de escrita para fazer ou propor modificações neste ficheiro.
editor.file_delete_success=O ficheiro "%s" foi eliminado.
editor.name_your_file=Nomeie o seu ficheiro…
-editor.filename_help=Adicione uma pasta escrevendo o nome dessa pasta seguido de uma barra('/'). Remova uma pasta carregando na tecla de apagar ('←') no início do campo.
+editor.filename_help=Adicione uma pasta escrevendo o nome dessa pasta seguido de uma barra("/"). Remova uma pasta carregando na tecla de apagar ("←") no início do campo.
editor.or=ou
editor.cancel_lower=Cancelar
editor.commit_signed_changes=Cometer modificações assinadas
editor.commit_changes=Cometer modificações
-editor.add_tmpl=Adicionar 'âmbito/item
para torná-lo mutuamente exclusivo com outros rótulos do âmbito/
.
@@ -1672,7 +1673,7 @@ issues.add_time_sum_to_small=Não foi inserido qualquer tempo.
issues.time_spent_total=Total de tempo gasto
issues.time_spent_from_all_authors=`Total de tempo gasto: %s`
issues.due_date=Data de vencimento
-issues.invalid_due_date_format=O formato da data de vencimento tem que ser 'aaaa-mm-dd'.
+issues.invalid_due_date_format=O formato da data de vencimento tem que ser "aaaa-mm-dd".
issues.error_modifying_due_date=Falhou a modificação da data de vencimento.
issues.error_removing_due_date=Falhou a remoção da data de vencimento.
issues.push_commit_1=adicionou %d cometimento %s
@@ -1689,7 +1690,7 @@ issues.due_date_added=adicionou a data de vencimento %s %s
issues.due_date_modified=modificou a data de vencimento de %[2]s para %[1]s %[3]s
issues.due_date_remove=removeu a data de vencimento %s %s
issues.due_date_overdue=Em atraso
-issues.due_date_invalid=A data de vencimento é inválida ou está fora do intervalo permitido. Por favor, use o formato 'aaaa-mm-dd'.
+issues.due_date_invalid=A data de vencimento é inválida ou está fora do intervalo permitido. Por favor, use o formato "aaaa-mm-dd".
issues.dependency.title=Dependências
issues.dependency.issue_no_dependencies=Não estão definidas dependências.
issues.dependency.pr_no_dependencies=Não estão definidas dependências.
@@ -1862,9 +1863,9 @@ pulls.unrelated_histories=A integração falhou: O topo da integração e a base
pulls.merge_out_of_date=Falhou a integração: Enquanto estava a gerar a integração, a base foi modificada. Dica: Tente de novo.
pulls.head_out_of_date=Falhou a integração: Enquanto estava a gerar 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=A integração falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório.
+pulls.push_rejected=A integração 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=A integração falhou: O envio foi rejeitado mas não houve qualquer mensagem remota.%[2]s
no ramo %[3]s
pulls.reopen_failed.base_branch = O pedido de integração não pode ser reaberto porque o ramo base já não existe.
@@ -2735,6 +2736,10 @@ settings.sourcehut_builds.secrets_helper = Dar, ao trabalho, acesso aos segredos
settings.sourcehut_builds.access_token_helper = Código de acesso que tem a permissão JOBS:RW. Gera um código builds.sr.ht ou um código builds.sr.ht com acesso aos segredos em meta.sr.ht.
release.hide_archive_links = Esconder arquivos gerados automaticamente
release.hide_archive_links_helper = Esconder arquivos de código-fonte gerados automaticamente para este lançamento. Por exemplo, se estiver a carregar o seu próprio.
+wiki.no_search_results = Sem resultados
+settings.transfer.button = Transferir propriedade
+settings.transfer.modal.title = Transferir propriedade
+wiki.search = Pesquisar wiki
[graphs]
component_loading=A carregar %s...
@@ -2804,9 +2809,9 @@ settings.labels_desc=Adicionar rótulos que possam ser usados em questões para
members.membership_visibility=Visibilidade da filiação:
members.public=Visível
-members.public_helper=tornar oculto
+members.public_helper=Tornar oculto
members.private=Oculto
-members.private_helper=tornar visível
+members.private_helper=Tornar visível
members.member_role=Função do membro:
members.owner=Proprietário(a)
members.member=Membro
@@ -2964,8 +2969,8 @@ dashboard.total_gc_time=Pausa total da recolha de lixo
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 todas as operações antigas da base de dados
-dashboard.delete_old_actions.started=Foi iniciado o processo de eliminação de todas as operações antigas da base de dados.
+dashboard.delete_old_actions=Eliminar todos os trabalhos antigos da base de dados
+dashboard.delete_old_actions.started=Foi iniciado o processo de eliminação de todos os trabalhos antigos 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
@@ -2992,7 +2997,7 @@ 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.send_register_notify=Notificar sobre o registo via email
users.new_success=A conta de utilizador "%s" foi criada.
users.edit=Editar
users.auth_source=Fonte de autenticação
@@ -3440,7 +3445,7 @@ mirror_sync_create=sincronizou a nova referência %[3]s para
mirror_sync_delete=sincronizou e eliminou a referência %[2]s
em %[3]s da réplica
approve_pull_request=`aprovou %[3]s#%[2]s`
reject_pull_request=`sugeriu modificações para %[3]s#%[2]s`
-publish_release=`lançou "%[4]s" em %[3]s`
+publish_release=`lançou %[4]s em %[3]s`
review_dismissed=`descartou a revisão de %[4]s para %[3]s#%[2]s`
review_dismissed_reason=Motivo:
create_branch=criou o ramo %[3]s em %[4]s
@@ -3631,7 +3636,7 @@ owner.settings.cargo.rebuild=Reconstruir índice
owner.settings.cargo.rebuild.description=Reconstruir pode ser útil se o índice não estiver sincronizado com os pacotes de Cargo armazenados.
owner.settings.cargo.rebuild.error=Falhou ao reconstruir o índice do Cargo: %v
owner.settings.cargo.rebuild.success=O índice do Cargo foi reconstruído com sucesso.
-owner.settings.cleanuprules.title=Gerir regras de limpeza
+owner.settings.cleanuprules.title=Regras de limpeza
owner.settings.cleanuprules.add=Adicionar regra de limpeza
owner.settings.cleanuprules.edit=Editar regra de limpeza
owner.settings.cleanuprules.none=Ainda não há quaisquer regras de limpeza.
@@ -3675,7 +3680,7 @@ management=Gerir segredos
[actions]
actions=Operações
-unit.desc=Gerir operações
+unit.desc=Gerir sequências CI/CD integradas com Forgejo Actions
status.unknown=Desconhecido
status.waiting=Aguardando
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 7b53e0234d..c7aaa8f074 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -1881,7 +1881,7 @@ pull.deleted_branch=(удалена):%s
milestones.new=Новый этап
milestones.closed=Закрыт %s
-milestones.update_ago=Обновлено %s
+milestones.update_ago=Обновлён %s
milestones.no_due_date=Срок не указан
milestones.open=Открыть
milestones.close=Закрыть
@@ -2741,6 +2741,8 @@ release.hide_archive_links = Скрыть автоматически генер
release.hide_archive_links_helper = Скрыть автоматически добавляемые архивы исходного кода для этого релиза. Например, если вы загружаете свои архивы.
settings.transfer.button = Передать репозиторий
settings.transfer.modal.title = Передача репозитория
+wiki.search = Искать в вики
+wiki.no_search_results = Нет результатов
[graphs]
@@ -2749,7 +2751,7 @@ org_name_holder=Название организации
org_full_name_holder=Полное название
org_name_helper=Лучшие названия организаций коротки и запоминаемы.
create_org=Создать организацию
-repo_updated=Обновлено %s
+repo_updated=Обновлён %s
members=Участники
teams=Команды
code=Код
@@ -3439,7 +3441,7 @@ mirror_sync_create=синхронизировал(а) новую ссылку %[2]s на %[3]s из зеркала
approve_pull_request=`одобрен %[3]s#%[2]s`
reject_pull_request=`предложил(а) изменения для %[3]s#%[2]s`
-publish_release=`выпустил(а) "%[4]s" в %[3]s`
+publish_release=`выпустил(а) %[4]s в %[3]s`
review_dismissed=`отклонён отзыв от %[4]s для %[3]s#%[2]s`
review_dismissed_reason=Причина:
create_branch=создана ветка %[3]s в %[4]s
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 6eecc38674..8e01f2a138 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -656,7 +656,7 @@ following_few=%d 关注中
follow=关注
unfollow=取消关注
user_bio=简历
-disabled_public_activity=该用户已隐藏活动记录。
+disabled_public_activity=该用户已隐藏公开活动记录。
email_visibility.limited=所有已认证用户均可看到您的电子邮件地址
email_visibility.private=只有你本人和管理员可以看到你的电子邮件地址
show_on_map=在地图上显示这个位置
@@ -2752,6 +2752,8 @@ release.hide_archive_links_helper = 为此版本发布隐藏自动生成的源
release.hide_archive_links = 隐藏自动生成的存档
settings.transfer.modal.title = 转移所有权
settings.transfer.button = 转移所有权
+wiki.search = 搜索百科
+wiki.no_search_results = 无结果
[graphs]
component_loading=正在加载 %s...
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index f52c5e6879..44cb81bc76 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -55,7 +55,7 @@ mirror=鏡像
new_repo=新增儲存庫
new_migrate=遷移外部儲存庫
new_mirror=新增鏡像
-new_fork=新增儲存庫 Fork
+new_fork=建立新的儲存庫分叉
new_org=新增組織
new_project=新增專案
new_project_column=新增欄位
@@ -71,7 +71,7 @@ all=所有
sources=來源
mirrors=鏡像
collaborative=協作
-forks=Fork
+forks=分叉
activities=動態
pull_requests=合併請求
@@ -166,7 +166,7 @@ footer.software=關於軟體
footer.links=連結
[heatmap]
-number_of_contributions_in_the_last_12_months=過去十二個月內有 %s 個貢獻
+number_of_contributions_in_the_last_12_months=過去十二個月內有 %s 項貢獻
contributions_zero=沒有貢獻
less=少
more=多
@@ -236,11 +236,11 @@ reinstall_confirm_check_1=您可能會遺失以 app.ini 中 SECRET_KEY 所加密
reinstall_confirm_check_2=儲存庫和設定可能需要重新同步。核取此方塊代表您確認您將會手動重新同步儲存庫的 Hook 和 SSH authorized_keys 檔案。您確認您會確保儲存庫和鏡像設定正確。
reinstall_confirm_check_3=您確認您絕對肯定此 Forgejo 在正確的 app.ini 位置上執行,而且您確定您必須重新安裝。您確認您瞭解上述風險。
err_empty_db_path=SQLite3 資料庫路徑不可以為空。
-no_admin_and_disable_registration=您不能夠在未建立管理員使用者的情況下禁止註冊。
+no_admin_and_disable_registration=您不能夠在未建立管理員帳號的情況下禁止自助註冊。
err_empty_admin_password=管理員密碼不能為空。
err_empty_admin_email=管理員信箱不能為空。
err_admin_name_is_reserved=無效的管理員帳號名稱,帳號名稱已被保留
-err_admin_name_pattern_not_allowed=無效的管理員帳號名稱,該帳號符合保留規則
+err_admin_name_pattern_not_allowed=無效的管理員帳號名稱,該帳號符合被保留式樣
err_admin_name_is_invalid=無效的管理員帳號名稱
general_title=一般設定
@@ -277,8 +277,8 @@ offline_mode=啟用本地模式
offline_mode_popup=停用其他服務並在本地提供所有資源。
disable_gravatar=停用 Gravatar
disable_gravatar_popup=停用 Gravatar 和第三方大頭貼服務。若使用者在未本地上傳大頭貼,將使用預設的大頭貼。
-federated_avatar_lookup=啟用 Federated 大頭貼
-federated_avatar_lookup_popup=啟用 Libravatar 提供的 Federated Avatar 查詢服務。
+federated_avatar_lookup=啟用聯邦式大頭貼
+federated_avatar_lookup_popup=啟用 Libravatar 提供的聯邦式大頭貼查詢服務。
disable_registration=停用自助註冊
disable_registration_popup=禁止使用者自助註冊,只有管理員可以新增帳號。
allow_only_external_registration_popup=只允許從外部服務註冊
@@ -288,7 +288,7 @@ openid_signup=啟用 OpenID 自助註冊
openid_signup_popup=啟用使用 OpenID 的自助註冊。
enable_captcha=啟用註冊驗證碼
enable_captcha_popup=要求在用戶註冊時輸入驗證碼。
-require_sign_in_view=需要登入才能瀏覽頁面
+require_sign_in_view=需要登入才能瀏覽站點內容
require_sign_in_view_popup=僅有已登入的使用者能存取頁面。訪客只會看到登入和註冊頁面。
admin_setting_desc=您不需要建立管理員帳號。 第一個註冊的使用者將自動成為管理員。
admin_title=管理員帳號設定
@@ -297,7 +297,7 @@ admin_password=密碼
confirm_password=確認密碼
admin_email=電子信箱
install_btn_confirm=安裝 Forgejo
-test_git_failed=無法測試「git」指令:%v
+test_git_failed=無法測試「git」命令:%v
sqlite3_not_available=這個 Forgejo 版本不支援 SQLite3,請從 %s 下載官方的預先編譯版本 (不是 「gobuild」 版本)。
invalid_db_setting=資料庫設定無效: %v
invalid_db_table=資料表「%s」無效:%v
@@ -310,9 +310,9 @@ save_config_failed=儲存設定失敗:%v
invalid_admin_setting=管理員帳號設定無效:%v
invalid_log_root_path=日誌根目錄設定無效:%v
default_keep_email_private=預設隱藏電子信箱
-default_keep_email_private_popup=預設隱藏新使用者的電子信箱。
+default_keep_email_private_popup=預設隱藏新使用者帳號的電子信箱。
default_allow_create_organization=預設允許建立組織
-default_allow_create_organization_popup=預設允許新使用者建立組織。
+default_allow_create_organization_popup=預設允許新使用者帳號建立組織。
default_enable_timetracking=預設啟用時間追蹤
default_enable_timetracking_popup=預設啟用新存儲庫的時間追蹤。
no_reply_address=隱藏電子信箱域名
@@ -326,13 +326,13 @@ env_config_keys_prompt = 以下的環境變數也會被套用於您的設定檔
env_config_keys = 環境設定
smtp_from_invalid = 郵件寄件人的地址無效
config_location_hint = 這些設定將被儲存在:
-allow_dots_in_usernames = 允許使用者在使用者名稱中使用英文句點。不影響現有帳戶。
+allow_dots_in_usernames = 允許使用者在使用者名稱中使用英文句點。不影響既有帳號。
enable_update_checker_helper_forgejo = 透過檢查 release.forgejo.org 的 DNS TXT 記錄來定期檢查新的 Forgejo 版本。
[home]
uname_holder=帳號或電子信箱
password_holder=密碼
-switch_dashboard_context=切換資訊主頁帳戶
+switch_dashboard_context=切換資訊主頁帳號
my_repos=儲存庫
show_more_repos=顯示更多儲存庫…
collaborative_repos=參與協作的儲存庫
@@ -374,73 +374,73 @@ org_no_results=沒有找到符合的組織。
code_no_results=找不到符合您關鍵字的原始碼。
code_search_results=「%s」的搜尋結果
code_last_indexed_at=最後索引 %s
-relevant_repositories_tooltip=已隱藏缺少主題、圖示、說明、Fork 的儲存庫。
+relevant_repositories_tooltip=已隱藏缺少主題、圖示、說明、或是是分叉的儲存庫。
relevant_repositories=只顯示相關的儲存庫,顯示未篩選的結果。
stars_few = %d 顆星星
stars_one = %d 顆星星
-forks_one = %d 個 fork
-forks_few = %d 個 fork
+forks_one = %d 個分叉
+forks_few = %d 個分叉
go_to = 前往
[auth]
-create_new_account=註冊帳戶
-register_helper_msg=已經有帳戶了?立即登入!
-social_register_helper_msg=已經有帳戶了?立即連結!
+create_new_account=註冊帳號
+register_helper_msg=已經有帳號了?馬上登入!
+social_register_helper_msg=已經有帳號了?馬上連結!
disable_register_prompt=註冊功能已停用。 請聯繫您的網站管理員。
disable_register_mail=已停用註冊確認電子郵件。
manual_activation_only=請聯絡您的網站管理員以完成啟用程序。
-remember_me=記得這個裝置
+remember_me=記住這台裝置
forgot_password_title=忘記密碼
forgot_password=忘記密碼?
-sign_up_now=還沒有帳戶?馬上註冊。
-confirmation_mail_sent_prompt=新的確認信已發送至 %s。請在 %s內檢查您的收件匣並完成註冊作業。
+sign_up_now=還沒有帳號?馬上註冊。
+confirmation_mail_sent_prompt=已寄送新的確認信至 %s。請在 %s 內檢查您的收件匣並完成註冊手續。如果該 email 不正確,您可以在登入後再請求一封新的確認信到另一個地址。
must_change_password=更新您的密碼
-allow_password_change=要求使用者更改密碼 (推薦)
-reset_password_mail_sent_prompt=確認信已發送至 %s。請在 %s內檢查您的收件匣並完成帳戶救援作業。
-active_your_account=啟用您的帳戶
-account_activated=帳戶已啟用
-prohibit_login=禁止登入
-resent_limit_prompt=抱歉,您請求發送驗證電子郵件太過頻繁,請等待 3 分鐘後再試一次。
-has_unconfirmed_mail=%s 您好,您有一封發送至( %s) 但未被確認的郵件。如果您未收到啟用郵件,或需要重新發送,請單擊下方的按鈕。
-resend_mail=單擊此處重新發送確認郵件
-email_not_associate=此電子信箱未與任何帳戶連結。
-send_reset_mail=發送帳戶救援信
-reset_password=帳戶救援
+allow_password_change=要求使用者更改密碼(建議)
+reset_password_mail_sent_prompt=已發送確認信至 %s。請在 %s 內檢查您的收件匣並完成帳號復原手續。
+active_your_account=啟用您的帳號
+account_activated=帳號已啟用
+prohibit_login=已被禁止登入
+resent_limit_prompt=您剛剛已經請求發送驗證電子郵件,請等待 3 分鐘後再試一次。
+has_unconfirmed_mail=%s 您好,您有一個尚未被確認的信箱地址(%s)。如果您還沒收到確認信或需要一封新的,請點擊下方的按鈕。
+resend_mail=點擊此處來重新發送確認郵件
+email_not_associate=此電子信箱未與任何帳號連結。
+send_reset_mail=發送帳號復原信
+reset_password=帳號復原
invalid_code=您的確認代碼無效或已過期。
-invalid_password=您的密碼和用來建立帳戶的不符。
-reset_password_helper=帳戶救援
-password_too_short=密碼長度不能少於 %d 個字。
-non_local_account=非本地帳戶無法透過 Forgejo 的網頁介面更改密碼。
+invalid_password=您的密碼和用來建立帳號的不符。
+reset_password_helper=帳號復原
+password_too_short=密碼長度不能少於 %d 個英數字母。
+non_local_account=非本地帳號無法透過 Forgejo 的網頁介面更改其密碼。
verify=驗證
scratch_code=備用驗證碼
use_scratch_code=使用備用驗證碼
-twofa_scratch_used=您已經用掉了備用驗證碼。您已被轉址到兩步驟驗證設定頁面以便移除您的註冊設備或重新產生新的備用驗證碼。
+twofa_scratch_used=您已經用掉了您的備用驗證碼。您已被轉址到兩步驟驗證設定頁面以便移除您的註冊設備或重新產生新的備用驗證碼。
twofa_passcode_incorrect=您的驗證碼不正確。如果您遺失設備,請使用您的備用驗證碼登入。
twofa_scratch_token_incorrect=您的備用驗證碼不正確。
login_userpass=登入
tab_openid=OpenID
-oauth_signup_tab=註冊新帳戶
-oauth_signup_title=完成新帳戶
-oauth_signup_submit=完成帳戶
-oauth_signin_tab=連結到現有帳戶
-oauth_signin_title=登入以授權連結帳戶
-oauth_signin_submit=連結帳戶
+oauth_signup_tab=註冊新帳號
+oauth_signup_title=完成新帳號
+oauth_signup_submit=完成帳號
+oauth_signin_tab=連結至既有帳號
+oauth_signin_title=登入以授權連結帳號
+oauth_signin_submit=連結帳號
oauth.signin.error=處理授權請求時發生錯誤。如果這個問題持續發生,請聯絡網站管理員。
oauth.signin.error.access_denied=授權請求被拒絕。
oauth.signin.error.temporarily_unavailable=授權失敗,因為認證伺服器暫時無法使用。請稍後再試。
openid_connect_submit=連接
-openid_connect_title=連接到現有帳戶
-openid_connect_desc=所選的 OpenID URI 未知。在這裡連結一個新帳戶。
-openid_register_title=建立新帳戶
-openid_register_desc=所選的 OpenID URI 未知。在這裡連結一個新帳戶。
-disable_forgot_password_mail=由於未設定電子郵件功能,帳戶救援功能已被停用。請與網站管理員聯絡。
-disable_forgot_password_mail_admin=帳戶救援功能需要設定電子郵件功能才能使用。請設定電子郵件功能以啟用帳戶救援功能。
+openid_connect_title=連接至既有帳號
+openid_connect_desc=所選的 OpenID URI 未知。在這裡連結一個新帳號。
+openid_register_title=建立新帳號
+openid_register_desc=所選的 OpenID URI 是未知的。在這裡連結一個新帳號。
+disable_forgot_password_mail=由於未設定電子郵件功能,帳號復原功能已被停用。請與網站管理員聯絡。
+disable_forgot_password_mail_admin=帳號復原功能需要設定電子郵件功能才能使用。請設定電子郵件功能以啟用帳號復原。
email_domain_blacklisted=您無法使用您的電子信箱註冊帳號。
authorize_application=授權應用程式
authorize_redirect_notice=如果您授權此應用程式,您將會被重新導向至 %s。
authorize_application_created_by=此應用程式是由 %s 建立的。
-authorize_application_description=如果您允許,它將能夠讀取和修改您的所有帳戶資訊,包括私有儲存庫和組織。
-authorize_title=授權「%s」存取您的帳戶?
+authorize_application_description=如果您允許,它將能夠讀取和修改您的所有帳號資訊,包括私有儲存庫和組織。
+authorize_title=授權「%s」存取您的帳號?
authorization_failed=授權失效
sspi_auth_failed=SSPI 認證失敗
password_pwned_err=無法完成對 HaveIBeenPwned 的請求
@@ -452,7 +452,7 @@ tab_signup = 註冊
last_admin = 您無法刪除最後一個管理員。必須至少有一個管理員。
prohibit_login_desc = 您的帳號被禁止登入,請連絡網站管理員。
sign_up_successful = 已成功建立帳號。歡迎!
-invalid_code_forgot_password = 您的確認代碼無效或是已過期。點擊這裡來開始一個新的 session。
+invalid_code_forgot_password = 您的確認代碼無效或已過期。點擊這裡來開始一個新的連線階段。
reset_password_wrong_user = 您以 %s 登入,但是帳號復原連結是給 %s 的
password_pwned = 該密碼出現在先前資料洩露的被盜密碼清單中。請用一個不同的密碼再試一次,並考慮在其他地方也更換此密碼。
authorization_failed_desc = 因為偵測到無效請求,授權失敗。請連絡您嘗試授權的應用的維護者。
@@ -465,23 +465,23 @@ reply=或是直接回覆此電子郵件
link_not_working_do_paste=無法開啟?試試複製超連結到瀏覽器貼上。
hi_user_x=%s 您好,
-activate_account=請啟用您的帳戶
+activate_account=請啟用您的帳號
activate_account.title=%s,請啟用您的帳戶
activate_account.text_1=%[1]s 您好,感謝您註冊 %[2]s!
-activate_account.text_2=請在 %s內點擊下列連結以啟用您的帳戶:
+activate_account.text_2=請在%s內點擊下列連結以啟用您的帳號:
activate_email=請驗證您的電子信箱
-activate_email.text=請在 %s內點擊下列連結以驗證您的電子信箱:
+activate_email.text=請在%s內點擊下列連結以驗證您的電子信箱:
register_notify=歡迎來到 Forgejo
register_notify.title=%[1]s,歡迎來到 %[2]s
register_notify.text_1=這是您在 %s 的註冊確認信!
-register_notify.text_2=您現在可以用帳號 %s 登入。
+register_notify.text_2=您現在可以使用您的使用者名稱登入:%s
register_notify.text_3=如果其他人為您建立了此帳號,請先設定您的密碼。
-reset_password=救援您的帳戶
+reset_password=復原您的帳號
reset_password.title=%s,我們收到了您的帳號恢復請求
-reset_password.text=如果是您做出的請求,請在 %s內點擊下列連結以救援您的帳戶:
+reset_password.text=如果是您做出的請求,請在%s 內點擊下列連結以復原您的帳號:
register_success=註冊成功
@@ -520,7 +520,7 @@ repo.collaborator.added.subject=%s 把您加入到 %s
repo.collaborator.added.text=您已被新增為儲存庫的協作者:
team_invite.subject=%[1]s 邀請您加入組織 %[2]s
-team_invite.text_1=%[1]s 邀請您加入組織 %[3]s 中的 %[2]s 團隊
+team_invite.text_1=%[1]s 邀請您加入組織 %[3]s 中的 %[2]s 團隊。
team_invite.text_2=請點擊下方連結加入團隊:
team_invite.text_3=備註: 這是寄給 %[1]s 的邀請。若您未預期收到此邀請,請忽略此郵件。
activate_email.title = %s,請驗證你的信箱地址
@@ -568,8 +568,8 @@ max_size_error=` 長度最大為 %s 個字元。`
email_error=` 是無效的電子信箱。`
url_error=`「%s」是無效的 URL。`
include_error=` 必須包含子字串「%s」。`
-glob_pattern_error=` glob 比對模式無效:%s.`
-regex_pattern_error=` 正規表示式模式無效:%s.`
+glob_pattern_error=` glob 比對式樣無效:%s.`
+regex_pattern_error=` 正規表示式式樣無效:%s.`
username_error=`只能包含英文字母數字 ('0-9'、'a-z'、'A-Z')、破折號 ('-')、底線 ('_')、句點 ('.'),不能以非英文字母數字開頭或結尾,也不允許連續的非英文字母數字。`
invalid_group_team_map_error=` 對應無效:%s`
unknown_error=未知錯誤:
@@ -601,11 +601,11 @@ password_digit_one=至少要有一個數字
password_special_one=至少要有一個特殊字元(標點符號,括號,引號等)
enterred_invalid_repo_name=您輸入的儲存庫名稱不正確。
enterred_invalid_org_name=您輸入的組織名稱不正確。
-enterred_invalid_owner_name=新的擁有者名稱無效。
+enterred_invalid_owner_name=新的所有者名稱無效。
enterred_invalid_password=您輸入的密碼不正確。
user_not_exist=該用戶名不存在。
team_not_exist=團隊不存在。
-last_org_owner=你不能從「所有者」團隊中刪除最後一個使用者。每個組織中至少要有一個擁有者。
+last_org_owner=你不能從「所有者」團隊中刪除最後一個使用者。每個組織中至少要有一個所有者。
cannot_add_org_to_team=組織不能被新增為團隊成員。
duplicate_invite_to_team=該使用者已經被邀請為團隊成員。
organization_leave_success=您已成功離開組織 %s。
@@ -617,15 +617,15 @@ must_use_public_key=您提供的金鑰是私有金鑰,請勿上傳您的私有
unable_verify_ssh_key=無法驗證 SSH 金鑰,請再次檢查是否有錯誤。
auth_failed=授權認證失敗:%v
-still_own_repo=您的帳戶擁有一個以上的儲存庫,請先刪除或轉移它們。
-still_has_org=您的帳戶是一個或多個組織的成員,請先離開它們。
-still_own_packages=您的帳戶擁有一個以上的套件,請先刪除它們。
+still_own_repo=您的帳號擁有至少一個儲存庫,請先刪除或轉移它們。
+still_has_org=您的帳號是至少一個組織的成員,請先離開它們。
+still_own_packages=您的帳號擁有至少一個軟體包,請先刪除它們。
org_still_own_repo=此組織仍然擁有一個以上的儲存庫,請先刪除或轉移它們。
-org_still_own_packages=此組織仍然擁有一個以上的套件,請先刪除它們。
+org_still_own_packages=此組織仍然擁有至少一個軟體包,請先刪除它們。
target_branch_not_exist=目標分支不存在。
unset_password = 此使用者尚未設置密碼。
-unsupported_login_type = 該帳號的登入方式使它無法被刪除。
+unsupported_login_type = 該帳號的登入類型使它無法被刪除。
To = 分支名稱
FullName = 全名
Description = 說明
@@ -654,12 +654,12 @@ following_few=%d 追蹤中
follow=追蹤
unfollow=取消追蹤
user_bio=個人簡介
-disabled_public_activity=這個使用者已對外隱藏動態。
-email_visibility.limited=所有已驗證的使用者都可以看到您的電子信箱地址
+disabled_public_activity=這個使用者已隱藏公開動態。
+email_visibility.limited=所有已驗證身分的使用者都可以看到您的電子信箱地址
email_visibility.private=只有您和系統管理員可以看到您的電子信箱地址
form.name_reserved=「%s」是保留的帳號。
-form.name_pattern_not_allowed=帳號不可包含字元「%s」。
+form.name_pattern_not_allowed=帳號名稱內不可包含「%s」式樣。
form.name_chars_not_allowed=使用者名稱「%s」包含無效字元。
joined_on = 在 %s 註冊
show_on_map = 在地圖上顯示這個地點
@@ -677,19 +677,19 @@ block_user.detail = 請注意,封鎖此使用者將會導致以下結果。例
[settings]
profile=個人資料
-account=帳戶
+account=帳號
appearance=外觀
password=修改密碼
security=安全性
avatar=大頭貼
ssh_gpg_keys=SSH / GPG 金鑰
-social=社群帳戶
+social=社群帳號
applications=應用程式
-orgs=管理組織
+orgs=組織
repos=儲存庫
-delete=刪除帳戶
+delete=刪除帳號
twofa=兩步驟驗證 (TOTP)
-account_link=已連結帳號
+account_link=連結的帳號
organization=組織
webauthn=兩步驟驗證(安全金鑰)
@@ -726,10 +726,10 @@ comment_type_group_project=專案
comment_type_group_issue_ref=問題參考
saved_successfully=您的設定已成功儲存。
privacy=隱私
-keep_activity_private_popup=讓動態只有你和管理員看得到
+keep_activity_private_popup=讓動態只有你和站點管理員看得到
lookup_avatar_by_mail=以電子信箱查詢大頭貼
-federated_avatar_lookup=Federated 大頭貼查詢
+federated_avatar_lookup=聯邦式大頭貼查詢
enable_custom_avatar=使用自訂大頭貼
choose_new_avatar=選擇新的大頭貼
update_avatar=更新大頭貼
@@ -744,27 +744,27 @@ new_password=新的密碼
retype_new_password=確認新密碼
password_incorrect=輸入的密碼不正確。
change_password_success=您的密碼已更新。 從現在起使用您的新密碼登入。
-password_change_disabled=非本地帳戶無法透過 Forgejo 的網頁介面更改密碼。
+password_change_disabled=非本地帳號無法透過 Forgejo 的網頁介面更改密碼。
emails=電子信箱
manage_emails=管理電子信箱
-manage_themes=選擇預設佈景主題
-manage_openid=管理 OpenID 地址
+manage_themes=預設佈景主題
+manage_openid=OpenID 地址
theme_desc=這將是您在整個網站上的預設佈景主題。
primary=主要
activated=已啟用
requires_activation=需要啟動
primary_email=設為主要
-activate_email=寄出啟用信
+activate_email=寄送啟用信
activations_pending=等待啟用中
delete_email=移除
email_deletion=移除電子信箱
-email_deletion_desc=電子信箱和相關資訊將從您的帳戶中刪除,由此電子信箱所提交的 Git 將保持不變,是否繼續?
+email_deletion_desc=您的帳號中的電子信箱和相關資訊將被刪除,使用此電子信箱的 Git 提交將保持不變。要繼續嗎?
email_deletion_success=該電子信箱已被刪除。
theme_update_success=已更新佈景主題。
theme_update_error=選取的佈景主題不存在。
openid_deletion=移除 OpenID 位址
-openid_deletion_desc=從您的帳戶刪除此 OpenID 位址將會無法使用它進行登入。是否繼續?
+openid_deletion_desc=從您的帳號刪除此 OpenID 位址後,您將會無法透過它登入。要繼續嗎?
openid_deletion_success=該 OpenID 已被刪除。
add_new_email=新增電子信箱
add_new_openid=新增 OpenID URI
@@ -780,9 +780,9 @@ manage_ssh_keys=管理 SSH 金鑰
manage_ssh_principals=管理 SSH 認證主體
manage_gpg_keys=管理 GPG 金鑰
add_key=新增金鑰
-ssh_desc=這些 SSH 公鑰已連結至您的帳戶。持有相對應的私鑰將擁有完全控制你的儲存庫的權限。可以使用已驗證的 SSH 金鑰校驗 SSH 簽署的提交。
-principal_desc=這些 SSH 認證主體已關聯到您的帳戶並擁有完全存取您的儲存庫的權限。
-gpg_desc=這些 GPG 公鑰已經連結到您的帳戶,並被用於校驗您的提交。因為它們能用您的身分簽署提交,請妥善保管您的私鑰。
+ssh_desc=這些 SSH 公鑰已連結至您的帳號。持有相對應的私鑰將擁有完全控制你的儲存庫的權限。可以使用已驗證的 SSH 金鑰校驗 SSH 簽署的提交。
+principal_desc=這些 SSH 認證主體已連結至您的帳號並擁有完全存取您儲存庫的權限。
+gpg_desc=這些 GPG 公鑰已經連結到您的帳號,並被用於校驗您的提交。因為它們能用您的身分簽署提交,請妥善保管您的私鑰。
ssh_helper=需要協助嗎?建議可看看 GitHub 的文件以建立您的 SSH 金鑰或解決您使用 SSH 時碰到的常見問題。
gpg_helper=需要協助嗎?建議可看看 GitHub 的 about GPG 文件。
add_new_key=新增 SSH 金鑰
@@ -791,10 +791,10 @@ key_content_ssh_placeholder=以 「ssh-ed25519」、「ssh-rsa」、「ecdsa-sha
key_content_gpg_placeholder=以 「-----BEGIN PGP PUBLIC KEY BLOCK-----」 開頭
add_new_principal=新增主體
ssh_key_been_used=此 SSH 金鑰早已加入本伺服器。
-ssh_key_name_used=已有相同名稱的 SSH 金鑰存在於您的帳戶。
+ssh_key_name_used=您的帳號已有相同名稱的 SSH 金鑰。
ssh_principal_been_used=此主體早已加入本伺服器。
gpg_key_id_used=已存在具有相同 ID 的 GPG 金鑰。
-gpg_no_key_email_found=此 GPG 金鑰不符合任何已關聯到您帳戶且已啟用的電子信箱。若您簽署該符記,您仍然可以新增它。
+gpg_no_key_email_found=此 GPG 金鑰不符合任何已連結至您帳號之已啟用的電子信箱。若您簽署該符記,您仍然可以新增它。
gpg_key_matched_identities=符合的身分:
gpg_key_matched_identities_long=此金鑰中嵌入的身分符合此使用者已啟用的電子信箱。此金鑰可用來驗證符合此信箱的提交。
gpg_key_verified=已驗證的金鑰
@@ -830,9 +830,9 @@ delete_key=移除
ssh_key_deletion=移除 SSH 金鑰
gpg_key_deletion=移除 GPG 金鑰
ssh_principal_deletion=移除 SSH 認證主體
-ssh_key_deletion_desc=刪除 SSH 金鑰將撤銷其對您帳戶的存取權限。是否繼續?
+ssh_key_deletion_desc=刪除 SSH 金鑰將撤銷其對您帳號的存取權限。要繼續嗎?
gpg_key_deletion_desc=刪除 GPG 金鑰將取消驗證由其簽署的提交。是否繼續?
-ssh_principal_deletion_desc=移除 SSH 認證主體將撤銷其對您帳戶的存取權限。是否繼續?
+ssh_principal_deletion_desc=移除 SSH 認證主體將撤銷其對您帳號的存取權限。要繼續嗎?
ssh_key_deletion_success=SSH 金鑰已被移除。
gpg_key_deletion_success=GPG 金鑰已被移除。
ssh_principal_deletion_success=已移除主體。
@@ -848,12 +848,12 @@ show_openid=在個人資料顯示
hide_openid=從個人資料隱藏
ssh_disabled=已停用 SSH
ssh_externally_managed=此 SSH 金鑰由此使用者的外部服務所管理
-manage_social=管理關聯的社群帳戶
+manage_social=管理與其連結的社群帳號
unbind=解除連結
manage_access_token=管理存取符記
generate_new_token=產生新的符記
-tokens_desc=這些符記透過 Forgejo API 獲得存取您帳戶的權限。
+tokens_desc=這些符記透過 Forgejo API 獲得存取您帳號的權限。
token_name=符記名稱
generate_token=產生符記
generate_token_success=已經產生新的符記。請立刻複製它,因為它將不會被再次顯示。
@@ -862,14 +862,14 @@ delete_token=刪除
access_token_deletion=刪除存取符記
access_token_deletion_cancel_action=取消
access_token_deletion_confirm_action=刪除
-access_token_deletion_desc=刪除符記後,使用此符記的應用程式將無法再存取您的帳戶。您將無法取消此操作。要繼續嗎?
-delete_token_success=已刪除符記。使用此符記的應用程式無法再存取您的帳戶。
+access_token_deletion_desc=刪除符記後,使用此符記的應用程式將無法再存取您的帳號。您將無法取消此操作。要繼續嗎?
+delete_token_success=已刪除符記。使用此符記的應用程式無法再存取您的帳號。
permission_no_access=沒有存取權
permission_read=讀取
manage_oauth2_applications=管理 OAuth2 應用程式
edit_oauth2_application=編輯 OAuth2 應用程式
-oauth2_applications_desc=OAuth2 應用程式讓您的第三方應用程式安全地驗證此 Forgejo 中的使用者。
+oauth2_applications_desc=OAuth2 應用程式讓您的第三方應用程式安全地驗證此 Forgejo 站點中的使用者。
remove_oauth2_application=刪除 OAuth2 應用程式
remove_oauth2_application_desc=刪除 OAuth2 應用程式將會撤銷所有已簽署的存取符記之存取權。是否繼續?
remove_oauth2_application_success=已刪除應用程式。
@@ -883,28 +883,28 @@ oauth2_client_secret=客戶端密鑰
oauth2_regenerate_secret=重新產生密鑰
oauth2_regenerate_secret_hint=遺失您的密鑰?
oauth2_application_edit=編輯
-oauth2_application_create_description=OAuth2 應用程式讓您的第三方應用程式可以存取此 Forgejo 上的帳戶。
+oauth2_application_create_description=OAuth2 應用程式讓您的第三方應用程式可以存取此 Forgejo 站點上的帳號。
authorized_oauth2_applications=已授權的 OAuth2 應用程式
revoke_key=撤銷
revoke_oauth2_grant=撤銷存取權
revoke_oauth2_grant_description=撤銷此第三方應用程式的存取權,此應用程式就無法再存取您的資料?您確定嗎?
-twofa_desc=兩步驟驗證可以增強您的帳戶安全性。
-twofa_is_enrolled=您的帳戶已經啟用兩步驟驗證。
-twofa_not_enrolled=您的帳戶目前尚未啟用兩步驟驗證。
+twofa_desc=兩步驟驗證可以增強您帳號的安全性。
+twofa_is_enrolled=已為您的帳號啟用兩步驟驗證。
+twofa_not_enrolled=您的帳號目前尚未啟用兩步驟驗證。
twofa_disable=停用兩步驟驗證
-twofa_scratch_token_regenerate=重新產生備用驗證碼
+twofa_scratch_token_regenerate=重新產生一次性復原金鑰
twofa_enroll=啟用兩步驟驗證
twofa_disable_note=如有需要,您可以停用兩步驟驗證。
-twofa_disable_desc=關閉兩步驟驗證會使您的帳戶安全性降低,是否繼續?
+twofa_disable_desc=關閉兩步驟驗證會低使您帳號的安全性,要繼續嗎?
regenerate_scratch_token_desc=如果您遺失了備用驗證碼或已經使用它登入,您可以在此重新設定。
twofa_disabled=兩步驟驗證已經被關閉。
scan_this_image=使用您的授權應用程式來掃瞄圖片:
or_enter_secret=或者輸入密碼: %s
then_enter_passcode=然後輸入應用程式中顯示的驗證碼:
passcode_invalid=無效的驗證碼,請重試。
-twofa_enrolled=您的帳戶已經啟用了兩步驟驗證。請將備用驗證碼 (%s) 保存到安全的地方,它只會被顯示一次。
+twofa_enrolled=您的帳號已經啟用了兩步驟驗證。請將備用驗證碼(%s)保存到安全的地方,它只會被顯示一次。
twofa_failed_get_secret=取得密鑰 (Secret) 失敗。
webauthn_desc=安全金鑰是包含加密密鑰的硬體設備,它們可以用於兩步驟驗證。安全金鑰必須支援 WebAuthn Authenticator 標準。
@@ -913,35 +913,35 @@ webauthn_nickname=暱稱
webauthn_delete_key=移除安全金鑰
webauthn_delete_key_desc=如果您移除安全金鑰,將不能再使用它登入。是否繼續?
-manage_account_links=管理已連結的帳戶
-manage_account_links_desc=這些外部帳戶已連結到您的 Forgejo 帳戶。
-account_links_not_available=目前沒有外部帳戶連結到您的 Forgejo 帳戶。
-link_account=連結帳戶
-remove_account_link=刪除已連結的帳戶
-remove_account_link_desc=刪除連結帳戶將撤銷其對 Forgejo 帳戶的存取權限。是否繼續?
-remove_account_link_success=已移除連結的帳戶。
+manage_account_links=連結的帳號
+manage_account_links_desc=這些外部帳號已連結至您的 Forgejo 帳號。
+account_links_not_available=目前沒有外部帳號連結到您的 Forgejo 帳號。
+link_account=連結帳號
+remove_account_link=刪除連結的帳號
+remove_account_link_desc=移除連結帳號將撤銷其對 Forgejo 帳號的存取權限。是否繼續?
+remove_account_link_success=已移除連結的帳號。
orgs_none=您尚未成為任一組織的成員。
-delete_account=刪除您的帳戶
-delete_prompt=此動作將永久刪除您的使用者帳戶,而且無法復原。
-delete_with_all_comments=因為您的帳戶年齡小於 %s,為了避免幽靈留言,所有問題及合併請求的留言都會隨帳戶一同被刪除。
-confirm_delete_account=確認刪除帳戶
-delete_account_title=刪除使用者帳戶
-delete_account_desc=您確定要永久刪除此帳戶嗎?
+delete_account=刪除您的帳號
+delete_prompt=此動作將永久刪除您的使用者帳號,而且無法復原。
+delete_with_all_comments=因為您的帳號年齡小於 %s,為了避免幽靈留言,所有問題及合併請求的留言都會隨帳號一同被刪除。
+confirm_delete_account=確認刪除
+delete_account_title=刪除使用者帳號
+delete_account_desc=您確定要永久刪除此帳號嗎?
-email_notifications.enable=啟用郵件通知
-email_notifications.onmention=只在被提到時傳送郵件通知
-email_notifications.disable=關閉郵件通知
-email_notifications.submit=套用郵件偏好設定
+email_notifications.enable=啟用電子郵件通知
+email_notifications.onmention=只在被提及時傳送電子郵件通知
+email_notifications.disable=關閉電子郵件通知
+email_notifications.submit=套用電子郵件偏好設定
email_notifications.andyourown=和您自己的通知
visibility=使用者瀏覽權限
visibility.public=公開
visibility.public_tooltip=所有人都可以看到
visibility.limited=受限
-visibility.private=私人
+visibility.private=私有
blocked_users_none = 您沒有封鎖任何使用者 。
blocked_users = 封鎖的使用者
hints = 提示
@@ -969,11 +969,11 @@ valid_until_date = 至 %s 有效
social_desc = 這些社群帳號可以被用來登入您的帳號。請確保您認得每一個。
unbind_success = 已成功移除該社群帳號。
create_oauth2_application_success = 您已成功建立一個新的 OAuth2 應用程式。
-change_username_prompt = 註:更新您的使用者名稱將改變您的帳號 URL。
+change_username_prompt = 註:更改您的使用者名稱也會更改您的帳號 URL。
change_username_redirect_prompt = 舊的使用者名稱在其他使用者認領之前將會轉址到新的使用者名稱。
visibility.limited_tooltip = 只有已登入的使用者能看見
visibility.private_tooltip = 只有您加入的組織之成員能看見
-keep_email_private_popup = 這將在您的個人資料頁面、合併請求或網頁檔案編輯器中隱藏您的電子信箱地址。已推送的提交不會被更改。在提交中使用 %s 來將其連結至您的帳戶。
+keep_email_private_popup = 這將在您的個人資料頁面、合併請求或網頁檔案編輯器中隱藏您的電子信箱地址。已推送的提交不會被修改。在提交中使用 %s 來將其連結至您的帳號。
ssh_signonly = 因為目前 SSH 已被停用,這個金鑰只被用來校驗提交簽署。
email_desc = 您的主要電子信箱將被用於通知、密碼復原、網頁 Git 操作(如果您的信箱不是隱藏的)。
pronouns_custom = 自訂
@@ -984,9 +984,22 @@ pronouns = 代名詞
update_oauth2_application_success = 您已成功更新該 OAuth2 應用程式。
oauth2_redirect_uris = 轉址 URI。每個 URI 應各佔一行。
pronouns_unspecified = 未指定
+repos_none = 您沒有任何儲存庫。
+hooks.desc = 新增會被您所有儲存庫觸發的 Webhook。
+blocked_since = 自 %s 封鎖
+language.title = 預設語言
+revoke_oauth2_grant_success = 已成功撒銷存取權。
+oauth2_application_remove_description = 移除 OAuth2 應用程式將會使其無法存取此站點上已授權的帳號。要繼續嗎?
+additional_repo_units_hint = 建議啟用額外的儲存庫功能
+twofa_recovery_tip = 如果您弄丟了您的裝置,您可以使用一次性復原金鑰來重新存取您的帳號。
+twofa_scratch_token_regenerated = 您的一次性復原金鑰是:%s。它不會再次被顯示,請將其保存在一個安全的地方。
+webauthn_key_loss_warning = 如果您弄丟了您的安全金鑰,您將無法存取您的帳號。
+user_unblock_success = 已成功解除對此使用者的封鎖。
+webauthn_alternative_tip = 您可能想新增一個額外的驗證方法。
+user_block_success = 已成功封鎖此使用者。
[repo]
-owner=擁有者
+owner=所有者
owner_helper=組織可能因為儲存庫數量上限而未列入此選單。
repo_name=儲存庫名稱
repo_name_helper=好的儲存庫名稱通常是簡短的、好記的、且獨特的。
@@ -996,15 +1009,15 @@ template_select=選擇範本。
template_helper=將儲存庫設為範本
template_description=儲存庫範本讓使用者可新增相同目錄結構、檔案以及設定的儲存庫。
visibility=瀏覽權限
-visibility_description=只有組織擁有者或有權限的組織成員才能看到。
-visibility_helper_forced=您的網站管理員強制新的存儲庫必需設定為私有。
-visibility_fork_helper=(修改本值將會影響所有 fork 儲存庫的能見度)
+visibility_description=只有組織所有者或有權限的組織成員才能看到。
+visibility_helper_forced=您的網站管理員迫使新的存儲庫必需設定為私有。
+visibility_fork_helper=(修改本值將會影響所有分叉儲存庫的瀏覽權限)
clone_helper=需要有關 Clone 的協助嗎?查看幫助 。
-fork_repo=Fork 儲存庫
-fork_from=Fork 自
-already_forked=您已經 fork 過 %s
-fork_to_different_account=Fork 到其他帳戶
-fork_visibility_helper=無法更改 fork 儲存庫的瀏覽權限。
+fork_repo=分叉儲存庫
+fork_from=分叉自
+already_forked=您已經分叉過 %s
+fork_to_different_account=分叉至其他帳號
+fork_visibility_helper=無法更改分叉儲存庫的瀏覽權限。
use_template=使用此範本
clone_in_vsc=在 VS Code 中 Clone
download_zip=下載 ZIP
@@ -1018,7 +1031,7 @@ repo_lang=儲存庫語言
repo_gitignore_helper=選擇 .gitignore 範本。
repo_gitignore_helper_desc=從常見語言範本清單中挑選忽略追蹤的檔案。預設情況下各種語言建置工具產生的特殊檔案都包含在 .gitignore 中。
issue_labels=問題標籤
-issue_labels_helper=選擇問題標籤集
+issue_labels_helper=選擇問題標籤集。
license=授權條款
license_helper=請選擇授權條款檔案。
license_helper_desc=授權條款定義了他人使用您原始碼的允許和禁止事項。不確定哪個適用於您的專案?查看選擇授權條款。
@@ -1051,7 +1064,7 @@ mirror_password_blank_placeholder=(未設定)
mirror_password_help=修改帳號以清除已儲存的密碼。
watchers=關注者
stargazers=占星術師
-forks=Fork
+forks=分叉
reactions_more=和其他 %d 個
unit_disabled=網站管理員已經停用這個儲存庫區域。
language_other=其他
@@ -1093,8 +1106,8 @@ template.invalid=必須選擇一個儲存庫範本
archive.issue.nocomment=此存儲庫已封存,您不能在問題上留言。
archive.pull.nocomment=此存儲庫已封存,您不能在合併請求上留言。
-form.reach_limit_of_creation_1=您已經達到了您儲存庫的數量上限 (%d 個)。
-form.reach_limit_of_creation_n=您已經達到了您儲存庫的數量上限 (%d 個)。
+form.reach_limit_of_creation_1=您已經達到了您儲存庫的數量上限(%d 個)。
+form.reach_limit_of_creation_n=您已經達到了您儲存庫的數量上限(%d 個)。
form.name_reserved=「%s」是保留的儲存庫名稱。
need_auth=授權
@@ -1116,10 +1129,10 @@ migrate_items_releases=版本發布
migrate_repo=遷移儲存庫
migrate.clone_address=從 URL 遷移 / Clone
migrate.clone_address_desc=現有儲存庫的 HTTP(S) 或 Git 「clone」 URL
-migrate.github_token_desc=由於 GitHub API 的速率限制,您可在此輸入一個或多個由半形逗號「,」分隔的符記來加快遷移速度。警告:濫用此功能可能會違反該服務提供者的政策並導致帳戶被封鎖。
+migrate.github_token_desc=由於 GitHub API 的速率限制,您可在此輸入一個或多個由半形逗號「,」分隔的符記來加快遷移速度。警告:濫用此功能可能會違反該服務提供者的政策並導致帳號被封鎖。
migrate.clone_local_path=或者是本地端伺服器路徑
migrate.permission_denied=您並沒有導入本地儲存庫的權限。
-migrate.permission_denied_blocked=您無法從未允許的主機匯入,請聯絡管理員檢查以下設定值 ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS
+migrate.permission_denied_blocked=您無法從未允許的主機匯入,請聯絡管理員檢查以下設定值 ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS。
migrate.invalid_local_path=無效的本地路徑。它不存在或不是一個資料夾。
migrate.invalid_lfs_endpoint=該 LFS 端點無效。
migrate.failed=遷移失敗:%v
@@ -1132,12 +1145,12 @@ migrate.migrating_failed=從 %s 遷移失敗。
migrate.migrating_failed_no_addr=遷移失敗。
migrate.github.description=從 github.com 或 GitHub Enterprise 伺服器遷移資料。
migrate.git.description=從任何 Git 服務遷移儲存庫。
-migrate.gitlab.description=從 gitlab.com 或其他 GitLab 執行個體遷移資料。
-migrate.gitea.description=從 gitea.com 或其他 Gitea/Forgejo 執行個體遷移資料。
-migrate.gogs.description=從 notabug.org 或其他 Gogs 執行個體遷移資料。
-migrate.onedev.description=從 code.onedev.io 或其他 OneDev 執行個體遷移資料。
+migrate.gitlab.description=從 gitlab.com 或其他 GitLab 站點遷移資料。
+migrate.gitea.description=從 gitea.com 或其他 Gitea 站點遷移資料。
+migrate.gogs.description=從 notabug.org 或其他 Gogs 站點遷移資料。
+migrate.onedev.description=從 code.onedev.io 或其他 OneDev 站點遷移資料。
migrate.codebase.description=從 codebasehq.com 遷移資料。
-migrate.gitbucket.description=從 GitBucket 執行個體遷移資料。
+migrate.gitbucket.description=從 GitBucket 站點遷移資料。
migrate.migrating_git=正在遷移 Git 資料
migrate.migrating_topics=正在遷移主題
migrate.migrating_milestones=正在遷移里程碑
@@ -1147,10 +1160,10 @@ migrate.migrating_issues=正在遷移問題
migrate.migrating_pulls=正在遷移合併請求
mirror_from=鏡像自
-forked_from=fork 自
+forked_from=分叉自
generated_from=產生自
-fork_from_self=您無法 fork 已經擁有的儲存庫。
-fork_guest_user=登入並 fork 這個儲存庫。
+fork_from_self=您無法分叉您擁有的儲存庫。
+fork_guest_user=登入並分叉這個儲存庫。
watch_guest_user=登入以查看此儲存庫。
star_guest_user=登入以為此儲存庫加上星號。
unwatch=取消關注
@@ -1168,7 +1181,7 @@ cite_this_repo=引用此儲存庫
create_new_repo_command=從命令列建立新儲存庫
push_exist_repo=從命令列推送已存在的儲存庫
empty_message=此儲存庫未包含任何內容。
-broken_message=無法讀取此儲存庫底層的 Git 資料。請聯絡此 Forgejo 執行個體的管理員或刪除此儲存庫。
+broken_message=無法讀取此儲存庫中的 Git 資料。請聯絡此 Forgejo 站點的管理員或刪除此儲存庫。
code=程式碼
code.desc=存取原始碼、檔案、提交和分支。
@@ -1200,7 +1213,7 @@ file.title=%s 於 %s
file_raw=原始文件
file_history=歷史記錄
file_view_source=檢視原始碼
-file_view_rendered=檢視渲染版本
+file_view_rendered=檢視算繪版本
file_view_raw=查看原始文件
file_permalink=永久連結
file_too_large=檔案太大,無法顯示。
@@ -1238,7 +1251,7 @@ editor.cannot_edit_non_text_files=網站介面不能編輯二進位檔案。
editor.edit_this_file=編輯檔案
editor.this_file_locked=檔案已被鎖定
editor.must_be_on_a_branch=你必須在一個分支或提出對此檔的更改。
-editor.fork_before_edit=如果你想要對這個檔案進行或提出修改,請先 fork 這個儲存庫。
+editor.fork_before_edit=如果你想要對這個檔案進行或提出修改,請先分叉這個儲存庫。
editor.delete_this_file=刪除檔案
editor.must_have_write_access=您必須擁有寫入權限才能對此檔案進行修改或提出變更。
editor.file_delete_success=已刪除文件「%s」。
@@ -1252,11 +1265,11 @@ editor.add_tmpl=新增「{index}
。
settings.tracker_url_format_desc=使用占位符 {user}
, {repo}
和 {index}
代表帳號、儲存庫名稱和問題編號。
settings.enable_timetracker=啟用時間追蹤
@@ -1987,7 +2000,7 @@ settings.pulls.allow_rebase_update=啟用透過 Rebase 更新合併請求分支
settings.pulls.default_delete_branch_after_merge=預設在合併後刪除合併請求分支
settings.pulls.default_allow_edits_from_maintainers=預設允許維護者進行編輯
settings.releases_desc=啟用儲存庫版本發佈
-settings.packages_desc=啟用儲存庫套件註冊中心
+settings.packages_desc=啟用儲存庫軟體註冊中心
settings.projects_desc=啟用儲存庫專案
settings.actions_desc=啟用儲存庫 Actions
settings.admin_settings=管理員設定
@@ -2000,18 +2013,18 @@ settings.reindex_button=加入到重新索引佇列
settings.reindex_requested=已請求重新索引
settings.admin_enable_close_issues_via_commit_in_any_branch=可以從非預設分支的提交訊息關閉問題
settings.danger_zone=危險操作區
-settings.new_owner_has_same_repo=新的儲存庫擁有者已經存在同名儲存庫!
+settings.new_owner_has_same_repo=新的儲存庫所有者已經有一個同名的儲存庫。請另擇一個名字。
settings.convert=轉換為普通儲存庫
settings.convert_desc=您可以將此鏡像轉成普通儲存庫。此動作不可還原。
settings.convert_notices_1=此操作會將此鏡像轉換成普通儲存庫且不可還原。
settings.convert_confirm=轉換儲存庫
settings.convert_succeed=鏡像儲存庫已成功轉換為一般儲存庫。
-settings.convert_fork=轉換成普通儲存庫
-settings.convert_fork_desc=您可以將此 fork 轉換成普通儲存庫。此動作不可還原。
-settings.convert_fork_notices_1=此操作會將此 fork 轉換成普通儲存庫且不可還原。
+settings.convert_fork=轉換成一般儲存庫
+settings.convert_fork_desc=您可以將此分叉轉換成一般儲存庫。這個操作無法被取消。
+settings.convert_fork_notices_1=此操作將不可取消得將此分叉轉換成一般儲存庫。
settings.convert_fork_confirm=轉換儲存庫
-settings.convert_fork_succeed=此 fork 已轉換成普通儲存庫。
-settings.transfer.title=轉移儲存庫所有權
+settings.convert_fork_succeed=此分叉已被轉換成一般儲存庫。
+settings.transfer.title=轉移所有權
settings.transfer.rejected=儲存庫轉移被拒絕。
settings.transfer.success=儲存庫已成功轉移。
settings.transfer_abort=取消轉移
@@ -2022,7 +2035,7 @@ settings.transfer_in_progress=目前正在進行轉移。如果您想要將此
settings.transfer_notices_1=- 如果將此儲存庫轉移給個別使用者,您將會失去此儲存庫的存取權。
settings.transfer_notices_2=- 如果將此儲存庫轉移到您(共同)擁有的組織,您將能繼續保有此儲存庫的存取權。
settings.transfer_notices_3=- 如果此儲存庫為私有儲存庫且將轉移給個別使用者,此動作確保該使用者至少擁有讀取權限 (必要時將會修改權限)。
-settings.transfer_owner=新擁有者
+settings.transfer_owner=新的所有者
settings.transfer_perform=進行轉移
settings.transfer_started=此儲存庫已被標記為待轉移且正在等待「%s」的確認
settings.transfer_succeed=已轉移儲存庫。
@@ -2048,14 +2061,14 @@ settings.delete=刪除本儲存庫
settings.delete_desc=刪除儲存庫是永久的且不可還原。
settings.delete_notices_1=- 此動作不可還原。
settings.delete_notices_2=- 此操作將永久刪除 %s 儲存庫,包括程式碼、問題、留言、Wiki 資料和協作者設定。
-settings.delete_notices_fork_1=- 在此儲存庫刪除後,它的 fork 將會變成獨立儲存庫。
+settings.delete_notices_fork_1=- 在刪除此儲存庫後,它的所有分叉將會各自變成獨立儲存庫。
settings.deletion_success=這個儲存庫已被刪除。
settings.update_settings_success=已更新儲存庫的設定。
settings.confirm_delete=刪除儲存庫
settings.add_collaborator=增加協作者
-settings.add_collaborator_success=成功增加協作者!
+settings.add_collaborator_success=成功增加協作者。
settings.add_collaborator_inactive_user=無法將未啟用的使用者加入為協作者。
-settings.add_collaborator_owner=無法將擁有者加入為協作者。
+settings.add_collaborator_owner=無法將所有者加入為協作者。
settings.add_collaborator_duplicate=此協作者早已被加入此儲存庫。
settings.delete_collaborator=移除
settings.collaborator_deletion=移除協作者
@@ -2063,14 +2076,14 @@ settings.collaborator_deletion_desc=移除協作者將拒絕他存取此儲存
settings.remove_collaborator_success=已移除協作者。
settings.search_user_placeholder=搜尋使用者...
settings.org_not_allowed_to_be_collaborator=不可加入組織為協作者。
-settings.change_team_access_not_allowed=只有組織擁有者可修改團隊的儲存庫存取權限
+settings.change_team_access_not_allowed=只有組織所有者可修改團隊的儲存庫存取權限
settings.team_not_in_organization=團隊和儲存庫不在相同的組織內
settings.teams=團隊
settings.add_team=增加團隊
settings.add_team_duplicate=團隊已擁有該儲存庫
settings.add_team_success=團隊現在可存取該儲存庫了。
settings.search_team=搜尋團隊...
-settings.change_team_permission_tip=團隊權限可於團隊設定頁面修改,不能針對儲存庫分別調整。
+settings.change_team_permission_tip=團隊權限只能於團隊設定頁面修改,不能針對儲存庫分別調整
settings.delete_team_tip=此團隊可存取所有儲存庫,無法移除
settings.remove_team_success=已移除團隊存取儲存庫的權限。
settings.add_webhook=建立 Webhook
@@ -2106,14 +2119,14 @@ settings.discord_icon_url=圖示 URL
settings.event_desc=觸發條件:
settings.event_push_only=推送事件
settings.event_send_everything=所有事件
-settings.event_choose=自訂事件...
+settings.event_choose=自訂事件…
settings.event_header_repository=儲存庫事件
settings.event_create=建立
settings.event_create_desc=建立分支或標籤。
settings.event_delete=刪除
settings.event_delete_desc=刪除分支或標籤。
-settings.event_fork=Fork
-settings.event_fork_desc=儲存庫已被 fork。
+settings.event_fork=分叉
+settings.event_fork_desc=儲存庫已被分叉。
settings.event_wiki=Wiki
settings.event_wiki_desc=建立、重新命名、編輯、刪除 Wiki 頁面。
settings.event_release=版本發布
@@ -2148,15 +2161,15 @@ settings.event_pull_request_review=合併請求審核
settings.event_pull_request_review_desc=核准、退回或提出審核留言。
settings.event_pull_request_sync=合併請求同步
settings.event_pull_request_sync_desc=合併請求同步。
-settings.event_package=套件
-settings.event_package_desc=套件已在儲存庫中建立或刪除。
+settings.event_package=軟體包
+settings.event_package_desc=已在儲存庫中建立或刪除軟體包。
settings.branch_filter=分支篩選
-settings.branch_filter_desc=推送、建立分支、刪除分支事件的白名單,請使用 glob 比對模式。如果留白或輸入*
,所有分支的事件都會被回報。語法參見 github.com/gobwas/glob。範例:master
, {master,release*}
。
+settings.branch_filter_desc=推送、建立分支、刪除分支事件的白名單,請使用 glob 比對式樣。如果留白或輸入*
,所有分支的事件都會被回報。語法參見 github.com/gobwas/glob。範例:master
, {master,release*}
。
settings.authorization_header=Authorization 標頭
settings.authorization_header_desc=存在時將將包含此 Authorization 標頭在請求中。例: %s。
settings.active=啟用
settings.active_helper=觸發事件的資訊將會被送到此 Webhook URL。
-settings.add_hook_success=Webhook 新增成功!
+settings.add_hook_success=Webhook 新增成功。
settings.update_webhook=更新 Webhook
settings.update_hook_success=已成功更新 Webhook 。
settings.delete_webhook=移除 Webhook
@@ -2182,7 +2195,7 @@ settings.web_hook_name_wechatwork=WeCom (Wechat Work)
settings.web_hook_name_packagist=Packagist
settings.packagist_username=Packagist 帳號
settings.packagist_api_token=API 符記
-settings.packagist_package_url=Packagist 套件 URL
+settings.packagist_package_url=Packagist 軟體包 URL
settings.deploy_keys=部署金鑰
settings.add_deploy_key=新增部署金鑰
settings.deploy_key_desc=部署金鑰具有唯讀權限,可拉取此儲存庫。
@@ -2212,7 +2225,7 @@ settings.protect_disable_push_desc=不允許推送到此分支。
settings.protect_enable_push=啟用推送
settings.protect_enable_push_desc=任何擁有寫入權限的使用者將可推送至該分支(但不可使用force push)。
settings.protect_enable_merge=啟用合併
-settings.protect_enable_merge_desc=任何有寫入權限的人都可將合併請求合併到此分支
+settings.protect_enable_merge_desc=任何有寫入權限的人都可將合併請求合併到此分支。
settings.protect_whitelist_committers=使用白名單控管推送
settings.protect_whitelist_committers_desc=僅允許白名單內的使用者或團隊推送至該分支(但不可使用force push)。
settings.protect_whitelist_deploy_keys=將擁有寫入權限的部署金鑰加入白名單。
@@ -2237,9 +2250,9 @@ settings.dismiss_stale_approvals=捨棄過時的核可
settings.dismiss_stale_approvals_desc=當新的提交有修改到合併請求的內容,並被推送到此分支時,將捨棄舊的核可。
settings.require_signed_commits=僅接受經簽署的提交
settings.require_signed_commits_desc=拒絕未經簽署或未經驗證的提交推送到此分支。
-settings.protect_branch_name_pattern=受保護的分支名稱模式
-settings.protect_protected_file_patterns=受保護的檔案模式 (以分號區隔「;」):
-settings.protect_protected_file_patterns_desc=即便使用者有權限新增、修改、刪除此分支的檔案,仍不允許直接修改受保護的檔案。可以用半形分號「;」分隔多個模式。請於 github.com/gobwas/glob 文件查看模式格式。範例: .drone.yml
, /docs/**/*.txt
。
+settings.protect_branch_name_pattern=受保護的分支名稱式樣
+settings.protect_protected_file_patterns=受保護的檔案式樣 (以分號區隔「;」):
+settings.protect_protected_file_patterns_desc=即便使用者有權限新增、修改、刪除此分支的檔案,仍不允許直接修改受保護的檔案。可以用半形分號「;」分隔多個式樣。請於 github.com/gobwas/glob 文件查看模式格式。範例: .drone.yml
, /docs/**/*.txt
。
settings.protect_unprotected_file_patterns=未受保護的檔案模式 (以分號區隔「;」):
settings.protect_unprotected_file_patterns_desc=當使用者有寫入權限時,可繞過推送限制,直接修改未受保護的檔案。可以用半形分號「;」分隔多個模式。請於 github.com/gobwas/glob 文件查看模式格式。範例: .drone.yml
, /docs/**/*.txt
。
settings.add_protected_branch=啟用保護
@@ -2255,7 +2268,7 @@ settings.block_outdated_branch_desc=當 head 分支落後於基礎分支時不
settings.default_branch_desc=請選擇用來提交程式碼和合併請求的預設分支:
settings.merge_style_desc=合併方式
settings.default_merge_style_desc=預設合併方式
-settings.choose_branch=選擇一個分支...
+settings.choose_branch=選擇一個分支…
settings.no_protected_branch=沒有受保護的分支。
settings.edit_protected_branch=編輯
settings.protected_branch_required_rule_name=必須填寫規則名稱
@@ -2277,7 +2290,7 @@ settings.matrix.room_id=聊天室 ID
settings.matrix.message_type=訊息類型
settings.archive.button=封存儲存庫
settings.archive.header=封存本儲存庫
-settings.archive.success=此儲存庫已被封存
+settings.archive.success=此儲存庫已被封存。
settings.archive.error=嘗試封存儲存庫時發生錯誤。查看日誌檔以獲得更多資訊。
settings.archive.error_ismirror=無法封存鏡像儲存庫。
settings.archive.branchsettings_unavailable=已封存的儲存庫無法使用分支設定。
@@ -2341,14 +2354,14 @@ diff.file_after=之後
diff.file_image_width=寬度
diff.file_image_height=高度
diff.file_byte_size=大小
-diff.file_suppressed=檔案差異因為檔案過大而無法顯示
+diff.file_suppressed=檔案差異因為檔案過大而被隱藏
diff.file_suppressed_line_too_long=檔案差異因為一行或多行太長而無法顯示
diff.too_many_files=本差異變更的檔案數量過多導致部分檔案未顯示
diff.show_more=顯示更多
diff.load=載入差異
diff.generated=generated
diff.vendored=vendored
-diff.comment.placeholder=留言...
+diff.comment.placeholder=留言
diff.comment.markdown_info=支援 markdown 格式。
diff.comment.add_single_comment=加入單獨的留言
diff.comment.add_review_comment=新增留言
@@ -2463,8 +2476,8 @@ find_file.no_matching=找不到符合的檔案
error.csv.too_large=無法渲染此檔案,因為它太大了。
error.csv.unexpected=無法渲染此檔案,因為它包含了未預期的字元,於第 %d 行第 %d 列。
error.csv.invalid_field_count=無法渲染此檔案,因為它第 %d 行的欄位數量有誤。
-fork_no_valid_owners = 因為此儲存庫沒有有效的所有者,它無法被 fork。
-fork_branch = 要複製到 fork 的分支
+fork_no_valid_owners = 因為此儲存庫沒有有效的所有者,它無法被分叉。
+fork_branch = 要複製到分叉的分支
commit.load_referencing_branches_and_tags = 載入引用這個提交的分支和標籤
mirror_sync = 已同步
commit.contained_in_default_branch = 這個提交是預設分支的一部分
@@ -2487,7 +2500,7 @@ object_format_helper = 儲存庫的物件格式。一旦設定便無法更改。
stars_remove_warning = 這將會移除此儲存庫的所有星星。
transfer.no_permission_to_reject = 您沒有權限拒絕這項轉讓。
desc.sha256 = SHA256
-form.name_pattern_not_allowed = 您無法在儲存庫的名字中使用「%s」格式。
+form.name_pattern_not_allowed = 您無法在儲存庫的名字中使用「%s」式樣。
admin.manage_flags = 管理旗標
visibility_helper = 將儲存庫設為私有
mirror_address_url_invalid = URL 無效。您必須正確的跳脫(escape)該 URL 的每個部份。
@@ -2503,13 +2516,45 @@ commit.contained_in = 這個提交存在於:
settings.archive.mirrors_unavailable = 不能鏡像已封存的儲存庫。
settings.mirror_settings.push_mirror.edit_sync_time = 編輯鏡像同步週期
settings.update_protect_branch_success = 已成功更新分支保護規則「%s」。
+editor.filename_is_a_directory = 在這個儲存庫中,已有一個目錄使用了檔案「%s」的名稱。
+editor.file_editing_no_longer_exists = 正在編輯的檔案「%s」已不存在於儲存庫。
+editor.file_deleting_no_longer_exists = 正在刪除的檔案「%s」已不存在於儲存庫。
+editor.directory_is_a_file = 在這個儲存庫中,已有一個檔案使用了目錄「%s」的名稱。
+generated = 自動生成的
+object_format = 物件格式
+open_with_editor = 用 %s 打開
+stars = 星星
+n_tag_few = %s 個標籤
+migrate_options_lfs_endpoint.placeholder =
+signing.wont_sign.nokey = 這個站點沒有可以用來簽署的金鑰。
+n_branch_few = %s 條分支
+n_tag_one = %s 個標籤
+settings.transfer.button = 轉移所有權
+settings.transfer.modal.title = 轉移所有權
+commits.view_path = 在歷史中檢視這個時間點
+n_commit_one = %s 個提交
+n_commit_few = %s 個提交
+n_branch_one = %s 條分支
+commits.search_branch = 此分支
+commits.browse_further = 進一步瀏覽
+commits.renamed_from = 自 %s 重新命名
+issues.filter_milestone_none = 沒有里程碑
+issues.num_comments_1 = %s 則留言
+issues.no_content = 沒有提供敘述。
+settings.new_owner_blocked_doer = 新的所有者已封鎖您。
+new_repo_helper = 一個儲存庫包含專案的所有檔案和它們的修訂歷史。在別處已經有儲存庫了嗎?遷移儲存庫。
+editor.commit_id_not_matching = 在您編輯檔案的同時,該檔案被改變了。請提交到一條新的分支然後合併。
+issues.role.owner_helper = 此使用者是這個儲存庫的所有者。
+issues.filter_milestone_all = 所有里程碑
+issues.author_helper = 此使用者是作者。
+pulls.blocked_by_approvals = 此合併請求還沒有足夠的核可。已有 %d 個,總共需要 %d 個核可。
[graphs]
[org]
org_name_holder=組織名稱
org_full_name_holder=組織全名
-org_name_helper=組織名稱應該要簡短且方便記憶
+org_name_helper=組織名稱應該要簡短且好記。
create_org=建立組織
repo_updated=於 %s 更新
members=成員
@@ -2522,7 +2567,7 @@ create_team=建立新的團隊
org_desc=描述
team_name=團隊名稱
team_desc=描述
-team_name_helper=團隊名稱應該要簡短且方便記憶
+team_name_helper=團隊名稱應該要簡短且好記。
team_desc_helper=描述團隊的目的或角色。
team_access_desc=儲存庫存取權
team_permission_desc=權限
@@ -2541,9 +2586,9 @@ settings.permission=權限
settings.repoadminchangeteam=儲存庫管理者可增加與移除團隊權限
settings.visibility=瀏覽權限
settings.visibility.public=公開
-settings.visibility.limited=受限 (只有已驗證的使用者才可以看到)
+settings.visibility.limited=受限(只有已驗證的使用者才可以看到)
settings.visibility.limited_shortname=受限
-settings.visibility.private=私有 (只有組織成員才能看到)
+settings.visibility.private=私有(只有組織成員才能看到)
settings.visibility.private_shortname=私有
settings.update_settings=更新設定
@@ -2560,13 +2605,13 @@ settings.hooks_desc=此組織下的所有存儲庫都會觸發
settings.labels_desc=在此處新增的標籤可用於此組織下的所有儲存庫。
-members.membership_visibility=成員能見度:
+members.membership_visibility=成員瀏覽權限:
members.public=可見
members.public_helper=隱藏
members.private=隱藏
members.private_helper=顯示
members.member_role=成員角色:
-members.owner=擁有者
+members.owner=所有者
members.member=普通成員
members.remove=移除
members.remove.detail=確定要從 %[2]s 中刪除 %[1]s 嗎?
@@ -2592,7 +2637,7 @@ teams.admin_access=管理員權限
teams.admin_access_helper=成員可以拉取、推送和新增協作者到團隊儲存庫中。
teams.no_desc=該團隊暫無描述
teams.settings=設定
-teams.owners_permission_desc=擁有者對 所有儲存庫 具有完整權限,且對組織具有 管理員權限。
+teams.owners_permission_desc=所有者對 所有儲存庫 具有完整權限,且對組織具有 管理員權限。
teams.members=團隊成員
teams.update_settings=更新設定
teams.delete_team=刪除團隊
@@ -2628,7 +2673,7 @@ teams.invite.description=請點擊下方按鈕加入團隊。
[admin]
dashboard=資訊主頁
-users=使用者帳戶
+users=使用者帳號
organizations=組織
repositories=儲存庫
hooks=Webhook
@@ -2659,13 +2704,13 @@ dashboard.cron.started=已開始的 Cron: %[1]s
dashboard.cron.process=Cron: %[1]s
dashboard.cron.error=Cron 中的錯誤: %s: %[3]s
dashboard.cron.finished=Cron: %[1]s 已完成
-dashboard.delete_inactive_accounts=刪除所有未啟用帳戶
-dashboard.delete_inactive_accounts.started=刪除所有未啟用帳戶的任務已啟動。
+dashboard.delete_inactive_accounts=刪除所有未啟用帳號
+dashboard.delete_inactive_accounts.started=刪除所有未啟用帳號的任務已啟動。
dashboard.delete_repo_archives=刪除所有儲存庫存檔 (ZIP、TAR.GZ 等)
dashboard.delete_repo_archives.started=刪除所有儲存庫存檔的任務已啟動。
dashboard.delete_missing_repos=刪除所有遺失 Git 檔案的儲存庫
dashboard.delete_missing_repos.started=刪除所有遺失 Git 檔案的儲存庫的任務已啟動。
-dashboard.delete_generated_repository_avatars=刪除產生的儲存庫大頭貼
+dashboard.delete_generated_repository_avatars=刪除自動產生的儲存庫大頭貼
dashboard.update_mirrors=更新鏡像
dashboard.repo_health_check=對所有儲存庫進行健康檢查
dashboard.check_repo_stats=檢查所有儲存庫的統計資料
@@ -2679,7 +2724,7 @@ dashboard.resync_all_hooks=重新同步所有儲存庫的 pre-receive、update
dashboard.reinit_missing_repos=重新初始化所有記錄存在但遺失的 Git 儲存庫
dashboard.sync_external_users=同步外部使用者資料
dashboard.cleanup_hook_task_table=清理 hook_task 資料表
-dashboard.cleanup_packages=清理已過期的套件
+dashboard.cleanup_packages=清理已過期的軟體包
dashboard.server_uptime=伺服器運作時間
dashboard.current_goroutine=目前的 Goroutines 數量
dashboard.current_memory_usage=目前記憶體使用量
@@ -2716,10 +2761,10 @@ dashboard.delete_old_system_notices=從資料庫刪除所有舊系統提示
dashboard.gc_lfs=對 LFS meta objects 進行垃圾回收
dashboard.stop_zombie_tasks=停止殭屍任務
dashboard.stop_endless_tasks=停止永不停止的任務
-dashboard.cancel_abandoned_jobs=取消已放棄的工作
+dashboard.cancel_abandoned_jobs=取消已放棄的作業
-users.user_manage_panel=使用者帳戶管理
-users.new_account=建立使用者帳戶
+users.user_manage_panel=使用者帳號管理
+users.new_account=建立使用者帳號
users.name=帳號
users.full_name=全名
users.activated=已啟用
@@ -2731,17 +2776,17 @@ users.created=建立時間
users.last_login=上次登入
users.never_login=從未登入
users.send_register_notify=寄送使用者註冊通知
-users.new_success=已建立新帳戶「%s」。
+users.new_success=已建立新帳號「%s」。
users.edit=編輯
users.auth_source=認證來源
users.local=本地
users.auth_login_name=認證登入名稱
users.password_helper=密碼留空則不修改。
-users.update_profile_success=已更新使用者帳戶。
-users.edit_account=編輯使用者帳戶
+users.update_profile_success=已更新使用者帳號。
+users.edit_account=編輯使用者帳號
users.max_repo_creation=最大儲存庫數量
users.max_repo_creation_desc=(設定 -1 使用全域預設限制)
-users.is_activated=使用者帳戶已啟用
+users.is_activated=使用者帳號已啟用
users.prohibit_login=禁止登入
users.is_admin=是管理員
users.is_restricted=受限制的
@@ -2749,15 +2794,15 @@ users.allow_git_hook=可以建立 Git Hook
users.allow_git_hook_tooltip=Git Hook 將以和 Forgejo 相同的作業系統使用者執行,並擁有同等的主機存取權限。因此擁有此特殊 Git Hook 權限的使用者可存取和修改所有的 Forgejo 儲存庫和 Forgejo 的資料庫。他們甚至能取得 Forgejo 的管理員權限。
users.allow_import_local=可以匯入本地儲存庫
users.allow_create_organization=可以建立組織
-users.update_profile=更新使用者帳戶
-users.delete_account=刪除使用者帳戶
+users.update_profile=更新使用者帳號
+users.delete_account=刪除使用者帳號
users.cannot_delete_self=您無法刪除您自己
users.still_own_repo=這個使用者還擁有一個或更多的儲存庫。請先刪除或是轉移這些儲存庫。
users.still_has_org=此使用者是組織的成員。請先將他從組織中移除。
users.purge=清除使用者
-users.purge_help=強制刪除使用者和他擁有的所有儲存庫、組織、套件,所有留言也會被刪除。
-users.still_own_packages=此使用者仍然擁有一個以上的套件,請先刪除這些套件。
-users.deletion_success=使用者帳戶已被刪除。
+users.purge_help=強制刪除使用者和其所擁有的所有儲存庫、組織和軟體包。他所有的留言和問題也會被刪除。
+users.still_own_packages=此使用者仍然擁有至少一個軟體包,請先刪除這些軟體包。
+users.deletion_success=已刪除該使用者帳號。
users.reset_2fa=重設兩步驟驗證
users.list_status_filter.menu_text=篩選
users.list_status_filter.reset=重設
@@ -2781,7 +2826,7 @@ emails.filter_sort.name=使用者名稱
emails.filter_sort.name_reverse=使用者名稱(倒序)
emails.updated=信箱已更新
emails.not_updated=電子信箱更新失敗: %v
-emails.duplicate_active=此信箱已被其他使用者使用
+emails.duplicate_active=此信箱已被其他使用者使用。
emails.change_email_header=更新電子信箱屬性
orgs.org_manage_panel=組織管理
@@ -2793,7 +2838,7 @@ orgs.new_orga=新增組織
repos.repo_manage_panel=儲存庫管理
repos.unadopted=未接管的儲存庫
repos.unadopted.no_more=找不到其他未接管的儲存庫
-repos.owner=擁有者
+repos.owner=所有者
repos.name=名稱
repos.private=私有
repos.watches=關注數
@@ -2802,10 +2847,10 @@ repos.forks=Fork 數
repos.issues=問題數
repos.size=大小
-packages.package_manage_panel=套件管理
+packages.package_manage_panel=軟體包管理
packages.total_size=總大小: %s
packages.unreferenced_size=未參考大小: %s
-packages.owner=擁有者
+packages.owner=所有者
packages.creator=建立者
packages.name=名稱
packages.version=版本
@@ -2847,7 +2892,7 @@ auths.attribute_mail=電子郵件屬性
auths.attribute_ssh_public_key=SSH 公鑰屬性
auths.attribute_avatar=大頭貼屬性
auths.attributes_in_bind=從 Bind DN 中取得屬性資訊
-auths.allow_deactivate_all=允許在搜尋結果為空白時停用所有使用者帳戶
+auths.allow_deactivate_all=允許在搜尋結果為空白時停用所有使用者帳號
auths.use_paged_search=使用分頁查詢
auths.search_page_size=頁面大小
auths.filter=使用者篩選器
@@ -2859,7 +2904,7 @@ auths.group_search_base=群組搜尋的 Base DN
auths.group_attribute_list_users=包含使用者清單的群組屬性
auths.user_attribute_in_group=群組中列出的使用者屬性
auths.map_group_to_team=對應 LDAP 群組到組織團隊 (欄位留空以跳過)
-auths.map_group_to_team_removal=如果使用者不屬於相對應的 LDAP 群組,將使用者從已同步的團隊移除。
+auths.map_group_to_team_removal=如果使用者不屬於相對應的 LDAP 群組,將使用者從已同步的團隊移除
auths.enable_ldap_groups=啟用 LDAP 群組
auths.ms_ad_sa=MS AD 搜尋屬性
auths.smtp_auth=SMTP 驗證類型
@@ -2900,11 +2945,11 @@ auths.oauth2_map_group_to_team=將已 Claim 的群組對應到組織團隊。(
auths.oauth2_map_group_to_team_removal=如果使用者不屬於相對應的群組,將使用者從已同步的團隊移除。
auths.enable_auto_register=允許授權用戶自動註冊
auths.sspi_auto_create_users=自動建立使用者
-auths.sspi_auto_create_users_helper=允許 SSPI 認證方法於使用者首次登入時自動建立新帳戶
+auths.sspi_auto_create_users_helper=允許 SSPI 認證方法於使用者首次登入時自動建立新帳號
auths.sspi_auto_activate_users=自動啟用使用者
auths.sspi_auto_activate_users_helper=允許 SSPI 認證方法自動啟用新使用者
auths.sspi_strip_domain_names=從帳號中移除域名
-auths.sspi_strip_domain_names_helper=勾選後,將從登入名稱中移除域名 (例如:「DOMAIN\user」和「user@example.org」都會變成「user」)
+auths.sspi_strip_domain_names_helper=勾選後,將從登入名稱中移除域名(例如:「DOMAIN\user」和「user@example.org」都會變成「user」)。
auths.sspi_separator_replacement=用來替換 \, / 和 @ 的分隔符號
auths.sspi_separator_replacement_helper=用來替換下級登入名稱分隔符號的字元 (例如:「DOMAIN\user」中的「\」) 和使用者主體名稱 (例如:「user@example.org」中的「@」)。
auths.sspi_default_language=使用者預設語言
@@ -2912,8 +2957,8 @@ auths.sspi_default_language_helper=SSPI 認證方法自動建立之使用者的
auths.tips=幫助提示
auths.tips.oauth2.general=OAuth2 認證
auths.tip.oauth2_provider=OAuth2 提供者
-auths.tip.bitbucket=註冊新的 OAuth 客戶端並加入權限「Account - Read」。網址:https://bitbucket.org/account/user//etc/apk/repositories
檔加入下列 URL 以設定此註冊中心:
alpine.registry.key=下載註冊中心的公開 RSA 金鑰到 /etc/apk/keys/
資料夾來驗證索引簽署:
-alpine.registry.info=從下列清單選擇 $branch 和 $repository
-alpine.install=執行下列命令安裝此套件:
+alpine.registry.info=從下列清單選擇 $branch 和 $repository。
+alpine.install=執行下列命令安裝此軟體包:
alpine.repository=儲存庫資訊
alpine.repository.branches=分支
alpine.repository.repositories=儲存庫
alpine.repository.architectures=架構
cargo.registry=在 Cargo 組態檔設定此註冊中心 (例如: ~/.cargo/config.toml
):
-cargo.install=執行下列命令以使用 Cargo 安裝此套件:
+cargo.install=執行下列命令以使用 Cargo 安裝此軟體包:
chef.registry=在您的 ~/.chef/config.rb
檔設定此註冊中心:
-chef.install=執行下列命令安裝此套件:
+chef.install=執行下列命令以安裝此軟體包:
composer.registry=在您的 ~/.composer/config.json
檔設定此註冊中心:
-composer.install=執行下列命令以使用 Composer 安裝此套件:
+composer.install=執行下列命令以使用 Composer 安裝此軟體包:
composer.dependencies=相依性
composer.dependencies.development=開發相依性
conan.details.repository=儲存庫
conan.registry=透過下列命令設定此註冊中心:
-conan.install=執行下列命令以使用 Conan 安裝此套件:
+conan.install=執行下列命令以使用 Conan 安裝此軟體包:
conda.registry=在您的 .condarc
檔設定此註冊中心為 Conda 存儲庫:
-conda.install=執行下列命令以使用 Conda 安裝此套件:
+conda.install=執行下列命令以使用 Conda 安裝此軟體包:
container.details.type=映像檔類型
container.details.platform=平台
-container.pull=透過下列命令拉取映像檔:
+container.pull=透過下列命令拉取映像檔:
container.digest=摘要:
container.multi_arch=作業系統 / 架構
container.layers=映像檔 Layers
container.labels=標籤
container.labels.key=鍵
container.labels.value=值
-cran.install=執行下列命令安裝此套件:
+cran.install=執行下列命令以安裝此軟體包:
debian.registry=透過下列命令設定此註冊中心:
-debian.install=執行下列命令安裝此套件:
+debian.install=執行下列命令以安裝此軟體包:
debian.repository=儲存庫資訊
debian.repository.architectures=架構
-generic.download=透過下列命令下載套件:
+generic.download=使用命令列下載軟體包:
helm.registry=透過下列命令設定此註冊中心:
-helm.install=執行下列命令安裝此套件:
+helm.install=執行下列命令安裝以此軟體包:
maven.registry=在您專案的 pom.xml
檔設定此註冊中心:
-maven.install=若要使用此套件,請在您 pom.xml
檔的 dependencies
段落加入下列內容:
+maven.install=若要使用此軟體包,請在您 pom.xml
檔的 dependencies
段落加入下列內容:
maven.install2=透過下列命令執行:
-maven.download=透過下列命令下載相依性:
-nuget.registry=透過下列命令設定此註冊中心:
-nuget.install=執行下列命令以使用 NuGet 安裝此套件:
+maven.download=透過下列命令下載相依性:
+nuget.registry=透過下列命令設定此註冊中心:
+nuget.install=執行下列命令以使用 NuGet 安裝此軟體包:
nuget.dependency.framework=目標框架
npm.registry=在您專案的 .npmrc
檔設定此註冊中心:
-npm.install=執行下列命令以使用 npm 安裝此套件:
-npm.install2=或將它加到 package.json 檔:
+npm.install=執行下列命令以使用 npm 安裝此軟體包:
+npm.install2=或將它加到 package.json 檔:
npm.dependencies=相依性
npm.dependencies.development=開發相依性
npm.dependencies.peer=Peer 相依性
npm.dependencies.optional=選用相依性
npm.details.tag=標籤
-pub.install=執行下列命令以使用 Dart 安裝此套件:
+pub.install=執行下列命令以使用 Dart 安裝此軟體包:
pypi.requires=需要 Python
-pypi.install=執行下列命令以使用 pip 安裝此套件:
+pypi.install=執行下列命令以使用 pip 安裝此軟體包:
rpm.registry=透過下列命令設定此註冊中心:
-rpm.install=執行下列命令安裝此套件:
+rpm.install=執行下列命令以安裝此軟體包:
rpm.repository=儲存庫資訊
rpm.repository.architectures=架構
-rubygems.install=執行下列命令以使用 gem 安裝此套件:
+rubygems.install=執行下列命令以使用 gem 安裝此軟體包:
rubygems.install2=或將它加到 Gemfile:
rubygems.dependencies.runtime=執行階段相依性
rubygems.dependencies.development=開發相依性
rubygems.required.ruby=需要的 Ruby 版本
rubygems.required.rubygems=需要的 RubyGem 版本
swift.registry=透過下列命令設定此註冊中心:
-swift.install=將此套件加入您的 Package.swift
檔:
-swift.install2=並執行下列命令:
+swift.install=將此軟體包加入您的 Package.swift
檔:
+swift.install2=並執行下列命令:
vagrant.install=執行下列命令以新增 Vagrant box:
-settings.link=連結此套件到儲存庫
-settings.link.description=如果您將套件連結到儲存庫,該套件會顯示在儲存庫的套件清單。
+settings.link=連結此軟體包至儲存庫
+settings.link.description=如果您將軟體包連結至儲存庫,該軟體包會顯示在儲存庫的軟體包清單。
settings.link.select=選擇儲存庫
settings.link.button=更新儲存庫連結
settings.link.success=儲存庫連結更新成功。
settings.link.error=儲存庫連結更新失敗。
-settings.delete=刪除套件
-settings.delete.description=刪除套件是永久且不可還原的。
+settings.delete=刪除軟體包
+settings.delete.description=刪除軟體包是永久且不可還原的。
settings.delete.notice=您正要刪除 %s (%s),此動作是無法還原的,您確定嗎?
-settings.delete.success=已刪除該套件。
-settings.delete.error=刪除套件失敗。
+settings.delete.success=已刪除該軟體包。
+settings.delete.error=軟體包刪除失敗。
owner.settings.cargo.title=Cargo Registry 索引
owner.settings.cargo.initialize=初始化索引
owner.settings.cargo.initialize.error=初始化 Cargo 索引失敗: %v
@@ -3352,16 +3397,16 @@ owner.settings.cleanuprules.title=管理清理規則
owner.settings.cleanuprules.add=加入清理規則
owner.settings.cleanuprules.edit=編輯清理規則
owner.settings.cleanuprules.preview=預覽清理規則
-owner.settings.cleanuprules.preview.overview=已排定要移除 %d 個套件。
-owner.settings.cleanuprules.preview.none=清理規則不符合任何套件。
+owner.settings.cleanuprules.preview.overview=已排程移除 %d 個軟體包。
+owner.settings.cleanuprules.preview.none=清理規則不符合任何軟體包。
owner.settings.cleanuprules.enabled=已啟用
-owner.settings.cleanuprules.pattern_full_match=將比對規則套用到完整的套件名稱
+owner.settings.cleanuprules.pattern_full_match=將比對式樣套用到完整的軟體包名稱
owner.settings.cleanuprules.keep.title=符合這些規則的版本即使符合下面的刪除規則也會被保留。
owner.settings.cleanuprules.keep.count=保留最新的
-owner.settings.cleanuprules.keep.count.1=每個套件 1 個版本
-owner.settings.cleanuprules.keep.count.n=每個套件 %d 個版本
+owner.settings.cleanuprules.keep.count.1=每個軟體包 1 個版本
+owner.settings.cleanuprules.keep.count.n=每個軟體包 %d 個版本
owner.settings.cleanuprules.keep.pattern=保留版本的比對規則
-owner.settings.cleanuprules.keep.pattern.container=Container 套件的最新
版本總是會保留。
+owner.settings.cleanuprules.keep.pattern.container=總是保留 Container 軟體包的最新
版本。
owner.settings.cleanuprules.remove.title=符合這些規則的版本將被移除,除非前述的規則要求保留它們。
owner.settings.cleanuprules.remove.days=移除早於天數的版本
owner.settings.cleanuprules.remove.pattern=移除版本的比對規則
@@ -3370,7 +3415,7 @@ owner.settings.cleanuprules.success.delete=已刪除清理規則。
owner.settings.chef.title=Chef Registry
owner.settings.chef.keypair=產生密鑰組
debian.repository.components = 元件
-go.install = 從指令列安裝套件:
+go.install = 使用命令列安裝軟體包:
owner.settings.cleanuprules.none = 目前沒有任何清理規則。
[secrets]
@@ -3378,7 +3423,7 @@ secrets=Secret
description=Secret 會被傳給特定的 Action,其他情況無法讀取。
none=還沒有 Secret。
creation=加入 Secret
-creation.name_placeholder=不區分大小寫,只能包含英文字母、數字、底線 ('_'),不能以 GITEA_ 或 GITHUB_ 開頭。
+creation.name_placeholder=不區分大小寫,只能包含英文字母、數字、底線 ('_'),不能以 GITEA_ 或 GITHUB_ 開頭
creation.value_placeholder=輸入任何內容,頭尾的空白都會被忽略。
creation.success=已新增 Secret「%s」。
creation.failed=加入 Secret 失敗。
@@ -3446,7 +3491,7 @@ workflow.disable_success=已成功停用工作流程「%s」。
workflow.enable=啟用工作流程
workflow.enable_success=已成功啟用工作流程「%s」。
-need_approval_desc=來自 Fork 儲存庫的合併請求需要核可才能執行工作流程。
+need_approval_desc=需要核可才能執行來自分叉儲存庫的合併請求工作流程。
variables.edit = 編輯變數
variables = 變數
variables.management = 變數管理
diff --git a/package-lock.json b/package-lock.json
index 2ce271fe0c..dcfb6f75c9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"@citation-js/plugin-software-formats": "0.6.1",
"@github/markdown-toolbar-element": "2.2.3",
"@github/relative-time-element": "4.4.0",
- "@github/text-expander-element": "2.6.1",
+ "@github/text-expander-element": "2.7.0",
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
"@primer/octicons": "19.9.0",
"add-asset-webpack-plugin": "2.0.1",
@@ -41,7 +41,7 @@
"pdfobject": "2.3.0",
"postcss": "8.4.38",
"postcss-loader": "8.1.1",
- "postcss-nesting": "12.1.4",
+ "postcss-nesting": "12.1.5",
"pretty-ms": "9.0.0",
"sortablejs": "1.15.2",
"swagger-ui-dist": "5.17.12",
@@ -86,15 +86,15 @@
"eslint-plugin-vue": "9.26.0",
"eslint-plugin-vue-scoped-css": "2.8.0",
"eslint-plugin-wc": "2.1.0",
- "happy-dom": "14.11.0",
- "markdownlint-cli": "0.40.0",
+ "happy-dom": "14.11.2",
+ "markdownlint-cli": "0.41.0",
"postcss-html": "1.7.0",
"stylelint": "16.5.0",
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
"stylelint-declaration-strict-value": "1.10.4",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.2.0",
- "updates": "16.0.1",
+ "updates": "16.1.1",
"vite-string-plugin": "1.3.1",
"vitest": "1.6.0"
},
@@ -1003,11 +1003,13 @@
"integrity": "sha512-CrI6oAecoahG7PF5dsgjdvlF5kCtusVMjg810EULD81TvnDsP+k/FRi/ClFubWLgBo4EGpr2EfvmumtqQFo7ow=="
},
"node_modules/@github/text-expander-element": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@github/text-expander-element/-/text-expander-element-2.6.1.tgz",
- "integrity": "sha512-i6krPGXJRABfKXut0WArFd365Je4PT0MljtDoXUoCOEp+lGrmdosDMxmO0EfOYc97jBn+Hd2XO1mMsuI5+fwmQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@github/text-expander-element/-/text-expander-element-2.7.0.tgz",
+ "integrity": "sha512-zeo7l2L91o6yuGHJfA1Xtpg6UgDuZGq0WCgplDwd+54pVIsNzwsynIo6oTjE03cCtqLQpdYRe1wSQxyKYZOoGw==",
+ "license": "MIT",
"dependencies": {
- "@github/combobox-nav": "^2.0.2"
+ "@github/combobox-nav": "^2.0.2",
+ "dom-input-range": "^1.1.3"
}
},
"node_modules/@humanwhocodes/config-array": {
@@ -4810,6 +4812,15 @@
"node": ">=6.0.0"
}
},
+ "node_modules/dom-input-range": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/dom-input-range/-/dom-input-range-1.1.5.tgz",
+ "integrity": "sha512-ITURvugfDoy8Wk8JC6NoI4dKyLPR4qbFnXJ+V+qVpQtTmDgT8HZjH2iNUIMiEU1kkdWEMLgDxYTSXJnPz9aeiA==",
+ "license": "MIT",
+ "workspaces": [
+ "demos"
+ ]
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -6776,10 +6787,11 @@
}
},
"node_modules/happy-dom": {
- "version": "14.11.0",
- "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-14.11.0.tgz",
- "integrity": "sha512-vu25dY7YJqLuTG/3ADC0FZRRF0yNBp3q2K0YTN08opXdZi8V/YzIJDNJWFiCnDIuyc+RrCIE093+H5fa9Trlxg==",
+ "version": "14.11.2",
+ "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-14.11.2.tgz",
+ "integrity": "sha512-KUrwcT2GAVIGkFev287ude3n0BGGK3BWGltlVEPE8osMbDRU4zwKfcg6jUO7HkX1tAUU+kKt2g+LycmCH0Zwsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"entities": "^4.5.0",
"webidl-conversions": "^7.0.0",
@@ -8246,14 +8258,15 @@
}
},
"node_modules/markdownlint-cli": {
- "version": "0.40.0",
- "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.40.0.tgz",
- "integrity": "sha512-JXhI3dRQcaqwiFYpPz6VJ7aKYheD53GmTz9y4D/d0F1MbZDGOp9pqKlbOfUX/pHP/iAoeiE4wYRmk8/kjLakxA==",
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.41.0.tgz",
+ "integrity": "sha512-kp29tKrMKdn+xonfefjp3a/MsNzAd9c5ke0ydMEI9PR98bOjzglYN4nfMSaIs69msUf1DNkgevAIAPtK2SeX0Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "commander": "~12.0.0",
+ "commander": "~12.1.0",
"get-stdin": "~9.0.0",
- "glob": "~10.3.12",
+ "glob": "~10.4.1",
"ignore": "~5.3.1",
"js-yaml": "^4.1.0",
"jsonc-parser": "~3.2.1",
@@ -8261,7 +8274,7 @@
"markdownlint": "~0.34.0",
"minimatch": "~9.0.4",
"run-con": "~1.3.2",
- "toml": "~3.0.0"
+ "smol-toml": "~1.2.0"
},
"bin": {
"markdownlint": "markdownlint.js"
@@ -8271,41 +8284,63 @@
}
},
"node_modules/markdownlint-cli/node_modules/commander": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz",
- "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==",
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/markdownlint-cli/node_modules/glob": {
- "version": "10.3.12",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
- "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
+ "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.10.2"
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/markdownlint-cli/node_modules/jackspeak": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz",
+ "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/markdownlint-cli/node_modules/jsonc-parser": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
"integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/markdownlint-micromark": {
"version": "0.1.9",
@@ -8955,9 +8990,10 @@
}
},
"node_modules/minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -9472,15 +9508,16 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
},
"node_modules/path-scurry": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz",
- "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -9870,9 +9907,9 @@
}
},
"node_modules/postcss-nesting": {
- "version": "12.1.4",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.4.tgz",
- "integrity": "sha512-CcHOq94K137E+U4Ommu7pexcpp0Tjm24zl4UcqWs1oSLAr5cLI+jLrqQ5h/bdjhMX6cMbzunyustVNnvrzF8Zg==",
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.5.tgz",
+ "integrity": "sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==",
"funding": [
{
"type": "github",
@@ -9883,10 +9920,11 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT-0",
"dependencies": {
"@csstools/selector-resolve-nested": "^1.1.0",
"@csstools/selector-specificity": "^3.1.1",
- "postcss-selector-parser": "^6.0.13"
+ "postcss-selector-parser": "^6.1.0"
},
"engines": {
"node": "^14 || ^16 || >=18"
@@ -9944,9 +9982,10 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.16",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
- "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz",
+ "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==",
+ "license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -10810,6 +10849,17 @@
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
+ "node_modules/smol-toml": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.2.0.tgz",
+ "integrity": "sha512-KObxdQANC/xje3OoatMbSwQf2XAvJ0RbK+4nmQRszFNZptbNRnMWqbLF/zb4sMi9xJ6HNyhWXeuZ9zC/I/XY7w==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 18",
+ "pnpm": ">= 9"
+ }
+ },
"node_modules/solid-js": {
"version": "1.8.16",
"resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.16.tgz",
@@ -11831,12 +11881,6 @@
"resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz",
"integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ=="
},
- "node_modules/toml": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz",
- "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==",
- "dev": true
- },
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -12115,10 +12159,11 @@
}
},
"node_modules/updates": {
- "version": "16.0.1",
- "resolved": "https://registry.npmjs.org/updates/-/updates-16.0.1.tgz",
- "integrity": "sha512-If3NQKzGcA3aVgz2VyOXqQ+4uqYjPUPqh2PeZPtD+OKT4CTmxRYqoyFO+T3nwfccy4SiWy5AabWrBXXhVQ89Aw==",
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/updates/-/updates-16.1.1.tgz",
+ "integrity": "sha512-h0Qtbmd9RCi6+99D5o7ACq4h7GxdYjeHFlxd4s0iO3lUOUDo1VnOsbNNIyjHpieVEctaEm/zoEjVggCgAcO/vg==",
"dev": true,
+ "license": "BSD-2-Clause",
"bin": {
"updates": "dist/updates.js"
},
diff --git a/package.json b/package.json
index b8b37fefde..cd89ca3c5f 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
"@citation-js/plugin-software-formats": "0.6.1",
"@github/markdown-toolbar-element": "2.2.3",
"@github/relative-time-element": "4.4.0",
- "@github/text-expander-element": "2.6.1",
+ "@github/text-expander-element": "2.7.0",
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
"@primer/octicons": "19.9.0",
"add-asset-webpack-plugin": "2.0.1",
@@ -40,7 +40,7 @@
"pdfobject": "2.3.0",
"postcss": "8.4.38",
"postcss-loader": "8.1.1",
- "postcss-nesting": "12.1.4",
+ "postcss-nesting": "12.1.5",
"pretty-ms": "9.0.0",
"sortablejs": "1.15.2",
"swagger-ui-dist": "5.17.12",
@@ -85,15 +85,15 @@
"eslint-plugin-vue": "9.26.0",
"eslint-plugin-vue-scoped-css": "2.8.0",
"eslint-plugin-wc": "2.1.0",
- "happy-dom": "14.11.0",
- "markdownlint-cli": "0.40.0",
+ "happy-dom": "14.11.2",
+ "markdownlint-cli": "0.41.0",
"postcss-html": "1.7.0",
"stylelint": "16.5.0",
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
"stylelint-declaration-strict-value": "1.10.4",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.2.0",
- "updates": "16.0.1",
+ "updates": "16.1.1",
"vite-string-plugin": "1.3.1",
"vitest": "1.6.0"
},
diff --git a/poetry.lock b/poetry.lock
index 277775e50c..88a12b6a69 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -16,13 +16,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
name = "codespell"
-version = "2.2.6"
+version = "2.3.0"
description = "Codespell"
optional = false
python-versions = ">=3.8"
files = [
- {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
- {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
+ {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"},
+ {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"},
]
[package.extras]
diff --git a/release-notes/8.0.0/feat/3870.md b/release-notes/8.0.0/feat/3870.md
new file mode 100644
index 0000000000..497ba19c5d
--- /dev/null
+++ b/release-notes/8.0.0/feat/3870.md
@@ -0,0 +1 @@
+Use CSS-native pattern for image diff background, add dark theme support
diff --git a/release-notes/8.0.0/fix/3904.md b/release-notes/8.0.0/fix/3904.md
new file mode 100644
index 0000000000..f1a934081b
--- /dev/null
+++ b/release-notes/8.0.0/fix/3904.md
@@ -0,0 +1 @@
+- a v7.0.0 regression causing `[admin].SEND_NOTIFICATION_EMAIL_ON_NEW_USER=true` to always be ignored.
diff --git a/release-notes/8.0.0/fix/3935.md b/release-notes/8.0.0/fix/3935.md
new file mode 100644
index 0000000000..73ba10a6dc
--- /dev/null
+++ b/release-notes/8.0.0/fix/3935.md
@@ -0,0 +1 @@
+- Fixed an issue where migrated activities (such as reviews) were mapped to the user who initiated the migration rather than the Ghost user, if the external user could not be mapped to a local one. This mapping mismatch led to internal server errors in some cases (forgejo/forgejo#3860).
diff --git a/release-notes/8.0.0/perf/3865.md b/release-notes/8.0.0/perf/3865.md
new file mode 100644
index 0000000000..88860c7154
--- /dev/null
+++ b/release-notes/8.0.0/perf/3865.md
@@ -0,0 +1 @@
+Attempt to speed up user deletion when using mariadb 10 (the subquery took advantage of the available index starting with mariadb 11).
diff --git a/routers/api/v1/repo/migrate.go b/routers/api/v1/repo/migrate.go
index f246b08c0a..14c8c01f4e 100644
--- a/routers/api/v1/repo/migrate.go
+++ b/routers/api/v1/repo/migrate.go
@@ -175,7 +175,7 @@ func Migrate(ctx *context.APIContext) {
Description: opts.Description,
OriginalURL: form.CloneAddr,
GitServiceType: gitServiceType,
- IsPrivate: opts.Private,
+ IsPrivate: opts.Private || setting.Repository.ForcePrivate,
IsMirror: opts.Mirror,
Status: repo_model.RepositoryBeingMigrated,
})
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 08bc86eed8..7c0289d4a0 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -252,7 +252,7 @@ func CreateUserRepo(ctx *context.APIContext, owner *user_model.User, opt api.Cre
Gitignores: opt.Gitignores,
License: opt.License,
Readme: opt.Readme,
- IsPrivate: opt.Private,
+ IsPrivate: opt.Private || setting.Repository.ForcePrivate,
AutoInit: opt.AutoInit,
DefaultBranch: opt.DefaultBranch,
TrustModel: repo_model.ToTrustModel(opt.TrustModel),
@@ -364,7 +364,7 @@ func Generate(ctx *context.APIContext) {
Name: form.Name,
DefaultBranch: form.DefaultBranch,
Description: form.Description,
- Private: form.Private,
+ Private: form.Private || setting.Repository.ForcePrivate,
GitContent: form.GitContent,
Topics: form.Topics,
GitHooks: form.GitHooks,
diff --git a/routers/web/auth/oauth.go b/routers/web/auth/oauth.go
index 61c580cae3..72473701de 100644
--- a/routers/web/auth/oauth.go
+++ b/routers/web/auth/oauth.go
@@ -542,20 +542,45 @@ func GrantApplicationOAuth(ctx *context.Context) {
ctx.Error(http.StatusBadRequest)
return
}
+
+ if !form.Granted {
+ handleAuthorizeError(ctx, AuthorizeError{
+ State: form.State,
+ ErrorDescription: "the request is denied",
+ ErrorCode: ErrorCodeAccessDenied,
+ }, form.RedirectURI)
+ return
+ }
+
app, err := auth.GetOAuth2ApplicationByClientID(ctx, form.ClientID)
if err != nil {
ctx.ServerError("GetOAuth2ApplicationByClientID", err)
return
}
- grant, err := app.CreateGrant(ctx, ctx.Doer.ID, form.Scope)
+ grant, err := app.GetGrantByUserID(ctx, ctx.Doer.ID)
if err != nil {
+ handleServerError(ctx, form.State, form.RedirectURI)
+ return
+ }
+ if grant == nil {
+ grant, err = app.CreateGrant(ctx, ctx.Doer.ID, form.Scope)
+ if err != nil {
+ handleAuthorizeError(ctx, AuthorizeError{
+ State: form.State,
+ ErrorDescription: "cannot create grant for user",
+ ErrorCode: ErrorCodeServerError,
+ }, form.RedirectURI)
+ return
+ }
+ } else if grant.Scope != form.Scope {
handleAuthorizeError(ctx, AuthorizeError{
State: form.State,
- ErrorDescription: "cannot create grant for user",
+ ErrorDescription: "a grant exists with different scope",
ErrorCode: ErrorCodeServerError,
}, form.RedirectURI)
return
}
+
if len(form.Nonce) > 0 {
err := grant.SetNonce(ctx, form.Nonce)
if err != nil {
diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go
index 2a9f60891e..088e5150f6 100644
--- a/routers/web/repo/compare.go
+++ b/routers/web/repo/compare.go
@@ -931,7 +931,7 @@ func ExcerptBlob(ctx *context.Context) {
}
}
ctx.Data["section"] = section
- ctx.Data["FileNameHash"] = base.EncodeSha1(filePath)
+ ctx.Data["FileNameHash"] = git.HashFilePathForWebUI(filePath)
ctx.Data["AfterCommitID"] = commitID
ctx.Data["Anchor"] = anchor
ctx.HTML(http.StatusOK, tplBlobExcerpt)
diff --git a/routers/web/repo/repo.go b/routers/web/repo/repo.go
index abd68630a4..1d599c5cfb 100644
--- a/routers/web/repo/repo.go
+++ b/routers/web/repo/repo.go
@@ -248,7 +248,7 @@ func CreatePost(ctx *context.Context) {
opts := repo_service.GenerateRepoOptions{
Name: form.RepoName,
Description: form.Description,
- Private: form.Private,
+ Private: form.Private || setting.Repository.ForcePrivate,
GitContent: form.GitContent,
Topics: form.Topics,
GitHooks: form.GitHooks,
diff --git a/routers/web/web.go b/routers/web/web.go
index 0ab25fd7e3..a65994c246 100644
--- a/routers/web/web.go
+++ b/routers/web/web.go
@@ -57,6 +57,8 @@ import (
"github.com/prometheus/client_golang/prometheus"
)
+var GzipMinSize = gzhttp.DefaultMinSize
+
// optionsCorsHandler return a http handler which sets CORS options if enabled by config, it blocks non-CORS OPTIONS requests.
func optionsCorsHandler() func(next http.Handler) http.Handler {
var corsHandler func(next http.Handler) http.Handler
@@ -242,7 +244,7 @@ func Routes() *web.Route {
var mid []any
if setting.EnableGzip {
- wrapper, err := gzhttp.NewWrapper(gzhttp.RandomJitter(32, 0, false))
+ wrapper, err := gzhttp.NewWrapper(gzhttp.RandomJitter(32, 0, false), gzhttp.MinSize(GzipMinSize))
if err != nil {
log.Fatal("gzhttp.NewWrapper failed: %v", err)
}
diff --git a/services/automerge/automerge.go b/services/automerge/automerge.go
index bd1317c7f4..10f3c28d56 100644
--- a/services/automerge/automerge.go
+++ b/services/automerge/automerge.go
@@ -22,6 +22,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/process"
"code.gitea.io/gitea/modules/queue"
+ notify_service "code.gitea.io/gitea/services/notify"
pull_service "code.gitea.io/gitea/services/pull"
)
@@ -30,6 +31,8 @@ var prAutoMergeQueue *queue.WorkerPoolQueue[string]
// Init runs the task queue to that handles auto merges
func Init() error {
+ notify_service.RegisterNotifier(NewNotifier())
+
prAutoMergeQueue = queue.CreateUniqueQueue(graceful.GetManager().ShutdownContext(), "pr_auto_merge", handler)
if prAutoMergeQueue == nil {
return fmt.Errorf("unable to create pr_auto_merge queue")
@@ -47,7 +50,7 @@ func handler(items ...string) []string {
log.Error("could not parse data from pr_auto_merge queue (%v): %v", s, err)
continue
}
- handlePull(id, sha)
+ handlePullRequestAutoMerge(id, sha)
}
return nil
}
@@ -62,16 +65,6 @@ func addToQueue(pr *issues_model.PullRequest, sha string) {
// ScheduleAutoMerge if schedule is false and no error, pull can be merged directly
func ScheduleAutoMerge(ctx context.Context, doer *user_model.User, pull *issues_model.PullRequest, style repo_model.MergeStyle, message string) (scheduled bool, err error) {
err = db.WithTx(ctx, func(ctx context.Context) error {
- lastCommitStatus, err := pull_service.GetPullRequestCommitStatusState(ctx, pull)
- if err != nil {
- return err
- }
-
- // we don't need to schedule
- if lastCommitStatus.IsSuccess() {
- return nil
- }
-
if err := pull_model.ScheduleAutoMerge(ctx, doer, pull.ID, style, message); err != nil {
return err
}
@@ -95,8 +88,8 @@ func RemoveScheduledAutoMerge(ctx context.Context, doer *user_model.User, pull *
})
}
-// MergeScheduledPullRequest merges a previously scheduled pull request when all checks succeeded
-func MergeScheduledPullRequest(ctx context.Context, sha string, repo *repo_model.Repository) error {
+// StartPRCheckAndAutoMergeBySHA start an automerge check and auto merge task for all pull requests of repository and SHA
+func StartPRCheckAndAutoMergeBySHA(ctx context.Context, sha string, repo *repo_model.Repository) error {
pulls, err := getPullRequestsByHeadSHA(ctx, sha, repo, func(pr *issues_model.PullRequest) bool {
return !pr.HasMerged && pr.CanAutoMerge()
})
@@ -111,6 +104,32 @@ func MergeScheduledPullRequest(ctx context.Context, sha string, repo *repo_model
return nil
}
+// StartPRCheckAndAutoMerge start an automerge check and auto merge task for a pull request
+func StartPRCheckAndAutoMerge(ctx context.Context, pull *issues_model.PullRequest) {
+ if pull == nil || pull.HasMerged || !pull.CanAutoMerge() {
+ return
+ }
+
+ if err := pull.LoadBaseRepo(ctx); err != nil {
+ log.Error("LoadBaseRepo: %v", err)
+ return
+ }
+
+ gitRepo, err := gitrepo.OpenRepository(ctx, pull.BaseRepo)
+ if err != nil {
+ log.Error("OpenRepository: %v", err)
+ return
+ }
+ defer gitRepo.Close()
+ commitID, err := gitRepo.GetRefCommitID(pull.GetGitRefName())
+ if err != nil {
+ log.Error("GetRefCommitID: %v", err)
+ return
+ }
+
+ addToQueue(pull, commitID)
+}
+
func getPullRequestsByHeadSHA(ctx context.Context, sha string, repo *repo_model.Repository, filter func(*issues_model.PullRequest) bool) (map[int64]*issues_model.PullRequest, error) {
gitRepo, err := gitrepo.OpenRepository(ctx, repo)
if err != nil {
@@ -161,7 +180,8 @@ func getPullRequestsByHeadSHA(ctx context.Context, sha string, repo *repo_model.
return pulls, nil
}
-func handlePull(pullID int64, sha string) {
+// handlePullRequestAutoMerge merge the pull request if all checks are successful
+func handlePullRequestAutoMerge(pullID int64, sha string) {
ctx, _, finished := process.GetManager().AddContext(graceful.GetManager().HammerContext(),
fmt.Sprintf("Handle AutoMerge of PR[%d] with sha[%s]", pullID, sha))
defer finished()
@@ -182,24 +202,50 @@ func handlePull(pullID int64, sha string) {
return
}
+ if err = pr.LoadBaseRepo(ctx); err != nil {
+ log.Error("%-v LoadBaseRepo: %v", pr, err)
+ return
+ }
+
+ // check the sha is the same as pull request head commit id
+ baseGitRepo, err := gitrepo.OpenRepository(ctx, pr.BaseRepo)
+ if err != nil {
+ log.Error("OpenRepository: %v", err)
+ return
+ }
+ defer baseGitRepo.Close()
+
+ headCommitID, err := baseGitRepo.GetRefCommitID(pr.GetGitRefName())
+ if err != nil {
+ log.Error("GetRefCommitID: %v", err)
+ return
+ }
+ if headCommitID != sha {
+ log.Warn("Head commit id of auto merge %-v does not match sha [%s], it may means the head branch has been updated. Just ignore this request because a new request expected in the queue", pr, sha)
+ return
+ }
+
// Get all checks for this pr
// We get the latest sha commit hash again to handle the case where the check of a previous push
// did not succeed or was not finished yet.
-
if err = pr.LoadHeadRepo(ctx); err != nil {
log.Error("%-v LoadHeadRepo: %v", pr, err)
return
}
- headGitRepo, err := gitrepo.OpenRepository(ctx, pr.HeadRepo)
- if err != nil {
- log.Error("OpenRepository %-v: %v", pr.HeadRepo, err)
- return
+ var headGitRepo *git.Repository
+ if pr.BaseRepoID == pr.HeadRepoID {
+ headGitRepo = baseGitRepo
+ } else {
+ headGitRepo, err = gitrepo.OpenRepository(ctx, pr.HeadRepo)
+ if err != nil {
+ log.Error("OpenRepository %-v: %v", pr.HeadRepo, err)
+ return
+ }
+ defer headGitRepo.Close()
}
- defer headGitRepo.Close()
headBranchExist := headGitRepo.IsBranchExist(pr.HeadBranch)
-
if pr.HeadRepo == nil || !headBranchExist {
log.Warn("Head branch of auto merge %-v does not exist [HeadRepoID: %d, Branch: %s]", pr, pr.HeadRepoID, pr.HeadBranch)
return
@@ -238,25 +284,11 @@ func handlePull(pullID int64, sha string) {
return
}
- var baseGitRepo *git.Repository
- if pr.BaseRepoID == pr.HeadRepoID {
- baseGitRepo = headGitRepo
- } else {
- if err = pr.LoadBaseRepo(ctx); err != nil {
- log.Error("%-v LoadBaseRepo: %v", pr, err)
- return
- }
-
- baseGitRepo, err = gitrepo.OpenRepository(ctx, pr.BaseRepo)
- if err != nil {
- log.Error("OpenRepository %-v: %v", pr.BaseRepo, err)
- return
- }
- defer baseGitRepo.Close()
- }
-
if err := pull_service.Merge(ctx, pr, doer, baseGitRepo, scheduledPRM.MergeStyle, "", scheduledPRM.Message, true); err != nil {
log.Error("pull_service.Merge: %v", err)
+ // FIXME: if merge failed, we should display some error message to the pull request page.
+ // The resolution is add a new column on automerge table named `error_message` to store the error message and displayed
+ // on the pull request page. But this should not be finished in a bug fix PR which will be backport to release branch.
return
}
}
diff --git a/services/automerge/notify.go b/services/automerge/notify.go
new file mode 100644
index 0000000000..cb078214f6
--- /dev/null
+++ b/services/automerge/notify.go
@@ -0,0 +1,46 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package automerge
+
+import (
+ "context"
+
+ issues_model "code.gitea.io/gitea/models/issues"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/log"
+ notify_service "code.gitea.io/gitea/services/notify"
+)
+
+type automergeNotifier struct {
+ notify_service.NullNotifier
+}
+
+var _ notify_service.Notifier = &automergeNotifier{}
+
+// NewNotifier create a new automergeNotifier notifier
+func NewNotifier() notify_service.Notifier {
+ return &automergeNotifier{}
+}
+
+func (n *automergeNotifier) PullRequestReview(ctx context.Context, pr *issues_model.PullRequest, review *issues_model.Review, comment *issues_model.Comment, mentions []*user_model.User) {
+ // as a missing / blocking reviews could have blocked a pending automerge let's recheck
+ if review.Type == issues_model.ReviewTypeApprove {
+ if err := StartPRCheckAndAutoMergeBySHA(ctx, review.CommitID, pr.BaseRepo); err != nil {
+ log.Error("StartPullRequestAutoMergeCheckBySHA: %v", err)
+ }
+ }
+}
+
+func (n *automergeNotifier) PullReviewDismiss(ctx context.Context, doer *user_model.User, review *issues_model.Review, comment *issues_model.Comment) {
+ if err := review.LoadIssue(ctx); err != nil {
+ log.Error("LoadIssue: %v", err)
+ return
+ }
+ if err := review.Issue.LoadPullRequest(ctx); err != nil {
+ log.Error("LoadPullRequest: %v", err)
+ return
+ }
+ // as reviews could have blocked a pending automerge let's recheck
+ StartPRCheckAndAutoMerge(ctx, review.Issue.PullRequest)
+}
diff --git a/services/forms/user_form.go b/services/forms/user_form.go
index 4e603a3115..0b7bea4638 100644
--- a/services/forms/user_form.go
+++ b/services/forms/user_form.go
@@ -162,6 +162,7 @@ func (f *AuthorizationForm) Validate(req *http.Request, errs binding.Errors) bin
// GrantApplicationForm form for authorizing oauth2 clients
type GrantApplicationForm struct {
ClientID string `binding:"Required"`
+ Granted bool
RedirectURI string
State string
Scope string
diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go
index d9dbeedee5..c4430339e2 100644
--- a/services/gitdiff/gitdiff.go
+++ b/services/gitdiff/gitdiff.go
@@ -23,7 +23,6 @@ import (
pull_model "code.gitea.io/gitea/models/pull"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/analyze"
- "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/charset"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/highlight"
@@ -742,7 +741,7 @@ parsingLoop:
diffLineTypeBuffers[DiffLineAdd] = new(bytes.Buffer)
diffLineTypeBuffers[DiffLineDel] = new(bytes.Buffer)
for _, f := range diff.Files {
- f.NameHash = base.EncodeSha1(f.Name)
+ f.NameHash = git.HashFilePathForWebUI(f.Name)
for _, buffer := range diffLineTypeBuffers {
buffer.Reset()
diff --git a/services/mailer/mail.go b/services/mailer/mail.go
index b04925881d..d86607295a 100644
--- a/services/mailer/mail.go
+++ b/services/mailer/mail.go
@@ -403,7 +403,7 @@ func generateAdditionalHeaders(ctx *mailCommentContext, reason string, recipient
// https://datatracker.ietf.org/doc/html/rfc2369
"List-Archive": fmt.Sprintf("<%s>", repo.HTMLURL()),
- "X-Mailer": "Gitea",
+ "X-Mailer": "Forgejo",
"X-Gitea-Reason": reason,
"X-Gitea-Sender": ctx.Doer.Name,
"X-Gitea-Recipient": recipient.Name,
@@ -415,8 +415,8 @@ func generateAdditionalHeaders(ctx *mailCommentContext, reason string, recipient
"X-Gitea-Issue-Link": ctx.Issue.HTMLURL(),
"X-Forgejo-Reason": reason,
- "X-Forgejo-Sender": ctx.Doer.DisplayName(),
- "X-Forgejo-Recipient": recipient.DisplayName(),
+ "X-Forgejo-Sender": ctx.Doer.Name,
+ "X-Forgejo-Recipient": recipient.Name,
"X-Forgejo-Recipient-Address": recipient.Email,
"X-Forgejo-Repository": repo.Name,
"X-Forgejo-Repository-Path": repo.FullName(),
diff --git a/services/mailer/mail_test.go b/services/mailer/mail_test.go
index ed972dbb99..8fa45fd593 100644
--- a/services/mailer/mail_test.go
+++ b/services/mailer/mail_test.go
@@ -360,6 +360,7 @@ func TestGenerateAdditionalHeaders(t *testing.T) {
expected := map[string]string{
"List-ID": "user2/repo1 {{ctx.Locale.Tr "repo.branch.deleted_by" .DBBranch.DeletedBy.Name}} {{TimeSinceUnix .DBBranch.DeletedUnix ctx.Locale}}
diff --git a/templates/repo/branch_dropdown.tmpl b/templates/repo/branch_dropdown.tmpl index 707f670e97..dcb1792485 100644 --- a/templates/repo/branch_dropdown.tmpl +++ b/templates/repo/branch_dropdown.tmpl @@ -71,7 +71,7 @@ {{/* show dummy elements before Vue componment is mounted, this code must match the code in BranchTagSelector.vue */}}