From 3b236337216f19a8ec58d27aada576e4762f8d68 Mon Sep 17 00:00:00 2001
From: 0ko <0ko@noreply.codeberg.org>
Date: Sat, 6 Apr 2024 23:06:39 +0500
Subject: [PATCH 002/233] [I18N] Improve English locale
- user settings/profile: renamed Description fild of biography to Biography
---
options/locale/locale_en-US.ini | 30 +++++++++++++++++-----------
routers/web/user/setting/profile.go | 2 +-
services/forms/user_form.go | 2 +-
templates/user/settings/profile.tmpl | 6 +++---
4 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 95643bbf7e..8c221e4c6b 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -64,7 +64,6 @@ new_org = New organization
new_project = New project
new_project_column = New column
admin_panel = Site administration
-account_settings = Account settings
settings = Settings
your_profile = Profile
your_starred = Starred
@@ -171,7 +170,7 @@ org_kind = Search orgs...
team_kind = Search teams...
code_kind = Search code...
code_search_unavailable = Code search is currently not available. Please contact the site administrator.
-code_search_by_git_grep = Current code search results are provided by "git grep". There might be better results if site administrator enables Repository Indexer.
+code_search_by_git_grep = Current code search results are provided by "git grep". There might be better results if site administrator enables code indexer.
package_kind = Search packages...
project_kind = Search projects...
branch_kind = Search branches...
@@ -546,6 +545,12 @@ modify = Update
[form]
UserName = Username
+FullName = Full name
+Description = Description
+Pronouns = Pronouns
+Biography = Biography
+Website = Website
+Location = Location
RepoName = Repository name
Email = Email address
Password = Password
@@ -556,6 +561,7 @@ PayloadUrl = Payload URL
TeamName = Team name
AuthName = Authorization name
AdminEmail = Admin email
+To = Branch name
NewBranchName = New branch name
CommitSummary = Commit summary
@@ -2138,7 +2144,7 @@ settings.sync_mirror = Synchronize now
settings.pull_mirror_sync_in_progress = Pulling changes from the remote %s at the moment.
settings.push_mirror_sync_in_progress = Pushing changes to the remote %s at the moment.
settings.site = Website
-settings.update_settings = Update settings
+settings.update_settings = Save settings
settings.update_mirror_settings = Update mirror settings
settings.branches.switch_default_branch = Switch default branch
settings.branches.update_default_branch = Update default branch
@@ -2417,7 +2423,7 @@ settings.protected_branch.delete_rule = Delete rule
settings.protected_branch_can_push = Allow push?
settings.protected_branch_can_push_yes = You can push
settings.protected_branch_can_push_no = You cannot push
-settings.branch_protection = Branch protection rules for branch "%s"
+settings.branch_protection = Protection rules for branch "%s"
settings.protect_this_branch = Enable branch protection
settings.protect_this_branch_desc = Prevents deletion and restricts Git pushing and merging to the branch.
settings.protect_disable_push = Disable push
@@ -2991,7 +2997,7 @@ users.delete_account = Delete user account
users.cannot_delete_self = You cannot delete yourself
users.still_own_repo = This user still owns one or more repositories. Delete or transfer these repositories first.
users.still_has_org = This user is a member of an organization. Remove the user from any organizations first.
-users.purge = Purge User
+users.purge = Purge user
users.purge_help = Forcibly delete user and any repositories, organizations, and packages owned by the user. All comments and issues posted by this user will also be deleted.
users.still_own_packages = This user still owns one or more packages, delete these packages first.
users.deletion_success = The user account has been deleted.
@@ -3001,14 +3007,14 @@ users.list_status_filter.reset = Reset
users.list_status_filter.is_active = Active
users.list_status_filter.not_active = Inactive
users.list_status_filter.is_admin = Admin
-users.list_status_filter.not_admin = Not Admin
+users.list_status_filter.not_admin = Not admin
users.list_status_filter.is_restricted = Restricted
-users.list_status_filter.not_restricted = Not Restricted
-users.list_status_filter.is_prohibit_login = Prohibit Login
-users.list_status_filter.not_prohibit_login = Allow Login
-users.list_status_filter.is_2fa_enabled = 2FA Enabled
-users.list_status_filter.not_2fa_enabled = 2FA Disabled
-users.details = User Details
+users.list_status_filter.not_restricted = Not restricted
+users.list_status_filter.is_prohibit_login = Prohibit login
+users.list_status_filter.not_prohibit_login = Allow login
+users.list_status_filter.is_2fa_enabled = 2FA enabled
+users.list_status_filter.not_2fa_enabled = 2FA disabled
+users.details = User details
emails.email_manage_panel = Manage user emails
emails.primary = Primary
diff --git a/routers/web/user/setting/profile.go b/routers/web/user/setting/profile.go
index a39c118ddd..907f0f5061 100644
--- a/routers/web/user/setting/profile.go
+++ b/routers/web/user/setting/profile.go
@@ -95,7 +95,7 @@ func ProfilePost(ctx *context.Context) {
opts := &user_service.UpdateOptions{
FullName: optional.Some(form.FullName),
KeepEmailPrivate: optional.Some(form.KeepEmailPrivate),
- Description: optional.Some(form.Description),
+ Description: optional.Some(form.Biography),
Pronouns: optional.Some(form.Pronouns),
Website: optional.Some(form.Website),
Location: optional.Some(form.Location),
diff --git a/services/forms/user_form.go b/services/forms/user_form.go
index 196b092990..4e603a3115 100644
--- a/services/forms/user_form.go
+++ b/services/forms/user_form.go
@@ -219,7 +219,7 @@ type UpdateProfileForm struct {
Website string `binding:"ValidSiteUrl;MaxSize(255)"`
Location string `binding:"MaxSize(50)"`
Pronouns string `binding:"MaxSize(50)"`
- Description string `binding:"MaxSize(255)"`
+ Biography string `binding:"MaxSize(255)"`
Visibility structs.VisibleType
KeepActivityPrivate bool
}
diff --git a/templates/user/settings/profile.tmpl b/templates/user/settings/profile.tmpl
index e596fa3496..99835ae907 100644
--- a/templates/user/settings/profile.tmpl
+++ b/templates/user/settings/profile.tmpl
@@ -55,9 +55,9 @@
{{.SignedUser.Email}}
-
-
-
+
+
+
From 7d95cf6472fbf5b6713a037b52a466e25cef650c Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 11:19:52 +0200
Subject: [PATCH 003/233] webhook: add org tests
---
tests/integration/repo_webhook_test.go | 169 +++++++++++++------------
1 file changed, 89 insertions(+), 80 deletions(-)
diff --git a/tests/integration/repo_webhook_test.go b/tests/integration/repo_webhook_test.go
index 3375c0f1ed..1898c35976 100644
--- a/tests/integration/repo_webhook_test.go
+++ b/tests/integration/repo_webhook_test.go
@@ -288,99 +288,108 @@ func assertInput(t testing.TB, form *goquery.Selection, name string) string {
func testWebhookForms(name string, session *TestSession, validFields map[string]string, invalidPatches ...map[string]string) func(t *testing.T) {
return func(t *testing.T) {
- // new webhook form
- resp := session.MakeRequest(t, NewRequest(t, "GET", "/user2/repo1/settings/hooks/"+name+"/new"), http.StatusOK)
- htmlForm := NewHTMLParser(t, resp.Body).Find(`form[action^="/user2/repo1/settings/hooks/"]`)
+ t.Run("repo1", func(t *testing.T) {
+ testWebhookFormsShared(t, "/user2/repo1/settings/hooks", name, session, validFields, invalidPatches...)
+ })
+ t.Run("org3", func(t *testing.T) {
+ testWebhookFormsShared(t, "/org/org3/settings/hooks", name, session, validFields, invalidPatches...)
+ })
+ }
+}
- // fill the form
- payload := map[string]string{
- "_csrf": htmlForm.Find(`input[name="_csrf"]`).AttrOr("value", ""),
- "events": "send_everything",
- }
- for k, v := range validFields {
- assertInput(t, htmlForm, k)
- payload[k] = v
- }
- if t.Failed() {
- t.FailNow() // prevent further execution if the form could not be filled properly
- }
+func testWebhookFormsShared(t *testing.T, endpoint, name string, session *TestSession, validFields map[string]string, invalidPatches ...map[string]string) {
+ // new webhook form
+ resp := session.MakeRequest(t, NewRequest(t, "GET", endpoint+"/"+name+"/new"), http.StatusOK)
+ htmlForm := NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
- // create the webhook (this redirects back to the hook list)
- resp = session.MakeRequest(t, NewRequestWithValues(t, "POST", "/user2/repo1/settings/hooks/"+name+"/new", payload), http.StatusSeeOther)
- assertHasFlashMessages(t, resp, "success")
+ // fill the form
+ payload := map[string]string{
+ "_csrf": htmlForm.Find(`input[name="_csrf"]`).AttrOr("value", ""),
+ "events": "send_everything",
+ }
+ for k, v := range validFields {
+ assertInput(t, htmlForm, k)
+ payload[k] = v
+ }
+ if t.Failed() {
+ t.FailNow() // prevent further execution if the form could not be filled properly
+ }
- // find last created hook in the hook list
- // (a bit hacky, but the list should be sorted)
- resp = session.MakeRequest(t, NewRequest(t, "GET", "/user2/repo1/settings/hooks"), http.StatusOK)
- htmlDoc := NewHTMLParser(t, resp.Body)
- editFormURL := htmlDoc.Find(`a[href^="/user2/repo1/settings/hooks/"]`).Last().AttrOr("href", "")
- assert.NotEmpty(t, editFormURL)
+ // create the webhook (this redirects back to the hook list)
+ resp = session.MakeRequest(t, NewRequestWithValues(t, "POST", endpoint+"/"+name+"/new", payload), http.StatusSeeOther)
+ assertHasFlashMessages(t, resp, "success")
- // edit webhook form
- resp = session.MakeRequest(t, NewRequest(t, "GET", editFormURL), http.StatusOK)
- htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="/user2/repo1/settings/hooks/"]`)
- editPostURL := htmlForm.AttrOr("action", "")
- assert.NotEmpty(t, editPostURL)
+ // find last created hook in the hook list
+ // (a bit hacky, but the list should be sorted)
+ resp = session.MakeRequest(t, NewRequest(t, "GET", endpoint), http.StatusOK)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+ editFormURL := htmlDoc.Find(`a[href^="`+endpoint+`/"]`).Last().AttrOr("href", "")
+ assert.NotEmpty(t, editFormURL)
- // fill the form
- payload = map[string]string{
- "_csrf": htmlForm.Find(`input[name="_csrf"]`).AttrOr("value", ""),
- "events": "push_only",
- }
- for k, v := range validFields {
- assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
- payload[k] = v
- }
+ // edit webhook form
+ resp = session.MakeRequest(t, NewRequest(t, "GET", editFormURL), http.StatusOK)
+ htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
+ editPostURL := htmlForm.AttrOr("action", "")
+ assert.NotEmpty(t, editPostURL)
- // update the webhook
- resp = session.MakeRequest(t, NewRequestWithValues(t, "POST", editPostURL, payload), http.StatusSeeOther)
- assertHasFlashMessages(t, resp, "success")
+ // fill the form
+ payload = map[string]string{
+ "_csrf": htmlForm.Find(`input[name="_csrf"]`).AttrOr("value", ""),
+ "events": "push_only",
+ }
+ for k, v := range validFields {
+ assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
+ payload[k] = v
+ }
- // check the updated webhook
- resp = session.MakeRequest(t, NewRequest(t, "GET", editFormURL), http.StatusOK)
- htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="/user2/repo1/settings/hooks/"]`)
- for k, v := range validFields {
- assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
- }
+ // update the webhook
+ resp = session.MakeRequest(t, NewRequestWithValues(t, "POST", editPostURL, payload), http.StatusSeeOther)
+ assertHasFlashMessages(t, resp, "success")
- if len(invalidPatches) > 0 {
- // check that invalid fields are rejected
- resp := session.MakeRequest(t, NewRequest(t, "GET", "/user2/repo1/settings/hooks/"+name+"/new"), http.StatusOK)
- htmlForm := NewHTMLParser(t, resp.Body).Find(`form[action^="/user2/repo1/settings/hooks/"]`)
+ // check the updated webhook
+ resp = session.MakeRequest(t, NewRequest(t, "GET", editFormURL), http.StatusOK)
+ htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
+ for k, v := range validFields {
+ assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
+ }
- for _, invalidPatch := range invalidPatches {
- t.Run("invalid", func(t *testing.T) {
- // fill the form
- payload := map[string]string{
- "_csrf": htmlForm.Find(`input[name="_csrf"]`).AttrOr("value", ""),
- "events": "send_everything",
- }
- for k, v := range validFields {
+ if len(invalidPatches) > 0 {
+ // check that invalid fields are rejected
+ resp := session.MakeRequest(t, NewRequest(t, "GET", endpoint+"/"+name+"/new"), http.StatusOK)
+ htmlForm := NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
+
+ for _, invalidPatch := range invalidPatches {
+ t.Run("invalid", func(t *testing.T) {
+ // fill the form
+ payload := map[string]string{
+ "_csrf": htmlForm.Find(`input[name="_csrf"]`).AttrOr("value", ""),
+ "events": "send_everything",
+ }
+ for k, v := range validFields {
+ payload[k] = v
+ }
+ for k, v := range invalidPatch {
+ if v == "" {
+ delete(payload, k)
+ } else {
payload[k] = v
}
- for k, v := range invalidPatch {
- if v == "" {
- delete(payload, k)
- } else {
- payload[k] = v
- }
- }
+ }
- resp := session.MakeRequest(t, NewRequestWithValues(t, "POST", "/user2/repo1/settings/hooks/"+name+"/new", payload), http.StatusUnprocessableEntity)
- // check that the invalid form is pre-filled
- htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="/user2/repo1/settings/hooks/"]`)
- for k, v := range payload {
- if k == "_csrf" || k == "events" || v == "" {
- // the 'events' is a radio input, which is buggy below
- continue
- }
- assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
+ resp := session.MakeRequest(t, NewRequestWithValues(t, "POST", endpoint+"/"+name+"/new", payload), http.StatusUnprocessableEntity)
+ // check that the invalid form is pre-filled
+ htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
+ for k, v := range payload {
+ if k == "_csrf" || k == "events" || v == "" {
+ // the 'events' is a radio input, which is buggy below
+ continue
}
- if t.Failed() {
- t.Log(invalidPatch)
- }
- })
- }
+ assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
+ }
+ if t.Failed() {
+ t.Log(invalidPatch)
+ }
+ })
}
}
}
From 07d044a32cf6aa56e6e633739f1af487f6f5fdd7 Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 16:49:05 +0200
Subject: [PATCH 004/233] Makefile: test-e2e-sqlite-firefox
---
Makefile | 6 +++++-
tests/e2e/e2e_test.go | 3 +++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 5f3bc29a81..44f4f9b925 100644
--- a/Makefile
+++ b/Makefile
@@ -245,7 +245,7 @@ help:
@echo " - show-version-major show major release number only"
@echo " - test-frontend test frontend files"
@echo " - test-backend test backend files"
- @echo " - test-e2e[\#TestSpecificName] test end to end using playwright"
+ @echo " - test-e2e-sqlite[\#name.test.e2e] test end to end using playwright and sqlite"
@echo " - update update js and py dependencies"
@echo " - update-js update js dependencies"
@echo " - update-py update py dependencies"
@@ -628,6 +628,10 @@ test-e2e-sqlite: playwright e2e.sqlite.test generate-ini-sqlite
test-e2e-sqlite\#%: playwright e2e.sqlite.test generate-ini-sqlite
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini ./e2e.sqlite.test -test.run TestE2e/$*
+.PHONY: test-e2e-sqlite-firefox\#%
+test-e2e-sqlite-firefox\#%: playwright e2e.sqlite.test generate-ini-sqlite
+ GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini PLAYWRIGHT_PROJECT=firefox ./e2e.sqlite.test -test.run TestE2e/$*
+
.PHONY: test-e2e-mysql
test-e2e-mysql: playwright e2e.mysql.test generate-ini-mysql
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./e2e.mysql.test -test.run TestE2e
diff --git a/tests/e2e/e2e_test.go b/tests/e2e/e2e_test.go
index 304dac0f45..b2087d4660 100644
--- a/tests/e2e/e2e_test.go
+++ b/tests/e2e/e2e_test.go
@@ -92,6 +92,9 @@ func TestE2e(t *testing.T) {
if _, set := os.LookupEnv("ACCEPT_VISUAL"); set {
runArgs = append(runArgs, "--update-snapshots")
}
+ if project := os.Getenv("PLAYWRIGHT_PROJECT"); project != "" {
+ runArgs = append(runArgs, "--project="+project)
+ }
// Create new test for each input file
for _, path := range paths {
From a31631e342f87c3a56d7cf0349dda81209950a52 Mon Sep 17 00:00:00 2001
From: Codeberg Translate
Date: Tue, 9 Apr 2024 16:59:31 +0000
Subject: [PATCH 005/233] [I18N] Translations update from Weblate (#3064)
Translations update from [Weblate](https://translate.codeberg.org) for [Forgejo/forgejo](https://translate.codeberg.org/projects/forgejo/forgejo/).
Current translation status:
![Weblate translation status](https://translate.codeberg.org/widget/forgejo/forgejo/horizontal-auto.svg)
Co-authored-by: Fjuro
Co-authored-by: Dirk
Co-authored-by: earl-warren
Co-authored-by: WithLithum
Co-authored-by: Gusted
Co-authored-by: adaaa
Co-authored-by: Salif Mehmed
Co-authored-by: Panagiotis \"Ivory\" Vasilopoulos
Co-authored-by: Kita Ikuyo
Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: hankskyjames777
Co-authored-by: Wuzzy
Co-authored-by: Anonymous
Co-authored-by: emansije
Co-authored-by: Xinayder
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3064
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Codeberg Translate
Co-committed-by: Codeberg Translate
---
options/locale/locale_bg.ini | 9 +
options/locale/locale_cs-CZ.ini | 208 +++---
options/locale/locale_de-DE.ini | 20 +-
options/locale/locale_el-GR.ini | 1106 +++++++++++++++++--------------
options/locale/locale_fil.ini | 510 +++++++++++---
options/locale/locale_fr-FR.ini | 22 +-
options/locale/locale_nl-NL.ini | 11 +
options/locale/locale_pt-BR.ini | 26 +
options/locale/locale_pt-PT.ini | 59 ++
options/locale/locale_ru-RU.ini | 39 +-
options/locale/locale_zh-CN.ini | 65 +-
11 files changed, 1335 insertions(+), 740 deletions(-)
diff --git a/options/locale/locale_bg.ini b/options/locale/locale_bg.ini
index ca1598fb1b..e254f36e44 100644
--- a/options/locale/locale_bg.ini
+++ b/options/locale/locale_bg.ini
@@ -276,6 +276,7 @@ filter.private = Частни
filter.is_mirror = Огледални
filter.not_mirror = Не огледални
copy_hash = Копиране на контролната сума
+artifacts = Артефакти
[repo]
issues.context.edit = Редактиране
@@ -1105,6 +1106,14 @@ issues.filter_type.reviewed_by_you = Рецензирани от вас
issues.filter_type.review_requested = Поискани рецензии
issues.review.review = Рецензия
issues.review.comment = рецензира %s
+branch.deleted_by = Изтрит от %s
+branch.restore = Възстановяване на клона "%s"
+archive.title_date = Това хранилище е архивирано на %s. Можете да преглеждате файлове и да го клонирате, но не можете да изтласквате или отваряте задачи или заявки за сливане.
+release.download_count_one = %s изтегляне
+release.download_count_few = %s изтегляния
+branch.restore_success = Клонът "%s" е възстановен.
+tag.create_tag_from = Създаване на нов маркер от "%s"
+branch.create_new_branch = Създаване на клон от клон:
[modal]
confirm = Потвърждаване
diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini
index fd7d8b03fb..4eb529331d 100644
--- a/options/locale/locale_cs-CZ.ini
+++ b/options/locale/locale_cs-CZ.ini
@@ -4,13 +4,13 @@ dashboard=Přehled
explore=Procházet
help=Nápověda
logo=Logo
-sign_in=Přihlásit se
+sign_in=Přihlášení
sign_in_with_provider=Přihlásit se pomocí %s
sign_in_or=nebo
sign_out=Odhlásit se
-sign_up=Registrovat se
+sign_up=Registrace
link_account=Propojit účet
-register=Registrovat se
+register=Registrace
version=Verze
powered_by=Běží na %s
page=Strana
@@ -21,7 +21,7 @@ active_stopwatch=Aktivní sledování času
tracked_time_summary=Shrnutí sledovaného času na základě filtrů v seznamu problémů
create_new=Vytvořit…
user_profile_and_more=Profil a nastavení…
-signed_in_as=Přihlášen jako
+signed_in_as=Přihlášen/a jako
enable_javascript=Tato stránka vyžaduje JavaScript.
toc=Obsah
licenses=Licence
@@ -35,18 +35,18 @@ re_type=Potvrzení hesla
captcha=CAPTCHA
twofa=Dvoufaktorové ověřování
twofa_scratch=Dvoufaktorový kód
-passcode=Přístupový kód
+passcode=Passcode
webauthn_insert_key=Vložte svůj bezpečnostní klíč
webauthn_sign_in=Stiskněte tlačítko na svém bezpečnostním klíči. Pokud bezpečnostní klíč nemá žádné tlačítko, vložte jej znovu.
-webauthn_press_button=Stiskněte prosím tlačítko na zabezpečovacím klíči…
+webauthn_press_button=Stiskněte prosím tlačítko na bezpečnostním klíči…
webauthn_use_twofa=Použít dvoufaktorový kód z vašeho telefonu
-webauthn_error=Nepodařilo se přečíst váš zabezpečovací klíč.
+webauthn_error=Nepodařilo se přečíst váš bezpečnostní klíč.
webauthn_unsupported_browser=Váš prohlížeč momentálně nepodporuje WebAuthn.
webauthn_error_unknown=Došlo k neznámé chybě. Opakujte akci.
-webauthn_error_insecure=`WebAuthn podporuje pouze zabezpečená připojení. Pro testování přes HTTP můžete použít výchozí "localhost" nebo "127.0.0.1"`
+webauthn_error_insecure=WebAuthn podporuje pouze zabezpečená připojení. Pro testování přes HTTP můžete použít výchozí „localhost“ nebo „127.0.0.1“
webauthn_error_unable_to_process=Server nemohl zpracovat váš požadavek.
-webauthn_error_duplicated=Zabezpečovací klíč není pro tento požadavek povolen. Prosím ujistěte se, zda klíč není již registrován.
+webauthn_error_duplicated=Bezpečnostní klíč není pro tento požadavek povolen. Ujistěte se prosím, zda již klíč není registrován.
webauthn_error_empty=Musíte nastavit název tohoto klíče.
webauthn_error_timeout=Požadavek vypršel dříve, než se podařilo přečíst váš klíč. Znovu načtěte tuto stránku a akci opakujte.
webauthn_reload=Znovu načíst
@@ -94,22 +94,22 @@ remove_label_str=Odstranit položku „%s“
edit=Upravit
view=Zobrazit
-enabled=Povolený
-disabled=Zakázané
+enabled=Povoleno
+disabled=Zakázáno
locked=Uzamčeno
copy=Kopírovat
copy_url=Kopírovat URL
copy_hash=Kopírovat hash
copy_content=Kopírovat obsah
-copy_branch=Kopírovat jméno větve
+copy_branch=Kopírovat název větve
copy_success=Zkopírováno!
copy_error=Kopírování se nezdařilo
copy_type_unsupported=Tento typ souboru nelze zkopírovat
-write=Psaní
+write=Zápis
preview=Náhled
-loading=Načítá se…
+loading=Načítání…
error=Chyba
error404=Stránka, kterou se snažíte zobrazit, buď neexistuje, nebo nemáte oprávnění ji zobrazit.
@@ -135,7 +135,7 @@ concept_user_organization=Organizace
show_timestamps=Zobrazit časové značky
show_log_seconds=Zobrazit sekundy
-show_full_screen=Zobrazit celou obrazovku
+show_full_screen=Zobrazit na celé obrazovce
download_logs=Stáhnout protokoly
confirm_delete_selected=Potvrdit odstranění všech vybraných položek?
@@ -162,7 +162,7 @@ invalid_data = Neplatná data: %v
[aria]
navbar=Navigační lišta
-footer=Patička
+footer=Zápatí
footer.software=O softwaru
footer.links=Odkazy
@@ -179,17 +179,17 @@ contributions_few = příspěvků
buttons.heading.tooltip=Přidat nadpis
buttons.bold.tooltip=Přidat tučný text
buttons.italic.tooltip=Přidat kurzívu
-buttons.quote.tooltip=Do uvozovek
+buttons.quote.tooltip=Citace
buttons.code.tooltip=Přidat kód
buttons.link.tooltip=Přidat odkaz
-buttons.list.unordered.tooltip=Přidat seznam odrážek
+buttons.list.unordered.tooltip=Přidat odrážkový seznam
buttons.list.ordered.tooltip=Přidat číslovaný seznam
buttons.list.task.tooltip=Přidat seznam úkolů
-buttons.mention.tooltip=Uveďte uživatele nebo tým
-buttons.ref.tooltip=Odkaz na issue nebo pull request
-buttons.switch_to_legacy.tooltip=Místo toho použít starší editor
-buttons.enable_monospace_font=Zapnout monospace font
-buttons.disable_monospace_font=Vypnout monospace font
+buttons.mention.tooltip=Zmínit uživatele nebo tým
+buttons.ref.tooltip=Odkaz na problém nebo žádost o sloučení
+buttons.switch_to_legacy.tooltip=Použít starší editor
+buttons.enable_monospace_font=Zapnout neproporcionální písmo
+buttons.disable_monospace_font=Vypnout neproporcionální písmo
[filter]
string.asc=A – Z
@@ -197,28 +197,28 @@ string.desc=Z – A
[error]
occurred=Došlo k chybě
-report_message=Pokud jste si jisti, že se jedná o chybu služby Forgejo, vyhledejte prosím problémy na Codebergu a v případě potřeby založte nový problém.
-missing_csrf=Špatný požadavek: Neexistuje CSRF token
-invalid_csrf=Špatný požadavek: Neplatný CSRF token
+report_message=Pokud jste si jisti, že se jedná o chybu software Forgejo, vyhledejte prosím problémy ve službě Codeberg a v případě potřeby založte nový problém.
+missing_csrf=Nesprávný požadavek: nenalezen token CSRF
+invalid_csrf=Nesprávný požadavek: neplatný token CSRF
not_found=Cíl nebyl nalezen.
network_error=Chyba sítě
server_internal = Interní chyba serveru
[startpage]
-app_desc=Snadno přístupný vlastní Git
-install=Jednoduchá na instalaci
+app_desc=Snadno přístupná vlastní Git služba
+install=Jednoduché na instalaci
install_desc=Jednoduše spusťte binární soubor pro vaši platformu, nasaďte jej pomocí Dockeru nebo si jej stáhněte jako balíček.
platform=Multiplatformní
platform_desc=Forgejo běží na všech platformách, na které dokáže kompilovat jazyk Go: Windows, macOS, Linux, ARM, atd. Výběr je opravdu velký!
-lightweight=Lehká
-lightweight_desc=Forgejo má minimální požadavky a může běžet na Raspberry Pi. Šetřete energii vašeho stroje!
+lightweight=Lehké
+lightweight_desc=Forgejo má nízké minimální požadavky a dokáže běžet i na levném Raspberry Pi. Šetřete energii vašeho stroje!
license=Open Source
-license_desc=Vše je na Forgejo! Připojte se tím, že přispějete a uděláte tento projekt ještě lepší. Nestyďte se být přispěvatel!
+license_desc=Vyzkoušejte Forgejo! Připojte se k nám, přispějte a vylepšete tento projekt. Nebojte se přispět!
[install]
install=Instalace
title=Počáteční konfigurace
-docker_helper=Pokud spouštíte Forgejo v Dockeru, přečtěte si dokumentaci, než budete měnit jakákoliv nastavení.
+docker_helper=Pokud provozujete Forgejo v Dockeru, před změnou nastavení si přečtěte dokumentaci.
require_db_desc=Forgejo vyžaduje MySQL, PostgreSQL, SQLite3 nebo TiDB (protokol MySQL).
db_title=Nastavení databáze
db_type=Typ databáze
@@ -230,71 +230,71 @@ db_schema=Schéma
db_schema_helper=Ponechte prázdné pro výchozí nastavení databáze („public“).
ssl_mode=SSL
path=Cesta
-sqlite_helper=Cesta k souboru SQLite3 databáze. Pokud spouštíte Forgejo jako službu, zadejte absolutní cestu.
-reinstall_error=Pokoušíte se nainstalovat do existující databáze Forgejo
-reinstall_confirm_message=Přeinstalování s existující databází Forgejo může způsobit více problémů. Ve většině případů byste měli použít existující „app.ini“ pro spuštění Forgejo. Pokud víte, co děláte, potvrďte následující:
+sqlite_helper=Cesta k souboru databáze SQLite3. Pokud provozujete Forgejo jako službu, zadejte absolutní cestu.
+reinstall_error=Pokoušíte se provést instalaci do existující databáze Forgejo
+reinstall_confirm_message=Přeinstalování s existující databází Forgejo může způsobit spoustu problémů. Ve většině případů byste měli ke spouštění Forgejo použít existující soubor „app.ini“. Pokud víte, co děláte, potvrďte následující:
reinstall_confirm_check_1=Data šifrovaná pomocí SECRET_KEY v souboru api.ini mohou být ztracena: uživatelé nemusí být schopni se přihlásit s 2FA/OTP a zrcadla nemusí fungovat správně. Zaškrtnutím tohoto políčka potvrdíte, že aktuální soubor app.ini obsahuje správný SECRET_KEY.
-reinstall_confirm_check_2=Může být nutné znovu synchronizovat repozitáře a nastavení. Zaškrtnutím tohoto políčka potvrzujete, že budete háčky pro repozitáře a soubor authorized_keys znovu synchronizovat ručně. Potvrzujete, že zajistíte správnost nastavení repozitáře a zrcadla.
-reinstall_confirm_check_3=Potvrzujete, že jste si naprosto jisti, že tato Forgejo je spuštěna se správným umístěním souboru app.ini a že jste si jisti, že musíte provést novou instalaci. Potvrzujete, že berete na vědomí výše uvedená rizika.
-err_empty_db_path=Cesta k SQLite3 databázi nemůže být prázdná.
-no_admin_and_disable_registration=Nemůžete vypnout registraci účtů bez vytvoření účtu správce.
+reinstall_confirm_check_2=Může být nutné znovu synchronizovat repozitáře a nastavení. Zaškrtnutím tohoto pole potvrzujete, že ručně znovu synchronizujete hooky repozitářů a soubor authorized_keys. Potvrzujete, že zajistíte správnost nastavení repozitářů a zrcadel.
+reinstall_confirm_check_3=Potvrzujete, že jste si naprosto jisti, že tato instance Forgejo je spuštěna se správným umístěním souboru app.ini a že jste si vědomi toho, že musíte provést novou instalaci. Potvrzujete, že berete na vědomí výše uvedená rizika.
+err_empty_db_path=Cesta k databázi SQLite3 nemůže být prázdná.
+no_admin_and_disable_registration=Nelze vypnout registraci účtů bez vytvoření účtu administrátora.
err_empty_admin_password=Heslo administrátora nemůže být prázdné.
-err_empty_admin_email=Email administrátora nemůže být prázdný.
+err_empty_admin_email=E-mail administrátora nemůže být prázdný.
err_admin_name_is_reserved=Uživatelské jméno administrátora není platné, uživatelské jméno je rezervované
err_admin_name_pattern_not_allowed=Uživatelské jméno administrátora je neplatné, uživatelské jméno odpovídá vyhrazenému vzoru
err_admin_name_is_invalid=Uživatelské jméno administrátora není platné
general_title=Obecná nastavení
app_name=Název instance
-app_name_helper=Zde můžete zadat název vaší společnosti.
+app_name_helper=Sem můžete zadat název vaší společnosti.
repo_path=Kořenový adresář repozitářů
repo_path_helper=Všechny vzdálené repozitáře Gitu budou uloženy do tohoto adresáře.
lfs_path=Kořenový adresář Git LFS
-lfs_path_helper=V tomto adresáři budou uloženy soubory, které jsou sledovány Git LFS. Pokud ponecháte prázdné, LFS zakážete.
+lfs_path_helper=V tomto adresáři budou uloženy soubory, které jsou sledovány službou Git LFS. Ponechte prázdné pro zakázání.
run_user=Spustit jako uživatel
-run_user_helper=Uživatelské jméno, pod kterým běží služba Forgejo v operačním systému. Pozor: tento uživatel musí mít přístup ke kořenovému adresáři repozitářů.
+run_user_helper=Uživatelské jméno, pod kterým běží software Forgejo v operačním systému. Pozor: tento uživatel musí mít přístup ke kořenovému adresáři repozitářů.
domain=Doména serveru
-domain_helper=Adresa domény, nebo hostitele serveru.
+domain_helper=Doména nebo adresa hostitele serveru.
ssh_port=Port serveru SSH
ssh_port_helper=Číslo portu, který bude použit pro server SSH. Ponechte prázdné pro zakázání serveru SSH.
http_port=Port pro naslouchání HTTP
http_port_helper=Číslo portu, který bude použit webovým serverem Forgejo.
app_url=Základní URL
-app_url_helper=Základní adresa pro HTTP(S) URL adresy pro klonování a e-mailová oznámení.
+app_url_helper=Základní adresa pro HTTP(S) adresy URL pro klonování a e-mailová oznámení.
log_root_path=Adresář protokolů
-log_root_path_helper=Soubory protokolu budou zapsány do tohoto adresáře.
+log_root_path_helper=Protokoly budou zapisovány do tohoto adresáře.
optional_title=Volitelná nastavení
email_title=Nastavení e-mailů
smtp_addr=Hostitel SMTP
smtp_port=Port SMTP
smtp_from=Poslat e-mail jako
-smtp_from_helper=E-mailová adresa, kterou bude Forgejo používat. Zadejte běžnou e-mailovou adresu, nebo použijte formát "Jméno".
+smtp_from_helper=E-mailová adresa, kterou bude používat software Forgejo. Zadejte běžnou e-mailovou adresu, nebo použijte formát "Jméno" .
mailer_user=Uživatelské jméno SMTP
mailer_password=Heslo SMTP
register_confirm=Pro registraci vyžadovat potvrzení e-mailu
mail_notify=Zapnout e-mailová oznámení
server_service_title=Nastavení serveru a služeb třetích stran
offline_mode=Povolit místní režim
-offline_mode_popup=Zakázat sítě pro doručování obsahu a poskytovat veškerý obsah lokálně.
+offline_mode_popup=Zakázat sítě třetích stran pro doručování obsahu a poskytovat veškerý obsah lokálně.
disable_gravatar=Zakázat Gravatar
-disable_gravatar_popup=Zakážete Gravatar a jiné cizí zdroje avatarů. Pokud uživatel nenahraje avatar, bude použit výchozí.
+disable_gravatar_popup=Zakázat Gravatar a jiné zdroje avatarů třetích stran. Pokud uživatel nenahraje avatar, bude použit výchozí.
federated_avatar_lookup=Povolit federované avatary
-federated_avatar_lookup_popup=Povolte vyhledání avatarů z veřejných zdrojů pro využití služeb založených na libravatar.
+federated_avatar_lookup_popup=Povolit federované vyhledání avatarů pomocí služby Libravatar.
disable_registration=Zakázat uživatelské registrace
-disable_registration_popup=Vypnout možnost registrace. Pouze správci budou moci vytvářet účty.
+disable_registration_popup=Zakázat možnost registrace. Pouze administrátoři budou moci vytvářet nové uživatelské účty.
allow_only_external_registration_popup=Povolit registraci pouze prostřednictvím externích služeb
openid_signin=Povolit přihlášení pomocí OpenID
-openid_signin_popup=Umožňuje uživateli přihlásit se pomocí OpenID.
+openid_signin_popup=Povolit přihlášení pomocí služby OpenID.
openid_signup=Povolit uživatelskou registraci pomocí OpenID
-openid_signup_popup=Umožňuje uživateli automaticky se registrovat pomocí OpenID.
+openid_signup_popup=Povolit uživatelům registrovat se pomocí OpenID.
enable_captcha=Povolit CAPTCHA při registraci
-enable_captcha_popup=Vyžadovat správně zadaný text CAPTCHA při registraci.
+enable_captcha_popup=Vyžadovat CAPTCHA při uživatelské registraci.
require_sign_in_view=Vyžadovat přihlášení pro zobrazení obsahu instance
-require_sign_in_view_popup=Povolí přístup ke stránkám jen přihlášeným uživatelům. Návštěvníci uvidí jen přihlašovací a registrační stránky.
-admin_setting_desc=Vytvoření účtu správce je nepovinné. První registrovaný uživatel se automaticky stane správcem.
-admin_title=Nastavení účtu správce
-admin_name=Uživatelské jméno správce
+require_sign_in_view_popup=Povolit přístup ke stránkám jen přihlášeným uživatelům. Návštěvníci uvidí jen stránky přihlášení a registrace.
+admin_setting_desc=Vytvoření administrátorského účtu je nepovinné. První zaregistrovaný uživatel se automaticky stane administrátorem.
+admin_title=Nastavení administrátorského účtu
+admin_name=Uživatelské jméno administrátora
admin_password=Heslo
confirm_password=Potvrzení hesla
admin_email=E-mailová adresa
@@ -303,24 +303,24 @@ test_git_failed=Chyba při testu příkazu „git“: %v
sqlite3_not_available=Tato verze Forgejo nepodporuje SQLite3. Stáhněte si oficiální binární verzi z %s (nikoli verzi „gobuild“).
invalid_db_setting=Nastavení databáze je neplatné: %v
invalid_db_table=Databázová tabulka „%s“ je neplatná: %v
-invalid_repo_path=Kořenový adresář repozitářů není správný: %v
+invalid_repo_path=Kořenový adresář repozitářů je neplatný: %v
invalid_app_data_path=Cesta k datům aplikace je neplatná: %v
run_user_not_match=Uživatelské jméno v poli „spustit jako uživatel“ není aktuální uživatelské jméno: %s -> %s
-internal_token_failed=Nepodařilo se vytvořit interní token: %v
-secret_key_failed=Nepodařilo se vytvořit tajný klíč: %v
-save_config_failed=Uložení konfigurace se nezdařilo: %v
-invalid_admin_setting=Nastavení účtu správce není správné: %v
-invalid_log_root_path=Kořenový adresář logů není správný: %v
+internal_token_failed=Nepodařilo se vygenerovat interní token: %v
+secret_key_failed=Nepodařilo se vygenerovat tajný klíč: %v
+save_config_failed=Nepodařilo se uložit konfiguraci: %v
+invalid_admin_setting=Nastavení administrátorského účtu je neplatné: %v
+invalid_log_root_path=Kořenový adresář protokolů je neplatný: %v
default_keep_email_private=Ve výchozím nastavení skrýt e-mailové adresy
-default_keep_email_private_popup=Nastaví e-mailové adresy novým uživatelským účtům jako skryté.
+default_keep_email_private_popup=Ve výchozím nastavení skrýt e-mailové adresy nových uživatelských účtů.
default_allow_create_organization=Povolit novým uživatelům zakládat organizace
-default_allow_create_organization_popup=Povolit novým uživatelským účtům vytvářet organizace.
+default_allow_create_organization_popup=Ve výchozím nastavení povolit novým uživatelským účtům vytvářet organizace.
default_enable_timetracking=Povolit ve výchozím nastavení sledování času
-default_enable_timetracking_popup=Povolí sledování času pro nové repozitáře.
+default_enable_timetracking_popup=Ve výchozím nastavení povolit u nových repozitářů sledovat čas.
no_reply_address=Skrytá e-mailová doména
no_reply_address_helper=Název domény pro uživatele se skrytou e-mailovou adresou. Příklad: pokud je název skryté e-mailové domény nastaven na „noreply.example.org“, uživatelské jméno „joe“ bude zaznamenáno v Gitu jako „joe@noreply.example.org“.
password_algorithm=Hashovací algoritmus hesla
-invalid_password_algorithm=Neplatný algoritmus hash hesla
+invalid_password_algorithm=Neplatný algoritmus hashe hesla
password_algorithm_helper=Nastavte algoritmus hashování hesla. Algoritmy mají odlišné požadavky a sílu. Algoritmus argon2 je poměrně bezpečný, ale používá spoustu paměti a může být nevhodný pro malé systémy.
enable_update_checker=Povolit kontrolu aktualizací
enable_update_checker_helper=Kontroluje vydání nových verzí pravidelně připojením ke gitea.io.
@@ -329,7 +329,7 @@ env_config_keys_prompt=Následující proměnné prostředí budou také použit
enable_update_checker_helper_forgejo = Bude pravidelně kontrolovat nové verze Forgejo kontrolou TXT DNS záznamu na adrese release.forgejo.org.
allow_dots_in_usernames = Povolit uživatelům používat tečky ve svých uživatelských jménech. Neovlivní stávající účty.
smtp_from_invalid = Adresa v poli „Poslat e-mail jako“ je neplatná
-config_location_hint = Tyto možnosti konfigurace budou uloženy do:
+config_location_hint = Tyto konfigurační možnosti budou uloženy do:
[home]
uname_holder=Uživatelské jméno nebo e-mailová adresa
@@ -343,16 +343,16 @@ my_mirrors=Má zrcadla
view_home=Zobrazit %s
search_repos=Nalézt repozitář…
filter=Ostatní filtry
-filter_by_team_repositories=Filtrovat podle repozitářů týmu
-feed_of=Kanál z „%s“
+filter_by_team_repositories=Filtrovat podle týmových repozitářů
+feed_of=Kanál „%s“
show_archived=Archivováno
-show_both_archived_unarchived=Zobrazeny jak archivované tak nearchivované
+show_both_archived_unarchived=Zobrazeny archivované i nearchivované
show_only_archived=Zobrazeny pouze archivované
show_only_unarchived=Zobrazeny pouze nearchivované
-show_private=Soukromý
-show_both_private_public=Zobrazeny jak veřejné tak soukromé
+show_private=Soukromé
+show_both_private_public=Zobrazeny veřejné i soukromé
show_only_private=Zobrazeny pouze soukromé
show_only_public=Zobrazeny pouze veřejné
@@ -388,42 +388,42 @@ stars_few = %d hvězd
create_new_account=Registrovat účet
register_helper_msg=Již máte účet? Přihlaste se!
social_register_helper_msg=Již máte účet? Připojte ho!
-disable_register_prompt=Registrace jsou vypnuty. Prosíme, kontaktujte správce systému.
+disable_register_prompt=Registrace jsou vypnuty. Kontaktujte prosím administrátora webu.
disable_register_mail=E-mailové potvrzení o registraci je zakázané.
-manual_activation_only=Pro dokončení aktivace kontaktujte správce webu.
+manual_activation_only=Pro dokončení aktivace kontaktujte administrátora webu.
remember_me=Pamatovat si toto zařízení
remember_me.compromised=Přihlašovací token již není platný, což může znamenat napadení účtu. Zkontrolujte prosím svůj účet pro neobvyklé aktivity.
forgot_password_title=Zapomenuté heslo
forgot_password=Zapomenuté heslo?
-sign_up_now=Potřebujete účet? Zaregistrujte se.
+sign_up_now=Nemáte účet? Zaregistrujte se.
sign_up_successful=Účet byl úspěšně vytvořen. Vítejte!
-confirmation_mail_sent_prompt=Na adresu %s byl zaslán nový potvrzovací e-mail. Zkontrolujte prosím vaši doručenou poštu během následujících %s, abyste dokončili proces registrace.
-must_change_password=Aktualizujte své heslo
+confirmation_mail_sent_prompt=Na adresu %s byl zaslán nový potvrzovací e-mail. Zkontrolujte prosím vaši doručenou poštu během následujících %s, abyste dokončili proces registrace. Pokud jste zadali nesprávný e-mail, můžete se přihlásit a požádat o poslání nového potvrzovacího e-mailu na jinou adresu.
+must_change_password=Změňte své heslo
allow_password_change=Vyžádat od uživatele změnu hesla (doporučeno)
-reset_password_mail_sent_prompt=Na adresu %s byl zaslán potvrzovací e-mail. Zkontrolujte prosím vaši doručenou poštu během následujících %s, abyste dokončili proces obnovení účtu.
+reset_password_mail_sent_prompt=Na adresu %s byl zaslán potvrzovací e-mail. Zkontrolujte prosím vaši doručenou poštu během následujících %s pro dokončení procesu obnovení účtu.
active_your_account=Aktivujte si váš účet
account_activated=Účet byl aktivován
prohibit_login=Přihlašování je zakázáno
prohibit_login_desc=Vašemu účtu je zakázáno se přihlásit, kontaktujte prosím správce webu.
-resent_limit_prompt=Omlouváme se, ale před chvílí jste požádal o zaslání aktivačního e-mailu. Počkejte prosím 3 minuty a pak to zkuste znovu.
-has_unconfirmed_mail=Zdravím, %s, máte nepotvrzenou e-mailovou adresu (%s). Pokud jste nedostali e-mail pro potvrzení nebo potřebujete zaslat nový, klikněte prosím na tlačítku níže.
-resend_mail=Klikněte zde pro odeslání aktivačního e-mailu
+resent_limit_prompt=Omlouváme se, ale nedávno jste již požádali o zaslání aktivačního e-mailu. Počkejte prosím 3 minuty a zkuste to znovu.
+has_unconfirmed_mail=Zdravíme, %s, máte nepotvrzenou e-mailovou adresu (%s). Pokud jste nedostali e-mail pro potvrzení nebo potřebujete zaslat nový, klikněte prosím na tlačítko níže.
+resend_mail=Klikněte sem pro opětovné odeslání aktivačního e-mailu
email_not_associate=Tato e-mailová adresa není spojena s žádným účtem.
send_reset_mail=Zaslat e-mail pro obnovení účtu
reset_password=Obnovení účtu
-invalid_code=Tento potvrzující kód je neplatný nebo mu vypršela platnost.
+invalid_code=Tento potvrzovací kód je neplatný nebo mu vypršela platnost.
invalid_code_forgot_password=Váš potvrzovací kód je neplatný nebo mu vypršela platnost. Klikněte zde pro vytvoření nového kódu.
invalid_password=Vaše heslo se neshoduje s heslem, které bylo použito k vytvoření účtu.
reset_password_helper=Obnovit účet
reset_password_wrong_user=Jste přihlášen/a jako %s, ale odkaz pro obnovení účtu je pro %s
password_too_short=Délka hesla musí být minimálně %d znaků.
-non_local_account=Externě ověřovaní uživatelé nemohou aktualizovat své heslo prostřednictvím webového rozhraní Forgejo.
+non_local_account=Externě ověřovaní uživatelé nemohou změnit své heslo prostřednictvím webového rozhraní Forgejo.
verify=Ověřit
-scratch_code=Pomocný kód
-use_scratch_code=Použijte pomocný kód
-twofa_scratch_used=Použili jste váš pomocný kód. Byli jste přesměrování na stránku s nastavením dvoufaktorového ověřování, takže můžete odstranit registraci vašeho zařízení nebo vygenerovat nový pomocný kód.
-twofa_passcode_incorrect=Vaše heslo je neplatné. Pokud jste ztratili vaše zařízení, použijte pomocný kód k přihlášení.
-twofa_scratch_token_incorrect=Váš pomocný kód není správný.
+scratch_code=Záložní kód
+use_scratch_code=Použít záložní kód
+twofa_scratch_used=Použili jste váš záložní kód. Byli jste přesměrování na stránku s nastavením dvoufaktorového ověřování, kde můžete odstranit registraci vašeho zařízení nebo vygenerovat nový záložní kód.
+twofa_passcode_incorrect=Vaše heslo je neplatné. Pokud jste ztratili vaše zařízení, použijte záložní kód k přihlášení.
+twofa_scratch_token_incorrect=Váš záložní kód není správný.
login_userpass=Přihlásit se
tab_openid=OpenID
oauth_signup_tab=Zaregistrovat nový účet
@@ -432,11 +432,11 @@ oauth_signup_submit=Dokončit účet
oauth_signin_tab=Propojit s existujícím účtem
oauth_signin_title=Přihlaste se pro ověření propojeného účtu
oauth_signin_submit=Propojit účet
-oauth.signin.error=Došlo k chybě při zpracování žádosti o autorizaci. Pokud tato chyba přetrvává, obraťte se na správce webu.
+oauth.signin.error=Při zpracování žádosti o autorizaci došlo k chybě. Pokud tato chyba přetrvává, obraťte se na správce webu.
oauth.signin.error.access_denied=Žádost o autorizaci byla zamítnuta.
oauth.signin.error.temporarily_unavailable=Autorizace se nezdařila, protože ověřovací server je dočasně nedostupný. Opakujte akci později.
openid_connect_submit=Připojit
-openid_connect_title=Připojení k existujícímu účtu
+openid_connect_title=Připojit k existujícímu účtu
openid_connect_desc=Zvolené OpenID URI není známé. Přidružte nový účet zde.
openid_register_title=Vytvořit nový účet
openid_register_desc=Zvolené OpenID URI není známé. Přidružte nový účet zde.
@@ -633,13 +633,14 @@ username_error_no_dots = ` může obsahovat pouze alfanumerické znaky („0-9
admin_cannot_delete_self=Nemůžete se smazat, dokud jste správce. Nejdříve prosím odeberte svá administrátorská oprávnění.
unset_password = Tento uživatel nemá nastavené heslo.
unsupported_login_type = U tohoto typu účtu není funkce odstranění účtu podporována.
+required_prefix = Vstup musí začínat textem „%s“
[user]
change_avatar=Změnit váš avatar…
joined_on=Přidal/a se %s
repositories=Repozitáře
activity=Veřejná aktivita
-followers_few=%d sledující
+followers_few=%d sledujících
starred=Oblíbené repozitáře
watched=Sledované repozitáře
code=Kód
@@ -666,6 +667,8 @@ block_user.detail_3 = Tento uživatel vás nebude moci přidat jako spolupracovn
follow_blocked_user = Tohoto uživatele nemůžete sledovat, protože jste si jej zablokovali nebo si on zablokoval vás.
block = Zablokovat
unblock = Odblokovat
+followers_one = %d sledující
+following_one = %d následuje
[settings]
profile=Profil
@@ -923,11 +926,11 @@ twofa_is_enrolled=Váš účet aktuálně používá dvoufaktor
twofa_not_enrolled=Váš účet aktuálně nepoužívá dvoufaktorové ověřování.
twofa_disable=Zakázat dvoufaktorové ověřování
twofa_scratch_token_regenerate=Znovu vygenerovat jednorázový klíč pro obnovení
-twofa_scratch_token_regenerated=Váš jednorázový obnovovací klíč je nyní %s. Uložte jej na bezpečném místě, protože se znovu nezobrazí.
+twofa_scratch_token_regenerated=Váš jednorázový klíč pro obnovení je nyní %s. Uložte jej na bezpečné místo, protože se znovu nezobrazí.
twofa_enroll=Povolit dvoufaktorové ověřování
twofa_disable_note=Dvoufaktorové ověřování můžete zakázat, když bude potřeba.
twofa_disable_desc=Zakážete-li dvoufaktorové ověřování, bude váš účet méně zabezpečený. Pokračovat?
-regenerate_scratch_token_desc=Jestli jste někam založili váš pomocný token nebo jste jej již použili k přihlášení, můžete jej resetovat zde.
+regenerate_scratch_token_desc=Pokud jste ztratili svůj klíč pro obnovení nebo jste jej již použili k přihlášení, můžete jej resetovat zde.
twofa_disabled=Dvoufaktorové ověřování bylo zakázáno.
scan_this_image=Naskenujte tento obrázek s vaší ověřovací aplikací:
or_enter_secret=Nebo zadejte tajný kód: %s
@@ -989,6 +992,9 @@ additional_repo_units_hint = Podíbnout k povolení dalších jednotek úložiš
update_hints = Aktualizovat nápovědy
update_hints_success = Nápovědy byly aktualizovány.
additional_repo_units_hint_description = Zobrazit tlačítko „Přidat další jednotky...“ u repozitářů, které nemají povolené všechny dostupné jednotky.
+pronouns = Zájmena
+pronouns_custom = Vlastní
+pronouns_unspecified = Neurčené
[repo]
new_repo_helper=Repozitář obsahuje všechny projektové soubory, včetně historie revizí. Už jej hostujete jinde? Migrovat repozitář.
@@ -1924,7 +1930,7 @@ milestones.filter_sort.least_issues=Nejméně problémů
signing.will_sign=Tento commit bude podepsána klíčem „%s“.
signing.wont_sign.error=Došlo k chybě při kontrole, zda může být commit podepsán.
-signing.wont_sign.nokey=K podpisu tohoto commitu není k dispozici žádný klíč.
+signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání tohoto commitu.
signing.wont_sign.never=Commity nejsou nikdy podepsány.
signing.wont_sign.always=Commity jsou vždy podepsány.
signing.wont_sign.pubkey=Commit nebude podepsán, protože nemáte veřejný klíč spojený s vaším účtem.
@@ -2724,6 +2730,16 @@ settings.enforce_on_admins_desc = Správci repozitáře nemohou obejít toto pra
issues.num_participants_one = %d účastník
size_format = %[1]s: %[2]s, %[3]s: %[4]s
issues.archived_label_description = (Archivován) %s
+release.download_count_one = %d stažení
+release.download_count_few = %d stažení
+release.system_generated = Tato příloha byla automaticky vygenerována.
+settings.add_webhook.invalid_path = Cesta nesmí obsahovat část, která je „.“ nebo „..“ nebo prázdný řetězec. Nesmí začínat ani končit lomítkem.
+settings.web_hook_name_sourcehut_builds = Sestavení SourceHut
+settings.sourcehut_builds.manifest_path = Cesta manifestu sestavení
+settings.sourcehut_builds.graphql_url = URL GraphQL (např. https://builds.sr.ht/query)
+settings.sourcehut_builds.visibility = Viditelnost práce
+settings.sourcehut_builds.secrets = Tajné klíče
+settings.sourcehut_builds.secrets_helper = Udělit práci přístup k tajným klíčům sestavení (vyžaduje oprávnění SECRETS:RO)
[graphs]
component_loading_info = Tohle může chvíli trvat…
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index 77dd23a785..60ddf340f8 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -629,6 +629,7 @@ username_error_no_dots = ` darf nur alphanumerische Zeichen („0-9“, „a-z
admin_cannot_delete_self = Du kannst dich nicht selbst löschen, wenn du ein Admin bist. Bitte entferne zuerst deine Adminrechte.
unset_password = Für den Benutzer ist das Passwort nicht gesetzt.
unsupported_login_type = Dieser Login-Typ unterstützt keine Accountlöschung.
+required_prefix = Eingabe muss mit „%s“ anfangen
[user]
@@ -663,6 +664,8 @@ block = Blockieren
follow_blocked_user = Du kannst diesen Benutzer nicht folgen, weil du ihn blockiert hast, oder er dich blockiert hat.
block_user.detail_3 = Dieser Benutzer kann dich nicht als einen Mitarbeiter hinzufügen, und du kannst ihn nicht als Mitarbeiter hinzufügen.
unblock = Nicht mehr blockieren
+followers_one = %d Follower
+following_one = einem gefolgt
[settings]
profile=Profil
@@ -986,6 +989,9 @@ additional_repo_units_hint = Zur Aktivierung zusätzlicher Repository-Einheiten
update_hints = Hinweise aktualisieren
update_hints_success = Hinweise wurden aktualisiert.
additional_repo_units_hint_description = Einen „Mehr Einheiten hinzufügen …“-Button für Repositorys, welche nicht alle verfügbaren Einheiten aktiviert haben, anzeigen.
+pronouns = Pronomen
+pronouns_custom = Eigene
+pronouns_unspecified = Nicht spezifiziert
[repo]
owner=Besitzer
@@ -1229,9 +1235,9 @@ file_view_raw=Originalformat anzeigen
file_permalink=Permalink
file_too_large=Die Datei ist zu groß zum Anzeigen.
invisible_runes_header=`Diese Datei enthält unsichtbare Unicode-Zeichen`
-invisible_runes_description=`Diese Datei enthält unsichtbare Unicode-Zeichen, die für Menschen nicht unterscheidbar sind, aber von einem Computer unterschiedlich verarbeitet werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escape“-Button, um versteckte Zeichen anzuzeigen.`
+invisible_runes_description=`Diese Datei enthält unsichtbare Unicode-Zeichen, die für Menschen nicht unterscheidbar sind, aber von einem Computer unterschiedlich verarbeitet werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escapen“-Button, um versteckte Zeichen anzuzeigen.`
ambiguous_runes_header=`Diese Datei enthält mehrdeutige Unicode-Zeichen`
-ambiguous_runes_description=`Diese Datei enthält Unicode-Zeichen, die mit anderen Zeichen verwechselt werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escape“-Button, um versteckte Zeichen anzuzeigen.`
+ambiguous_runes_description=`Diese Datei enthält Unicode-Zeichen, die mit anderen Zeichen verwechselt werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escapen“-Button, um versteckte Zeichen anzuzeigen.`
invisible_runes_line=`Diese Zeile enthält unsichtbare Unicode-Zeichen`
ambiguous_runes_line=`Diese Zeile enthält mehrdeutige Unicode-Zeichen`
ambiguous_character=`%[1]c [U+%04[1]X] kann mit %[2]c [U+%04[2]X] verwechselt werden`
@@ -2708,6 +2714,16 @@ settings.enforce_on_admins = Erzwinge diese Regel für alle Repositoryadministra
settings.event_pull_request_enforcement = Erzwingung
size_format = %[1]s: %[2]s, %[3]s: %[4]s
issues.archived_label_description = (Archiviert) %s
+release.download_count_one = %s Download
+release.download_count_few = %s Downloads
+release.system_generated = Dieser Anhang wurde automatisch generiert.
+settings.add_webhook.invalid_path = Der Pfad darf kein „.“ oder „..“ enhalten, und darf auch nicht leer sein. Er darf auch nicht mit einem Slash anfangen oder enden.
+settings.sourcehut_builds.graphql_url = GraphQL-URL (z.B. https://builds.sr.ht/query)
+settings.sourcehut_builds.manifest_path = Build-Manifest-Pfad
+settings.sourcehut_builds.visibility = Job-Sichtbarkeit
+settings.sourcehut_builds.secrets = Geheimnisse
+settings.sourcehut_builds.secrets_helper = Dem Job zugriff auf die Build-Geheimnisse geben (benötigt die SECRETS:RO-Berechtigung)
+settings.web_hook_name_sourcehut_builds = SourceHut-Builds
[graphs]
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index 5116f6b2e4..901fa0b4b9 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -33,7 +33,7 @@ password=Κωδικός πρόσβασης
access_token=Διακριτικό πρόσβασης
re_type=Επιβεβαίωση κωδικού
captcha=CAPTCHA
-twofa=Πιστοποίηση Δύο Παραγόντων
+twofa=Πιστοποίηση δύο παραγόντων
twofa_scratch=Κωδικός μίας χρήσης (για πιστοποίηση δύο παραγόντων / 2FA)
passcode=Κωδικός
@@ -44,7 +44,7 @@ webauthn_use_twofa=Χρησιμοποιήστε έναν κωδικό δύο π
webauthn_error=Δεν ήταν δυνατή η επικοινωνία με το κλειδί ασφαλείας σας.
webauthn_unsupported_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει επί του παρόντος WebAuthn.
webauthn_error_unknown=Παρουσιάστηκε ένα άγνωστο σφάλμα. Παρακαλώ προσπαθήστε ξανά.
-webauthn_error_insecure=Το WebAuthn υποστηρίζει μόνο ασφαλές συνδέσεις. Για την διεξαγωγή δοκιμών μέσω HTTP, μπορείτε να χρησιμοποιήσετε την προέλευση «localhost» ή «127.0.0.1»
+webauthn_error_insecure=Το WebAuthn υποστηρίζει μόνο ασφαλές συνδέσεις. Αν θέλετε να διεξάγετε δοκιμές μέσω HTTP, μπορείτε να χρησιμοποιήσετε την προέλευση «localhost» ή «127.0.0.1»
webauthn_error_unable_to_process=Ο διακομιστής δεν μπόρεσε να επεξεργαστεί το αίτημά σας.
webauthn_error_duplicated=Το κλειδί ασφαλείας δεν επιτρέπεται για αυτό το αίτημα. Βεβαιωθείτε ότι το κλειδί δεν έχει ήδη καταχωρηθεί.
webauthn_error_empty=Πρέπει να ορίσετε ένα όνομα για αυτό το κλειδί.
@@ -54,16 +54,16 @@ webauthn_reload=Ανανέωση
repository=Αποθετήριο
organization=Οργανισμός
mirror=Αντίγραφο
-new_repo=Νέο Αποθετήριο
-new_migrate=Νέα Μεταφορά
-new_mirror=Νέο Είδωλο
-new_fork=Νέο Fork Αποθετηρίου
-new_org=Νέος Οργανισμός
-new_project=Νέο Έργο
-new_project_column=Νέα Στήλη
+new_repo=Νέο αποθετήριο
+new_migrate=Νέα μεταφορά
+new_mirror=Νέο είδωλο
+new_fork=Νέο fork αποθετηρίου
+new_org=Νέος οργανισμός
+new_project=Νέο έργο
+new_project_column=Νέα στήλη
manage_org=Διαχείριση Οργανισμών
admin_panel=Διαχείριση
-account_settings=Ρυθμίσεις Λογαριασμού
+account_settings=Ρυθμίσεις λογαριασμού
settings=Ρυθμίσεις
your_profile=Προφίλ
your_starred=Αγαπημένα
@@ -76,7 +76,7 @@ collaborative=Συνεργατικά
forks=Forks
activities=Δραστηριότητες
-pull_requests=Pull Requests
+pull_requests=Pull requests
issues=Ζητήματα
milestones=Ορόσημα
@@ -146,14 +146,17 @@ confirm_delete_artifact = Είστε βέβαιοι πως θέλετε να δ
filter = Φίλτρο
filter.is_archived = Αρχειοθετημένο
filter.clear = Απενεργοποίηση φίλτρου
-filter.not_archived = Μη αρχειοθετημένο
+filter.not_archived = Μη αρχειοθετημένα
filter.is_template = Πρότυπο
filter.public = Δημόσιο
filter.private = Ιδιωτικό
-filter.not_fork = Εξαίρεση Fork
+filter.not_fork = Εξαίρεση fork
filter.is_mirror = Είδωλα
-filter.not_mirror = Εξαίρεση Ειδώλων
-filter.not_template = Εξαίρεση Προτύπων
+filter.not_mirror = Εξαίρεση ειδώλων
+filter.not_template = Εξαίρεση προτύπων
+filter.is_fork = Forked
+more_items = Περισσότερα αντικείμενα
+invalid_data = Τα δεδομένα δεν είναι έγκυρα: %v
[aria]
navbar=Γραμμή Πλοήγησης
@@ -166,6 +169,9 @@ number_of_contributions_in_the_last_12_months=%s συνεισφορές τους
contributions_zero=Χωρίς συνεισφορές
less=Λιγότερα
more=Περισσότερα
+contributions_format = {contributions} στις {day} του μήνα {month} του έτους {year}
+contributions_one = συνεισφορά
+contributions_few = συνεισφορές
[editor]
buttons.heading.tooltip=Προσθήκη επικεφαλίδας
@@ -189,19 +195,19 @@ string.desc=Z - A
[error]
occurred=Παρουσιάστηκε ένα σφάλμα
-report_message=Αν πιστεύετε ότι αυτό προέκυψε λόγω κάποιου σφάλματος στο Forgejo, σας παρακαλούμε να αναζητήσετε τα ζητήματα στο Codeberg ή να ανοίξετε ένα νέο ζήτημα εάν είναι απαραίτητο.
+report_message=Αν πιστεύετε ότι αυτό προέκυψε λόγω κάποιου σφάλματος στο Forgejo, σας παρακαλούμε να ρίξετε μία ματιά στα ζητήματα στο Codeberg ή να ανοίξετε ένα νέο ζήτημα εάν είναι απαραίτητο.
missing_csrf=Bad Request: δεν υπάρχει διακριτικό CSRF
invalid_csrf=Λάθος Αίτημα: μη έγκυρο διακριτικό CSRF
not_found=Ο προορισμός δεν βρέθηκε.
network_error=Σφάλμα δικτύου
-server_internal = Σφάλμα Διακομιστή
+server_internal = Σφάλμα διακομιστή
[startpage]
app_desc=Μια ανώδυνη, αυτο-φιλοξενούμενη υπηρεσία Git
install=Εύκολη εγκατάσταση
install_desc=Απλά τρέξε το αρχείο που αντιστοιχεί στην πλατφόρμα σου, εγκατέστησε το με το Docker ή χρησιμοποίησε ένα πακέτο λογισμικού.
platform=Τρέχει παντού
-platform_desc=Το Forgejo τρέχει σε όλα τα συστήματα που υποστηρίζει η γλώσσα Go, όπως: Windows, macOS, Linux, ARM, κλπ. Διάλεξε αυτό που αγαπάς!
+platform_desc=Το Forgejo τρέχει σε κάθε σύστημα που υποστηρίζει η γλώσσα Go, όπως: Windows, macOS, Linux, ARM, κλπ. Διάλεξε αυτό που αγαπάς!
lightweight=Ελαφρύ
lightweight_desc=Το Forgejo έχει ελάχιστες απαιτήσεις, μπορείς και να το τρέξεις σε ένα φτηνό Raspberry Pi. Εξοικονόμησε ενέργεια!
license=Ανοικτού κώδικα
@@ -237,7 +243,7 @@ err_admin_name_pattern_not_allowed=Το Όνομα χρήστη του Διαχ
err_admin_name_is_invalid=Το Όνομα Χρήστη του Διαχειριστή δεν είναι έγκυρο
general_title=Γενικές ρυθμίσεις
-app_name=Όνομα διακομιστή
+app_name=Τίτλος διακομιστή
app_name_helper=Μπορείτε να εισάγετε το όνομα της εταιρείας σας εδώ.
repo_path=Τοποθεσία αρχείων αποθετηρίων
repo_path_helper=Τα απομακρυσμένα αποθετήρια Git θα αποθηκεύονται σε αυτόν τον κατάλογο.
@@ -270,9 +276,9 @@ server_service_title=Ρυθμίσεις διακομιστή και υπηρεσ
offline_mode=Ενεργοποίηση τοπικής λειτουργίας
offline_mode_popup=Απενεργοποιήση των δικτύων διανομής περιεχομένου τρίτων και σερβίρετε όλων των πόρων τοπικά.
disable_gravatar=Απενεργοποίηση Gravatar
-disable_gravatar_popup=Απενεργοποιήση του Gravatar και των εξωτερικών πηγών avatar. Θα χρησιμοποιηθεί ένα προεπιλεγμένο avatar εκτός αν ένας χρήστης ανεβάσει τοπικά ένα avatar.
-federated_avatar_lookup=Ενεργοποίηση αποκεντρωμένων avatars
-federated_avatar_lookup_popup=Ενεργοποίηση ομόσπονδης αναζήτησης avatar χρησιμοποιώντας το Libravatar.
+disable_gravatar_popup=Το Gravatar και άλλες εξωτερικές πηγές εικόνων προφίλ θα απενεργοποιηθούν. Θα χρησιμοποιηθεί μία προεπιλεγμένη εικόνα προφίλ, εκτός αν ο χρήστης ανεβάσει από μόνος του ένα avatar.
+federated_avatar_lookup=Ενεργοποίηση αποκεντρωμένων εικόνων προφίλ
+federated_avatar_lookup_popup=Ενεργοποίηση αποκεντρωμένης αναζήτησης εικόνων προφίλ μέσω Libravatar.
disable_registration=Απενεργοποίηση αυτοεγγραφής
disable_registration_popup=Απενεργοποίηση αυτοεγγραφής χρήστη. Μόνο οι διαχειριστές θα μπορούν να δημιουργήσουν νέους λογαριασμούς χρηστών.
allow_only_external_registration_popup=Να επιτρέπεται η εγγραφή μόνο μέσω εξωτερικών υπηρεσιών
@@ -297,7 +303,7 @@ invalid_db_setting=Οι ρυθμίσεις της βάσης δεδομένων
invalid_db_table=Ο πίνακας βάσης δεδομένων «%s» δεν είναι έγκυρος: %v
invalid_repo_path=Η αρχική διαδρομή των αποθετηρίων δεν είναι έγκυρη: %v
invalid_app_data_path=Η διαδρομή δεδομένων εφαρμογής (app data) δεν είναι έγκυρη: %v
-run_user_not_match=Το όνομα χρήστη «Εκτέλεση ως» δεν είναι το τρέχον όνομα χρήστη: %s -> %s
+run_user_not_match=Το όνομα του χρήστη, του οποίου θα θέλατε να εκτελεί το Forgejo, δεν συνάδει με το τρέχον όνομα χρήστη: %s -> %s
internal_token_failed=Αποτυχία δημιουργίας εσωτερικού διακριτικού: %v
secret_key_failed=Αποτυχία δημιουργίας μυστικού κλειδιού: %v
save_config_failed=Αποτυχία αποθήκευσης ρυθμίσεων: %v
@@ -330,7 +336,7 @@ switch_dashboard_context=Εναλλαγή Περιεχομένων Αρχικο
my_repos=Αποθετήρια
show_more_repos=Περισσότερα αποθετήρια…
collaborative_repos=Συνεργατικά Αποθετήρια
-my_orgs=Οι Οργανισμοί Μου
+my_orgs=Οργανισμοί
my_mirrors=Τα Αντίγραφα Μου
view_home=Προβολή %s
search_repos=Βρείτε ένα αποθετήριο…
@@ -371,6 +377,10 @@ code_search_results=`Αποτελέσματα για «%s»`
code_last_indexed_at=Τελευταία δημιουργία ευρετηρίου: %s
relevant_repositories_tooltip=Τα αποθετήρια που είναι forks ή που δεν έχουν θέμα, εικονίδιο και περιγραφή είναι κρυμμένα.
relevant_repositories=Εμφανίζονται μόνο αποθετήρια που θεωρούμε «σχετικά» για εσάς. Εμφάνιση αποτελεσμάτων χωρίς φίλτρο.
+stars_one = %d αστέρι
+stars_few = %d αστέρια
+forks_one = %d fork
+forks_few = %d forks
[auth]
create_new_account=Δημιουργία Λογαριασμού
@@ -391,7 +401,7 @@ allow_password_change=Απαιτείται από το χρήστη να αλλ
reset_password_mail_sent_prompt=Ένα email επιβεβαίωσης έχει σταλεί στο %s. Για την ολοκλήρωση της διαδικασίας ανάκτησης του λογαριασμού σας, παρακαλώ ελέγξτε τα εισερχόμενα σας στις επόμενες %s.
active_your_account=Ενεργοποιήστε Το Λογαριασμό Σας
account_activated=Ο λογαριασμός έχει ενεργοποιηθεί
-prohibit_login=Απαγορεύεται η Σύνδεση
+prohibit_login=Δεν επιτρέπεται η σύνδεση
prohibit_login_desc=Δεν επιτρέπεται η σύνδεση στον λογαριασμό σας, παρακαλούμε επικοινωνήστε με το διαχειριστή σας.
resent_limit_prompt=Έχετε ήδη ζητήσει ένα email ενεργοποίησης πρόσφατα. Παρακαλώ περιμένετε 3 λεπτά και προσπαθήστε ξανά.
has_unconfirmed_mail=Γειά %s, η διεύθυνση ηλεκτρονικού ταχυδρομείου σας (%s) δεν έχει επιβεβαιωθεί ακόμα. Εάν δεν έχετε λάβει κάποιο email επιβεβαίωσης ή αν χρειάζεστε ένα νέο email επιβεβαίωσης, παρακαλώ πατήστε το παρακάτω κουμπί.
@@ -446,6 +456,8 @@ change_unconfirmed_email_error = Δεν ήταν δυνατή η αλλαγή τ
last_admin = Δεν μπορείτε να αφαιρέσετε τον μοναδικό διαχειριστή. Πρέπει να υπάρχει τουλάχιστον ένας διαχειριστής.
change_unconfirmed_email = Αν έχετε εισάγει μία λανθασμένη διεύθυνση email κατά την εγγραφή σας, μπορείτε να την αλλάξετε παρακάτω, έτσι ώστε να σας σταλεί εκ νέου ένα νέο email επιβεβαίωσης στην νέα σας διεύθυνση.
change_unconfirmed_email_summary = Αλλαγή της διεύθυνσης email στην οποία θα σταλεί το email επιβεβαίωσης.
+tab_signin = Είσοδος
+tab_signup = Εγγραφή
[mail]
view_it_on=Δείτε το στο %s
@@ -514,7 +526,7 @@ team_invite.text_2=Παρακαλώ κάντε κλικ στον παρακάτ
team_invite.text_3=Σημείωση: Αυτή η πρόσκληση προοριζόταν για %[1]s. Αν δεν περιμένατε αυτή την πρόσκληση, μπορείτε να αγνοήσετε αυτό το email.
admin.new_user.text = Παρακαλώ πατήστε εδώ για να διαχειριστείτε τον χρήστη μέσω του πίνακα διαχειριστών.
admin.new_user.subject = Εγγραφή νέου χρήστη %s
-admin.new_user.user_info = Πληροφορίες Χρήστη
+admin.new_user.user_info = Πληροφορίες χρήστη
[modal]
yes=Ναι
@@ -578,7 +590,7 @@ visit_rate_limit=Συναντήθηκε το όριο ρυθμού κατά τη
2fa_auth_required=Απαιτήθηκε ταυτοποίηση δύο παραγόντων κατά την απομακρυσμένη πρόσβαση.
org_name_been_taken=Το όνομα του οργανισμού χρησιμοποιείται ήδη.
team_name_been_taken=Το όνομα της ομάδας χρησιμοποιείται ήδη.
-team_no_units_error=Να επιτρέπεται η πρόσβαση σε τουλάχιστον μία ενότητα αποθετηρίου.
+team_no_units_error=Να επιτρέπεται η πρόσβαση σε τουλάχιστον μία μονάδα αποθετηρίου.
email_been_used=Η διεύθυνση email χρησιμοποιείται ήδη.
email_invalid=Η διεύθυνση email δεν είναι έγκυρη.
openid_been_used=Η διεύθυνση OpenID «%s» χρησιμοποιείται ήδη.
@@ -615,16 +627,19 @@ org_still_own_packages=Αυτός ο οργανισμός κατέχει ακό
target_branch_not_exist=Ο κλάδος προορισμού δεν υπάρχει.
username_error_no_dots = `: Μπορεί να περιέχει μόνο αλφαριθμητικούς χαρακτήρες ('0-9','a-z','A-Z'), παύλα ('-') και κάτω παύλα ('_'). Δεν μπορεί να αρχίζει ή να τελειώνει με μη αλφαριθμητικούς χαρακτήρες. Επίσης δεν επιτρέπεται η χρήση διαδοχικών μη αλφαριθμητικών χαρακτήρων.`
admin_cannot_delete_self = Δεν μπορείτε να διαγράψετε τον εαυτό σας όσο είστε διαχειριστής. Πρέπει πρώτα να αφαιρέσετε τα δικαιώματα διαχειριστή σας.
+unset_password = Ο χρήστης δεν έχει ορίσει κάποιον κωδικό.
+unsupported_login_type = Η μέθοδος με την οποίο γίνεται η σύνδεση δεν υποστηρίζει την διαγραφή λογαριασμών.
+required_prefix = Το εισαγώμενο κείμενο πρέπει να ξεκινά με «%s»
[user]
-change_avatar=Αλλαγή του avatar σας…
+change_avatar=Αλλαγή εικόνας προφίλ…
joined_on=Εγγράφηκε στις %s
repositories=Αποθετήρια
-activity=Δημόσια Δραστηριότητα
+activity=Δημόσια δραστηριότητα
followers_few=%d ακόλουθοι
-starred=Αγαπημένα Αποθετήρια
-watched=Ακολουθούμενα Αποθετήρια
+starred=Αγαπημένα αποθετήρια
+watched=Ακολουθούμενα αποθετήρια
code=Κώδικας
projects=Έργα
overview=Επισκόπηση
@@ -649,6 +664,8 @@ block_user.detail_1 = Ο χρήστης δεν θα ακολουθεί πια τ
block_user.detail_2 = Ο χρήστης δεν θα μπορεί να αλληλεπιδράσει με τα αποθετήριά σας, να δημιουργήσει ζητήματα ή να αφήσει σχόλια.
block_user.detail_3 = Ο χρήστης δεν θα μπορέσει να σας προσθέσει στα αποθετήριά του ως συνεργάτη και αντίστοιχα δεν θα μπορείτε να τον προσθέσετε στα δικά σας αποθετήρια.
block_user.detail = Επισημαίνεται πως αν αποκλείσετε αυτόν τον χρήστη, θα προκύψουν ταυτόχρονα και άλλες ενέργειες. Μερικές από αυτές:
+followers_one = %d ακόλουθος
+following_one = ακολουθεί %d
[settings]
profile=Προφίλ
@@ -656,30 +673,30 @@ account=Λογαριασμός
appearance=Εμφάνιση
password=Κωδικός πρόσβασης
security=Ασφάλεια
-avatar=Εικόνα
+avatar=Εικόνα προφίλ
ssh_gpg_keys=Κλειδιά SSH / GPG
social=Λογαριασμοί κοινωνικών δικτύων
applications=Εφαρμογές
orgs=Διαχείριση οργανισμών
repos=Αποθετήρια
delete=Διαγραφή λογαριασμού
-twofa=Πιστοποίηση Δύο Παραγόντων (TOTP)
+twofa=Πιστοποίηση δύο παραγόντων (TOTP)
account_link=Συνδεδεμένοι Λογαριασμοί
organization=Οργανισμοί
uid=UID
-webauthn=Πιστοποίηση Δύο Παραγόντων (Κλειδιά Ασφαλείας)
+webauthn=Πιστοποίηση δύο παραγόντων (Κλειδιά Ασφαλείας)
public_profile=Δημόσιο προφίλ
biography_placeholder=Πείτε μας λίγο για τον εαυτό σας! (Μπορείτε να γράψετε με Markdown)
location_placeholder=Μοιραστείτε την κατά προσέγγιση τοποθεσία σας με άλλους
profile_desc=Ελέγξτε πώς εμφανίζεται το προφίλ σας σε άλλους χρήστες. Η κύρια διεύθυνση email σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση κωδικού πρόσβασης και λειτουργίες Git που βασίζονται στο web.
password_username_disabled=Οι μη τοπικοί χρήστες δεν επιτρέπεται να αλλάξουν το όνομα χρήστη τους. Επικοινωνήστε με το διαχειριστή σας για περισσότερες λεπτομέρειες.
-full_name=Πλήρες Όνομα
+full_name=Πλήρες όνομα
website=Ιστοσελίδα
location=Τοποθεσία
-update_theme=Ενημέρωση Θέματος Διεπαφής
-update_profile=Ενημέρωση Προφίλ
-update_language=Ενημέρωση Γλώσσας
+update_theme=Αλλαγή θέματος διεπαφής
+update_profile=Ενημέρωση προφίλ
+update_language=Αλλαγή γλώσσας
update_language_not_found=Η γλώσσα «%s» δεν είναι διαθέσιμη.
update_language_success=Η γλώσσα έχει ενημερωθεί.
update_profile_success=Το προφίλ σας έχει ενημερωθεί.
@@ -700,31 +717,31 @@ comment_type_group_milestone=Ορόσημο
comment_type_group_assignee=Υπεύθυνος
comment_type_group_title=Τίτλος
comment_type_group_branch=Κλάδος
-comment_type_group_time_tracking=Καταγραφή Χρόνου
+comment_type_group_time_tracking=Καταγραφή χρόνου
comment_type_group_deadline=Προθεσμία
comment_type_group_dependency=Εξάρτηση
-comment_type_group_lock=Κατάσταση Κλειδώματος
+comment_type_group_lock=Κατάσταση κλειδώματος
comment_type_group_review_request=Αίτηση αξιολόγησης
comment_type_group_pull_request_push=Προστέθηκαν υποβολές
comment_type_group_project=Έργο
comment_type_group_issue_ref=Αναφορά ζητήματος
saved_successfully=Οι ρυθμίσεις σας αποθηκεύτηκαν επιτυχώς.
privacy=Απόρρητο
-keep_activity_private=Απόκρυψη δραστηριότητας από τη σελίδα προφίλ
-keep_activity_private_popup=Με αυτή την επιλογή η δραστηριότητα σας είναι ορατή μόνο σε εσάς και τους διαχειριστές
+keep_activity_private=Απόκρυψη δραστηριότητας από το προφίλ
+keep_activity_private_popup=Με αυτή την επιλογή η δραστηριότητα σας είναι ορατή μόνο σε εσάς και στους διαχειριστές
-lookup_avatar_by_mail=Αναζήτηση ενός Avatar με διεύθυνση email
-federated_avatar_lookup=Συνενωμένη Αναζήτηση Avatar
+lookup_avatar_by_mail=Αναζήτηση εικόνας προφίλ με διεύθυνση email
+federated_avatar_lookup=Αποκεντρωμένη αναζήτηση εικόνων προφίλ
enable_custom_avatar=Χρήση προσαρμοσμένης εικόνας προφίλ
-choose_new_avatar=Επιλέξτε νέα εικόνα
-update_avatar=Ενημέρωση Εικόνας
-delete_current_avatar=Διαγραφή Τρέχουσας Εικόνας
-uploaded_avatar_not_a_image=Το αρχείο που ανεβάσατε δεν είναι εικόνα.
-uploaded_avatar_is_too_big=Το μέγεθος του ανεβασμένου αρχείου (%d KiB) υπερβαίνει το μέγιστο μέγεθος (%d KiB).
-update_avatar_success=To avatar σας έχει ενημερωθεί.
-update_user_avatar_success=Το avatar του χρήστη ενημερώθηκε.
+choose_new_avatar=Επιλογή νέας εικόνας προφίλ
+update_avatar=Αλλαγή εικόνας
+delete_current_avatar=Διαγραφή τρέχουσας εικόνας
+uploaded_avatar_not_a_image=Το ανεβασμένο αρχείο δεν είναι εικόνα.
+uploaded_avatar_is_too_big=Το μέγεθος του ανεβασμένου αρχείου (%d KiB) υπερβαίνει το μέγιστο όριο μεγέθους (%d KiB).
+update_avatar_success=Η εικόνα προφίλ σας ενημερώθηκε.
+update_user_avatar_success=Η εικόνα προφίλ του χρήστη έχει ενημερωθεί.
-update_password=Ενημέρωση κωδικού πρόσβασης
+update_password=Αλλαγή κωδικού πρόσβασης
old_password=Τρέχων κωδικός πρόσβασης
new_password=Νέος κωδικός πρόσβασης
retype_new_password=Επιβεβαίωση νέου κωδικού
@@ -735,7 +752,7 @@ password_change_disabled=Οι μη τοπικοί χρήστες δεν μπορ
emails=Διευθύνσεις Email
manage_emails=Διαχείριση διευθύνσεων email
manage_themes=Επιλέξτε προεπιλεγμένο θέμα διεπαφής
-manage_openid=Διαχείριση Διευθύνσεων OpenID
+manage_openid=Διαχείριση διευθύνσεων OpenID
email_desc=Η κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση του κωδικού πρόσβασης και, εφόσον δεν είναι κρυμμένη, λειτουργίες Git στον ιστότοπο.
theme_desc=Αυτό θα είναι το προεπιλεγμένο θέμα διεπαφής σας σε όλη την ιστοσελίδα.
primary=Κύριο
@@ -756,27 +773,27 @@ openid_deletion_desc=Η κατάργηση αυτής της διεύθυνση
openid_deletion_success=Η διεύθυνση OpenID αφαιρέθηκε.
add_new_email=Προσθήκη νέας διεύθυνσης email
add_new_openid=Προσθήκη Νέου OpenID URI
-add_email=Προσθήκη Διεύθυνσης Email
+add_email=Προσθήκη διεύθυνσης email
add_openid=Προσθήκη OpenID URI
add_email_confirmation_sent=Ένα email επιβεβαίωσης έχει σταλεί στην διεύθυνση «%s». Για να επιβεβαιώσετε τη διεύθυνση email σας, παρακαλώ ελέγξτε τα εισερχόμενα σας μέσα σε %s.
add_email_success=Η νέα διεύθυνση email έχει προστεθεί.
email_preference_set_success=Οι προτιμήσεις email έχουν οριστεί επιτυχώς.
add_openid_success=Προστέθηκε η νέα διεύθυνση OpenID.
keep_email_private=Απόκρυψη διεύθυνσης email
-keep_email_private_popup=Αυτό θα κρύψει τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας από το προφίλ σας, καθώς και όταν κάνετε ένα pull request ή επεξεργαστείτε ένα αρχείο χρησιμοποιώντας την ιστοσελίδα. Οι υποβολές που ωθείτε δεν θα τροποποιηθούν. Χρησιμοποιήστε το %s στις υποβολές για να τις συσχετίσετε με το λογαριασμό σας.
+keep_email_private_popup=Αυτό θα κρύψει το email σας από το προφίλ σας, καθώς και όταν κάνετε ένα pull request ή επεξεργάζεστε ένα αρχείο μέσω της ιστοσελίδας. Οι υποβολές που έχετε ήδη ωθήσει δεν θα τροποποιηθούν. Χρησιμοποιήστε το %s στις υποβολές για να τις συσχετίσετε με το λογαριασμό σας.
openid_desc=Το OpenID σας επιτρέπει να αναθέσετε τον έλεγχο ταυτότητας σε έναν εξωτερικό πάροχο.
manage_ssh_keys=Διαχείριση κλειδιών SSH
manage_ssh_principals=Διαχείριση Των Αρχών Πιστοποιητικού SSH
manage_gpg_keys=Διαχείριση κλειδιών GPG
-add_key=Προσθήκη Κλειδιού
+add_key=Προσθήκη κλειδιού
ssh_desc=Αυτά τα δημόσια κλειδιά SSH θα συσχετιθούν με το λογαριασμό σας. Τα ιδιωτικά κλειδιά που τους αντιστοιχούν θα επιτρέπουν πλήρη πρόσβαση στα αποθετήριά σας. Ένα επιβεβαιωμένο κλειδί SSH μπορεί να χρησιμοποιηθεί για την υπογραφή των υποβολών (commits) σας.
principal_desc=Αυτές οι αρχές πιστοποιητικών SSH συνδέονται με το λογαριασμό σας και επιτρέπουν την πλήρη πρόσβαση στα αποθετήριά σας.
gpg_desc=Αυτά τα δημόσια κλειδιά GPG συσχετίζονται με το λογαριασμό σας και επιτρέπουν την επικύρωση των υποβολών (commits) σας. Κρατήστε τα ιδιωτικά κλειδιά σας ασφαλή, καθώς επιτρέπουν την υπογραφή των υποβολών (commits) εκ μέρους σας.
ssh_helper=Χρειάζεστε βοήθεια; Συμβουλευτείτε τον οδηγό του GitHub για να δημιουργήσετε τα δικά σας κλειδιά SSH ή να επιλύσετε κοινά προβλήματα που ίσως αντιμετωπίσετε με τη χρήση του SSH.
gpg_helper=Χρειάζεστε βοήθεια; Συμβουλευτείτε τον οδηγό του GitHub για το GPG.
-add_new_key=Προσθήκη SSH Κλειδιού
-add_new_gpg_key=Προσθήκη GPG Κλειδιού
+add_new_key=Προσθήκη κλειδιού SSH
+add_new_gpg_key=Προσθήκη κλειδιού GPG
key_content_ssh_placeholder=Αρχίζει με «ssh-ed25519», «ssh-rsa», «ecdsa-sha2-nistp256», «ecdsa-sha2-nistp384», «ecdsa-sha2-nistp521», «sk-ecdsa-sha2-nistp256@openssh.com», ή «sk-ssh-ed25519@openssh.com»
key_content_gpg_placeholder=Αρχίζει με «-----BEGIN PGP PUBLIC KEY BLOCK-----»
add_new_principal=Προσθήκη Αρχής (Principal)
@@ -787,7 +804,7 @@ gpg_key_id_used=Υπάρχει ήδη δημόσιο κλειδί GPG με το
gpg_no_key_email_found=Αυτό το κλειδί GPG δεν ταιριάζει με οποιαδήποτε ενεργοποιημένη διεύθυνση ηλεκτρονικού ταχυδρομείου που σχετίζεται με το λογαριασμό σας. Μπορεί ακόμα να προστεθεί, αν υπογράψετε το παρεχόμενο διακριτικό (token).
gpg_key_matched_identities=Ταυτότητες που ταιριάζουν:
gpg_key_matched_identities_long=Οι ενσωματωμένες ταυτότητες σε αυτό το κλειδί ταιριάζουν με τις ακόλουθες ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη. Οι υποβολές που ταιριάζουν με αυτές τις διευθύνσεις email μπορούν να επαληθευτούν με αυτό το κλειδί.
-gpg_key_verified=Επαληθευμένο Κλειδί
+gpg_key_verified=Επαληθευμένο κλειδί
gpg_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό (token) και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τις υποβολές που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη εκτός από οποιαδήποτε αντιστοιχισμένη ταυτότητα για αυτό το κλειδί.
gpg_key_verify=Επαλήθευση
gpg_invalid_token_signature=Το κλειδί GPG, η υπογραφή και το διακριτικό (token) δεν ταιριάζουν ή το διακριτικό (token) είναι παρωχημένο.
@@ -798,7 +815,7 @@ gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
gpg_token_signature=Θωρακισμένη υπογραφή GPG
key_signature_gpg_placeholder=Αρχίζει με «-----BEGIN PGP SIGNATURE-----»
verify_gpg_key_success=Το κλειδί GPG «%s» επαληθεύτηκε.
-ssh_key_verified=Επαληθευμένο Κλειδί
+ssh_key_verified=Επαληθευμένο κλειδί
ssh_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commits που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις ηλεκτρονικού ταχυδρομείου για αυτόν το χρήστη.
ssh_key_verify=Επαλήθευση
ssh_invalid_token_signature=Το παρεχόμενο κλειδί SSH, υπογραφή ή διακριτικό δεν ταιριάζει ή το διακριτικό έληξε.
@@ -817,8 +834,8 @@ add_key_success=Το κλειδί SSH «%s» προστέθηκε.
add_gpg_key_success=Το κλειδί GPG «%s» προστέθηκε.
add_principal_success=Προστέθηκε η αρχή πιστοποίησης SSH «%s».
delete_key=Διαγραφή
-ssh_key_deletion=Διαγραφή Κλειδιού SSH
-gpg_key_deletion=Διαγραφή Κλειδιού GPG
+ssh_key_deletion=Διαγραφή κλειδιού SSH
+gpg_key_deletion=Διαγραφή κλειδιού GPG
ssh_principal_deletion=Διαγραφή Αρχών Πιστοποιητικού SSH
ssh_key_deletion_desc=Η διαγραφή ενός κλειδιού SSH ανακαλεί την πρόσβασή του στο λογαριασμό σας. Συνέχεια;
gpg_key_deletion_desc=Η διαγραφή ενός κλειδιού GPG απο-επαληθεύει τις υποβολές που έχουν υπογραφεί από αυτό. Συνέχεια;
@@ -850,11 +867,11 @@ manage_access_token=Διαχείριση διακριτικών πρόσβαση
generate_new_token=Δημιουργία νέου διακριτικού (token)
tokens_desc=Αυτά τα διακριτικά (tokens) παρέχουν πρόσβαση στο λογαριασμό σας μέσω του API του Forgejo.
token_name=Όνομα διακριτικού
-generate_token=Δημιουργία Διακριτικού
+generate_token=Δημιουργία διακριτικού
generate_token_success=Το νέο διακριτικό σας έχει δημιουργηθεί. Αντιγράψτε το τώρα καθώς δεν θα εμφανιστεί ξανά.
generate_token_name_duplicate=Το %s χρησιμοποιείται ήδη ως όνομα εφαρμογής. Παρακαλούμε χρησιμοποιήστε ένα νέο.
delete_token=Διαγραφή
-access_token_deletion=Διαγραφή Διακριτικού Πρόσβασης
+access_token_deletion=Διαγραφή διακριτικού πρόσβασης
access_token_deletion_cancel_action=Άκυρο
access_token_deletion_confirm_action=Διαγραφή
access_token_deletion_desc=Η διαγραφή ενός διακριτικού θα ανακαλέσει οριστικά την πρόσβαση στο λογαριασμό σας για εφαρμογές που το χρησιμοποιούν. Συνέχεια;
@@ -863,9 +880,9 @@ repo_and_org_access=Πρόσβαση στο Αποθετήριο και Οργα
permissions_public_only=Δημόσια μόνο
permissions_access_all=Όλα (δημόσια, ιδιωτικά, και περιορισμένα)
select_permissions=Επιλέξτε δικαιώματα
-permission_no_access=Καμία Πρόσβαση
+permission_no_access=Καμία πρόσβαση
permission_read=Αναγνωσμένες
-permission_write=Ανάγνωση και Εγγραφή
+permission_write=Ανάγνωση και εγγραφή
access_token_desc=Τα επιλεγμένα δικαιώματα διακριτικών περιορίζουν την άδεια μόνο στις αντίστοιχες διαδρομές API. Διαβάστε το εγχειρίδιο για περισσότερες πληροφορίες.
at_least_one_permission=Πρέπει να επιλέξετε τουλάχιστον ένα δικαίωμα για να δημιουργήσετε ένα διακριτικό
permissions_list=Δικαιώματα:
@@ -877,7 +894,7 @@ remove_oauth2_application=Αφαίρεση Εφαρμογής Oauth2
remove_oauth2_application_desc=Η αφαίρεση μιας εφαρμογής OAuth2 θα ανακαλέσει την πρόσβαση σε όλα τα υπογεγραμμένα διακριτικά πρόσβασης. Συνέχεια;
remove_oauth2_application_success=Η εφαρμογή έχει διαγραφεί.
create_oauth2_application=Δημιουργία νέας εφαρμογής OAuth2
-create_oauth2_application_button=Δημιουργία Εφαρμογής
+create_oauth2_application_button=Δημιουργία εφαρμογής
create_oauth2_application_success=Δημιουργήσατε επιτυχώς μια νέα εφαρμογή OAuth2.
update_oauth2_application_success=Ενημερώσατε την εφαρμογή OAuth2 επιτυχώς.
oauth2_application_name=Όνομα εφαρμογής
@@ -885,19 +902,19 @@ oauth2_confidential_client=Εμπιστευτικός Πελάτης. Επιλέ
oauth2_redirect_uris=URI Ανακατεύθυνσης. Χρησιμοποιήστε μια νέα γραμμή για κάθε URI.
save_application=Αποθήκευση
oauth2_client_id=Ταυτότητα Πελάτη
-oauth2_client_secret=Μυστικό Πελάτη
-oauth2_regenerate_secret=Αναδημιουργία Μυστικού
+oauth2_client_secret=Μυστικό πελάτη
+oauth2_regenerate_secret=Δημιουργία νέου μυστικού
oauth2_regenerate_secret_hint=Χάσατε το μυστικό σας;
oauth2_client_secret_hint=Το μυστικό δε θα εμφανιστεί ξανά αν κλείσετε ή ανανεώσετε αυτή τη σελίδα. Παρακαλώ βεβαιωθείτε ότι το έχετε αποθηκεύσει.
oauth2_application_edit=Επεξεργασία
oauth2_application_create_description=Οι εφαρμογές OAuth2 δίνει πρόσβαση στην εξωτερική εφαρμογή σας σε λογαριασμούς χρηστών σε αυτή την υπηρεσία.
oauth2_application_remove_description=Αφαιρώντας μια εφαρμογή OAuth2 θα αποτραπεί η πρόσβαση αυτής, σε εξουσιοδοτημένους λογαριασμούς χρηστών σε αυτή την υπηρεσία. Συνέχεια;
-oauth2_application_locked=Το Forgejo κάνει προεγγραφή σε μερικές εφαρμογές OAuth2 κατά την εκκίνηση αν είναι ενεργοποιημένες στις ρυθμίσεις. Για την αποφυγή απροσδόκητης συμπεριφοράς, αυτές δεν μπορούν ούτε να επεξεργαστούν ούτε να καταργηθούν. Παρακαλούμε ανατρέξτε στην τεκμηρίωση OAuth2 για περισσότερες πληροφορίες.
+oauth2_application_locked=Το Forgejo κάνει προεγγραφή σε μερικές εφαρμογές OAuth2 κατά την εκκίνηση του, εφόσον αυτές έχουν ενεργοποιηθεί στις ρυθμίσεις. Αυτές δεν μπορούν ούτε να επεξεργαστούν ούτε να καταργηθούν, έτσι ώστε να αποφευχθούν απροσδόκητα προβλήματα. Παρακαλούμε ανατρέξτε στην τεκμηρίωση OAuth2 για περισσότερες πληροφορίες.
authorized_oauth2_applications=Εξουσιοδοτημένες εφαρμογές OAuth2
authorized_oauth2_applications_description=Έχετε χορηγήσει πρόσβαση στον προσωπικό σας λογαριασμό σε αυτές τις εφαρμογές τρίτων. Παρακαλείσθε να ανακαλέσετε την πρόσβαση για εφαρμογές που δεν χρειάζεστε πλέον.
revoke_key=Ανάκληση
-revoke_oauth2_grant=Ανάκληση Πρόσβασης
+revoke_oauth2_grant=Ανάκληση πρόσβασης
revoke_oauth2_grant_description=Αν ανακαλέσετε την πρόσβαση αυτής της ανεξάρτητης («third-party») εφαρμογής, θα ανακληθεί ταυτόχρονα και η πρόσβασή της στα δεδομένα σας. Είστε βέβαιοι;
revoke_oauth2_grant_success=Η πρόσβαση ανακλήθηκε επιτυχώς.
@@ -906,9 +923,9 @@ twofa_recovery_tip=Αν χάσετε τη συσκευή σας, θα είστε
twofa_is_enrolled=Ο λογαριασμός σας είναι εγγεγραμμένος στην πιστοποίηση δύο παραγόντων.
twofa_not_enrolled=Ο λογαριασμός σας δεν είναι εγγεγραμμένος στην πιστοποιήση δύο παραγόντων.
twofa_disable=Απενεργοποίηση πιστοποίησης δύο παραγόντων
-twofa_scratch_token_regenerate=Αναδημιουργία Διακριτικού Μίας Χρήσης
+twofa_scratch_token_regenerate=Δημιουργία νέου κλειδιού μίας χρήσης
twofa_scratch_token_regenerated=Το κλειδί ανάκτησης μιας χρήσης είναι τώρα %s. Αποθηκεύστε το σε ασφαλές μέρος, καθώς δε θα εμφανιστεί ξανά.
-twofa_enroll=Εγγραφή στην πιστοποίηση δύο παραγόντων
+twofa_enroll=Ενεργοποίηση πιστοποίησης δύο παραγόντων
twofa_disable_note=Αν χρειαστεί, θα μπορέσετε να απενεργοποιήσετε την πιστοποίηση δύο παραγόντων μεταγενέστερα.
twofa_disable_desc=Η απενεργοποίηση της πιστοποίησης δύο παραγόντων θα καταστήσει τον λογαριασμό σας λιγότερο ασφαλή. Είστε βέβαιοι;
regenerate_scratch_token_desc=Αν χάσατε το διακριτικό μίας χρήσης σας ή το έχετε ήδη χρησιμοποιήσει για να συνδεθείτε μπορείτε να το επαναφέρετε εδώ.
@@ -923,7 +940,7 @@ twofa_failed_get_secret=Αποτυχία λήψης μυστικού.
webauthn_desc=Τα κλειδιά ασφαλείας είναι συσκευές που περιέχουν κρυπτογραφικά κλειδιά. Μπορούν να χρησιμοποιηθούν για την πιστοποίηση δύο παραγόντων. Τα κλειδιά ασφαλείας πρέπει να συνάδουν με τις προδιαγραφές που ορίζει το πρότυπο WebAuthn.
webauthn_register_key=Προσθήκη κλειδιού ασφαλείας
webauthn_nickname=Ψευδώνυμο
-webauthn_delete_key=Αφαίρεση Κλειδιού Ασφαλείας
+webauthn_delete_key=Αφαίρεση κλειδιού ασφαλείας
webauthn_delete_key_desc=Αν αφαιρέσετε ένα κλειδί ασφαλείας δεν μπορείτε πλέον να συνδεθείτε με αυτό. Συνέχεια;
webauthn_key_loss_warning=Αν χάσετε τα κλειδιά ασφαλείας σας, θα χάσετε την πρόσβαση στο λογαριασμό σας.
webauthn_alternative_tip=Μπορεί να θέλετε να ρυθμίσετε μια πρόσθετη μέθοδο ταυτοποίησης.
@@ -941,18 +958,18 @@ hooks.desc=Προσθήκη webhooks που θα ενεργοποιούνται
orgs_none=Δεν είστε μέλος σε κάποιο οργανισμό.
repos_none=Δεν σας ανήκει κανένα κάποιο αποθετήριο.
-delete_account=Διαγραφή Του Λογαριασμού Σας
+delete_account=Διαγραφή του λογαριασμού σας
delete_prompt=Αυτή η ενέργεια θα διαγράψει μόνιμα το λογαριασμό σας. ΔΕΝ ΘΑ ΜΠΟΡΕΙ να επανέλθει.
delete_with_all_comments=Ο λογαριασμός σας είναι νεότερος από %s. Για να αποφύγετε τα σχόλια φαντάσματα, όλα τα σχόλια σε ζητήματα/PR θα διαγραφούν από αυτόν.
-confirm_delete_account=Επιβεβαίωση Διαγραφής
-delete_account_title=Διαγραφή Λογαριασμού Χρήστη
+confirm_delete_account=Επιβεβαίωση διαγραφής
+delete_account_title=Διαγραφή λογαριασμού χρήστη
delete_account_desc=Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα αυτό τον λογαριασμό;
-email_notifications.enable=Ενεργοποίηση Ειδοποιήσεων Μέσω Email
-email_notifications.onmention=Email Μόνο κατά την Αναφορά
-email_notifications.disable=Απενεργοποίηση Ειδοποιήσεων μέσω Email
-email_notifications.submit=Ορισμός Προτιμότερου Email
-email_notifications.andyourown=Και Τις Δικές Σας Ειδοποιήσεις
+email_notifications.enable=Ενεργοποίηση ειδοποιήσεων email
+email_notifications.onmention=Να λαμβάνω email μόνο όταν με αναφέρουν
+email_notifications.disable=Απενεργοποίηση ειδοποιήσεων email
+email_notifications.submit=Ορισμός κύριου email
+email_notifications.andyourown=Και τις δικιές σας ειδοποιήσεις
visibility=Ορατότητα χρήστη
visibility.public=Δημόσια
@@ -967,6 +984,14 @@ user_unblock_success = Η άρση αποκλεισμού του χρήστη ή
change_password = Αλλαγή κωδικού πρόσβασης
blocked_users = Αποκλεισμένοι χρήστες
user_block_success = Ο αποκλεισμός του χρήστη ήταν επιτυχής.
+additional_repo_units_hint = Να γίνεται ενθάρρυνση προσθήκης μονάδων σε αποθετήρια
+pronouns = Αντωνυμίες
+pronouns_custom = Κάποια άλλη προτίμηση
+pronouns_unspecified = Απροσδιόριστες
+hints = Συμβουλές
+additional_repo_units_hint_description = Εμφάνιση κουμπιού «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
+update_hints = Ενημέρωση συμβουλών
+update_hints_success = Οι συμβουλές ενημερώθηκαν.
[repo]
new_repo_helper=Ένα αποθετήριο περιέχει όλα τα αρχεία έργου, συμπεριλαμβανομένου του ιστορικού εκδόσεων. Ήδη φιλοξενείται αλλού; Μετεγκατάσταση αποθετηρίου.
@@ -983,10 +1008,10 @@ visibility=Ορατότητα
visibility_description=Μόνο ο ιδιοκτήτης ή τα μέλη του οργανισμού εάν έχουν δικαιώματα, θα είναι σε θέση να το δουν.
visibility_helper=Αλλαγή ορατότητας σε «Ιδιωτικό»
visibility_helper_forced=Ο διαχειριστής σας αναγκάζει τα νέα αποθετήρια να είναι ιδιωτικά.
-visibility_fork_helper=(Αλλάζοντας αυτό θα επηρεάσει όλα τα forks.)
+visibility_fork_helper=(Η αλλαγή της ρύθμισης αυτής θα επηρεάσει και όλα τα forks.)
clone_helper=Χρειάζεστε βοήθεια για τη κλωνοποίηση; Επισκεφθείτε τη Βοήθεια.
-fork_repo=Δημιουργία ενός Fork
-fork_from=Fork Από Το
+fork_repo=Δημιουργία Fork
+fork_from=Fork του
already_forked=Έχετε ήδη κάνει fork το %s
fork_to_different_account=Fork σε διαφορετικό λογαριασμό
fork_visibility_helper=Η ορατότητα ενός fork αποθετηρίου δεν μπορεί να αλλάξει.
@@ -999,13 +1024,13 @@ download_zip=Λήψη ZIP
download_tar=Λήψη TAR.GZ
download_bundle=Κατεβάστε Το ΔΕΜΑ
generate_repo=Δημιουργία αποθετηρίου
-generate_from=Δημιουργία Από
+generate_from=Δημιουργία από
repo_desc=Περιγραφή
repo_desc_helper=Εισάγετε μια σύντομη περιγραφή (προαιρετικό)
repo_lang=Γλώσσα
repo_gitignore_helper=Επιλέξτε πρότυπα .gitignore.
repo_gitignore_helper_desc=Επιλέξτε ποια αρχεία δεν θα παρακολουθείτε από μια λίστα προτύπων για κοινές γλώσσες προγραμματισμού. Τυπικά αντικείμενα που δημιουργούνται από τα εργαλεία κατασκευής κάθε γλώσσας περιλαμβάνονται ήδη στο .gitignore.
-issue_labels=Σήματα Ζητήματος
+issue_labels=Σήματα ζητημάτων
issue_labels_helper=Επιλέξτε ένα σύνολο σημάτων ζητημάτων.
license=Άδεια
license_helper=Επιλέξτε ένα αρχείο άδειας.
@@ -1013,14 +1038,14 @@ license_helper_desc=Μια άδεια διέπει τι άλλοι μπορού
readme=README
readme_helper=Επιλέξτε ένα πρότυπο αρχείου README.
readme_helper_desc=Αυτό είναι το μέρος όπου μπορείτε να γράψετε μια πλήρη περιγραφή για το έργο σας.
-auto_init=Αρχικοποίηση Αποθετηρίου (Προσθέτει .gitignore, License και README)
+auto_init=Αρχικοποίηση αποθετηρίου (Προσθήκη .gitignore, άδειας χρήσης και README)
trust_model_helper=Επιλέξτε ένα μοντέλο εμπιστοσύνης για την επαλήθευση υπογραφής. Πιθανές επιλογές είναι:
trust_model_helper_collaborator=Συνεργάτης: Εμπιστοσύνη υπογραφών από συνεργάτες
trust_model_helper_committer=Υποβολέας: Εμπιστοσύνη των υπογραφών που ταιριάζουν με τους υποβολείς
trust_model_helper_collaborator_committer=Συνεργάτης+Υποβολέας: Εμπιστοσύνη των υπογραφών από συνεργάτες που ταιριάζουν με τον υποβολέα
trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμένου μοντέλου εμπιστοσύνης για αυτήν την εγκατάσταση
create_repo=Δημιουργία αποθετηρίου
-default_branch=Προεπιλεγμένος Κλάδος
+default_branch=Προεπιλεγμένος κλάδος
default_branch_label=προεπιλογή
default_branch_helper=Ο προεπιλεγμένος κλάδος είναι ο βασικός κλάδος για pull requests και υποβολές κώδικα.
mirror_prune=Καθαρισμός
@@ -1028,7 +1053,7 @@ mirror_prune_desc=Αφαίρεση παρωχημένων αναφορών απ
mirror_interval=Διάστημα ανανέωσης ειδώλου (έγκυρες μονάδες ώρας είναι "h", "m", "s"). 0 για απενεργοποίηση του αυτόματου συγχρονισμού. (Ελάχιστο διάστημα: %s)
mirror_interval_invalid=Το χρονικό διάστημα του ειδώλου δεν είναι έγκυρο.
mirror_sync_on_commit=Συγχρονισμός κατά την ώθηση
-mirror_address=Κλωνοποίηση Από Το URL
+mirror_address=Κλωνοποίηση από το URL
mirror_address_desc=Τοποθετήστε όλα τα απαιτούμενα διαπιστευτήρια στην ενότητα Εξουσιοδότηση.
mirror_address_url_invalid=Η παρεχόμενη διεύθυνση URL δεν είναι έγκυρη. Πρέπει να κάνετε escape όλα τα στοιχεία του url σωστά.
mirror_address_protocol_invalid=Η παρεχόμενη διεύθυνση URL δεν είναι έγκυρη. Μόνο οι τοποθεσίες http(s):// ή git:// μπορούν να χρησιμοποιηθούν για τη δημιουργία ειδώλου.
@@ -1036,7 +1061,7 @@ mirror_lfs=Large File Storage (LFS)
mirror_lfs_desc=Ενεργοποίηση αντικατοπτρισμού δεδομένων LFS.
mirror_lfs_endpoint=Άκρο LFS
mirror_lfs_endpoint_desc=Ο συγχρονισμός θα προσπαθήσει να χρησιμοποιήσει το url κλωνοποίησης για να καθορίσει τον διακομιστή LFS. Μπορείτε επίσης να καθορίσετε μια άλλη διεύθυνση αν τα δεδομένα LFS του αποθετηρίου αποθηκεύονται κάπου αλλού.
-mirror_last_synced=Τελευταίος Συγχρονισμός
+mirror_last_synced=Τελευταίος συγχρονισμός
mirror_password_placeholder=(Χωρίς αλλαγή)
mirror_password_blank_placeholder=(Μη ορισμένο)
mirror_password_help=Αλλάξτε το όνομα χρήστη για να διαγράψετε έναν αποθηκευμένο κωδικό πρόσβασης.
@@ -1048,7 +1073,7 @@ reactions_more=και %d περισσότερα
unit_disabled=Ο διαχειριστής του ιστότοπου έχει απενεργοποιήσει αυτήν την ενότητα αποθετηρίου.
language_other=Άλλο
adopt_search=Εισάγετε όνομα χρήστη για αναζήτηση μη υιοθετημένων αποθετηρίων... (αφήστε κενό για να βρείτε όλα)
-adopt_preexisting_label=Υιοθέτηση Αρχείων
+adopt_preexisting_label=Υιοθέτηση αρχείων
adopt_preexisting=Υιοθετήστε τα προϋπάρχοντα αρχεία
adopt_preexisting_content=Δημιουργία αποθετηρίου από %s
adopt_preexisting_success=Υιοθετήθηκαν αρχεία και δημιουργήθηκε το αποθετήριο από %s
@@ -1065,9 +1090,9 @@ tree_path_not_found_commit=Η διαδρομή %[1]s δεν υπάρχει στ
tree_path_not_found_branch=Η διαδρομή %[1]s δεν υπάρχει στον κλάδο %[2]s
tree_path_not_found_tag=Η διαδρομή %[1]s δεν υπάρχει στην ετικέτα %[2]s
-transfer.accept=Αποδοχή Μεταφοράς
+transfer.accept=Αποδοχή μεταφοράς
transfer.accept_desc=`Μεταφορά στο «%s»`
-transfer.reject=Απόρριψη Μεταφοράς
+transfer.reject=Απόρριψη μεταφοράς
transfer.reject_desc=`Ακύρωση μεταφοράς στο «%s»`
transfer.no_permission_to_accept=Δεν έχετε άδεια να αποδεχτείτε αυτή τη μεταφορά.
transfer.no_permission_to_reject=Δεν έχετε άδεια να απορρίψετε αυτή τη μεταφορά.
@@ -1078,14 +1103,14 @@ desc.template=Πρότυπο
desc.internal=Εσωτερικό
desc.archived=Αρχειοθετημένο
-template.items=Αντικείμενα Προτύπου
-template.git_content=Περιεχόμενο Git (Προεπιλεγμένος Κλάδος)
-template.git_hooks=Git Hooks
-template.git_hooks_tooltip=Δεν μπορείτε να τροποποιήσετε ή να καταργήσετε τα Άγκιστρα Git αφού προστεθούν. Επιλέξτε αυτό μόνο αν εμπιστεύεστε το πρότυπο αποθετήριο.
+template.items=Αντικείμενα προτύπου
+template.git_content=Περιεχόμενο Git (Προεπιλεγμένος κλάδος)
+template.git_hooks=Git hooks
+template.git_hooks_tooltip=Δεν θα μπορέσετε να αφαιρέσετε ή να τροποποιήσετε τα Git hook αφού τα έχετε προσθέσει. Επιλέξτε την ρύθμιση αυτή μόνο αν εμπιστεύεστε το πρότυπο αποθετήριο.
template.webhooks=Webhooks
template.topics=Θέματα
template.avatar=Εικόνα
-template.issue_labels=Σήματα Ζητήματος
+template.issue_labels=Σήματα ζητημάτων
template.one_item=Πρέπει να επιλέξετε τουλάχιστον ένα αντικείμενο στο πρότυπο
template.invalid=Πρέπει να επιλέξετε ένα πρότυπο αποθετήριο
@@ -1113,10 +1138,10 @@ migrate_items_wiki=Wiki
migrate_items_milestones=Ορόσημα
migrate_items_labels=Σήματα
migrate_items_issues=Ζητήματα
-migrate_items_pullrequests=Pull Requests
-migrate_items_merge_requests=Merge Requests
+migrate_items_pullrequests=Pull requests
+migrate_items_merge_requests=Merge requests
migrate_items_releases=Κυκλοφορίες
-migrate_repo=Μεταφορά Αποθετηρίου
+migrate_repo=Μεταφορά αποθετηρίου
migrate.clone_address=Μεταφορά / Κλωνοποίηση από το URL
migrate.clone_address_desc=Το HTTP(S) ή το Git URL «κλωνοποίησης» ενός υπάρχοντος αποθετηρίου
migrate.github_token_desc=Μπορείτε να βάλετε ένα ή περισσότερα διακριτικά εδώ, χωρισμένα με κόμμα, για να κάνετε τη μετεγκατάσταση πιο γρήγορα, λόγω του ορίου ρυθμού του GitHub API. ΠΡΟΣΟΧΗ: Η κατάχρηση αυτής της δυνατότητας μπορεί να παραβιάσει την πολιτική του παρόχου υπηρεσιών και να οδηγήσει σε αποκλεισμό του λογαριασμού σας.
@@ -1126,7 +1151,7 @@ migrate.permission_denied_blocked=Δεν μπορείτε να εισαγάγε
migrate.invalid_local_path=Η τοποθεσία αρχείου δεν είναι έγκυρη. Το αρχείο δεν υπάρχει ή δεν είναι φάκελος.
migrate.invalid_lfs_endpoint=Η διεύθυνση LFS δεν είναι έγκυρο.
migrate.failed=Η μεταφορά απέτυχε: %v
-migrate.migrate_items_options=Το Διακριτικό Πρόσβασης απαιτείται για τη μεταφορά πρόσθετων στοιχείων
+migrate.migrate_items_options=Το διακριτικό πρόσβασης (token) είναι απαραίτητο για τη μεταφορά πρόσθετων στοιχείων
migrated_from=Μεταφέρθηκε από %[2]s
migrated_from_fake=Μεταφέρθηκε από %[1]s
migrate.migrate=Μεταφορά από το %s
@@ -1142,19 +1167,19 @@ migrate.gogs.description=Μεταφορά δεδομένων από το notabug
migrate.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev.
migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com.
migrate.gitbucket.description=Μεταφορά δεδομένων από διακομιστές GitBucket.
-migrate.migrating_git=Μεταφορά Δεδομένων Git
-migrate.migrating_topics=Μεταφορά Θεμάτων
-migrate.migrating_milestones=Μετανάστευση Ορόσημων
-migrate.migrating_labels=Μεταφορά Σημάτων
-migrate.migrating_releases=Μεταφορά Κυκλοφοριών
-migrate.migrating_issues=Μετανάστευση Θεμάτων
-migrate.migrating_pulls=Μεταφορά Pull Requests
-migrate.cancel_migrating_title=Ακύρωση Μεταφοράς
+migrate.migrating_git=Τα δεδομένα Git μεταφέρονται
+migrate.migrating_topics=Τα θέματα μεταφέρονται
+migrate.migrating_milestones=Τα ορόσημα μεταφέρονται
+migrate.migrating_labels=Τα σήματα μεταφέρονται
+migrate.migrating_releases=Οι κυκλοφορίες μεταφέρονται
+migrate.migrating_issues=Τα ζητήματα μεταφέρονται
+migrate.migrating_pulls=Μεταφέρονται τα pull requests
+migrate.cancel_migrating_title=Ακύρωση μεταφοράς
migrate.cancel_migrating_confirm=Θέλετε να ακυρώσετε αυτή τη μεταφορά;
mirror_from=είδωλο του
forked_from=forked από
-generated_from=παράγονται από
+generated_from=παραγμένο από
fork_from_self=Δεν μπορείτε να κάνετε fork σε ένα αποθετήριο που κατέχετε.
fork_guest_user=Συνδεθείτε για να κάνετε fork αυτό το αποθετήριο.
watch_guest_user=Συνδεθείτε για να παρακολουθήσετε αυτό το αποθετήριο.
@@ -1164,11 +1189,11 @@ watch=Παρακολούθηση
unstar=Όχι Αστέρι
star=Αστέρι
fork=Fork
-download_archive=Λήψη Αποθετηρίου
-more_operations=Περισσότερες Λειτουργίες
+download_archive=Λήψη αποθετηρίου
+more_operations=Περισσότερες λειτουργίες
-no_desc=Χωρίς Περιγραφή
-quick_guide=Γρήγορος Οδηγός
+no_desc=Χωρίς περιγραφή
+quick_guide=Γρήγορος οδηγός
clone_this_repo=Κλωνοποίηση αυτού του αποθετηρίου
cite_this_repo=Αναφορά σε αυτό το αποθετήριο
create_new_repo_command=Δημιουργία νέου αποθετηρίου στη γραμμή εντολών
@@ -1186,7 +1211,7 @@ find_tag=Εύρεση ετικέτας
branches=Κλάδοι
tags=Ετικέτες
issues=Ζητήματα
-pulls=Pull Requests
+pulls=Pull requests
project_board=Έργα
packages=Πακέτα
actions=Actions
@@ -1205,9 +1230,9 @@ tagged_this=πρόσθεσε ετικέτα για το
file.title=%s στο %s
file_raw=Ακατέργαστο
file_history=Ιστορικό
-file_view_source=Προβολή Πηγαίου
-file_view_rendered=Προβολή Απόδοσης
-file_view_raw=Προβολή Ακατέργαστου
+file_view_source=Προβολή πηγαίου κώδικα
+file_view_rendered=Προβολή προεπισκόπησης
+file_view_raw=Προβολή ακατέργαστου
file_permalink=Permalink
file_too_large=Το αρχείο είναι πολύ μεγάλο για να εμφανιστεί.
invisible_runes_header=`Αυτό το αρχείο περιέχει αόρατους χαρακτήρες Unicode `
@@ -1220,16 +1245,16 @@ ambiguous_character=`ο %[1]c [U+%04[1]X] μπορεί να μπερδευτεί
escape_control_characters=Escape
unescape_control_characters=Unescape
-file_copy_permalink=Αντιγραφή Permalink
-view_git_blame=Προβολή Git Blame
+file_copy_permalink=Αντιγραφή permalink
+view_git_blame=Προβολή git blame
video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video».
audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio».
stored_lfs=Αποθηκεύτηκε με το Git LFS
symbolic_link=Symbolic link
-executable_file=Εκτελέσιμο Αρχείο
-commit_graph=Γράφημα Υποβολών
+executable_file=Εκτελέσιμο αρχείο
+commit_graph=Γράφημα υποβολών
commit_graph.select=Επιλογή κλάδων
-commit_graph.hide_pr_refs=Απόκρυψη Pull Requests
+commit_graph.hide_pr_refs=Απόκρυψη pull request
commit_graph.monochrome=Μονόχρωμο
commit_graph.color=Έγχρωμο
commit.contained_in=Αυτή η υποβολή περιλαμβάνεται σε:
@@ -1242,26 +1267,26 @@ line=γραμμή
lines=γραμμές
from_comment=(σχόλιο)
-editor.add_file=Προσθήκη Αρχείου
-editor.new_file=Νέο Αρχείο
-editor.upload_file=Ανέβασμα Αρχείου
-editor.edit_file=Επεξεργασία Αρχείου
-editor.preview_changes=Προεπισκόπηση Αλλαγών
+editor.add_file=Προσθήκη αρχείου
+editor.new_file=Νέο αρχείο
+editor.upload_file=Ανέβασμα αρχείου
+editor.edit_file=Επεξεργασία αρχείου
+editor.preview_changes=Προεπισκόπηση αλλαγών
editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web.
editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web.
-editor.edit_this_file=Επεξεργασία Αρχείου
+editor.edit_this_file=Επεξεργασία αρχείου
editor.this_file_locked=Το αρχείο είναι κλειδωμένο
editor.must_be_on_a_branch=Πρέπει να βρίσκεστε σε έναν κλάδο για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
editor.fork_before_edit=Πρέπει να κάνετε fork αυτό το αποθετήριο για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
-editor.delete_this_file=Διαγραφή Αρχείου
+editor.delete_this_file=Διαγραφή αρχείου
editor.must_have_write_access=Πρέπει να έχετε πρόσβαση εγγραφής για να κάνετε ή να προτείνετε αλλαγές σε αυτό το αρχείο.
editor.file_delete_success=Το αρχείο «%s» έχει διαγραφεί.
editor.name_your_file=Ονομάστε το αρχείο σας…
editor.filename_help=Προσθέστε έναν φάκελο πληκτρολογώντας μια κάθετο ('/') και το όνομα του φακέλου. Αφαιρέστε έναν φάκελο πληκτρολογώντας ένα backspace στην αρχή του πεδίου.
editor.or=ή
editor.cancel_lower=Ακύρωση
-editor.commit_signed_changes=Υποβολή Υπογεγραμμένων Αλλαγών
-editor.commit_changes=Υποβολή Αλλαγών
+editor.commit_signed_changes=Υποβολή υπογεγραμμένων αλλαγών
+editor.commit_changes=Υποβολή αλλαγών
editor.add_tmpl=Προσθήκη «»
editor.add=Προσθήκη %s
editor.update=Ενημέρωση %s
@@ -1288,15 +1313,15 @@ editor.file_is_a_symlink=`Το «%s» είναι συμβολικός σύνδε
editor.filename_is_a_directory=Το όνομα αρχείου «%s» χρησιμοποιείται ήδη ως όνομα φακέλου σε αυτό το αποθετήριο.
editor.file_editing_no_longer_exists=Το αρχείο «%s», το οποίο επεξεργάζεστε, δεν υπάρχει πλέον σε αυτό το αποθετήριο.
editor.file_deleting_no_longer_exists=Το αρχείο «%s», το οποίο διαγράφεται, δεν υπάρχει πλέον σε αυτό το αποθετήριο.
-editor.file_changed_while_editing=Τα περιεχόμενα του αρχείου άλλαξαν από τότε που ξεκίνησε η επεξεργασία. Κάντε κλικ εδώ για να τα δείτε ή Υποβολή Αλλαγών ξανά για να τα αντικαταστήσετε.
+editor.file_changed_while_editing=Προέκυψαν κάποιες αλλαγές στα περιεχόμενα του αρχείου από τότε που ξεκινήσατε να τα επεξεργάζεστε. Κάντε κλικ εδώ για να τα δείτε ή ξανακάντε μία υποβολή των αλλαγών σας για να τις αντικαταστήσετε.
editor.file_already_exists=Υπάρχει ήδη ένα αρχείο με το όνομα «%s» σε αυτό το αποθετήριο.
editor.commit_empty_file_header=Υποβολή ενός κενού αρχείου
editor.commit_empty_file_text=Το αρχείο που πρόκειται να υποβληθεί είναι κενό. Συνέχεια;
editor.no_changes_to_show=Δεν υπάρχουν αλλαγές για εμφάνιση.
editor.fail_to_update_file=Αποτυχία ενημέρωσης/δημιουργίας του αρχείου «%s».
editor.fail_to_update_file_summary=Μήνυμα Σφάλματος:
-editor.push_rejected_no_message=Η αλλαγή απορρίφθηκε από το διακομιστή χωρίς κάποιο μήνυμα. Παρακαλώ ελέγξτε τα Άγκιστρα Git.
-editor.push_rejected=Η αλλαγή απορρίφθηκε από τον διακομιστή. Παρακαλώ ελέγξτε τα Άγκιστρα Git.
+editor.push_rejected_no_message=Η αλλαγή απορρίφθηκε από τον διακομιστή και δεν γνωρίζουμε τον λόγο. Παρακαλώ ελέγξτε τα Git hooks σας.
+editor.push_rejected=Η αλλαγή απορρίφθηκε από τον διακομιστή. Παρακαλώ ελέγξτε τα Git hook σας.
editor.push_rejected_summary=Μήνυμα Πλήρους Απόρριψης:
editor.add_subdir=Προσθήκη φακέλου…
editor.unable_to_upload_files=Αποτυχία αποστολής αρχείων στο «%s» με το σφάλμα: %v
@@ -1325,8 +1350,8 @@ commits.newer=Νεότερα
commits.signed_by=Υπογράφηκε από
commits.signed_by_untrusted_user=Υπογράφηκε από μη έμπιστο χρήστη
commits.signed_by_untrusted_user_unmatched=Υπογράφηκε από ένα μη έμπιστο χρήστη ο οποίος δεν ταιριάζει με τον υποβολέα
-commits.gpg_key_id=ID Κλειδιού GPG
-commits.ssh_key_fingerprint=Αποτύπωμα Κλειδιού SSH
+commits.gpg_key_id=Αναγνωριστικό κλειδιού GPG
+commits.ssh_key_fingerprint=Αποτύπωμα κλειδιού SSH
commits.view_path=Προβολή σε αυτή τη στιγμή στο ιστορικό
commit.operations=Λειτουργίες
@@ -1342,27 +1367,27 @@ commitstatus.failure=Αποτυχία
commitstatus.pending=Εκκρεμεί
commitstatus.success=Επιτυχές
-ext_issues=Πρόσβαση στα Εξωτερικά Ζητήματα
+ext_issues=Πρόσβαση σε εξωτερικά ζητήματα
ext_issues.desc=Σύνδεση σε εξωτερικό εφαρμογή ζητημάτων.
projects=Έργα
projects.desc=Διαχείριση ζητημάτων και pulls στους πίνακες των έργων.
projects.description=Περιγραφή (προαιρετικό)
projects.description_placeholder=Περιγραφή
-projects.create=Δημιουργία Έργου
+projects.create=Δημιουργία έργου
projects.title=Τίτλος
projects.new=Νέο έργο
projects.new_subheader=Συντονισμός, παρακολούθηση και ενημέρωση της δουλειάς σας σε ένα μέρος, έτσι ώστε τα έργα να παραμένουν διαφανή και μέσα στο χρονοδιάγραμμα.
projects.create_success=Το έργο «%s» δημιουργήθηκε.
-projects.deletion=Διαγραφή Έργου
+projects.deletion=Διαγραφή έργου
projects.deletion_desc=Η διαγραφή ενός έργου το αφαιρεί από όλα τα σχετιζόμενα ζητήματα. Συνέχεια;
projects.deletion_success=Το έργο έχει διαγραφεί.
-projects.edit=Επεξεργασία Έργων
+projects.edit=Επεξεργασία έργων
projects.edit_subheader=Τα Έργα οργανώνουν τα ζητήματα και παρακολουθούν τη πρόοδο τους.
-projects.modify=Ενημέρωση Έργου
+projects.modify=Ενημέρωση έργου
projects.edit_success=Το έργο «%s» ενημερώθηκε.
projects.type.none=Κανένα
-projects.type.basic_kanban=Βασικό Kanban
+projects.type.basic_kanban=Απλό Kanban
projects.type.bug_triage=Διαλογή σφαλμάτων
projects.template.desc=Πρότυπο έργου
projects.template.desc_helper=Επιλέξτε ένα πρότυπο έργου για να ξεκινήσετε
@@ -1377,7 +1402,7 @@ projects.column.set_default_desc=Ορίστε αυτή τη στήλη ως πρ
projects.column.unset_default=Αφαίρεση προεπιλογής
projects.column.unset_default_desc=Αφαίρεση της προεπιλογής αυτής της στήλης
projects.column.delete=Διαγραφή στήλης
-projects.column.deletion_desc=Όταν διαγράφεται μία στήλη έργου, όλα τα ζητήματα που ανήκουν σε αυτή θα μείνουν «Χωρίς Κατηγορία». Συνέχεια;
+projects.column.deletion_desc=Όταν διαγράφεται κάποια στήλη έργου, όλα τα ζητήματα που ανήκουν σε αυτή θα μείνουν «Χωρίς Κατηγορία». Να γίνει συνέχεια;
projects.column.color=Έγχρωμο
projects.open=Άνοιγμα
projects.close=Κλείσιμο
@@ -1392,7 +1417,7 @@ issues.filter_milestones=Φίλτρο Ορόσημου
issues.filter_projects=Φίλτρο Έργου
issues.filter_labels=Φίλτρο Σημάτων
issues.filter_reviewers=Φιλτράρισμα Εξεταστή
-issues.new=Νέο Ζήτημα
+issues.new=Νέο ζήτημα
issues.new.title_empty=Ο τίτλος δεν μπορεί να είναι κενός
issues.new.labels=Σήματα
issues.new.no_label=Χωρίς Σήμα
@@ -1400,35 +1425,35 @@ issues.new.clear_labels=Καθαρισμός σημάτων
issues.new.projects=Έργα
issues.new.clear_projects=Εκκαθάριση έργων
issues.new.no_projects=Χωρίς έργα
-issues.new.open_projects=Ανοιχτά Έργα
-issues.new.closed_projects=Κλειστά Έργα
+issues.new.open_projects=Ανοιχτά έργα
+issues.new.closed_projects=Κλειστά έργα
issues.new.no_items=Δεν υπάρχουν αντικείμενα
issues.new.milestone=Ορόσημο
-issues.new.no_milestone=Χωρίς Ορόσημο
+issues.new.no_milestone=Χωρίς ορόσημο
issues.new.clear_milestone=Καθαρισμός ορόσημου
-issues.new.open_milestone=Ανοιχτά Ορόσημα
-issues.new.closed_milestone=Κλειστά Ορόσημα
+issues.new.open_milestone=Ανοιχτά ορόσημα
+issues.new.closed_milestone=Κλειστά ορόσημα
issues.new.assignees=Υπεύθυνοι
issues.new.clear_assignees=Εκκαθάριση υπεύθυνων
issues.new.no_assignees=Χωρίς υπεύθυνους
issues.new.no_reviewers=Δεν υπάρχουν εξεταστές
-issues.choose.get_started=Ας Αρχίσουμε
+issues.choose.get_started=Ας ξεκινήσουμε
issues.choose.open_external_link=Άνοιγμα
issues.choose.blank=Προεπιλογή
issues.choose.blank_about=Δημιουργήστε ένα ζήτημα από το προεπιλεγμένο πρότυπο.
issues.choose.ignore_invalid_templates=Μη έγκυρα πρότυπα έχουν αγνοηθεί
issues.choose.invalid_templates=%v βρέθηκε μη έγκυρο πρότυπο(α)
issues.choose.invalid_config=Οι ρυθμίσεις ζητημάτων περιέχουν λάθη:
-issues.no_ref=Δεν Έχει Οριστεί Κλάδος/Ετικέτα
-issues.create=Δημιουργία Ζητήματος
-issues.new_label=Νέο Σήμα
+issues.no_ref=Δεν έχει οριστεί κλάδος/ετικέτα
+issues.create=Δημιουργία ζητήματος
+issues.new_label=Νέο σήμα
issues.new_label_placeholder=Όνομα σήματος
issues.new_label_desc_placeholder=Περιγραφή
-issues.create_label=Δημιουργία Σήματος
+issues.create_label=Δημιουργία σήματος
issues.label_templates.title=Χρήση ενός προκαθορισμένου συνόλου σημάτων
issues.label_templates.info=Δεν υπάρχουν σήματα ακόμα. Δημιουργήστε ένα σήμα με το κουμπί «Νέο Σήμα» ή χρησιμοποιήστε ένα σετ προκαθορισμένων σημάτων:
-issues.label_templates.helper=Επιλέξτε ένα σύνολο σημάτων
-issues.label_templates.use=Χρήση Συνόλου Σημάτων
+issues.label_templates.helper=Επιλέξτε ένα σύνολο προεπιλεγμένων σημάτων
+issues.label_templates.use=Χρήση συνόλου προεπιλεγμένων σημάτων
issues.label_templates.fail_to_load_file=Αποτυχία φόρτωσης των προτύπων σημάτων από το αρχείο «%s»: %v
issues.add_label=πρόσθεσε τη σήμανση %s %s
issues.add_labels=πρόσθεσε τα σήματα %s %s
@@ -1514,18 +1539,18 @@ issues.num_comments_1=%d σχόλιο
issues.num_comments=%d σχόλια
issues.commented_at=`σχολίασε %s`
issues.delete_comment_confirm=Είστε βέβαιοι πως θέλετε να διαγράψετε αυτό το σχόλιο;
-issues.context.copy_link=Αντιγραφή Συνδέσμου
-issues.context.quote_reply=Παράθεση Απάντησης
-issues.context.reference_issue=Αναφορά σε νέο ζήτημα
+issues.context.copy_link=Αντιγραφή συνδέσμου
+issues.context.quote_reply=Παράθεση απάντησης
+issues.context.reference_issue=Παράθεση σε νέο ζήτημα
issues.context.edit=Επεξεργασία
issues.context.delete=Διαγραφή
issues.no_content=Δεν υπάρχει περιγραφή.
-issues.close=Κλείσιμο Ζητήματος
+issues.close=Κλείσιμο ζητήματος
issues.comment_pull_merged_at=συγχώνευσε την υποβολή %[1]s στο %[2]s %[3]s
issues.comment_manually_pull_merged_at=συγχώνευσε χειροκίνητα την υποβολή %[1]s στο %[2]s %[3]s
-issues.close_comment_issue=Σχόλιο και κλείσιμο
+issues.close_comment_issue=Αποστολή σχολίου και κλείσιμο ζητήματος
issues.reopen_issue=Ανοίξτε ξανά
-issues.reopen_comment_issue=Σχόλιο και Άνοιγμα ξανά
+issues.reopen_comment_issue=Αποστολή σχολίου και επανάνοιγμα ζητήματος
issues.create_comment=Προσθήκη Σχολίου
issues.closed_at=`αυτό το ζήτημα έκλεισε %[2]s`
issues.reopened_at=`ξανά άνοιξε αυτό το ζήτημα %[2]s`
@@ -1553,7 +1578,7 @@ issues.re_request_review=Επαναίτηση ανασκόπησης
issues.is_stale=Έχουν υπάρξει αλλαγές σε αυτό το PR από αυτή την αναθεώρηση
issues.remove_request_review=Αφαίρεση αιτήματος αναθεώρησης
issues.remove_request_review_block=Δεν είναι δυνατή η αφαίρεση του αιτήματος αξιολόγησης
-issues.dismiss_review=Απόρριψη Αξιολόγησης
+issues.dismiss_review=Απόρριψη αξιολόγησης
issues.dismiss_review_warning=Είστε βέβαιοι ότι θέλετε να απορρίψετε αυτή την αξιολόγηση;
issues.sign_in_require_desc=Συνδεθείτε για να συμμετάσχετε σε αυτή τη συνομιλία.
issues.edit=Επεξεργασία
@@ -1563,7 +1588,7 @@ issues.label_title=Όνομα σήματος
issues.label_description=Περιγραφή σήματος
issues.label_color=Χρώμα σήματος
issues.label_exclusive=Αποκλειστικό
-issues.label_archive=Αρχειοθέτηση Σήματος
+issues.label_archive=Αρχειοθέτηση σήματος
issues.label_archived_filter=Εμφάνιση αρχειοθετημένων σημάτων
issues.label_archive_tooltip=Τα αρχειοθετημένα σήματα εξαιρούνται από τις προτάσεις στην αναζήτηση με σήματα.
issues.label_exclusive_desc=Ονομάστε το σήμα πεδίο/στοιχείο για να το κάνετε αμοιβαία αποκλειστικό με άλλα σήματα πεδίου/.
@@ -1572,8 +1597,8 @@ issues.label_count=%d σήματα
issues.label_open_issues=%d ανοικτά ζητήματα
issues.label_edit=Επεξεργασία
issues.label_delete=Διαγραφή
-issues.label_modify=Επεξεργασία Σήματος
-issues.label_deletion=Διαγραφή Σήματος
+issues.label_modify=Επεξεργασία σήματος
+issues.label_deletion=Διαγραφή σήματος
issues.label_deletion_desc=Η διαγραφή ενός σήματος θα το αφαιρέσει από όλα τα ζητήματα. Να γίνει συνέχεια;
issues.label_deletion_success=Το σήμα έχει διαγραφεί.
issues.label.filter_sort.alphabetically=Αλφαβητικά
@@ -1585,7 +1610,7 @@ issues.attachment.open_tab=`Πατήστε εδώ για να ανοίξετε
issues.attachment.download=`Πατήστε εδώ για να κατεβάσετε το «%s»`
issues.subscribe=Εγγραφή
issues.unsubscribe=Διαγραφή
-issues.unpin_issue=Άφεση Ζητήματος
+issues.unpin_issue=Ξεκαρφίτσωμα ζητήματος
issues.max_pinned=Δεν μπορείτε να καρφιτσώσετε περισσότερα ζητήματα
issues.pin_comment=καρφίτσωσε το %s
issues.unpin_comment=ξεκαρφίτσωσε το %s
@@ -1621,7 +1646,7 @@ issues.stop_tracking=Διακοπή χρονόμετρου
issues.stop_tracking_history=`σταμάτησε να εργάζεται %s`
issues.cancel_tracking=Απόρριψη
issues.cancel_tracking_history=`ακύρωσε τη καταγραφή χρόνου %s`
-issues.add_time=Χειροκίνητη προσθήκη ώρας
+issues.add_time=Χειροκίνητη προσθήκη χρόνου
issues.del_time=Διαγραφή αυτής της καταγραφής χρόνου
issues.add_time_short=Προσθήκη χρόνου
issues.add_time_cancel=Ακύρωση
@@ -1630,8 +1655,8 @@ issues.del_time_history=`διέγραψε χρόνο που δαπανήθηκε
issues.add_time_hours=ώρες
issues.add_time_minutes=λεπτά
issues.add_time_sum_to_small=Δεν εισήχθη χρόνος.
-issues.time_spent_total=Συνολική δαπάνη χρόνου
-issues.time_spent_from_all_authors=`Συνολική δαπάνη χρόνου: %s`
+issues.time_spent_total=Συνολικός χρόνος
+issues.time_spent_from_all_authors=`Συνολικός χρόνος: %s`
issues.due_date=Ημερομηνία παράδοσης
issues.invalid_due_date_format=Η ημερομηνίας παράδοσης πρέπει να έχει την μορφή «εεεε-μμ-ηη».
issues.error_modifying_due_date=Προέκυψε σφάλμα κατά την αλλαγή ημερομηνίας παράδοσης.
@@ -1675,7 +1700,7 @@ issues.dependency.blocked_by_short=Εξαρτάται από
issues.dependency.remove_header=Αφαίρεση εξάρτησης
issues.dependency.issue_remove_text=Αυτό θα αφαιρέσει την εξάρτηση από αυτό το ζήτημα. Να γίνει συνέχεια;
issues.dependency.pr_remove_text=Αυτό θα αφαιρέσει την εξάρτηση από αυτό το pull request. Συνέχεια;
-issues.dependency.setting=Ενεργοποίηση Εξαρτήσεων Για Ζητήματα και Pull Requests
+issues.dependency.setting=Ενεργοποίηση εξαρτήσεων για ζητήματα και pull requests
issues.dependency.add_error_same_issue=Δεν μπορείτε να εξαρτάτε ένα ζήτημα από τον εαυτό του.
issues.dependency.add_error_dep_issue_not_exist=Εξαρτώμενο ζήτημα δεν υπάρχει.
issues.dependency.add_error_dep_not_exist=Δεν υπάρχει η Εξάρτηση.
@@ -1724,9 +1749,9 @@ compare.compare_base=βάση
compare.compare_head=σύγκριση
pulls.desc=Ενεργοποίηση των pull requests και της αξιολόγησης κώδικα.
-pulls.new=Νέο Pull Request
-pulls.view=Προβολή Pull Request
-pulls.compare_changes=Νέο Pull Request
+pulls.new=Νέο pull request
+pulls.view=Προβολή pull request
+pulls.compare_changes=Νέο pull request
pulls.allow_edits_from_maintainers=Επιτρέπεται η επεξεργασία από συντηρητές
pulls.allow_edits_from_maintainers_desc=Οι χρήστες με πρόσβαση εγγραφής στον βασικό κλάδο μπορούν επίσης να ωθήσουν και σε αυτό τον κλάδο
pulls.allow_edits_from_maintainers_err=Η ενημέρωση απέτυχε
@@ -1752,13 +1777,13 @@ pulls.filter_changes_by_commit=Φιλτράρισμα κατά υποβολή
pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι. Δεν υπάρχει ανάγκη να δημιουργήσετε ένα pull request.
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίσοι. Αυτό το PR θα είναι κενό.
pulls.has_pull_request=`Υπάρχει ήδη pull request μεταξύ αυτών των κλάδων: %[2]s#%[3]d`
-pulls.create=Δημιουργία Pull Request
+pulls.create=Δημιουργία pull request
pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από %[2]s σε %[3]s
pulls.merged_title_desc_few=συγχώνευσε %[1]d υποβολές από %[2]s σε %[3]s %[4]s
pulls.change_target_branch_at=`άλλαξε τον κλάδο προορισμού από %s σε %s %s`
pulls.tab_conversation=Συζήτηση
pulls.tab_commits=Υποβολές
-pulls.tab_files=Αρχεία Με Αλλαγές
+pulls.tab_files=Αλλαγμένα αρχεία
pulls.reopen_to_merge=Παρακαλώ ανοίξτε ξανά αυτό το pull request για να εκτελέσετε μια συγχώνευση.
pulls.cant_reopen_deleted_branch=Αυτό το pull request δεν μπορεί να ανοίξει ξανά επειδή ο κλάδος διαγράφηκε.
pulls.merged=Συγχωνευμένο
@@ -1775,17 +1800,17 @@ pulls.remove_prefix=Αφαίρεση %s προθέματος
pulls.data_broken=Αυτό το pull request είναι κατεστραμμένο λόγω των πληροφοριών του fork που λείπουν.
pulls.files_conflicted=Αυτό το pull request περιέχει αλλαγές που συγκρούονται με το κλάδο προορισμού.
pulls.is_checking=Ο έλεγχος συγκρούσεων κατά την συγχώνευση βρίσκεται σε εξέλιξη. Δοκιμάστε ξανά σε λίγα λεπτά.
-pulls.is_ancestor=Αυτός ο κλάδος περιλαμβάνεται ήδη στον κλάδο προορισμού. Δεν υπάρχει τίποτα για συγχώνευση.
+pulls.is_ancestor=Αυτός ο κλάδος δεν περιέχει κάτι καινούργιο που δεν έχει ο κλάδος προορισμού ήδη. Δεν υπάρχει τίποτα που θα μπορούσε να συγχωνευτεί.
pulls.is_empty=Οι αλλαγές σε αυτόν τον κλάδο βρίσκονται ήδη στον κλάδο προορισμού. Θα είναι μια κενή υποβολή.
pulls.required_status_check_failed=Ορισμένοι απαιτούμενοι έλεγχοι δεν ήταν επιτυχείς.
pulls.required_status_check_missing=Λείπουν ορισμένοι απαιτούμενοι έλεγχοι.
pulls.required_status_check_administrator=Ως διαχειριστής, μπορείτε ακόμα να συγχωνεύσετε αυτό το pull request.
-pulls.blocked_by_approvals=Το pull request δεν έχει ακόμα αρκετές εγκρίσεις. Δόθηκαν %d από %d εγκρίσεις.
+pulls.blocked_by_approvals=Το pull request δεν έχει ακόμα λάβει τον απαραίτητο αριθμό εγκρίσεων. Δόθηκαν %d από %d εγκρίσεις.
pulls.blocked_by_rejection=Αυτό το pull request έχει αλλαγές που ζητούνται από έναν επίσημο εξεταστή.
pulls.blocked_by_official_review_requests=Αυτό το pull request έχει επίσημες αιτήσεις αξιολόγησης.
-pulls.blocked_by_outdated_branch=Αυτό το pull request έχει αποκλειστεί επειδή είναι παρωχημένο.
-pulls.blocked_by_changed_protected_files_1=Αυτό το pull request έχει αποκλειστεί επειδή αλλάζει ένα προστατευμένο αρχείο:
-pulls.blocked_by_changed_protected_files_n=Αυτό το pull request έχει αποκλειστεί επειδή αλλάζει προστατευμένα αρχεία:
+pulls.blocked_by_outdated_branch=Αυτό το pull request έχει αποκλειστεί, επειδή είναι παρωχημένο.
+pulls.blocked_by_changed_protected_files_1=Αυτό το pull request έχει αποκλειστεί, επειδή αλλάζει ένα αρχείο που προστατεύεται:
+pulls.blocked_by_changed_protected_files_n=Αυτό το pull request έχει αποκλειστεί, επειδή αλλάζει αρχεία που προστατεύονται:
pulls.can_auto_merge_desc=Αυτό το Pull Request μπορεί να συγχωνευθεί αυτόματα.
pulls.cannot_auto_merge_desc=Αυτό το pull request δεν μπορεί να συγχωνευθεί αυτόματα λόγω συγκρούσεων.
pulls.cannot_auto_merge_helper=Χειροκίνητη Συγχώνευση για την επίλυση των συγκρούσεων.
@@ -1797,7 +1822,7 @@ pulls.reject_count_1=%d αίτημα αλλαγής
pulls.reject_count_n=%d αιτήματα αλλαγής
pulls.waiting_count_1=%d αναμονή αξιολόγησης
pulls.waiting_count_n=%d αναμονές αξιολόγησης
-pulls.wrong_commit_id=Το id υποβολής πρέπει να είναι ένα id υποβολής στον κλάδο προορισμού
+pulls.wrong_commit_id=Το αναγνωριστικό της υποβολής πρέπει να αντιστοιχεί σε μία υποβολή στον κλάδο προορισμού
pulls.no_merge_desc=Αυτό το pull request δεν μπορεί να συγχωνευθεί επειδή όλες οι επιλογές συγχώνευσης αποθετηρίων είναι απενεργοποιημένες.
pulls.no_merge_helper=Ενεργοποιήστε τις επιλογές συγχώνευσης στις ρυθμίσεις αποθετηρίου ή συγχωνεύστε το pull request χειροκίνητα.
@@ -1821,9 +1846,9 @@ pulls.unrelated_histories=H Συγχώνευση Απέτυχε: Η κεφαλή
pulls.merge_out_of_date=Η συγχώνευση απέτυχε: Κατά τη δημιουργία της συγχώνευσης, η βάση ενημερώθηκε. Συμβουλή: Δοκιμάστε ξανά.
pulls.head_out_of_date=Η συγχώνευση απέτυχε: Κατά τη δημιουργία της συγχώνευσης, το HEAD ενημερώθηκε. Συμβουλή: Δοκιμάστε ξανά.
pulls.has_merged=Αποτυχία: Το pull request έχει συγχωνευθεί, δεν είναι δυνατή η συγχώνευση ξανά ή να αλλάξει ο κλάδος προορισμού.
-pulls.push_rejected=Αποτυχία ώθησης: Η ώθηση απορρίφθηκε. Ελέγξτε τα Άγκιστρα Git για αυτό το αποθετήριο.
+pulls.push_rejected=Αποτυχία ώθησης: Η ώθηση απορρίφθηκε. Ελέγξτε τα Git hooks του αποθετήριο.
pulls.push_rejected_summary=Μήνυμα Πλήρους Απόρριψης
-pulls.push_rejected_no_message=H συγχώνευση απέτυχε: Η ώθηση απορρίφθηκε, αλλά δεν υπήρχε απομακρυσμένο μήνυμα. Ελέγξτε τα Git Hooks για αυτό το αποθετήριο
+pulls.push_rejected_no_message=Αποτυχία ώθησης: Η ώθηση απορρίφθηκε, αλλά δεν λάβαμε κάποιο μήνυμα. Ελέγξτε τα Git hooks του αποθετηρίου
pulls.open_unmerged_pull_exists=`Δεν μπορείτε να ανοίξετε εκ νέου, επειδή υπάρχει ένα εκκρεμές pull request (#%d) με πανομοιότυπες ιδιότητες.`
pulls.status_checking=Μερικοί έλεγχοι εκκρεμούν
pulls.status_checks_success=Όλοι οι έλεγχοι ήταν επιτυχείς
@@ -1839,7 +1864,7 @@ pulls.update_branch_rebase=Ενημέρωση κλάδου με rebase
pulls.update_branch_success=Η ενημέρωση του κλάδου ήταν επιτυχής
pulls.update_not_allowed=Δεν επιτρέπεται να ενημερώσετε τον κλάδο
pulls.outdated_with_base_branch=Αυτός ο κλάδος δεν είναι ενημερωμένος με τον βασικό κλάδο
-pulls.close=Κλείσιμο Pull Request
+pulls.close=Κλείσιμο pull request
pulls.closed_at=`έκλεισε αυτό το pull request %[2]s`
pulls.reopened_at=`άνοιξε ξανά αυτό το pull request %[2]s`
pulls.cmd_instruction_hint=`Δείτε τις οδηγίες γραμμής εντολών.`
@@ -1869,7 +1894,7 @@ pulls.recently_pushed_new_branches=Ωθήσατε στο κλάδοΔΕΝ ΜΠΟΡΕΙ να αναιρεθεί.
settings.delete_notices_2=- Αυτή η ενέργεια θα διαγράψει μόνιμα το αποθετήριο %s μαζί με τον κώδικα, τα ζητημάτα, τα σχόλια, τα δεδομένα των wiki και τις ρυθμίσεις συνεργατών που βρίσκονται μέσα σε αυτό.
@@ -2163,7 +2188,7 @@ settings.delete_notices_fork_1=- Τα Forks αυτού του αποθετηρί
settings.deletion_success=Το αποθετήριο έχει διαγραφεί.
settings.update_settings_success=Οι ρυθμίσεις του αποθετηρίου έχουν ενημερωθεί.
settings.update_settings_no_unit=Το αποθετήριο θα πρέπει να επιτρέπει τουλάχιστον κάποιο είδος αλληλεπίδρασης.
-settings.confirm_delete=Διαγραφή Αποθετηρίου
+settings.confirm_delete=Διαγραφή αποθετηρίου
settings.add_collaborator=Προσθήκη συνεργάτη
settings.add_collaborator_success=Ο συνεργάτης προστέθηκε.
settings.add_collaborator_inactive_user=Δεν είναι δυνατή η προσθήκη ενός ανενεργού χρήστη ως συνεργάτη.
@@ -2178,20 +2203,20 @@ settings.org_not_allowed_to_be_collaborator=Δεν μπορείτε να προ
settings.change_team_access_not_allowed=Η αλλαγή της πρόσβασης ομάδας για το αποθετήριο έχει περιοριστεί στον ιδιοκτήτη του οργανισμού
settings.team_not_in_organization=Η ομάδα δεν είναι στον ίδιο οργανισμό με το αποθετήριο
settings.teams=Ομάδες
-settings.add_team=Προσθήκη Ομάδας
+settings.add_team=Προσθήκη ομάδας
settings.add_team_duplicate=Η ομάδα έχει ήδη το αποθετήριο
settings.add_team_success=Η ομάδα έχει πλέον πρόσβαση στο αποθετήριο.
settings.search_team=Αναζήτηση Ομάδας…
settings.change_team_permission_tip=Τα δικαιώματα της ομάδας έχουν οριστεί στη σελίδα ρυθμίσεων της ομάδας και δεν μπορούν να αλλάξουν ανά αποθετήριο
settings.delete_team_tip=Αυτή η ομάδα έχει πρόσβαση σε όλα τα αποθετήρια και δεν μπορεί να αφαιρεθεί
settings.remove_team_success=Έχει αφαιρεθεί η πρόσβαση της ομάδας στο αποθετήριο.
-settings.add_webhook=Προσθήκη Webhook
+settings.add_webhook=Προσθήκη webhook
settings.add_webhook.invalid_channel_name=Το όνομα του καναλιού Webhook δεν μπορεί να είναι κενό και δεν μπορεί να περιέχει μόνο έναν χαρακτήρα #.
settings.hooks_desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Forgejo. Διαβάστε περισσότερα στον οδηγό webhooks.
-settings.webhook_deletion=Αφαίρεση Webhook
+settings.webhook_deletion=Αφαίρεση webhook
settings.webhook_deletion_desc=Η αφαίρεση ενός webhook διαγράφει τις ρυθμίσεις και το ιστορικό παραδόσεων. Συνέχεια;
settings.webhook_deletion_success=Το webhook έχει αφαιρεθεί.
-settings.webhook.test_delivery=Δοκιμή Παράδοσης
+settings.webhook.test_delivery=Δοκιμή παράδοσης
settings.webhook.test_delivery_desc=Δοκιμάστε αυτό το webhook με ένα ψεύτικο συμβάν.
settings.webhook.test_delivery_desc_disabled=Για να δοκιμάσετε αυτό το webhook με μια ψεύτικη κλήση, ενεργοποιήστε το.
settings.webhook.request=Αίτημα
@@ -2202,26 +2227,26 @@ settings.webhook.body=Σώμα
settings.webhook.replay.description=Επανάληψη αυτού του webhook.
settings.webhook.replay.description_disabled=Για να επαναλάβετε αυτό το webhook, ενεργοποιήστε το.
settings.webhook.delivery.success=Ένα γεγονός έχει προστεθεί στην ουρά παράδοσης. Μπορεί να χρειαστούν λίγα δευτερόλεπτα μέχρι να εμφανιστεί στο ιστορικό.
-settings.githooks_desc=Τα Άγκιστρα Git παρέχονται από το ίδιο το Git. Μπορείτε να επεξεργαστείτε τα αρχεία αγκίστρων παρακάτω για να ρυθμίσετε προσαρμοσμένες λειτουργίες.
+settings.githooks_desc=Τα Git hook αποτελούν μία δυνατότητα του Git. Αν θέλετε να ρυθμίσετε κάποιες προσαρμοσμένες λειτουργείες, θα μπορέσετε να επεξεργαστείτε τα αρχεία ενός Git hook παρακάτω.
settings.githook_edit_desc=Αν το hook είναι ανενεργό, θα παρουσιαστεί ένα παράδειγμα. Αφήνοντας το περιεχόμενο του hook κενό θα το απενεργοποιήσετε.
-settings.githook_name=Όνομα Hook
-settings.githook_content=Περιεχόμενο Hook
-settings.update_githook=Ενημέρωση Hook
-settings.add_webhook_desc=Ο Forgejo θα στείλει αιτήματα POST με συγκεκριμένο τύπο περιεχομένου στο URL προορισμού. Διαβάστε περισσότερα στον οδηγό webhooks.
+settings.githook_name=Όνομα hook
+settings.githook_content=Περιεχόμενο hook
+settings.update_githook=Ενημέρωση hook
+settings.add_webhook_desc=Το Forgejo θα στείλει αιτήματα POST με ένα συγκεκριμένο Content-Type (τύπο περιεχομένου) στο προοριζόμενο URL. Διαβάστε περισσότερα στον οδηγό webhook.
settings.payload_url=URL Στόχου
settings.http_method=Μέθοδος HTTP
-settings.content_type=Τύπος Περιεχομένου POST
+settings.content_type=Τύπος περιεχομένου POST
settings.secret=Μυστικό
settings.slack_username=Όνομα Χρήστη
settings.slack_icon_url=URL Εικονιδίου
settings.slack_color=Χρώμα
settings.discord_username=Όνομα Χρήστη
settings.discord_icon_url=URL Εικονιδίου
-settings.event_desc=Ενεργοποίηση Σε:
-settings.event_push_only=Γεγονότα Push
-settings.event_send_everything=Όλα τα Γεγονότα
-settings.event_choose=Προσαρμοσμένα Γεγονότα…
-settings.event_header_repository=Γεγονότα Αποθετηρίου
+settings.event_desc=Ενεργοποίηση σε:
+settings.event_push_only=Συμβάντα push
+settings.event_send_everything=Όλα τα συμβάντα
+settings.event_choose=Προσαρμοσμένα συμβάντα…
+settings.event_header_repository=Συμβάντα αποθετηρίου
settings.event_create=Δημιουργία
settings.event_create_desc=Ο κλάδος ή η ετικέτα δημιουργήθηκε.
settings.event_delete=Διαγραφή
@@ -2236,50 +2261,50 @@ settings.event_push=Push
settings.event_push_desc=Git push σε ένα αποθετήριο.
settings.event_repository=Αποθετήριο
settings.event_repository_desc=Το αποθετήριο δημιουργήθηκε ή διαγράφηκε.
-settings.event_header_issue=Γεγονότα Ζητήματος
+settings.event_header_issue=Συμβάντα ζητημάτων
settings.event_issues=Ζητήματα
settings.event_issues_desc=Το ζήτημα άνοιξε, έκλεισε, ανοίχθηκε εκ νέου ή επεξεργάστηκε.
-settings.event_issue_assign=Ζήτημα Ανατέθηκε
+settings.event_issue_assign=Ανάθεση ζητήματος
settings.event_issue_assign_desc=Ζήτημα εκχωρημένο ή μη εκχωρημένο.
-settings.event_issue_label=Σήμανση Ζητήματος
+settings.event_issue_label=Σήμανση ζητήματος
settings.event_issue_label_desc=Τα σήματα των ζητημάτων ενημερώθηκαν ή εκκαθαρίστηκαν.
-settings.event_issue_milestone=Ενεργοποιήθηκε Ορόσημο στο Ζήτημα
+settings.event_issue_milestone=Ορισμός ορόσημου σε ζήτημα
settings.event_issue_milestone_desc=Ενεργοποιήθηκε ή απενεργοποιήθηκε ορόσημο στο ζήτημα.
-settings.event_issue_comment=Σχόλιο Ζητήματος
+settings.event_issue_comment=Σχολιασμός κάποιου ζητήματος
settings.event_issue_comment_desc=Το σχόλιο στο ζήτημα δημιουργήθηκε, επεξεργάστηκε ή διαγράφηκε.
-settings.event_header_pull_request=Γεγονότα Pull Requests
-settings.event_pull_request=Pull Request
+settings.event_header_pull_request=Συμβάντα pull request
+settings.event_pull_request=Pull request
settings.event_pull_request_desc=Το pull request άνοιξε, έκλεισε, άνοιξε εκ νέου ή επεξεργάστηκε.
-settings.event_pull_request_assign=Το Pull Request Ανατέθηκε
+settings.event_pull_request_assign=Ανάθεση pull request
settings.event_pull_request_assign_desc=Το pull request ανατέθηκε ή έγινε αδιάθετο.
-settings.event_pull_request_label=Σήμανση Pull Request
+settings.event_pull_request_label=Σήμανση pull request
settings.event_pull_request_label_desc=Τα σήματα του pull request ενημερώθηκαν ή εκκαθαρίστηκαν.
-settings.event_pull_request_milestone=Pull Request Με Ορόσημο
+settings.event_pull_request_milestone=Ορισμός οροσήμου σε pull request
settings.event_pull_request_milestone_desc=Μπήκε ή βγήκε ορόσημο στο Pull request.
-settings.event_pull_request_comment=Σχόλιο Pull Requests
+settings.event_pull_request_comment=Σχολιασμός pull request
settings.event_pull_request_comment_desc=Το σχόλιο στο pull request δημιουργήθηκε, επεξεργάστηκε ή διαγράφηκε.
-settings.event_pull_request_review=Pull Request Αξιολογήθηκε
+settings.event_pull_request_review=Αξιολόγηση pull request
settings.event_pull_request_review_desc=Το pull request εγκρίθηκε, απορρίφθηκε ή προστέθηκε αξιολόγηση.
-settings.event_pull_request_sync=Pull Request Συγχρονίστηκε
+settings.event_pull_request_sync=Συγχρονισμός pull request
settings.event_pull_request_sync_desc=Το pull request συγχρονίστηκε.
-settings.event_pull_request_review_request=Αίτηση Αξιολόγησης του Pull Request
+settings.event_pull_request_review_request=Αίτηση αξιολόγησης pull request
settings.event_pull_request_review_request_desc=Ζητήθηκε η αξιολόγηση του pull request ή η αίτηση αξιολόγησης αφαιρέθηκε.
-settings.event_pull_request_approvals=Εγκρίσεις Pull Request
-settings.event_pull_request_merge=Συγχώνευση Pull Request
+settings.event_pull_request_approvals=Εγκρίσεις pull request
+settings.event_pull_request_merge=Συγχώνευση pull request
settings.event_package=Πακέτο
settings.event_package_desc=Το πακέτο δημιουργήθηκε ή διαγράφηκε σε ένα αποθετήριο.
settings.branch_filter=Φίλτρο κλάδου
settings.branch_filter_desc=Λίστα επιτρεπόμενων κλάδων για ωθήσεις, δημιουργία κλάδων και γεγονότα διαγραφής κλάδων, που ορίζονται ως μοτίβο glob. Εάν είναι κενό ή *, αναφέρονται συμβάντα για όλους τους κλάδους. Δείτε τη τεκμηρίωσηgithub.com/gobwas/glob για σύνταξη. Παραδείγματα: master, {master,release*}.
-settings.authorization_header=Κεφαλίδα Authorization
+settings.authorization_header=Κεφαλίδα authorization
settings.authorization_header_desc=Αν υπάρχει, θα προστίθεται ως κεφαλίδα authorization στις αιτήσεις HTTP. Παραδείγματα: %s.
settings.active=Ενεργό
settings.active_helper=Οι πληροφορίες σχετικά με τα γεγονότα που συμβαίνουν θα στέλνονται σε αυτό το URL webhook.
settings.add_hook_success=Έχει προστεθεί το webhook.
-settings.update_webhook=Ενημέρωση Webhook
+settings.update_webhook=Ενημέρωση webhook
settings.update_hook_success=Το webhook έχει ενημερωθεί.
-settings.delete_webhook=Ενημέρωση Webhook
-settings.recent_deliveries=Πρόσφατες Παραδόσεις
-settings.hook_type=Τύπος Hook
+settings.delete_webhook=Αφαίρεση webhook
+settings.recent_deliveries=Πρόσφατες παραδόσεις
+settings.hook_type=Είδος hook
settings.slack_token=Διακριτικό
settings.slack_domain=Domain
settings.slack_channel=Κανάλι
@@ -2301,10 +2326,10 @@ settings.web_hook_name_packagist=Packagist
settings.packagist_username=Όνομα χρήστη Packagist
settings.packagist_api_token=Διακριτικό API
settings.packagist_package_url=URL πακέτων Packagist
-settings.deploy_keys=Κλειδιά Διάθεσης
-settings.add_deploy_key=Προσθήκη Κλειδιού Διάθεσης
+settings.deploy_keys=Κλειδιά διάθεσης
+settings.add_deploy_key=Προσθήκη κλειδιού διάθεσης
settings.deploy_key_desc=Τα κλειδιά διάθεσης έχουν πρόσβαση μόνο-ανάγνωσης στο αποθετήριο.
-settings.is_writable=Ενεργοποίηση Πρόσβασης Εγγραφής
+settings.is_writable=Ενεργοποίηση πρόσβασης εγγραφής
settings.is_writable_info=Επιτρέψτε σε αυτό το κλειδί διάθεσης να ωθήσει στο αποθετήριο.
settings.no_deploy_keys=Δεν υπάρχουν ακόμα κλειδιά διάθεσης.
settings.title=Τίτλος
@@ -2312,37 +2337,37 @@ settings.deploy_key_content=Περιεχόμενο
settings.key_been_used=Ένα κλειδί διάθεσης με το ίδιο περιεχόμενο χρησιμοποιείται ήδη.
settings.key_name_used=Ένα κλειδί διάθεσης με το ίδιο όνομα υπάρχει ήδη.
settings.add_key_success=Το κλειδί διάθεσης «%s» προστέθηκε.
-settings.deploy_key_deletion=Αφαίρεση Κλειδιού Διάθεσης
+settings.deploy_key_deletion=Αφαίρεση κλειδιού διάθεσης
settings.deploy_key_deletion_desc=Η κατάργηση ενός κλειδί διάθεσης θα ανακαλέσει την πρόσβασή του σε αυτό το αποθετήριο. Συνέχεια;
settings.deploy_key_deletion_success=Το κλειδί διάθεσης έχει αφαιρεθεί.
settings.branches=Κλάδοι
-settings.protected_branch=Προστασία Κλάδου
-settings.protected_branch.save_rule=Αποθήκευση Κανόνα
-settings.protected_branch.delete_rule=Διαγραφή Κανόνα
+settings.protected_branch=Προστασία κλάδου
+settings.protected_branch.save_rule=Αποθήκευση κανόνα
+settings.protected_branch.delete_rule=Διαγραφή κανόνα
settings.protected_branch_can_push=Επιτρέψτε ώθηση;
settings.protected_branch_can_push_yes=Μπορείτε να ωθήσετε
settings.protected_branch_can_push_no=Δεν μπορείτε να ωθήσετε
settings.branch_protection=Κανόνες προστασίας για τον κλάδο «%s»
-settings.protect_this_branch=Ενεργοποίηση Προστασίας Κλάδου
+settings.protect_this_branch=Ενεργοποίηση προστασίας κλάδου
settings.protect_this_branch_desc=Αποτρέπει τη διαγραφή και περιορίζει το Git push και συγχώνευση στον κλάδο.
-settings.protect_disable_push=Απενεργοποίηση Ώθησης
+settings.protect_disable_push=Απενεργοποίηση ωθήσεων
settings.protect_disable_push_desc=Κανένα push δεν θα επιτρέπεται σε αυτόν τον κλάδο.
-settings.protect_enable_push=Ενεργοποίηση Push
+settings.protect_enable_push=Ενεργοποίηση ωθήσεων
settings.protect_enable_push_desc=Οποιοσδήποτε έχει πρόσβαση εγγραφής θα επιτρέπεται να κάνει push σε αυτόν τον κλάδο (αλλά όχι και να κάνει force push).
-settings.protect_enable_merge=Ενεργοποίηση Συγχώνευσης
+settings.protect_enable_merge=Ενεργοποίηση συγχωνεύσεων
settings.protect_enable_merge_desc=Οποιοσδήποτε έχει πρόσβαση εγγραφής θα επιτρέπεται να συγχωνεύσει τα pull request σε αυτόν τον κλάδο.
-settings.protect_whitelist_committers=Περιορισμός του Push στη Λίστα
+settings.protect_whitelist_committers=Περιορισμένος κανονισμός ώθησης
settings.protect_whitelist_committers_desc=Μόνο χρήστες ή ομάδες στη λίστα θα επιτρέπεται να κάνουν push σε αυτόν τον κλάδο (αλλά όχι να κάνουν force push).
settings.protect_whitelist_deploy_keys=Έγκριση κλειδιών διάθεσης με πρόσβαση εγγραφής για ώθηση.
settings.protect_whitelist_users=Λίστα χρηστών που επιτρέπεται να κάνουν push:
settings.protect_whitelist_search_users=Αναζήτηση χρηστών…
settings.protect_whitelist_teams=Λίστα ομάδων που επιτρέπεται να κάνουν push:
settings.protect_whitelist_search_teams=Αναζήτηση ομάδων…
-settings.protect_merge_whitelist_committers=Ενεργοποίηση Λίστας Συγχώνευσης
+settings.protect_merge_whitelist_committers=Ενεργοποίηση λίστας συγχώνευσης
settings.protect_merge_whitelist_committers_desc=Επιτρέψτε μόνο σε χρήστες ή ομάδες στη λίστα να συγχωνεύσουν pull requests σε αυτό το κλάδο.
settings.protect_merge_whitelist_users=Λίστα επιτρεπόμενων χρηστών για συγχώνευση:
settings.protect_merge_whitelist_teams=Επιτρεπόμενες ομάδες για συγχώνευση:
-settings.protect_check_status_contexts=Ενεργοποίηση Ελέγχου Κατάστασης
+settings.protect_check_status_contexts=Ενεργοποίηση ελέγχου κατάστασης
settings.protect_status_check_patterns=Μοτίβα ελέγχου κατάστασης:
settings.protect_status_check_patterns_desc=Ορίστε μοτίβα για να καθορίσετε ποιοι έλεγχοι κατάστασης πρέπει να περάσουν πριν οι κλάδοι να μπορούν να συγχωνευτούν σε έναν κλάδο που ταιριάζει με αυτόν τον κανόνα. Κάθε γραμμή καθορίζει ένα μοτίβο. Τα μοτίβα δεν μπορούν να είναι κενά.
settings.protect_check_status_contexts_desc=Απαιτείται έλεγχος κατάστασης για να περάσει το pull request πριν από τη συγχώνευση. Επιλέξτε ποιοι έλεγχοι κατάστασης πρέπει να περάσουν πριν κλάδοι μπορούν να συγχωνευτούν σε έναν κλάδο που ταιριάζει με αυτόν τον κανόνα. Όταν είναι ενεργοποιημένο, οι υποβολές πρέπει πρώτα να γίνονται push σε άλλο κλάδο, στη συνέχεια, να συγχωνεύονται ή γίνονται push απευθείας σε ένα κλάδο που ταιριάζει με αυτόν τον κανόνα, αφού έχουν ολοκληρωθεί οι έλεγχοι κατάστασης. Αν δεν επιλεχθεί κανένα πλαίσιο, η τελευταία υποβολή πρέπει να είναι επιτυχής ανεξάρτητα από το πλαίσιο.
@@ -2358,21 +2383,21 @@ settings.protect_approvals_whitelist_users=Εγκεκριμένοι εξετασ
settings.protect_approvals_whitelist_teams=Λίστα επιτρεπόμενων ομάδων για κριτικές:
settings.dismiss_stale_approvals=Παράβλεψη καθυστερημένων εγκρίσεων
settings.dismiss_stale_approvals_desc=Όταν οι νέες υποβολές που αλλάζουν το περιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιές εγκρίσεις απορρίπτονται.
-settings.require_signed_commits=Απαιτούνται Υπογεγραμμένες Υποβολές
+settings.require_signed_commits=Να απαιτούνται υπογεγραμμένες υποβολές
settings.require_signed_commits_desc=Απόρριψη νέων υποβολών σε αυτόν τον κλάδο εάν είναι μη υπογεγραμμένες ή μη επαληθεύσιμες.
-settings.protect_branch_name_pattern=Μοτίβο Προστατευμένου Ονόματος Κλάδου
-settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος προστατευμένων κλάδων. Δείτε την τεκμηρίωση για σύνταξη μοτίβου. Παραδείγματα: main, release/**
+settings.protect_branch_name_pattern=Μοτίβο προστατευμένου ονόματος κλάδου
+settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος προστατευμένων κλάδων. Συμβολευτείτε την τεκμηρίωση για την σύνταξη ενός μοτίβου. Παραδείγματα: main, release/**
settings.protect_patterns=Μοτίβα
-settings.protect_protected_file_patterns=Μοτίβα προστατευμένων αρχείων (διαχωρισμένα με ερωτηματικό ';'):
+settings.protect_protected_file_patterns=Μοτίβα προστατευμένων αρχείων (διαχωρισμός με semicolon «;» και ΟΧΙ το ελληνικό ερωτηματικό):
settings.protect_protected_file_patterns_desc=Τα προστατευόμενα αρχεία δεν επιτρέπεται να αλλάξουν άμεσα, ακόμη και αν ο χρήστης έχει δικαιώματα να προσθέσει, να επεξεργαστεί ή να διαγράψει αρχεία σε αυτόν τον κλάδο. Επιπλέων μοτίβα μπορούν να διαχωριστούν με ερωτηματικό (';'). Δείτε την τεκμηρίωση github.com/gobwas/glob για τη σύνταξη του μοτίβου. Πχ: .drone.yml, /docs/**/*.txt.
-settings.protect_unprotected_file_patterns=Μοτίβα μη προστατευμένων αρχείων (διαχωρισμένα με ερωτηματικό ';'):
+settings.protect_unprotected_file_patterns=Μοτίβα μη προστατευμένων αρχείων (διαχωρισμένα με semicolon «;» και ΟΧΙ το ελληνικό ερωτηματικό):
settings.protect_unprotected_file_patterns_desc=Μη προστατευμένα αρχεία που επιτρέπεται να αλλάξουν απευθείας εάν ο χρήστης έχει πρόσβαση εγγραφής, παρακάμπτοντας τον περιορισμό ώθησης. Επιπλέων μοτίβα μπορούν να διαχωριστούν με ερωτηματικό (';'). Δείτε την τεκμηρίωση github.com/gobwas/glob για τη σύνταξη του μοτίβου. Πχ: .drone.yml, /docs/**/*.txt.
settings.add_protected_branch=Ενεργοποίηση προστασίας
settings.delete_protected_branch=Απενεργοποίηση προστασίας
settings.update_protect_branch_success=Η προστασία κλάδου για τον κανόνα «%s» ενημερώθηκε.
settings.remove_protected_branch_success=Η προστασία κλάδου για τον κανόνα "%s" αφαιρέθηκε.
settings.remove_protected_branch_failed=Η αφαίρεση του κανόνα προστασίας κλάδου «%s» απέτυχε.
-settings.protected_branch_deletion=Απενεργοποίηση Προστασίας Κλάδου
+settings.protected_branch_deletion=Απενεργοποίηση προστασίας κλάδου
settings.protected_branch_deletion_desc=Η απενεργοποίηση της προστασίας του κλάδου επιτρέπει στους χρήστες με άδεια εγγραφής να κάνουν push στον κλάδο. Συνέχεια;
settings.block_rejected_reviews=Φραγή συγχώνευσης αν υπάρχουν απορριπτικές αξιολογήσεις
settings.block_rejected_reviews_desc=Η συγχώνευση δεν θα είναι δυνατή όταν οι αλλαγές ζητούνται από τους επίσημους εξεταστές, ακόμη και αν υπάρχουν αρκετές εγκρίσεις.
@@ -2381,7 +2406,7 @@ settings.block_on_official_review_requests_desc=Η συγχώνευση δεν
settings.block_outdated_branch=Φραγή συγχώνευσης αν το pull request είναι ξεπερασμένο
settings.block_outdated_branch_desc=Η συγχώνευση δεν θα είναι δυνατή όταν ο κλάδος κεφαλής είναι πίσω από τον βασικό κλάδο.
settings.default_branch_desc=Επιλέξτε έναν προεπιλεγμένο κλάδο αποθετηρίου για pull requests και υποβολές κώδικα:
-settings.merge_style_desc=Συγχώνευση Στυλ
+settings.merge_style_desc=Στυλ συγχώνευσης
settings.default_merge_style_desc=Προεπιλεγμένο στυλ συγχώνευσης
settings.choose_branch=Επιλέξτε έναν κλάδο…
settings.no_protected_branch=Δεν υπάρχουν προστατευμένοι κλάδοι.
@@ -2390,22 +2415,22 @@ settings.protected_branch_required_rule_name=Απαιτούμενο όνομα
settings.protected_branch_duplicate_rule_name=Υπάρχει ήδη ένας κανόνας για αυτούς τους κλάδους
settings.protected_branch_required_approvals_min=Οι απαιτούμενες εγκρίσεις δεν μπορούν να είναι αρνητικές.
settings.tags=Ετικέτες
-settings.tags.protection=Προστασία Ετικετών
-settings.tags.protection.pattern=Μοτίβο Ετικέτας
+settings.tags.protection=Προστασία ετικετών
+settings.tags.protection.pattern=Μοτίβο ετικετών
settings.tags.protection.allowed=Επιτρέπεται
settings.tags.protection.allowed.users=Επιτρεπόμενοι χρήστες
settings.tags.protection.allowed.teams=Επιτρεπόμενες ομάδες
settings.tags.protection.allowed.noone=Καμία
-settings.tags.protection.create=Προστασία Ετικέτας
+settings.tags.protection.create=Προστασία ετικέτας
settings.tags.protection.none=Δεν υπάρχουν προστατευμένες ετικέτες.
settings.tags.protection.pattern.description=Μπορείτε να χρησιμοποιήσετε ένα μόνο όνομα ή ένα μοτίβο τύπου glob ή κανονική έκφραση για να ταιριάξετε πολλαπλές ετικέτες. Διαβάστε περισσότερα στον οδηγό προστατευμένων ετικετών.
-settings.bot_token=Διακριτικό Bot
+settings.bot_token=Διακριτικό bot
settings.chat_id=ID Συνομιλίας
settings.thread_id=ID Νήματος
settings.matrix.homeserver_url=Homeserver URL
settings.matrix.room_id=ID Δωματίου
-settings.matrix.message_type=Τύπος Μηνύματος
-settings.archive.button=Αρχειοθέτηση Αποθετηρίου
+settings.matrix.message_type=Είδος μηνύματος
+settings.archive.button=Αρχειοθέτηση αποθετηρίου
settings.archive.header=Αρχειοθέτηση αποθετηρίου
settings.archive.text=Η αρχειοθέτηση του αποθετηρίου θα το αλλάξει σε μόνο για ανάγνωση. Δε θα φαίνεται στον αρχικό πίνακα. Κανείς (ακόμα και εσείς!) δε θα μπορεί να κάνει νέες υποβολές, ή να ανοίξει ζητήματα ή pull request.
settings.archive.success=Το αποθετήριο αρχειοθετήθηκε με επιτυχία.
@@ -2426,7 +2451,7 @@ settings.lfs_findcommits=Εύρεση υποβολών
settings.lfs_lfs_file_no_commits=Δεν βρέθηκαν υποβολές για αυτό το αρχείο LFS
settings.lfs_noattribute=Αυτή η διαδρομή δεν έχει λειτουργία κλειδώματος στον προεπιλεγμένο κλάδο
settings.lfs_delete=Διαγραφή αρχείου LFS με το OID %s
-settings.lfs_delete_warning=Η διαγραφή ενός αρχείου LFS μπορεί να προκαλέσει σφάλματα 'object does not exist' κατά την ολοκλήρωση του checkout. Σίγουρα;
+settings.lfs_delete_warning=Η διαγραφή ενός αρχείου LFS μπορεί να προκαλέσει σφάλματα «object does not exist» κατά την ολοκλήρωση του checkout. Είστε βέβαιοι;
settings.lfs_findpointerfiles=Εύρεση αρχείων δείκτη
settings.lfs_locks=Κλειδώματα
settings.lfs_invalid_locking_path=Μη έγκυρη διαδρομή: %s
@@ -2451,17 +2476,17 @@ settings.rename_branch_from=παλιό όνομα κλάδου
settings.rename_branch_to=νέο όνομα κλάδου
settings.rename_branch=Μετονομασία κλάδου
-diff.browse_source=Περιήγηση Στο Πηγαίο
+diff.browse_source=Προβολή πηγαίου κώδικα
diff.parent=γονέας
diff.commit=υποβολή
diff.git-notes=Σημειώσεις
-diff.data_not_available=Δεν Υπάρχει Διαθέσιμο Περιεχόμενο Diff
-diff.options_button=Επιλογές Diff
-diff.show_diff_stats=Εμφάνιση Στατιστικών
-diff.download_patch=Λήψη Αρχείου Patch
-diff.download_diff=Λήψη Αρχείου Diff
-diff.show_split_view=Διαιρεμένη Προβολή
-diff.show_unified_view=Ενοποιημένη Προβολή
+diff.data_not_available=Δεν υπάρχει διαθέσιμο περιεχόμενο diff
+diff.options_button=Επιλογές diff
+diff.show_diff_stats=Εμφάνιση στατιστικών
+diff.download_patch=Λήψη αρχείου patch
+diff.download_diff=Λήψη αρχείου diff
+diff.show_split_view=Διαιρεμένη προβολή
+diff.show_unified_view=Ενοποιημένη προβολή
diff.whitespace_button=Κενοί Χαρακτήρες
diff.whitespace_show_everything=Εμφάνιση όλων
diff.whitespace_ignore_all_whitespace=Παράβλεψη κενών κατά τη σύγκριση γραμμών
@@ -2471,7 +2496,7 @@ diff.stats_desc= %d αρχεία άλλαξαν με %d
diff.stats_desc_file=%d αλλαγές: %d προσθήκες και %d διαγραφές
diff.bin=BIN
diff.bin_not_shown=Το δυαδικό αρχείο δεν εμφανίζεται.
-diff.view_file=Προβολή Αρχείου
+diff.view_file=Προβολή αρχείου
diff.file_before=Πριν
diff.file_after=Μετά
diff.file_image_width=Πλάτος
@@ -2480,8 +2505,8 @@ diff.file_byte_size=Μέγεθος
diff.file_suppressed=Το diff αρχείου καταστέλλεται επειδή είναι πολύ μεγάλο
diff.file_suppressed_line_too_long=Το diff αρχείων καταστέλλεται επειδή μία ή περισσότερες γραμμές είναι πολύ μεγάλες
diff.too_many_files=Ορισμένα αρχεία δεν εμφανίστηκαν επειδή έχουν αλλάξει πάρα πολλά αρχεία σε αυτή τη διαφορά
-diff.show_more=Εμφάνιση Περισσότερων
-diff.load=Φόρτωση Διαφορών
+diff.show_more=Εμφάνιση περισσότερων
+diff.load=Φόρτωση διαφορών
diff.generated=δημιουργημένο
diff.vendored=εξωτερικό
diff.comment.add_line_comment=Προσθήκη σχολίου στη γραμμή
@@ -2501,7 +2526,7 @@ diff.review.reject=Αίτηση αλλαγών
diff.review.self_approve=Οι συγγραφείς pull request δεν μπορούν να εγκρίνουν τα δικά τους pull request
diff.committed_by=υποβλήθηκε από
diff.protected=Προστατευμένο
-diff.image.side_by_side=Δίπλα Δίπλα
+diff.image.side_by_side=Δίπλα-δίπλα
diff.image.swipe=Σύρσιμο
diff.image.overlay=Επικάλυψη
diff.has_escaped=Αυτή η γραμμή έχει κρυφούς χαρακτήρες Unicode
@@ -2556,11 +2581,11 @@ release.add_tag=Δημιουργία Ετικέτας Μόνο
release.releases_for=Κυκλοφορίες για %s
release.tags_for=Ετικέτες για %s
-branch.name=Όνομα Κλάδου
+branch.name=Όνομα κλάδου
branch.already_exists=Ήδη υπάρχει ένας κλάδος με το όνομα «%s».
branch.delete_head=Διαγραφή
-branch.delete=`Διαγραφή του Κλάδου «%s»`
-branch.delete_html=Διαγραφή Κλάδου
+branch.delete=Διαγραφή κλάδου «%s»
+branch.delete_html=Διαγραφή κλάδου
branch.delete_desc=Η διαγραφή ενός κλάδου είναι μόνιμη. Αν και ο διαγραμμένος κλάδος μπορεί να συνεχίσει να υπάρχει για σύντομο χρονικό διάστημα πριν να αφαιρεθεί, ΔΕΝ ΜΠΟΡΕΙ να αναιρεθεί στις περισσότερες περιπτώσεις. Συνέχεια;
branch.deletion_success=Ο κλάδος «%s» διαγράφηκε.
branch.deletion_failed=Η διαγραφή του κλάδου «%s» απέτυχε.
@@ -2576,9 +2601,9 @@ branch.restore_success=Ο κλάδος «%s» επαναφέρθηκε.
branch.restore_failed=Αποτυχία επαναφοράς του κλάδου «%s».
branch.protected_deletion_failed=Ο κλάδος «%s» είναι προστατευόμενος. Δεν μπορεί να διαγραφεί.
branch.default_deletion_failed=Ο κλάδος «%s» είναι προεπιλεγμένος κλάδος. Δεν μπορεί να διαγραφεί.
-branch.restore=`Επαναφορά του κλάδου «%s»`
-branch.download=`Λήψη του κλάδου «%s»`
-branch.rename=`Μετονομασία κλάδου «%s»`
+branch.restore=Επαναφορά κλάδου «%s»
+branch.download=Λήψη κλάδου «%s»
+branch.rename=Μετονομασία κλάδου «%s»
branch.search=Αναζήτηση Κλάδου
branch.included_desc=Αυτός ο κλάδος είναι μέρος του προεπιλεγμένου κλάδου
branch.included=Περιλαμβάνεται
@@ -2602,7 +2627,7 @@ tag.create_success=Η ετικέτα «%s» δημιουργήθηκε.
topic.manage_topics=Διαχείριση Θεμάτων
topic.done=Ολοκληρώθηκε
topic.count_prompt=Δεν μπορείτε να επιλέξετε περισσότερα από 25 θέματα
-topic.format_prompt=Τα θέματα πρέπει να ξεκινούν με γράμμα ή αριθμό, μπορούν να περιλαμβάνουν παύλες ('-') και τελείες ('.'), μπορεί να είναι μέχρι 35 χαρακτήρες. Τα γράμματα πρέπει να είναι πεζά.
+topic.format_prompt=Τα θέματα πρέπει να ξεκινούν με κάποιο γράμμα ή αριθμό, μπορούν να περιλαμβάνουν παύλες ('-') και τελείες ('.') και έχουν ένα μέγιστο όριο 35 χαρακτήρων. Όλα τα γράμματα θα πρέπει να είναι πεζά.
find_file.go_to_file=Αναζήτηση αρχείου
find_file.no_matching=Δεν ταιριάζει κανένα αρχείο
@@ -2616,7 +2641,7 @@ issues.comment.blocked_by_user = Δεν μπορείτε να αφήσετε σ
pulls.blocked_by_user = Δεν μπορείτε να δημιουργήσετε pull request σε αυτό το αποθετήριο, επειδή ο κάτοχος του αποθετηρίου σας έχει αποκλείσει.
pulls.made_using_agit = AGit
wiki.cancel = Ακύρωση
-settings.units.add_more = Προσθήκη περισσότερων...
+settings.units.add_more = Προσθήκη μονάδων...
settings.new_owner_blocked_doer = Ο νέος κάτοχος του αποθετηρίου σας έχει αποκλείσει.
settings.enter_repo_name = Γράψτε το όνομα του κατόχου και του αποθετηρίου ακριβώς όπως το βλέπετε:
settings.confirmation_string = Κείμενο επιβεβαίωσης
@@ -2631,7 +2656,7 @@ migrate.forgejo.description = Μεταφορά δεδομένων από το co
rss.must_be_on_branch = Για να αποκτήσετε ένα RSS feed, πρέπει να βρίσκεστε σε έναν κλάδο.
clone_in_vscodium = Κλωνοποίηση στο VSCodium
editor.invalid_commit_mail = Αυτή η διεύθυνση email δεν είναι έγκυρη για την δημιουργία μίας υποβολής.
-pulls.nothing_to_compare_have_tag = Ο επιλεγμένος κλάδος/tag είναι παρόμοιος.
+pulls.nothing_to_compare_have_tag = Ο επιλεγμένος κλάδος/tag είναι όμοιος.
issues.blocked_by_user = Δεν μπορείτε να δημιουργήσετε ζητήματα σε αυτό το αποθετήριο, επειδή ο κάτοχος του αποθετηρίου σας έχει αποκλείσει.
pulls.agit_explanation = Δημιουργημένο μέσω του AGit. Το AGit επιτρέπει σε συνεισφέροντες να προτείνουν αλλαγές χρησιμοποιώντας την εντολή «git push», χωρίς την δημιουργία fork ή έναν νέο κλάδο.
activity.navbar.recent_commits = Πρόσφατες υποβολές
@@ -2657,8 +2682,47 @@ pulls.reopen_failed.base_branch = Δεν είναι δυνατό το επανά
activity.navbar.pulse = Παλμός
error.broken_git_hook = Τα Git hook του αποθετηρίου δεν φαίνονται να λειτουργούν. Παρακαλώ ακολουθήστε τον οδηγό για να τα διορθώσετε, και μετά ωθήστε μερικές υποβολές (commits) για να γίνει επανέλεγχος.
settings.add_collaborator_blocked_them = Δεν είναι δυνατή η προσθήκη του χρήστη ως συνεργάτη, καθώς έχει αποκλείσει τον κάτοχο του αποθετηρίου.
-settings.wiki_rename_branch_main_notices_2 = Αυτό θα αλλάξει το όνομα του κλάδου που χρησιμοποιείται εσωτερικά για το wiki του αποθετηρίου %s. Αν έχετε ένα τοπικό αντίγραφο του αποθετηρίου, θα χρειαστεί να αλλάξετε τα checkout του.
+settings.wiki_rename_branch_main_notices_2 = Αυτό θα αλλάξει το όνομα του κλάδου που χρησιμοποιείται «στο υπόβαθρο» για το wiki του αποθετηρίου %s. Αν έχετε ένα τοπικό αντίγραφο του αποθετηρίου, θα χρειαστεί να αλλάξετε τα checkout του.
settings.add_collaborator_blocked_our = Δεν είναι δυνατή η προσθήκη του χρήστη ως συνεργάτη, καθώς ο κάτοχος του αποθετηρίου τον έχει αποκλείσει.
+n_branch_few = %s κλάδοι
+n_tag_one = %s ετικέτα
+n_tag_few = %s ετικέτες
+n_commit_one = %s υποβολή
+stars = Αστέρια
+n_branch_one = %s κλάδος
+commits.search_branch = Αυτός ο κλάδος
+pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο %[2]s στον κλάδο %[3]s
+pulls.merged_title_desc_one = : συγχώνευσε %[1]d υποβολή από τον κλάδο %[2]s στον κλάδο %[3]s %[4]s
+n_commit_few = %s υποβολές
+settings.sourcehut_builds.secrets = Μυστικά
+settings.add_webhook.invalid_path = Η τοποθεσία του αρχείου δεν μπορεί να περιέχει κενά, «.» ή «..». Δεν μπορεί να αρχίζει ή να τελειώνει με μία κάθετο.
+commits.browse_further = Περιήγηση περισσοτέρων
+issues.num_participants_one = %d συμμετέχων
+settings.sourcehut_builds.graphql_url = Υπερσύνδεσμος GraphQL (π.χ. https://builds.sr.ht/query)
+settings.sourcehut_builds.manifest_path = Τοποθεσία build manifest
+size_format = %[1]s: %[2]s, %[3]s: %[4]s
+issues.archived_label_description = (Αρχειοθετημένη) %s
+vendored = Εξωτερικό
+open_with_editor = Άνοιγμα με %s
+release.download_count_one = %s λήψη
+release.download_count_few = %s λήψεις
+release.system_generated = Αυτό το αρχείο παράγεται αυτόματα.
+pulls.ready_for_review = Έτοιμο για αξιολόγηση;
+settings.rename_branch_failed_protected = Δεν είναι δυνατή η μετονομασία του κλάδου %s, επειδή είναι προστατευόμενος.
+settings.event_pull_request_enforcement = Εξαναγκασμός
+editor.commit_id_not_matching = Το αναγνωριστικό της υποβολής δεν ταιριάζει με την υποβολή που επεξεργαστήκατε. Θα πρέπει να υποβάλετε τις αλλαγές σας σε έναν νέο κλάδο και μετά να τις συγχωνεύσετε.
+settings.sourcehut_builds.visibility = Ορατότητα εργασιών
+object_format = Μορφή αντικειμένων («object format»)
+settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερες υποβολές, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο.
+settings.archive.mirrors_unavailable = Οι λειτουργίες ειδώλου δεν είναι διαθέσιμες εφόσον το αποθετήριο έχει αρχειοθετηθεί.
+settings.web_hook_name_sourcehut_builds = SourceHut Builds
+settings.enforce_on_admins = Εφαρμογή κανόνα σε διαχειριστές του αποθετηρίου
+object_format_helper = Η μορφή των αντικειμένων του αποθετηρίου. Δεν θα μπορείτε να το αλλάξετε μεταγενέστερα. Η πιο συμβατή μορφή είναι η SHA1.
+settings.enforce_on_admins_desc = Οι διαχειριστές του αποθετηρίου δεν μπορούν να προσπελάσουν τον κανόνα.
+file_follow = Ακολούθηση συνδέσμου (symlink)
+settings.sourcehut_builds.secrets_helper = Παραχώρηση πρόσβασης του job στα μυστικά ενός build (απαιτείται η άδεια SECRETS:RO)
+generated = Παραγμένο
+editor.push_out_of_date = Η αλλαγή φαίνεται να είναι παρωχημένη.
[graphs]
component_loading_failed = Δεν ήταν δυνατή η φόρτωση του %s
@@ -2670,26 +2734,26 @@ recent_commits.what = πρόσφατες υποβολές
code_frequency.what = συχνότητα κώδικα
[org]
-org_name_holder=Όνομα Οργανισμού
-org_full_name_holder=Πλήρες Όνομα Οργανισμού
+org_name_holder=Όνομα οργανισμού
+org_full_name_holder=Πλήρες όνομα οργανισμού
org_name_helper=Τα ονόματα οργανισμών θα πρέπει να είναι σύντομα και εύκολα στην απομνημόνευση.
-create_org=Δημιουργία Οργανισμού
+create_org=Δημιουργία οργανισμού
repo_updated=Ενημερώθηκε
members=Μέλη
teams=Ομάδες
code=Κώδικας
lower_members=μέλη
lower_repositories=αποθετήρια
-create_new_team=Νέα Ομάδα
-create_team=Δημιουργία Ομάδας
+create_new_team=Νέα ομάδα
+create_team=Δημιουργία ομάδας
org_desc=Περιγραφή
-team_name=Όνομα Ομάδας
+team_name=Όνομα ομάδας
team_desc=Περιγραφή
team_name_helper=Τα Ονόματα ομάδων θα πρέπει να είναι σύντομα και εύκολα.
team_desc_helper=Περιγράψτε τον σκοπό ή το ρόλο της ομάδας.
team_access_desc=Πρόσβαση αποθετηρίου
team_permission_desc=Δικαίωμα
-team_unit_desc=Να επιτρέπεται η Πρόσβαση σε Τμήματα του Αποθετηρίου
+team_unit_desc=Να επιτρέπεται η πρόσβαση σε τμήματα του αποθετηρίου
team_unit_disabled=(Απενεργοποιημένο)
form.name_reserved=Το όνομα οργανισμού «%s» είναι δεσμευμένο.
@@ -2698,40 +2762,40 @@ form.create_org_not_allowed=Δεν επιτρέπεται να δημιουργ
settings=Ρυθμίσεις
settings.options=Οργανισμός
-settings.full_name=Πλήρες Όνομα
-settings.email=Email Επικοινωνίας
+settings.full_name=Πλήρες όνομα
+settings.email=Email επικοινωνίας
settings.website=Ιστοσελίδα
settings.location=Τοποθεσία
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=Ενημέρωση Ρυθμίσεων
+settings.update_settings=Ενημέρωση ρυθμίσεων
settings.update_setting_success=Οι ρυθμίσεις του οργανισμού έχουν ενημερωθεί.
settings.change_orgname_prompt=Σημείωση: Η αλλαγή του ονόματος του οργανισμού θα αλλάξει επίσης τη διεύθυνση URL του οργανισμού σας και θα απελευθερώσει το παλιό όνομα.
settings.change_orgname_redirect_prompt=Το παλιό όνομα θα ανακατευθύνει μέχρι να διεκδικηθεί.
settings.update_avatar_success=Η εικόνα του οργανισμού έχει ενημερωθεί.
-settings.delete=Διαγραφή Οργανισμού
-settings.delete_account=Διαγραφή Αυτού Του Οργανισμού
+settings.delete=Διαγραφή οργανισμού
+settings.delete_account=Διαγραφή αυτού του οργανισμού
settings.delete_prompt=Ο οργανισμός θα αφαιρεθεί οριστικά. Αυτό το ΔΕΝ ΜΠΟΡΕΙ να αναιρεθεί!
-settings.confirm_delete_account=Επιβεβαίωση Διαγραφής
-settings.delete_org_title=Διαγραφή Οργανισμού
+settings.confirm_delete_account=Επιβεβαίωση διαγραφής
+settings.delete_org_title=Διαγραφή οργανισμού
settings.delete_org_desc=Αυτός ο οργανισμός θα διαγραφεί οριστικά. Συνέχεια;
settings.hooks_desc=Προσθήκη webhooks που θα ενεργοποιούνται για όλα τα αποθετήρια κάτω από αυτό τον οργανισμό.
settings.labels_desc=Προσθήκη σημάτων που μπορούν να χρησιμοποιηθούν σε ζητήματα για όλα τα αποθετήρια κάτω από αυτό τον οργανισμό.
-members.membership_visibility=Ορατότητα Μέλους:
+members.membership_visibility=Ορατότητα μέλους:
members.public=Ορατό
members.public_helper=κάνε το κρυφό
members.private=Κρυφό
members.private_helper=κάνε ορατό
-members.member_role=Ρόλος Μέλους:
+members.member_role=Ρόλος μέλους:
members.owner=Ιδιοκτήτης
members.member=Μέλος
members.remove=Αφαίρεση
@@ -2739,40 +2803,40 @@ members.remove.detail=Αφαιρέστε το %[1]s από %[2]s;
members.leave=Αποχώρηση
members.leave.detail=Αποχώρηση από %s;
members.invite_desc=Προσθέστε ένα νέο μέλος στο %s:
-members.invite_now=Πρόσκληση Τώρα
+members.invite_now=Αποστολή πρόσκλησης
teams.join=Συμμετοχή
teams.leave=Αποχώρηση
teams.leave.detail=Αποχώρηση από την ομάδα %s;
teams.can_create_org_repo=Δημιουργία αποθετηρίων
teams.can_create_org_repo_helper=Τα μέλη μπορούν να δημιουργήσουν νέα αποθετήρια στον οργανισμό. Ο δημιουργός θα αποκτήσει πρόσβαση διαχειριστή στο νέο αποθετήριο.
-teams.none_access=Καμία Πρόσβαση
+teams.none_access=Καμία πρόσβαση
teams.none_access_helper=Τα μέλη δεν μπορούν να δουν ή να κάνουν οποιαδήποτε άλλη ενέργεια σε αυτή τη μονάδα.
-teams.general_access=Γενική Πρόσβαση
+teams.general_access=Γενική πρόσβαση
teams.general_access_helper=Τα δικαιώματα των μελών αποφασίζονται από το παρακάτω πίνακα αδειών.
teams.read_access=Ανάγνωση
teams.read_access_helper=Τα μέλη μπορούν να δουν και να κλωνοποιήσουν τα αποθετήρια της ομάδας.
teams.write_access=Εγγραφή
teams.write_access_helper=Τα μέλη μπορούν να δουν και να κλωνοποιήσουν τα αποθετήρια της ομάδας.
-teams.admin_access=Πρόσβαση Διαχειριστή
+teams.admin_access=Πρόσβαση διαχειριστή
teams.admin_access_helper=Τα μέλη μπορούν να κάνουν push και pull στα αποθετήρια της ομάδας, καθώς και να προσθέσουν συνεργάτες σε αυτά.
teams.no_desc=Η ομάδα δεν έχει περιγραφή
teams.settings=Ρυθμίσεις
teams.owners_permission_desc=Οι ιδιοκτήτες έχουν πλήρη πρόσβαση σε όλα τα αποθετήρια και έχουν πρόσβαση διαχειριστή στον οργανισμό.
-teams.members=Μέλη Ομάδας
-teams.update_settings=Ενημέρωση Ρυθμίσεων
-teams.delete_team=Διαγραφή Ομάδας
-teams.add_team_member=Προσθήκη Μέλους Ομάδας
+teams.members=Μέλη ομάδας
+teams.update_settings=Ενημέρωση ρυθμίσεων
+teams.delete_team=Διαγραφή ομάδας
+teams.add_team_member=Προσθήκη μέλους ομάδας
teams.invite_team_member=Πρόσκληση στην ομάδα %s
-teams.invite_team_member.list=Εκκρεμείς Προσκλήσεις
-teams.delete_team_title=Διαγραφή Ομάδας
+teams.invite_team_member.list=Εκκρεμείς προσκλήσεις
+teams.delete_team_title=Διαγραφή ομάδας
teams.delete_team_desc=Η διαγραφή μιας ομάδας ανακαλεί τη πρόσβαση στο αποθετήριο από τα μέλη της. Συνέχεια;
teams.delete_team_success=Η ομάδα έχει διαγραφεί.
teams.read_permission_desc=Αυτή η ομάδα χορηγεί πρόσβαση Ανάγνωσης: τα μέλη μπορούν να δουν και να κλωνοποιήσουν τα αποθετήρια της ομάδας.
teams.write_permission_desc=Αυτή η ομάδα χορηγεί πρόσβαση Εγγραφής: τα μέλη μπορούν να διαβάσουν και να κάνουν push στα αποθετήρια της ομάδας.
teams.admin_permission_desc=Αυτή η ομάδα κατέχει δικαιώματα διαχειριστή: Τα μέλη της μπορούν να δουν αποθετήρια, να κάνουν push σε αυτά καθώς και να προσθέσουν συνεργάτες.
teams.create_repo_permission_desc=Επιπλέον, αυτή η ομάδα χορηγεί άδεια Δημιουργία αποθετηρίου: τα μέλη μπορούν να δημιουργήσουν νέα αποθετήρια στον οργανισμό.
-teams.repositories=Αποθετήρια Ομάδας
+teams.repositories=Αποθετήρια ομάδας
teams.search_repo_placeholder=Αναζήτηση αποθετηρίου…
teams.remove_all_repos_title=Αφαίρεση όλων των αποθετηρίων της ομάδας
teams.remove_all_repos_desc=Αυτό θα αφαιρέσει όλα τα αποθετήρια από την ομάδα.
@@ -2796,22 +2860,22 @@ follow_blocked_user = Δεν μπορείτε να ακολουθήσετε αυ
[admin]
dashboard=Πίνακας Ελέγχου
-identity_access=Ταυτότητα & Πρόσβαση
-users=Λογαριασμοί Χρήστη
+identity_access=Ταυτότητα & πρόσβαση
+users=Λογαριασμοί χρήστη
organizations=Οργανισμοί
-assets=Στοιχεία Κώδικα
+assets=Στοιχεία κώδικα
repositories=Αποθετήρια
hooks=Webhooks
integrations=Ενσωματώσεις
-authentication=Πηγές Ταυτοποίησης
-emails=Email Χρήστη
+authentication=Πηγές ταυτοποίησης
+emails=Email χρήστη
config=Διαμόρφωση
-notices=Ειδοποιήσεις Συστήματος
+notices=Ειδοποιήσεις συστήματος
monitor=Παρακολούθηση
first_page=Πρώτο
last_page=Τελευταίο
total=Σύνολο: %d
-settings=Ρυθμίσεις Διαχειριστή
+settings=Ρυθμίσεις διαχειριστή
dashboard.new_version_hint=Το Forgejo %s είναι διαθέσιμο, χρησιμοποιείτε το %s. Ανατρέξτε στο blog για περισσότερες λεπτομέρειες.
dashboard.statistic=Περίληψη
@@ -2831,7 +2895,7 @@ dashboard.task.unknown=Άγνωστη εργασία: %[1]s
dashboard.cron.started=Εκκίνηση Προγραμματισμένης Εργασίας: %[1]s
dashboard.cron.process=Προγραμματισμένη Εργασία: %[1]s
dashboard.cron.cancelled=Προγραμματισμένη εργασία: %[1]s ακυρώθηκε: %[3]s
-dashboard.cron.error=Σφάλμα στη Προγραμματισμένη Εργασία: %s: %[3]s
+dashboard.cron.error=Σφάλμα στη προγραμματισμένη εργασία: %s: %[3]s
dashboard.cron.finished=Προγραμματισμένη Εργασία: %[1]s τελείωσε
dashboard.delete_inactive_accounts=Διαγραφή όλων των μη ενεργοποιημένων λογαριασμών
dashboard.delete_inactive_accounts.started=Η διαγραφή όλων των μη ενεργοποιημένων λογαριασμών ξεκίνησε.
@@ -2839,9 +2903,9 @@ dashboard.delete_repo_archives=Διαγραφή όλων των αρχείων
dashboard.delete_repo_archives.started=Η διαγραφή όλων των αρχείων λήψης του αποθετηρίου ξεκίνησε.
dashboard.delete_missing_repos=Διαγραφή όλων των αποθετηρίων που δεν έχουν τα αρχεία Git τους
dashboard.delete_missing_repos.started=Η διαγραφή όλων των αποθετηρίων που δεν έχουν αρχεία Git τους, ξεκίνησε.
-dashboard.delete_generated_repository_avatars=Διαγραφή δημιουργημένων εικόνων αποθετηρίων
-dashboard.sync_repo_branches=Συγχρονισμός κλάδων που λείπουν, από τα δεδομένα git στις βάσεις δεδομένων
-dashboard.update_mirrors=Ενημέρωση Ειδώλων
+dashboard.delete_generated_repository_avatars=Διαγραφή παραγμένων εικόνων αποθετηρίων
+dashboard.sync_repo_branches=Συγχρονισμός κλάδων που λείπουν, χρησιμοποιώντας τα δεδομένα git στην βάση δεδομένων
+dashboard.update_mirrors=Ενημέρωση ειδώλων
dashboard.repo_health_check=Έλεγχος υγείας σε όλα τα αποθετήρια
dashboard.check_repo_stats=Έλεγχος όλων των στατιστικών αποθετηρίων
dashboard.archive_cleanup=Διαγραφή παλαιών αρχείων λήψης αποθετηρίων
@@ -2880,7 +2944,7 @@ dashboard.profiling_bucket_hash_table_obtained=Profiling Bucket Hash Table πο
dashboard.gc_metadata_obtained=Μεταδεδομένα GC που έχουν ληφθεί
dashboard.other_system_allocation_obtained=Άλλες αναθέσεις συστήματος που έχουν ληφθεί
dashboard.next_gc_recycle=Επόμενη ανακύκλωση GC
-dashboard.last_gc_time=Από Την Τελευταία Φορά GC
+dashboard.last_gc_time=Χρόνος από την τελευταία φορά που έγινε GC
dashboard.total_gc_time=Σύνολο Παύσης GC
dashboard.total_gc_pause=Σύνολο παύσης GC
dashboard.last_gc_pause=Τελευταία παύση GC
@@ -2900,7 +2964,7 @@ dashboard.rebuild_issue_indexer=Αναδόμηση ευρετηρίου ζητη
users.user_manage_panel=Διαχείριση λογαριασμών χρηστών
users.new_account=Δημιουργία Λογαριασμού Χρήστη
users.name=Όνομα Χρήστη
-users.full_name=Πλήρες Όνομα
+users.full_name=Πλήρες όνομα
users.activated=Ενεργοποιήθηκε
users.admin=Διαχειριστής
users.restricted=Περιορισμένος
@@ -2910,29 +2974,29 @@ users.remote=Απομακρυσμένο
users.2fa=2FA
users.repos=Αποθετήρια
users.created=Δημιουργήθηκε
-users.last_login=Τελευταία Σύνδεση
-users.never_login=Καμία Σύνδεση
+users.last_login=Τελευταία σύνδεση
+users.never_login=Καμία σύνδεση
users.send_register_notify=Αποστολή ειδοποιήσεων εγγραφής χρήστη
users.new_success=Ο λογαριασμός χρήστη «%s» δημιουργήθηκε.
users.edit=Επεξεργασία
-users.auth_source=Πηγή Ταυτοποίησης
+users.auth_source=Πηγή ταυτοποίησης
users.local=Τοπική
-users.auth_login_name=Όνομα Σύνδεσης Ταυτοποίησης
+users.auth_login_name=Όνομα σύνδεσης ταυτοποίησης
users.password_helper=Αφήστε κενό τον κωδικό πρόσβασης για να τον κρατήσετε αμετάβλητο.
users.update_profile_success=Ο λογαριασμός χρήστη έχει ενημερωθεί.
-users.edit_account=Επεξεργασία Λογαριασμού Χρήστη
-users.max_repo_creation=Μέγιστος Αριθμός Αποθετηρίων
+users.edit_account=Επεξεργασία λογαριασμού χρήστη
+users.max_repo_creation=Μέγιστος αριθμός αποθετηρίων
users.max_repo_creation_desc=(Ορίστε -1 για να χρησιμοποιήσετε το προκαθορισμένο όριο.)
users.is_activated=Ο Λογαριασμός Χρήστη Ενεργοποιήθηκε
users.prohibit_login=Απενεργοποίηση εισόδου
-users.is_admin=Είναι Διαχειριστής
-users.is_restricted=Είναι Περιορισμένος
-users.allow_git_hook=Μπορεί Να Δημιουργεί Git Hooks
-users.allow_git_hook_tooltip=Τα Git Hooks εκτελούνται μέσω του χρήστη που εκτελεί το Forgejo και θα έχουν το ίδιο επίπεδο πρόσβασης στο διακομιστή. Ως αποτέλεσμα, οι χρήστες με αυτό το ειδικό προνόμιο Git Hook μπορούν να έχουν πρόσβαση και να τροποποιήσουν όλα τα αποθετήρια του Forgejo, καθώς και τη βάση δεδομένων που χρησιμοποιεί το Forgejo. Κατά συνέπεια, αυτοί οι χρήστες θα είναι σε θέση να αποκτήσουν δικαιώματα διαχειριστή στο Forgejo.
-users.allow_import_local=Μπορεί Να Εισάγει Τοπικά Αποθετήρια
-users.allow_create_organization=Μπορεί Να Δημιουργεί Οργανισμούς
-users.update_profile=Ενημέρωση Λογαριασμού Χρήστη
-users.delete_account=Διαγραφή Λογαριασμού Χρήστη
+users.is_admin=Είναι διαχειριστής
+users.is_restricted=Είναι περιορισμένος
+users.allow_git_hook=Μπορεί να δημιουργεί Git hooks
+users.allow_git_hook_tooltip=Τα Git hooks εκτελούνται μέσω του χρήστη που εκτελεί το Forgejo και θα έχουν το ίδιο επίπεδο πρόσβασης στο διακομιστή. Ως αποτέλεσμα, οι χρήστες με αυτό το ειδικό προνόμιο Git hook θα μπορούν να έχουν πρόσβαση και να τροποποιήσουν όλα τα αποθετήρια του Forgejo, καθώς και τη βάση δεδομένων που χρησιμοποιεί το Forgejo. Κατά συνέπεια, αυτοί οι χρήστες θα είναι σε θέση να αποκτήσουν δικαιώματα διαχειριστή στο Forgejo.
+users.allow_import_local=Μπορεί να εισάγει τοπικά αποθετήρια
+users.allow_create_organization=Μπορεί να δημιουργεί οργανισμούς
+users.update_profile=Ενημέρωση λογαριασμού χρήστη
+users.delete_account=Διαγραφή λογαριασμού χρήστη
users.cannot_delete_self=Δεν μπορείτε να διαγράψετε τον εαυτό σας
users.still_own_repo=Αυτός ο χρήστης εξακολουθεί να κατέχει ένα ή περισσότερα αποθετήρια. Διαγράψτε ή μεταφέρετε αυτά τα αποθετήρια πρώτα.
users.still_has_org=Αυτός ο χρήστης είναι μέλος ενός οργανισμού. Αφαιρέστε πρώτα τον χρήστη από οποιονδήποτε οργανισμό.
@@ -2960,8 +3024,8 @@ emails.primary=Κύριο
emails.activated=Ενεργοποιήθηκε
emails.filter_sort.email=Email
emails.filter_sort.email_reverse=Email (αντίστροφη)
-emails.filter_sort.name=Όνομα Χρήστη
-emails.filter_sort.name_reverse=Όνομα Χρήστη (αντίστροφα)
+emails.filter_sort.name=Όνομα χρήστη
+emails.filter_sort.name_reverse=Όνομα χρήστη (αντίστροφα)
emails.updated=Το email ενημερώθηκε
emails.not_updated=Αποτυχία ενημέρωσης της ζητούμενης διεύθυνσης email: %v
emails.duplicate_active=Αυτή η διεύθυνση email είναι ήδη ενεργή σε διαφορετικό χρήστη.
@@ -2972,10 +3036,10 @@ orgs.org_manage_panel=Διαχείριση οργανισμών
orgs.name=Όνομα
orgs.teams=Ομάδες
orgs.members=Μέλη
-orgs.new_orga=Νέος Οργανισμός
+orgs.new_orga=Νέος οργανισμός
repos.repo_manage_panel=Διαχείριση αποθετηρίων
-repos.unadopted=Μη Υιοθετημένα Αποθετήρια
+repos.unadopted=Αποθετήρια χωρίς κατόχους
repos.unadopted.no_more=Δεν βρέθηκαν μη υιοθετημένα αποθετήρια
repos.owner=Ιδιοκτήτης
repos.name=Όνομα
@@ -3012,58 +3076,58 @@ systemhooks.add_webhook=Προσθήκη Webhook Συστήματος
systemhooks.update_webhook=Ενημέρωση Webhook Συστήματος
auths.auth_manage_panel=Διαχείριση πηγών ταυτοποίησης
-auths.new=Προσθήκη Πηγής Ταυτοποίησης
+auths.new=Προσθήκη πηγής ταυτοποίησης
auths.name=Όνομα
auths.type=Τύπος
auths.enabled=Ενεργοποιημένο
-auths.syncenabled=Ενεργοποίηση Συγχρονισμού Χρηστών
+auths.syncenabled=Ενεργοποίηση συγχρονισμού χρηστών
auths.updated=Ενημερώθηκε
-auths.auth_type=Τύπος Ταυτοποίησης
-auths.auth_name=Όνομα Ταυτοποίησης
-auths.security_protocol=Πρωτόκολλο Ασφαλείας
+auths.auth_type=Μέθοδος ταυτοποίησης
+auths.auth_name=Όνομα ταυτοποίησης
+auths.security_protocol=Πρωτόκολλο ασφαλείας
auths.domain=Domain
auths.host=Διακομιστής
auths.port=Θύρα
auths.bind_dn=Bind DN
-auths.bind_password=Κωδικός Πρόσβασης Bind
-auths.user_base=Search Base Χρήστη
+auths.bind_password=Κωδικός πρόσβασης Bind
+auths.user_base=Search base χρήστη
auths.user_dn=DN Χρήστη
-auths.attribute_username=Attribute Ονόματος Χρήστη
+auths.attribute_username=Ιδιότητες ονόματος χρήστη
auths.attribute_username_placeholder=Αφήστε κενό για να χρησιμοποιήσετε το όνομα χρήστη που πληκτρολογήσατε στο Forgejo.
-auths.attribute_name=Χαρακτηριστικό Ονόματος
-auths.attribute_surname=Χαρακτηριστικό Επωνύμου
-auths.attribute_mail=Χαρακτηριστικό Email
-auths.attribute_ssh_public_key=Χαρακτηριστικό Δημόσιου Κλειδιού SSH
-auths.attribute_avatar=Χαρακτηριστικό Εικόνας
+auths.attribute_name=Χαρακτηριστικό ονόματος
+auths.attribute_surname=Χαρακτηριστικό επωνύμου
+auths.attribute_mail=Χαρακτηριστικό email
+auths.attribute_ssh_public_key=Χαρακτηριστικό δημόσιου κλειδιού SSH
+auths.attribute_avatar=Χαρακτηριστικό εικόνας
auths.attributes_in_bind=Λήψη χαρακτηριστικών μέσα στο πλαίσιο του Bind DN
auths.allow_deactivate_all=Επιτρέψτε σε ένα κενό αποτέλεσμα αναζήτησης να απενεργοποιήσει όλους τους χρήστες
-auths.use_paged_search=Χρήση Σελιδοποιημένης Αναζήτησης
-auths.search_page_size=Μέγεθος Σελίδας
-auths.filter=Φίλτρο Χρηστών
-auths.admin_filter=Φίλτρο Διαχειριστών
-auths.restricted_filter=Φίλτρο Περιορισμένων
+auths.use_paged_search=Χρήση σελιδοποιημένης αναζήτησης
+auths.search_page_size=Μέγεθος σελίδας
+auths.filter=Φίλτρο χρηστών
+auths.admin_filter=Φίλτρο διαχειριστών
+auths.restricted_filter=Φίλτρο περιορισμένων
auths.restricted_filter_helper=Αφήστε κενό για να μην περιορίσετε κανέναν χρήστη. Χρησιμοποιήστε έναν αστερίσκο ('*') για να περιορίσετε όλους τους χρήστες που δεν είναι διαχειριστές.
auths.verify_group_membership=Επαλήθευση της συμμετοχής σε ομάδα στο LDAP (αφήστε το φίλτρο κενό για παράλειψη)
-auths.group_search_base=DN Βάσης Αναζήτησης Ομάδων
-auths.group_attribute_list_users=Χαρακτηριστικό Ομάδας Που Περιέχει Τη Λίστα Χρηστών
-auths.user_attribute_in_group=Χαρακτηριστικό Χρήστη Στην Ομάδα
+auths.group_search_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.enable_ldap_groups=Ενεργοποίηση ομάδων LDAP
-auths.ms_ad_sa=Χαρακτηριστικά Αναζήτησης Στο MS AD
+auths.ms_ad_sa=Χαρακτηριστικά αναζήτησης στο MS AD
auths.smtp_auth=Τύπος ταυτοποίησης SMTP
auths.smtphost=Διακομιστής SMTP
auths.smtpport=Θύρα SMTP
-auths.allowed_domains=Επιτρεπόμενα Domains
-auths.allowed_domains_helper=Αφήστε κενό για να επιτρέψετε όλα τα domains. Διαχωρίστε τα πολλαπλά domains με κόμμα (',').
+auths.allowed_domains=Επιτρεπόμενα domains
+auths.allowed_domains_helper=Αφήστε κενό για να επιτρέψετε όλα τα domains. Αν θέλετε να εισάγετε πολλαπλά domains, διαχωρίστε τα με κόμμα («,»).
auths.skip_tls_verify=Παράλειψη επαλήθευσης TLS
auths.force_smtps=Αναγκαστικό SMTPS
auths.force_smtps_helper=Το SMTPS χρησιμοποιείται συνήθως στη θύρα 465. Ορίστε αυτό το πεδίο για χρήση του SMTPS σε άλλες θύρες. (Αλλιώς το STARTTLS θα χρησιμοποιηθεί σε άλλες θύρες αν υποστηρίζεται από τον διακομιστή.)
auths.helo_hostname=Όνομα διακομιστή στο HELO
auths.helo_hostname_helper=Όνομα διακομιστή που αποστέλλεται με το HELO. Αφήστε κενό για να στείλετε το τρέχον όνομα του διακομιστή.
auths.disable_helo=Απενεργοποίηση HELO
-auths.pam_service_name=Όνομα Υπηρεσίας PAM
-auths.pam_email_domain=PAM Email Domain (προαιρετικό)
+auths.pam_service_name=Όνομα υπηρεσίας PAM
+auths.pam_email_domain=PAM email domain (προαιρετικό)
auths.oauth2_provider=Πάροχος OAuth2
auths.oauth2_icon_url=URL Εικονιδίου
auths.oauth2_clientID=Client ID (Κλειδί)
@@ -3077,15 +3141,15 @@ auths.oauth2_emailURL=Email URL
auths.skip_local_two_fa=Παράλειψη τοπικού 2FA
auths.skip_local_two_fa_helper=Αφήνοντας μη-ορισμένο σημαίνει ότι οι τοπικοί χρήστες με ορισμένο 2FA θα πρέπει να πετύχουν το 2FA για να συνδεθούν
auths.oauth2_tenant=Ένοικος
-auths.oauth2_scopes=Πρόσθετα Scopes
-auths.oauth2_required_claim_name=Απαιτούμενο Όνομα Claim
+auths.oauth2_scopes=Πρόσθετα scopes
+auths.oauth2_required_claim_name=Απαιτούμενο όνομα claim
auths.oauth2_required_claim_name_helper=Ορίστε αυτό το όνομα για να περιορίσετε τη σύνδεση από αυτή την πηγή στους χρήστες με ένα claim με αυτό το όνομα
-auths.oauth2_required_claim_value=Απαιτούμενη Τιμή Claim
+auths.oauth2_required_claim_value=Απαιτούμενη τιμή claim
auths.oauth2_required_claim_value_helper=Ορίστε αυτήν την τιμή για να περιορίσετε τη σύνδεση από αυτή την πηγή στους χρήστες με ένα claim με αυτό το όνομα και την τιμή
-auths.oauth2_group_claim_name=Όνομα claim που παρέχει ονόματα ομάδων για αυτήν την πηγή. (Προαιρετικό)
-auths.oauth2_admin_group=Τιμή Group Claim για διαχειριστές. (Προαιρετικό - απαιτεί όνομα claim παραπάνω)
-auths.oauth2_restricted_group=Τιμή Group Claim για περιορισμένους χρήστες (Προαιρετικό - απαιτεί όνομα claim παραπάνω)
-auths.oauth2_map_group_to_team=Αντιστοίχιση των απαιτούμενων ομάδων σε ομάδες Οργανισμού. (Προαιρετικό - απαιτείται το όνομα της απαίτησης παραπάνω)
+auths.oauth2_group_claim_name=Όνομα claim που παρέχει ονόματα ομάδων για αυτήν την πηγή. (προαιρετικό)
+auths.oauth2_admin_group=Τιμή Group Claim για διαχειριστές. (προαιρετικό - απαιτεί όνομα claim παραπάνω)
+auths.oauth2_restricted_group=Τιμή Group Claim για περιορισμένους χρήστες (προαιρετικό - απαιτεί όνομα claim παραπάνω)
+auths.oauth2_map_group_to_team=Αντιστοίχιση των απαιτούμενων ομάδων σε ομάδες οργανισμού. (προαιρετικό - απαιτείται το όνομα της απαίτησης παραπάνω)
auths.oauth2_map_group_to_team_removal=Αφαίρεση χρηστών από τις συγχρονισμένες ομάδες, εάν ένας χρήστης δεν ανήκει στην αντίστοιχη ομάδα.
auths.enable_auto_register=Ενεργοποίηση αυτόματης εγγραφής
auths.sspi_auto_create_users=Αυτόματη δημιουργία χρηστών
@@ -3112,16 +3176,16 @@ auths.tip.google_plus=Αποκτήστε τα διαπιστευτήρια πε
auths.tip.openid_connect=Χρησιμοποιήστε το OpenID Connect Discovery URL (/.well known/openid-configuration) για να καθορίσετε τα τελικά σημεία
auths.tip.twitter=Πηγαίνετε στο https://dev.twitter.com/apps, δημιουργήστε μια εφαρμογή και βεβαιωθείτε ότι η επιλογή “Allow this application to be used to Sign in with Twitter” είναι ενεργοποιημένη
auths.tip.discord=Καταχωρήστε μια νέα εφαρμογή στο https://discordapp.com/developers/applications/me
-auths.tip.gitea=Καταχωρήστε μια νέα εφαρμογή OAuth2. Μπορείτε να βρείτε τον οδηγό στο https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Δημιουργήστε μια νέα εφαρμογή στο https://oauth.yandex.com/client/new. Επιλέξτε τα ακόλουθα δικαιώματα από την ενότητα "Yandex.Passport API": "Access to email address", "Access to user avatar" και "Access to username, first name and surname, gender"`
+auths.tip.gitea=Καταχωρήστε μια νέα εφαρμογή OAuth2. Μπορείτε να βρείτε τον οδηγό στο https://forgejo.org/docs/latest/user/oauth2-provider
+auths.tip.yandex=Δημιουργήστε μια νέα εφαρμογή στο https://oauth.yandex.com/client/new. Επιλέξτε τα ακόλουθα δικαιώματα από την ενότητα "Yandex.Passport API": "Access to email address", "Access to user avatar" και "Access to username, first name and surname, gender"`
auths.tip.mastodon=Εισαγάγετε ένα προσαρμομένο URL για την υπηρεσία mastodon με την οποία θέλετε να πιστοποιήσετε (ή να χρησιμοποιήσετε την προεπιλεγμένη)
-auths.edit=Επεξεργασία Πηγής Ταυτοποίησης
+auths.edit=Επεξεργασία πηγής ταυτοποίησης
auths.activated=Αυτή η πηγή είναι ενεργοποιημένη
auths.new_success=Το μέσο ταυτοποίησης «%s» προστέθηκε.
auths.update_success=Η πηγή ενημερώθηκε.
-auths.update=Ενημέρωση Πηγής Ταυτοποίησης
-auths.delete=Διαγραφή Πηγής Ταυτοποίησης
-auths.delete_auth_title=Διαγραφή Πηγής Ταυτοποίησης
+auths.update=Ενημέρωση πηγής ταυτοποίησης
+auths.delete=Διαγραφή πηγής ταυτοποίησης
+auths.delete_auth_title=Διαγραφή πηγής ταυτοποίησης
auths.delete_auth_desc=Αν διαγράψετε την πηγής ταυτοποίησης, οι χρήστες σας δεν θα μπορέσουν να τη χρησιμοποιήσουν πλέον για να συνδεθούν. Συνέχεια;
auths.still_in_used=Η πηγή ταυτοποίησης βρίσκεται ακόμα σε χρήση. Για να συνεχίσετε, πρέπει πρώτα να διαγράψετε ή να μετατρέψετε τους χρήστες που χρησιμοποιούν αυτήν την πηγή.
auths.deletion_success=Η πηγή ταυτοποίησης έχει διαγραφεί.
@@ -3154,7 +3218,7 @@ config.ssh_enabled=Ενεργοποιημένο
config.ssh_start_builtin_server=Χρήση ενσωματωμένου διακομιστή
config.ssh_domain=Domain διακομιστή SSH
config.ssh_port=Θύρα
-config.ssh_listen_port=Θύρα Ακρόασης
+config.ssh_listen_port=Θύρα ακρόασης (Listen port)
config.ssh_root_path=Ριζική Διαδρομή
config.ssh_key_test_path=Διαδρομή δοκιμής κλειδιού
config.ssh_keygen_path=Διαδρομή keygen («ssh-keygen»)
@@ -3208,28 +3272,28 @@ config.mailer_enabled=Ενεργοποιημένο
config.mailer_enable_helo=Ενεργοποίηση HELO
config.mailer_name=Όνομα
config.mailer_protocol=Πρωτόκολλο
-config.mailer_smtp_addr=Διευθ SMTP
+config.mailer_smtp_addr=Διεύθυνση SMTP
config.mailer_smtp_port=Θύρα SMTP
config.mailer_user=Χρήστης
config.mailer_use_sendmail=Χρήση Sendmail
-config.mailer_sendmail_path=Διαδρομή Sendmail
+config.mailer_sendmail_path=Τοποθεσία Sendmail
config.mailer_sendmail_args=Επιπλέον παράμετροι για το Sendmail
-config.mailer_sendmail_timeout=Χρονικό Όριο Sendmail
+config.mailer_sendmail_timeout=Χρονικό όριο Sendmail
config.mailer_use_dummy=Ψεύτικο
config.test_email_placeholder=Email (π.χ. test@example.com)
-config.send_test_mail=Αποστολή Δοκιμαστικού Email
+config.send_test_mail=Αποστολή δοκιμαστικού email
config.send_test_mail_submit=Αποστολή
config.test_mail_failed=Η αποστολή δοκιμαστικού email στο «%s» απέτυχε: %v
config.test_mail_sent=Στάλθηκε ένα δοκιμαστικό email στο «%s».
-config.oauth_config=Ρύθμιση Oauth
+config.oauth_config=Ρυθμίσεις OAuth
config.oauth_enabled=Ενεργό
config.cache_config=Ρύθμιση προσωρινής αποθήκευσης
config.cache_adapter=Προσαρμογέας προσωρινής αποθήκευσης
config.cache_interval=Διάστημα προσωρινής αποθήκευσης
-config.cache_conn=Σύνδεση Προσωρινής Αποθήκευσης
-config.cache_item_ttl=TTL Στοιχείων Προσωρινής Αποθήκευσης
+config.cache_conn=Σύνδεση προσωρινής αποθήκευσης
+config.cache_item_ttl=TTL στοιχείων προσωρινής αποθήκευσης
config.session_config=Ρυθμίσεις συνεδρίας
config.session_provider=Πάροχος συνεδρίας
@@ -3240,10 +3304,10 @@ config.session_life_time=Χρόνος ζωής συνεδρίας
config.https_only=Μόνο HTTPS
config.cookie_life_time=Χρόνος ζωής Cookie
-config.picture_config=Ρυθμίσεις εικόνας και avatar
+config.picture_config=Ρυθμίσεις εικόνας (προφίλ)
config.picture_service=Υπηρεσία εικόνας
config.disable_gravatar=Απενεργοποίηση Gravatar
-config.enable_federated_avatar=Ενεργοποίηση αποκεντρωμένων avatar
+config.enable_federated_avatar=Ενεργοποίηση αποκεντρωμένων εικόνων προφίλ
config.git_config=Ρυθμίσεις Git
config.git_disable_diff_highlight=Απενεργοποίηση επισήμανσης σύνταξης diff
@@ -3292,29 +3356,29 @@ monitor.queue=Ουρά: %s
monitor.queue.name=Όνομα
monitor.queue.type=Τύπος
monitor.queue.exemplar=Τύπος Υποδείγματος
-monitor.queue.numberworkers=Αριθμός Εργατών
-monitor.queue.activeworkers=Ενεργοί Εργάτες
-monitor.queue.maxnumberworkers=Μέγιστος Αριθμός Εργατών
-monitor.queue.numberinqueue=Πλήθος Ουράς
-monitor.queue.review_add=Εξέταση / Προσθήκη Εργατών
-monitor.queue.settings.title=Ρυθμίσεις Δεξαμενής
+monitor.queue.numberworkers=Αριθμός εργατών
+monitor.queue.activeworkers=Ενεργοί εργάτες
+monitor.queue.maxnumberworkers=Μέγιστος αριθμός εργατών
+monitor.queue.numberinqueue=Πλήθος ουράς
+monitor.queue.review_add=Εξέταση / προσθήκη εργατών
+monitor.queue.settings.title=Ρυθμίσεις δεξαμενής
monitor.queue.settings.desc=Οι δεξαμενές αυξάνονται δυναμικά όταν υπάρχει φραγή της ουράς των εργατών τους.
monitor.queue.settings.maxnumberworkers=Μέγιστος Αριθμός Εργατών
monitor.queue.settings.maxnumberworkers.placeholder=Αυτή τη στιγμή %[1]d
monitor.queue.settings.maxnumberworkers.error=Ο μέγιστος αριθμός εργατών πρέπει να είναι αριθμός
-monitor.queue.settings.submit=Ενημέρωση Ρυθμίσεων
-monitor.queue.settings.changed=Οι Ρυθμίσεις Ενημερώθηκαν
+monitor.queue.settings.submit=Ενημέρωση ρυθμίσεων
+monitor.queue.settings.changed=Οι ρυθμίσεις ενημερώθηκαν
monitor.queue.settings.remove_all_items=Αφαίρεση όλων
monitor.queue.settings.remove_all_items_done=Όλα τα αντικείμενα στην ουρά αφαιρέθηκαν.
notices.system_notice_list=Ειδοποιήσεις συστήματος
notices.view_detail_header=Προβολή λεπτομερειών ειδοποίησης
notices.operations=Λειτουργίες
-notices.select_all=Επιλογή Όλων
-notices.deselect_all=Αποεπιλογή Όλων
-notices.inverse_selection=Αντιστροφή Επιλογής
-notices.delete_selected=Διαγραφή Επιλεγμένων
-notices.delete_all=Διαγραφή Όλων Των Ειδοποιήσεων
+notices.select_all=Επιλογή όλων
+notices.deselect_all=Αποεπιλογή όλων
+notices.inverse_selection=Αντιστροφή επιλογής
+notices.delete_selected=Διαγραφή επιλεγμένων
+notices.delete_all=Διαγραφή όλων των ειδοποιήσεων
notices.type=Τύπος
notices.type_1=Αποθετήριο
notices.type_2=Εργασία
@@ -3323,10 +3387,17 @@ notices.op=Λειτ.
notices.delete_success=Οι ειδοποιήσεις του συστήματος έχουν διαγραφεί.
self_check.no_problem_found = Μέχρι τώρα, δεν έχει βρεθεί κάποιο πρόβλημα.
self_check = Αυτοέλεγχος
-dashboard.sync_repo_tags = Συγχρονισμός tag από δεδομένα git στην βάση δεδομένων
+dashboard.sync_repo_tags = Συγχρονισμός tag, χρησιμοποιώντας τα δεδομένα git στην βάση δεδομένων
dashboard.sync_tag.started = Ο συγχρονισμός tag έχει ξεκινήσει
self_check.database_inconsistent_collation_columns = Η βάση δεδομένων χρησιμοποιεί το collation %s, αλλά οι στήλες του χρησιμοποιούν collations που δεν αντιστοιχούν σε εκείνο το collation. Αυτό ενδέχεται να προκαλέσει μερικά απρόσμενα θέματα.
self_check.database_fix_mysql = Για τους χρήστες του MySQL/MariaDB: Μπορείτε να χρησιμοποιήσετε την εντολή «git doctor convert» για να διορθώσετε το collation ή να το διορθώσετε χειροκίνητα με τις εντολές «ALTER ... COLLATE ...».
+config_settings = Ρυθμίσεις
+auths.tips.gmail_settings = Ρυθμίσεις Gmail:
+config_summary = Περίληψη
+config.open_with_editor_app_help = Οι επεξεργαστές κειμένου / κώδικα που εμφανίζονται στο μενού κλωνοποίησης σε ένα αποθετήριο. Αν το αφήσετε κενό, θα χρησιμοποιηθεί μία προεπιλεγμένη λίστα επεξεργαστών. Πατήστε για να δείτε την προεπιλογή.
+auths.tip.gitlab_new = Μπορείτε να δημιουργήσετε μία νέα εφαρμογή στο https://gitlab.com/-/profile/applications
+self_check.database_collation_mismatch = Η βάση δεδομένων αναμένεται να χρησιμοποιεί το collation: %s
+self_check.database_collation_case_insensitive = Η βάση δεδομένων χρησιμοποιεί το collation %s, το οποίο δεν ξεχωρίζει κεφαλαία και πεζά γράμματα. Αν και το Forgejo μπορεί να δουλέψει με αυτό, ίσως να προκύψουν κάποιες σπάνιες περιπτώσεις όπου κάτι δεν θα δουλέψει όπως αναμένεται.
[action]
@@ -3415,8 +3486,8 @@ error.probable_bad_default_signature=ΠΡΟΣΟΧΗ! Αν και το προεπ
[units]
unit=Μονάδα
-error.no_unit_allowed_repo=Δεν σας επιτρέπεται να έχετε πρόσβαση σε οποιαδήποτε ενότητα αυτού του αποθετηρίου.
-error.unit_not_allowed=Δεν σας επιτρέπεται να έχετε πρόσβαση σε αυτήν την ενότητα αποθετηρίου.
+error.no_unit_allowed_repo=Δεν σας επιτρέπεται η πρόσβαση σε οποιαδήποτε μονάδα του αποθετηρίου.
+error.unit_not_allowed=Δεν σας επιτρέπεται η πρόσβαση σε αυτήν την μονάδα αποθετηρίου.
[packages]
title=Πακέτα
@@ -3439,9 +3510,9 @@ dependencies=Εξαρτήσεις
keywords=Λέξεις κλειδιά
details=Λεπτομέρειες
details.author=Συγγραφέας
-details.project_site=Ιστοσελίδα Έργου
-details.repository_site=Ιστοσελίδα Αποθετηρίου
-details.documentation_site=Ιστοσελίδα Τεκμηρίωσης
+details.project_site=Ιστοσελίδα έργου
+details.repository_site=Ιστοσελίδα αποθετηρίου
+details.documentation_site=Ιστοσελίδα τεκμηρίωσης
details.license=Άδεια
assets=Πόροι
versions=Εκδόσεις
@@ -3537,19 +3608,19 @@ settings.delete.notice=Πρόκειται να διαγράψετε το %s (%s)
settings.delete.success=Το πακέτο έχει διαγραφεί.
settings.delete.error=Αποτυχία διαγραφής του πακέτου.
owner.settings.cargo.title=Ευρετήριο μητρώου Cargo
-owner.settings.cargo.initialize=Αρχικοποίηση Ευρετηρίου
+owner.settings.cargo.initialize=Αρχικοποίηση ευρετηρίου
owner.settings.cargo.initialize.description=Απαιτείται ένα ειδικό αποθετήριο ευρετηρίου Git για τη χρήση του μητρώου Cargo. Χρησιμοποιώντας αυτή την επιλογή θα δημιουργηθεί ξανά το αποθετήριο και θα ρυθμιστεί αυτόματα.
owner.settings.cargo.initialize.error=Αποτυχία αρχικοποίησης ευρετηρίου Cargo: %v
owner.settings.cargo.initialize.success=Ο ευρετήριο Cargo δημιουργήθηκε με επιτυχία.
-owner.settings.cargo.rebuild=Αναδημιουργία Ευρετηρίου
+owner.settings.cargo.rebuild=Ανανέωση ευρετηρίου
owner.settings.cargo.rebuild.description=Η ανοικοδόμηση μπορεί να είναι χρήσιμη εάν ο δείκτης δεν είναι συγχρονισμένος με τα αποθηκευμένα πακέτα Cargo.
owner.settings.cargo.rebuild.error=Αποτυχία αναδόμησης του ευρετηρίου Cargo: %v
owner.settings.cargo.rebuild.success=Το ευρετήριο Cargo αναδομήθηκε με επιτυχία.
owner.settings.cleanuprules.title=Διαχείριση κανόνων εκκαθάρισης
-owner.settings.cleanuprules.add=Προσθήκη Κανόνα Εκκαθάρισης
-owner.settings.cleanuprules.edit=Επεξεργασία Κανόνα Εκκαθάρισης
-owner.settings.cleanuprules.none=Δεν υπάρχουν διαθέσιμοι κανόνες εκκαθάρισης. Παρακαλούμε συμβουλευτείτε την τεκμηρίωση.
-owner.settings.cleanuprules.preview=Προεπισκόπηση Κανόνα Εκκαθάρισης
+owner.settings.cleanuprules.add=Προσθήκη κανόνα εκκαθάρισης
+owner.settings.cleanuprules.edit=Επεξεργασία κανόνα εκκαθάρισης
+owner.settings.cleanuprules.none=Δεν υπάρχουν ακόμα κάποιοι κανόνες εκκαθάρισης.
+owner.settings.cleanuprules.preview=Προεπισκόπηση κανόνα εκκαθάρισης
owner.settings.cleanuprules.preview.overview=%d πακέτα έχουν προγραμματιστεί να αφαιρεθούν.
owner.settings.cleanuprules.preview.none=Ο κανόνας εκκαθάρισης δεν ταιριάζει με κανένα πακέτο.
owner.settings.cleanuprules.enabled=Ενεργοποιημένο
@@ -3567,8 +3638,9 @@ owner.settings.cleanuprules.success.update=Ο κανόνας καθαρισμο
owner.settings.cleanuprules.success.delete=Ο κανόνας καθαρισμού διαγράφηκε.
owner.settings.chef.title=Μητρώο Chef
owner.settings.chef.keypair=Δημιουργία ζεύγους κλειδιών
-owner.settings.chef.keypair.description=Ένα ζεύγος κλειδιών είναι απαραίτητο για ταυτοποίηση στο μητρώο Chef. Αν έχετε δημιουργήσει ένα ζεύγος κλειδιών πριν, η δημιουργία ενός νέου ζεύγους κλειδιών θα απορρίψει το παλιό ζεύγος κλειδιών.
-rpm.repository.multiple_groups = Αυτό το πακέτο είναι διαθέσιμο σε διαφορετικά group.
+owner.settings.chef.keypair.description=Ένα ζευγάρι κλειδιών είναι απαραίτητο για την ταυτοποίηση στο μητρώο Chef. Αν έχετε ήδη δημιουργήσει ένα ζευγάρι κλειδιών, η δημιουργία ενός νέου ζευγαριού κλειδιών θα αντικαταστήσει το παλιό ζευγάρι.
+rpm.repository.multiple_groups = Αυτό το πακέτο είναι διαθέσιμο σε πολλαπλά group.
+owner.settings.cargo.rebuild.no_index = Η ανανέωση δεν είναι δυνατή, επειδή το ευρετήριο δεν έρχει αρχικοποιηθεί.
[secrets]
secrets=Μυστικά
@@ -3583,7 +3655,7 @@ deletion=Αφαίρεση μυστικού
deletion.description=Η αφαίρεση ενός μυστικού είναι μόνιμη και δεν μπορεί να αναιρεθεί. Συνέχεια;
deletion.success=Το μυστικό έχει αφαιρεθεί.
deletion.failed=Αποτυχία αφαίρεσης μυστικού.
-management=Διαχείριση Μυστικών
+management=Διαχείριση μυστικών
[actions]
actions=Actions
@@ -3601,7 +3673,7 @@ status.blocked=Αποκλείστηκε
runners=Εκτελεστές
runners.runner_manage_panel=Διαχείριση εκτελεστών
-runners.new=Δημιουργία νέου Εκτελεστή
+runners.new=Δημιουργία νέου εκτελεστή
runners.new_notice=Πώς να ξεκινήσετε έναν εκτελεστή
runners.status=Κατάσταση
runners.id=ID
@@ -3609,7 +3681,7 @@ runners.name=Όνομα
runners.owner_type=Τύπος
runners.description=Περιγραφή
runners.labels=Ετικέτες
-runners.last_online=Τελευταία Ώρα Σύνδεσης
+runners.last_online=Τελευταία ώρα σύνδεσης
runners.runner_title=Εκτελεστής
runners.task_list=Πρόσφατες εργασίες στον εκτελεστή
runners.task_list.no_tasks=Δεν υπάρχει καμία εργασία ακόμα.
@@ -3619,7 +3691,7 @@ runners.task_list.repository=Αποθετήριο
runners.task_list.commit=Υποβολή
runners.task_list.done_at=Ολοκλήρωσε Στις
runners.edit_runner=Επεξεργασία Εκτελεστή
-runners.update_runner=Ενημέρωση Αλλαγών
+runners.update_runner=Ενημέρωση αλλαγών
runners.update_runner_success=Ο εκτελεστής ενημερώθηκε επιτυχώς
runners.update_runner_failed=Αποτυχία ενημέρωσης εκτελεστή
runners.delete_runner=Διαγραφή του εκτελεστή
@@ -3636,7 +3708,7 @@ runners.version=Έκδοση
runners.reset_registration_token=Επαναφορά διακριτικού εγγραφής
runners.reset_registration_token_success=Επιτυχής επανέκδοση διακριτικού εγγραφής του εκτελεστή
-runs.all_workflows=Όλες Οι Ροές Εργασίας
+runs.all_workflows=Όλες οι ροές εργασίας
runs.commit=Υποβολή
runs.scheduled=Προγραμματισμένα
runs.pushed_by=ωθήθηκε από
@@ -3651,17 +3723,17 @@ runs.no_workflows=Δεν υπάρχουν ροές εργασίας ακόμα.
runs.no_runs=Η ροή εργασίας δεν έχει τρέξει ακόμα.
runs.empty_commit_message=(κενό μήνυμα υποβολής)
-workflow.disable=Απενεργοποίηση Ροής Εργασιών
+workflow.disable=Απενεργοποίηση ροής εργασίας
workflow.disable_success=Η ροή εργασίας «%s» απενεργοποιήθηκε επιτυχώς.
-workflow.enable=Ενεργοποίηση Ροής Εργασίας
+workflow.enable=Ενεργοποίηση ροής εργασίας
workflow.enable_success=Η ροή εργασίας «%s» ενεργοποιήθηκε επιτυχώς.
workflow.disabled=Η ροή εργασιών είναι απενεργοποιημένη.
need_approval_desc=Πρέπει να εγκριθεί η εκτέλεση ροών εργασίας για pull request από fork.
variables=Μεταβλητές
-variables.management=Διαχείριση Μεταβλητών
-variables.creation=Προσθήκη Μεταβλητής
+variables.management=Διαχείριση μεταβλητών
+variables.creation=Προσθήκη μεταβλητής
variables.none=Δεν υπάρχουν μεταβλητές ακόμα.
variables.deletion=Αφαίρεση μεταβλητής
variables.deletion.description=Η αφαίρεση μιας μεταβλητής είναι μόνιμη και δεν μπορεί να αναιρεθεί. Συνέχεια;
@@ -3677,11 +3749,12 @@ variables.id_not_exist = Η μεταβλητή με id %d δεν υπάρχει.
runs.no_workflows.documentation = Για περισσότερες πληροφορίες σχετικά με το Forgejo Actions, συμβουλευτείτε τον οδηγό.
runs.no_workflows.quick_start = Δεν ξέρετε από που να πρωτοξεκινήσετε με το Forgejo Actions; Για μια γρήγορη αρχή, συμβουλευτείτε τον οδηγό μας.
runs.workflow = Ροή εργασίας
+runs.no_job_without_needs = Η ροή εργασίας πρέπει να περιέχει τουλάχιστον ένα έργο που δεν εξαρτάται από κάποιο άλλο έργο.
[projects]
-type-1.display_name=Ατομικό Έργο
-type-2.display_name=Έργο Αποθετηρίου
-type-3.display_name=Έργο Οργανισμού
+type-1.display_name=Ατομικό έργο
+type-2.display_name=Έργο αποθετηρίου
+type-3.display_name=Έργο οργανισμού
[git.filemode]
changed_filemode=%[1]s → %[2]s
@@ -3692,3 +3765,40 @@ executable_file=Εκτελέσιμο αρχείο
symbolic_link=Symbolic link
submodule=Υπομονάδα
+
+
+[search]
+code_search_unavailable = Η αναζήτηση κώδικα δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
+keyword_search_unavailable = Η αναζήτηση με την χρήση λέξεων-κλειδιών δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
+runner_kind = Αναζήτηση runner...
+code_search_by_git_grep = Η αναζήτηση κώδικα εκτελείται με την χρήση της εντολής «git grep». Αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»), ίσως να παρουσιαστούν καλύτερα αποτελέσματα.
+package_kind = Αναζήτηση πακέτων...
+project_kind = Αναζήτηση έργων...
+branch_kind = Αναζήτηση κλάδων...
+commit_kind = Αναζήτηση υποβολών...
+no_results = Δεν βρέθηκαν κατάλληλα αποτελέσματα.
+search = Αναζήτηση...
+type_tooltip = Είδος αναζήτησης
+fuzzy = Στο περίπου
+fuzzy_tooltip = Να συμπεριληφθούν αποτελέσματα που μοιάζουν με τον όρο αναζήτησης
+match = Ταιριαστά
+match_tooltip = Να συμπεριληφθούν αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης
+repo_kind = Αναζήτηση αποθετηρίων...
+user_kind = Αναζήτηση χρηστών...
+org_kind = Αναζήτηση οργανισμών...
+team_kind = Αναζήτηση ομαδών...
+code_kind = Αναζήτηση κώδικα...
+
+[munits.data]
+mib = MiB
+gib = GiB
+tib = TiB
+pib = PiB
+eib = EiB
+b = B
+kib = KiB
+
+[markup]
+filepreview.line = Γραμμή %[1]d στο αρχείο %[2]s
+filepreview.lines = Γραμμές %[1]d έως %[2]d στο αρχείο %[3]s
+filepreview.truncated = Η προεπισκόπηση έχει περικοπεί
\ No newline at end of file
diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini
index a6421b26ec..daa4169729 100644
--- a/options/locale/locale_fil.ini
+++ b/options/locale/locale_fil.ini
@@ -7,7 +7,7 @@ language = Wika
mirrors = Mga Mirror
forks = Mga Fork
activities = Mga Aktibidad
-pull_requests = Mga hiling sa aghatak
+pull_requests = Mga hiling sa paghatak
issues = Mga Isyu
milestones = Mga Milestone
ok = OK
@@ -77,13 +77,13 @@ webauthn_error_unable_to_process = Hindi maproseso ng server ang iyong hiling.
webauthn_error_duplicated = Hindi pinapayagan ang security key na ito para sa hiling na ito. Mangyaring siguraduhin na ang key na ito ay hindi ito nakarehistro na.
webauthn_error_empty = Kailangan mong maglapat ng pangalan para sa key na ito.
webauthn_reload = I-reload
-repository = Repository
+repository = Repositoryo
organization = Organisasyon
mirror = Salamin
-new_repo = Bagong repository
-new_migrate = Bagong migration
+new_repo = Bagong repositoryo
+new_migrate = Bagong paglipat
new_mirror = Bagong salamin
-new_fork = Bagong repository fork
+new_fork = Bagong repositoryong fork
new_org = Bagong organisasyon
new_project = Bagong proyekto
new_project_column = Bagong column
@@ -91,7 +91,7 @@ admin_panel = Pangangasiwa ng site
account_settings = Mga setting ng Account
settings = Mga Setting
your_profile = Profile
-your_starred = Naka-bitwin
+your_starred = Naka-bituin
your_settings = Mga Setting
all = Lahat
go_back = Bumalik
@@ -104,7 +104,7 @@ artifacts = Mga Artifact
archived = Naka-archive
concept_system_global = Global
concept_user_individual = Indibidwal
-concept_code_repository = Repository
+concept_code_repository = Repositoryo
concept_user_organization = Organisasyon
show_timestamps = Ipakita ang mga timestamp
show_log_seconds = Ipakita ang segundo
@@ -113,7 +113,7 @@ download_logs = I-download ang mga log
name = Pangalan
value = Value
filter = I-filter
-filter.clear = I-clear ang Filter
+filter.clear = I-clear ang mga filter
filter.is_archived = Naka-archive
filter.not_archived = Hindi naka-archive
filter.is_fork = Naka-fork
@@ -121,7 +121,7 @@ filter.not_fork = Hindi naka-fork
filter.is_mirror = Naka-mirror
filter.not_mirror = Hindi naka-mirror
filter.is_template = Template
-filter.not_template = Hindi Template
+filter.not_template = Hindi template
filter.public = Publiko
filter.private = Pribado
notifications = Mga Abiso
@@ -146,14 +146,14 @@ search_repos = Maghanap ng Repository…
switch_dashboard_context = Palitan ang Dashboard Context
show_only_unarchived = Pinapakita lang ang hindi naka-archive
password_holder = Password
-my_repos = Mga Repository
-show_more_repos = Magpakita ng higit pang repository…
-collaborative_repos = Mga Collaboritive Repository
+my_repos = Mga Repositoryo
+show_more_repos = Magpakita ng higit pang mga repositoryo…
+collaborative_repos = Mga Collaboritive na Repositoryo
my_orgs = Mga Organisasyon
my_mirrors = Aking Mga Mirror
view_home = Itignan ang %s
filter = Iba pang Mga Filter
-filter_by_team_repositories = I-filter sa mga team repository
+filter_by_team_repositories = I-filter sa mga repositoryo ng koponan
feed_of = Feed ng "%s"
show_archived = Naka-archive
show_both_archived_unarchived = Pinapakita ang naka-archive at hindi naka-archive
@@ -162,13 +162,13 @@ show_private = Pribado
show_both_private_public = Pinapakita ang publiko at pribado
show_only_private = Pinapakita lang ang pribado
show_only_public = Pinapakita lang ang publiko
-issues.in_your_repos = Sa iyong mga repository
+issues.in_your_repos = Sa iyong mga repositoryo
uname_holder = Username o Email address
[explore]
organizations = Mga Organisasyon
search.fuzzy.tooltip = Isali ang mga resulta na tumutugma sa search term nang malapit
-repos = Mga Repository
+repos = Mga Repositoryo
users = Mga User
search = Maghanap
go_to = Pumunta sa
@@ -182,14 +182,14 @@ user_no_results = Walang tugmang user na nahanap.
org_no_results = Walang tugmang mga organisasyon na nahanap.
code_search_results = Mga resulta ng paghahanap para sa "%s"
code_last_indexed_at = Huling na-index %s
-relevant_repositories_tooltip = Mga repository na isang fork o walang topic, icon, at deskripsyon ay nakatago.
+relevant_repositories_tooltip = Mga repositoryo na isang fork o walang topic, icon, at deskripsyon ay nakatago.
code_search_unavailable = Kasalukuyang hindi available ang code search. Mangyaring makipag-ugnayan sa site administrator.
code_no_results = Walang source code na tumutugma sa iyong search term na nahanap.
-relevant_repositories = Ang mga kaugnay na repository ay pinapakita, ipakita ang hindi naka-filter na resulta.
+relevant_repositories = Ang mga kaugnay na repositoryo ay pinapakita, ipakita ang hindi naka-filter na resulta.
stars_few = %d mga star
-forks_one = %d fork
+forks_one = %d tinidor
forks_few = %d mga fork
-stars_one = %d star
+stars_one = %d bituin
[aria]
footer.software = Tungkol sa Software
@@ -221,7 +221,7 @@ db_name = Pangalan ng database
db_schema = Schema
db_schema_helper = Iwanang walang laman para sa default ng database ("public").
ssl_mode = SSL
-path = Path
+path = Daanan
sqlite_helper = File path para sa SQLite3 database. Maglagay ng absolute path kapag tinatakbo mo ang Forgejo bilang serbisyo.
reinstall_confirm_check_3 = Kinukumprima mo na sigurado ka talaga na ang Forgejo na ito ay tumatakbo sa tamang app.ini na lokasyon at sigurado ka na kailangan mo mag-reinstall. Kinukumpirma mo na kilalanin ang mga panganib sa itaas.
err_empty_db_path = Hindi maaring walang laman ang path ng SQLite database.
@@ -234,10 +234,10 @@ general_title = Mga General Setting
app_name = Pamagat ng instansya
app_name_helper = Maari mong ilagay ang pangalan ng iyong kompanya dito.
repo_path_helper = Ang mga remote Git repository ay mase-save sa directory na ito.
-repo_path = Root path ng Repository
+repo_path = Root path ng Repositoryo
lfs_path = Root path ng Git LFS
run_user = User na tatakbuhin bilang
-run_user_helper = Ang operating system username na ang Forgejo ay tatakbo bilang. Tandaan mo na ang user ay kailangang may access sa repository root path.
+run_user_helper = Ang operating system username na ang Forgejo ay tatakbo bilang. Tandaan mo na ang user ay kailangang may access sa root path ng repositoryo.
domain = Domain ng server
domain_helper = Domain o host para sa server na ito.
ssh_port = Port ng SSH Server
@@ -245,7 +245,7 @@ http_port = HTTP listen port
lfs_path_helper = Ang mga file na naka-track sa Git LFS ay ilalagay sa directory na ito. Iwanang walang laman para i-disable.
reinstall_confirm_message = Ang pag-install muli na may umiiral na Forgejo database ay maaring magdulot ng mga problema. Sa karamihan ng mga kaso, dapat mong gamitin ang iyong umiiral na "app.ini" para patakbuhin ang Forgejo. Kung alam mo ang ginagawa mo, kumpirmahin ang mga sumusunod:
reinstall_confirm_check_1 = Ang data na naka-encrypt sa pamamagitan ng SECRET_KEY sa app.ini ay maaring mawala: baka hindi maka-log in ang mga user gamit ng 2FA/OTP at ang mga mirror ay maaring hindi gumana mg maayos. Sa pamamagitan ng pag-check ng box na ito kinukumpirma mo na ang kasalukuyang app.ini file ay naglalaman ng tamang SECRET_KEY.
-reinstall_confirm_check_2 = Ang mga repository at mga setting ay maaring kailangang i-resynchronize. Sa pamamagitan ng pag-check ng box na ito kinukumprima mo na ire-resynchronize mo ang mga hook para sa mga repository at authorized_keys ng mano-mano. Kinukumpirma mo na sisiguraduhin mo na tama ang mga setting ng repository at mirror.
+reinstall_confirm_check_2 = Ang mga repositoryo at mga setting ay maaring kailangang i-resynchronize. Sa pamamagitan ng pag-check ng box na ito kinukumprima mo na ire-resynchronize mo ang mga hook para sa mga repositoryo at authorized_keys ng mano-mano. Kinukumpirma mo na sisiguraduhin mo na tama ang mga setting ng repositoryo at mirror.
err_admin_name_pattern_not_allowed = Hindi angkop ang administrator username, ang username ay tumutugma sa reserved pattern
ssh_port_helper = Numero ng port na gagamitin ng SSH server. Iwanang walang laman para i-disable ang SSH server.
server_service_title = Mga setting ng server at third-party na serbisyo
@@ -288,7 +288,7 @@ install_btn_confirm = I-install ang Forgejo
test_git_failed = Hindi masubukan ang "git" command: %v
invalid_db_setting = Hindi angkop ang mga database setting: %v
invalid_db_table = Hindi angkop ang database table na "%s": %v
-invalid_repo_path = Hindi angkop ang repository root path: %v
+invalid_repo_path = Hindi angkop ang root path ng repositoryo: %v
invalid_app_data_path = Hindi angkop ang app data path: %v
run_user_not_match = Ang "user na tatakbo bilang" na username ay hindi ang kasulukuyang username: %s -> %s
internal_token_failed = Nabigong maka-generate ng internal token: %v
@@ -300,7 +300,7 @@ default_keep_email_private = Itago ang mga email address bilang default
default_keep_email_private_popup = Itago ang mga email address ng mga bagong user account bilang default.
default_allow_create_organization_popup = Payagan ang mga bagong user account ng gumawa ng mga organisasyon bilang default.
default_enable_timetracking = I-enable ang pagsubaybay ng oras bilang default
-default_enable_timetracking_popup = I-enable ang pagsubaybay ng oras sa mga bagong repository bilang default.
+default_enable_timetracking_popup = I-enable ang pagsubaybay ng oras sa mga bagong repositoryo bilang default.
allow_dots_in_usernames = Payagan ang mga user na gamitin ang mga tuldok sa kanilang username. Hindi inaapektuhan ang mga umiiral na account.
no_reply_address = Domain ng nakatagong email
no_reply_address_helper = Domain name para sa mga user na may nakatagong email address. Halimbawa, ang username na "kita" ay mala-log sa Git bilang "kita@noreply.example.org" kapag ang nakatagong email domain ay nakatakda sa "noreply.example.org".
@@ -318,7 +318,7 @@ default_allow_create_organization = Payagan ang paggawa ng mga organisasyon bila
disable_registration_popup = I-disable ang pansariling pagrehistro ng user. Ang mga administrator lamang ang makakagawa ng mga bagong user account.
disable_gravatar_popup = I-disable ang Gravatar at mga third-party na avatar source. Ang isang default na avatar ay gagamitin maliban kung maga-upload ng avatar ang user.
admin_setting_desc = Ang paggawa ng administrator account ay opsyonal. Ang pinakaunang nakarehistro na user ay awtomatikong magiging administrator.
-enable_update_checker_helper = Tinitingnan para sa mga pagpalabas ng bagong bersyon sa pamamagitan ng pagkonekta sa gitea.io
+enable_update_checker_helper = Tinitingnan para sa mga pagpalabas ng bagong bersyon sa pamamagitan ng pagkonekta sa gitea.io.
[heatmap]
number_of_contributions_in_the_last_12_months = %s mga kontribusyon sa nakalipas na 12 buwan
@@ -461,7 +461,7 @@ reset_password = I-recover ang iyong account
reset_password.title = %s, nagkaroon kami ng hiling para i-recover ang iyong account
reset_password.text = Kung ikaw ito, paki-click ang sumusunod na link para i-recover ang iyong account sa loob ng %s:
register_success = Matagumpay ang pag-rehistro
-issue_assigned.issue = Itinalaga ka ni @%[1]s sa isyu na %[2]s sa repository na %[3]s.
+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.push_n = Nag-push si @%[1]s ng %[3]d (mga) commit sa %[2]s
@@ -469,15 +469,15 @@ issue.action.close = Sinara ni @%[1]s ang #%[2]d.
issue.action.reopen = Binuksan muli ni @%[1]s ang #%[2]d.
issue.action.merge = Naisama ni @%[1]s ang #%[2]d sa %[3]s.
issue.action.approve = Inaprubahan ni @%[1]s ang pull request na ito.
-issue.action.review = Nagkomento si @%[1]s sa pull request na ito.
-issue.action.review_dismissed = Binalewala ni @%[1]s ang huling review galing sa %[2]s para sa pull request na ito.
+issue.action.review = Nagkomento ang/si @%[1]s sa pull request na ito.
+issue.action.review_dismissed = Binalewala ng/ni @%[1]s ang huling review galing sa %[2]s para sa pull request na ito.
issue.action.new = Ginawa ni @%[1]s ang #%[2]d.
release.title = Pamagat: %s
release.note = Note:
release.downloads = Mga Download:
release.download.zip = Source Code (ZIP)
release.download.targz = Source Code (TAR.GZ)
-repo.transfer.subject_to_you = Gusto ilipat ni %s ang repository na "%s" sa iyo
+repo.transfer.subject_to_you = Gusto ilipat ni %s ang repositoryo na "%s" sa iyo
repo.transfer.to_you = ikaw
repo.transfer.body = Para tanggapin o tanggihan bisitahin ang %s o huwag na lang pansinin.
repo.collaborator.added.subject = Dinagdag ka ni %s sa %s bilang tagaambag
@@ -485,16 +485,16 @@ team_invite.subject = Inimbitahan ka ni %[1]s para sumali sa organisasyong %[2]s
team_invite.text_1 = Inimbitahan ka ni %[1]s para sumali sa koponang %[2]s sa organisasyong %[3]s.
team_invite.text_2 = Paki-click ang sumusunod na link para sumali sa koponan:
activate_email.text = Paki-click ang sumusunod na link para i-verify ang iyong email address sa loob ng %s:
-repo.collaborator.added.text = Dinagdag ka bilang tagaambag sa repository:
+repo.collaborator.added.text = Dinagdag ka bilang tagaambag sa repositoryo:
activate_email.title = %s, paki-verify ang iyong email address
issue.action.reject = Humingi ng mga pagbabago si @%[1]s sa pull request na ito.
activate_account.title = %s, paki-activate ang iyong account
register_notify.text_3 = Kung ginawa ng ibang tao ang account na ito para sa iyo, kailangan mong itakda ang iyong password muna.
-issue_assigned.pull = Itinalaga ka ni @%[1]s sa pull request na %[2]s sa repository na %[3]s.
+issue_assigned.pull = Itinalaga ka ni @%[1]s sa pull request na %[2]s sa repositoryo na %[3]s.
issue.action.push_1 = Nag-push si @%[1]s ng %[3]d commit sa %[2]s
issue.action.ready_for_review = Minarkahan ni @%[1]s ang pull request na ito bilang handa para suriin.
release.new.text = Inilabas ni @%[1]s ang %[2]s sa %[3]s
-repo.transfer.subject_to = Gusto ni %s na ilipat ang repository na "%s" sa %s
+repo.transfer.subject_to = Gusto ni %s na ilipat ang repositoryo na "%s" sa %s
team_invite.text_3 = Tandaan: Ang imbitasyong ito ay inilaan para sa %[1]s. Kung hindi mo inaasahan ang imbitasyong ito, maaari mong balewalain ang email na ito.
[modal]
@@ -506,7 +506,7 @@ modify = Baguhin
[form]
UserName = Username
-RepoName = Pangalan ng repository
+RepoName = Pangalan ng repositoryo
Email = Email address
Password = Password
Retype = Kumpirmahin ang password
@@ -521,7 +521,7 @@ CommitMessage = Mensahe ng commit
CommitChoice = Pagpili ng commit
TreeName = Path ng file
Content = Nilalaman
-SSPISeparatorReplacement = Separator
+SSPISeparatorReplacement = Pang-hiwalay
SSPIDefaultLanguage = Default na Wika
CommitSummary = Pangkalahatang-ideya ng commit
glob_pattern_error = ` hindi angkop ang glob pattern: %s`
@@ -541,21 +541,21 @@ lang_select_error = Pumili ng wika sa listahan.
username_been_taken = Kinuha na ang username.
username_change_not_local_user = Ang mga hindi lokal na user ay hindi pinapayagang palitan ang kanilang username.
username_has_not_been_changed = Hindi pinalitan ang username
-repo_name_been_taken = Ginamit na ang pangalan ng repository.
-repository_force_private = Naka-enable ang Force Private: hindi maaaring gawing pampubliko ang mga pribadong repository.
-repository_files_already_exist = Ang mga file ay umiiral na sa repository na ito. Makipag-ugnayan sa system administrator.
-repository_files_already_exist.delete = Ang mga file ay umiiral na sa repository na ito. Kailangan mo silang burahin.
-repository_files_already_exist.adopt_or_delete = Umiiral na ang mga file para sa repository na ito. Alinman pagtibayin sila o burahin sila.
+repo_name_been_taken = Ginamit na ang pangalan ng repositoryo.
+repository_force_private = Naka-enable ang Force Private: hindi maaaring gawing pampubliko ang mga pribadong repositoryo.
+repository_files_already_exist = Ang mga file ay umiiral na sa repositoryo na ito. Makipag-ugnayan sa tagapangaiswa ng sistema.
+repository_files_already_exist.delete = Ang mga file ay umiiral na sa repositoryo na ito. Kailangan mo silang burahin.
+repository_files_already_exist.adopt_or_delete = Umiiral na ang mga file para sa repositoryo na ito. Alinman pagtibayin sila o burahin sila.
username_error_no_dots = ` maaari lamang maglaman ng mga alphanumeric na character ("0-9","a-z","A-Z"), gitling ("-") at underscore ("_"). Hindi ito maaaring magsimula o magtatapos sa mga hindi alphanumeric na character, at ipinagbabawal din ang magkakasunod na non-alphanumeric na character.`
include_error = ` dapat maglaman ng substring na "%s".`
regex_pattern_error = ` hindi angkop ang regex pattern: %s.`
url_error = ` hindi angkop na URL ang "%s".`
username_error = ` maaari lamang maglaman ng mga alphanumeric na character ("0-9","a-z","A-Z"), gitling ("-"), underscore ("_") at tuldok ("."). Hindi ito maaaring magsimula o magtatapos sa mga hindi alphanumeric na character, at ipinagbabawal din ang magkakasunod na non-alphanumeric na character.`
-repository_files_already_exist.adopt = Umiiral na ang mga file para sa repository na ito at maaari lamang Pagtibayin.
+repository_files_already_exist.adopt = Umiiral na ang mga file para sa repositoryo na ito at maaari lamang Pagtibayin.
2fa_auth_required = Kinailangan ng remote visit ng two factors authentication.
org_name_been_taken = Kinuha na ang pangalan ng organisasyon.
team_name_been_taken = Kinuha na ang pangalan ng koponan.
-team_no_units_error = Payagan ang access sa kahit isang seksyon ng repository.
+team_no_units_error = Payagan ang access sa kahit isang seksyon ng repositoryo.
email_been_used = Ginamit na ang email address.
email_invalid = Hindi angkop ang email address.
openid_been_used = KInuha na ang OpenID address na "%s".
@@ -565,7 +565,7 @@ password_lowercase_one = Kahit isang lowercase na character
password_uppercase_one = Kahit isang uppercase na character
password_digit_one = Kahit isang numero
password_special_one = Kahit isang espesyal na character (bantas, mga bracket, mga quote, atbp.)
-enterred_invalid_repo_name = Mali ang inalagay mong pangalan ng repository.
+enterred_invalid_repo_name = Mali ang inalagay mong pangalan ng repositoryo.
enterred_invalid_org_name = Mali ang inalagay mong pangalan ng organisasyon.
enterred_invalid_owner_name = Hindi angkop ang pangalan ng bagong owner.
enterred_invalid_password = Mali ang password na inilagay mo.
@@ -583,35 +583,36 @@ invalid_ssh_principal = Hindi angkop ang principal: %s
must_use_public_key = Ang key na ibinigay mo ay isang pribadong key. Huwag mong i-upload ang iyong pribadong key kahit saan. Gamitin ang iyong pampublikong key sa halip.
unable_verify_ssh_key = Hindi ma-verify ang SSH key, tiyakin ulit para sa mga pagkakamali.
auth_failed = Nabigo ang autentikasyon: %v
-still_own_repo = Ang iyong account ay nagmamay-ari ng isa o higit pang mga repository, burahin o ilipat sila muna.
+still_own_repo = Ang iyong account ay nagmamay-ari ng isa o higit pang mga repositoryo, burahin o ilipat sila muna.
still_has_org = Ang iyong account ay isang miyembro ng isa o higit pang organisasyon, alisin muna sila.
still_own_packages = Ang iyong account ay nagmamay-ari ng isa o higit pang package, burahin sila muna.
-org_still_own_repo = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga repository, burahin o ilipat sila muna.
+org_still_own_repo = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga repositoryo, burahin o ilipat sila muna.
org_still_own_packages = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga package, burahin sila muna.
target_branch_not_exist = Hindi umiiral ang target branch.
admin_cannot_delete_self = Hindi mo maaring burahin ang sarili mo kapag isa kang tagapangasiwa. Paki-tanggal ang iyong pribilehiyong tagapangasiwa muna.
+required_prefix = Ang input ay dapat magsimula sa "%s"
[user]
joined_on = Sumali noong %s
-repositories = Mga Repository
+repositories = Mga Repositoryo
activity = Pampublikong aktibidad
followers_few = %d Mga tagasunod
block_user = I-block ang user
change_avatar = Palitan ang iyong avatar…
block_user.detail = Pakiunawa na kung i-block mo ang user na ito, isasagawa ang iba pang mga aksyon. Gaya ng:
block_user.detail_1 = Ina-unfollow ka sa user na ito.
-block_user.detail_2 = Ang user na ito ay hindi maaaring makipag-ugnayan sa iyong mga repository, ginawang isyu at komento.
+block_user.detail_2 = Ang user na ito ay hindi maaaring makipag-ugnayan sa iyong mga repositoryo, ginawang isyu at komento.
block_user.detail_3 = Hindi ka maaaring idagdag ng user na ito bilang isang collaborator, at hindi mo rin sila maidaragdag bilang isang collaborator.
follow_blocked_user = Hindi mo mapa-follow ang user na ito dahil na-block mo ang user na ito o na-block ka ng user na ito.
-starred = Mga naka-star na repository
-watched = Mga sinusubaybayan na repository
+starred = Mga naka-bitwin na repositoryo
+watched = Mga sinusubaybayan na repositoryo
code = Code
projects = Mga Proyekto
overview = Pangkalahatang Ideya
following_few = %d Sinusundan
follow = Sundan
unfollow = I-unfollow
-block = I-block
+block = Harangan
unblock = I-unblock
user_bio = Byograpya
email_visibility.limited = Ang iyong email address ay makikita ng lahat ng mga naka-authenticate na user
@@ -622,6 +623,8 @@ form.name_pattern_not_allowed = Ang pattern na "%s" ay hindi pinapayagan sa user
disabled_public_activity = Hindi pinagana ng user na ito ang publikong kakayahang pagpakita ng aktibidad.
form.name_reserved = Nakareserba ang username na "%s".
form.name_chars_not_allowed = Naglalaman ng mga hindi angkop na character ang username.
+followers_one = %d tagasunod
+following_one = %d pina-follow
[settings]
profile = Profile
@@ -633,7 +636,7 @@ avatar = Avatar
ssh_gpg_keys = Mga SSH / GPG key
applications = Mga Aplikasyon
orgs = Pamahalaan ng mga organisasyon
-repos = Mga Repository
+repos = Mga Repositoryo
delete = Burahin ang Account
twofa = Authentikasyong two-factor (TOTP)
account_link = Mga Naka-link na Account
@@ -757,8 +760,8 @@ email_preference_set_success = Matagumpay na tinakda ang kagustuhan ng email.
add_openid_success = Dinagdag na ang bagong OpenID address.
keep_email_private = Itago ang email address
openid_desc = Hinahayaan ka ng OpenID na mag-delegate ng pagpapatunay sa isang panlabas na tagabigay ng serbisyo.
-ssh_desc = Ang mga pampublikong SSH key na ito ay nauugnay sa iyong account. Pinapayagan ng kaukulang pribadong key ang buong pag-access sa iyong mga repository. Ang mga SSH key na na-verify ay maaaring magamit upang mapatunayan ang mga naka-sign na Git commit sa pamamagitan ng SSH.
-principal_desc = Ang mga SSH principal na ito ay nauugnay sa iyong account at pinapayagan ang buong pag-access sa iyong mga repository.
+ssh_desc = Ang mga pampublikong SSH key na ito ay nauugnay sa iyong account. Pinapayagan ng kaukulang pribadong key ang buong pag-access sa iyong mga repositoryo. Ang mga SSH key na na-verify ay maaaring magamit upang mapatunayan ang mga naka-sign na Git commit sa pamamagitan ng SSH.
+principal_desc = Ang mga SSH principal na ito ay nauugnay sa iyong account at pinapayagan ang buong pag-access sa iyong mga repositoryo.
ssh_helper = Kailangan ng tulong? Tignan ang guide sa paggawa ng sarili mong mga SSH key o ilutas ang mga karaniwang problema na maaring moong matagpo gamit ng SSH.
gpg_helper = Kailangan ng tulong? Tignan ang guide tungkol sa GPG.
add_new_key = Magdagdag ng SSH key
@@ -829,11 +832,11 @@ access_token_deletion = Burahin ang access token
access_token_deletion_cancel_action = Kanselahin
access_token_deletion_confirm_action = Burahin
access_token_deletion_desc = Ang pagbura ng isang token ay babawiin ang pag-access sa iyong account para sa mga application gamit ito. Ang gawaing ito ay hindi pwedeng baguhin. Magpatuloy?
-repo_and_org_access = Access sa Repository at Organisasyon
+repo_and_org_access = Access sa Repositoryo at Organisasyon
permissions_public_only = Publiko lamang
permissions_access_all = Lahat (publiko, pribado, at limitado)
select_permissions = Pumili ng mga pahintulot
-permission_no_access = Walang Access
+permission_no_access = Walang access
permission_read = Basahin
permission_write = Pagbasa at pagbago
at_least_one_permission = Kailangan mong pumili ng kahit isang pahintulot para gumawa ng token
@@ -859,8 +862,8 @@ oauth2_application_name = Pangalan ng application
oauth2_redirect_uris = Mga Redirect URI. Pakigamit ng bagong linya para sa bawat URI.
save_application = I-save
oauth2_client_id = ID ng Kliyente
-oauth2_client_secret = Sikreto ng Kliyente
-oauth2_regenerate_secret = I-regenerate ang Sikreto
+oauth2_client_secret = Sikreto ng kliyente
+oauth2_regenerate_secret = I-regenerate ang sikreto
oauth2_regenerate_secret_hint = Nawala mo ang iyong sikreto?
oauth2_client_secret_hint = Ang sikreto ay hindi ipapakita muli pagkatapos umalis ka o i-refresh ang page na ito. Mangyaring siguraduhin na na-save mo iyan.
oauth2_application_edit = I-edit
@@ -890,12 +893,12 @@ visibility = Visibility ng user
visibility.public = Publiko
email_notifications.enable = I-enable ang mga email notification
email_notifications.onmention = Mag-email lamang kapag nabanggit
-repos_none = Hindi ka nagmamay-ari ng anumang mga repository.
+repos_none = Hindi ka nagmamay-ari ng anumang mga repositoryo.
blocked_users_none = Walang mga na-block na user.
authorized_oauth2_applications = Mga pinahintulutang OAuth2 application
authorized_oauth2_applications_description = Pinayagan mo ang pag-access ng iyong personal na Forgejo account sa mga third-party na application na ito. Mangyaring bawiin ang access para sa mga application na hindi mo na ginagamit.
revoke_key = Bawiin
-revoke_oauth2_grant = Bawiin ang Access
+revoke_oauth2_grant = Bawiin ang access
revoke_oauth2_grant_description = Ang pagbawi ng access para sa third party application na ito ay mapipigilang ma-access ng application ang iyong data. Sigurado ka ba?
revoke_oauth2_grant_success = Matagumpay na binawi ang pag-access.
webauthn_nickname = Palayaw
@@ -918,46 +921,49 @@ remove_account_link_success = Tinanggal na ang naka-link na account.
visibility.limited_tooltip = Makikita lamang ng mga naka-authenticate na user
webauthn_delete_key_desc = Kapag magtanggal ka ng security key hindi ka na makaka-sign in gamit niyan. Magpatuloy?
manage_account_links_desc = Ang mga panlabas na account na ito ay naka-link sa iyong Forgejo account.
-hooks.desc = Magdagdag mg mga webhook na mati-trigger para sa lahat ng mga repository na minamay-ari mo.
+hooks.desc = Magdagdag mg mga webhook na mati-trigger para sa lahat ng mga repositoryo na minamay-ari mo.
orgs_none = Hindi ka isang miyembro ng anumang mga organisasyon.
oauth2_application_create_description = Ang mga OAuth2 application ay pinapayagan ang mga third-party na aplikasyon na i-access ang mga user account sa instansya na ito.
oauth2_application_locked = Ang Forgejo ay pini-pre register ang ibang mga OAuth2 application sa startup kapag naka-enable sa config. Para iwasan ang hindi inaasahang gawain, hindi ito maaring i-edit o tanggalin. Mangyaring sumangguni sa dokumentasyon ng OAuth2 para sa karagdagang impormasyon.
remove_account_link_desc = Ang pagtanggal ng naka-link na account ay babawiin ang pag-access nito sa iyong Forgejo account. Magpatuloy?
visibility.public_tooltip = Makikita ng lahat
hints = Mga Pahiwatig
-additional_repo_units_hint_description = Mag-display ng "Magdagdag pa ng mga unit..." na button para sa mga repository na hindi naka-enable ang lahat ng mga available na unit.
-additional_repo_units_hint = Hikayatin ang pag-enable ng karagdagang mga repository unit
+additional_repo_units_hint_description = Magpakita ng "Magdagdag pa ng mga unit..." na button para sa mga repositoryo na hindi naka-enable ang lahat ng mga available na unit.
+additional_repo_units_hint = Hikayatin ang pag-enable ng karagdagang mga unit ng repositoryo
update_hints = I-update ang mga pahiwatig
update_hints_success = Na-update na ang mga pahiwatig.
+pronouns_custom = Pasadya
+pronouns_unspecified = Hindi natakda
+pronouns = Mga panghalip
[repo]
-template_description = Ang mga template repository ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repository na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting.
+template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting.
clone_helper = Kailangan ng tulong sa pagpili? Bisitahin ang Tulong.
-admin.failed_to_replace_flags = Nabigong palitan ang mga repository flag
+admin.failed_to_replace_flags = Nabigong palitan ang mga flag ng repositoryo
rss.must_be_on_branch = Kailangang nasa branch ka para magkaroon ng RSS feed.
-new_repo_helper = Ang isang repository ay naglalaman ng lahat ng file ng proyekto, kasama ang kasaysayan ng rebisyon. Nagho-host ka na sa ibang lugar? Mag-migrate ng repository
+new_repo_helper = Ang isang repositoryo ay naglalaman ng lahat ng file ng proyekto, kasama ang kasaysayan ng rebisyon. Nagho-host ka na sa ibang lugar? Mag-migrate ng repositoryo
admin.manage_flags = Ipamahala ang mga flag
-admin.enabled_flags = Mga flag na naka-enable para sa repository:
+admin.enabled_flags = Mga flag na naka-enable para sa repositoryo:
admin.update_flags = I-update ang mga flag
-admin.flags_replaced = Napalitan ang mga repository flag
+admin.flags_replaced = Napalitan ang mga flag ng repositoryo
owner = May-ari
-owner_helper = Maaring hindi mapapakita ang ibang organisasyon sa dropdown dahil sa pinakamataas na bilang ng repository na limit.
-repo_name = Pangalan ng repository
-repo_name_helper = Ang mga magandang pangalan ng repository ay gumagamit ng maliit, makakaalala, at unique na mga keyword.
-repo_size = Laki ng Repository
+owner_helper = Maaring hindi mapapakita ang ibang organisasyon sa dropdown dahil sa pinakamataas na bilang ng repositoryo na limitasyon.
+repo_name = Pangalan ng repositoryo
+repo_name_helper = Ang mga magandang pangalan ng repositoryo ay gumagamit ng maliit, makakaalala, at unique na mga keyword.
+repo_size = Laki ng Repositoryo
template = Template
template_select = Pumili ng template.
-template_helper = Gawing template ang repository
-visibility = Visibility
+template_helper = Gawing template ang repositoryo
+visibility = Pagiging makita
visibility_description = Ang owner o ang mga miyembro ng organisasyon kung may karapatan sila, ay makakakita nito.
-visibility_helper = Gawing pribado ang repository
-visibility_helper_forced = Ang iyong tagapangasiwa ng site ay pinipilit na pribado ang mga bagong repository.
+visibility_helper = Gawing pribado ang repositoryo
+visibility_helper_forced = Ang iyong tagapangasiwa ng site ay pinipilit na pribado ang mga bagong repositoryo.
visibility_fork_helper = (Ang pag-palit nito ay maapektuhan ang visibility ng lahat ng mga fork.)
-fork_repo = I-fork ang repository
+fork_repo = I-fork ang repositoryo
fork_from = I-fork mula sa
already_forked = Na-fork mo na ang %s
fork_to_different_account = Mag-fork sa ibang account
-fork_visibility_helper = Ang visibility ng isang naka-fork na repository ay hindi maaring baguhin.
+fork_visibility_helper = Ang visibility ng isang naka-fork na repositoryo ay hindi maaring baguhin.
open_with_editor = Buksan gamit ang %s
download_bundle = I-download ang BUNDLE
repo_gitignore_helper_desc = Piliin kung anong mga file na hindi susubaybayin sa listahan ng mga template para sa mga karaniwang wika. Ang mga tipikal na artifact na ginagawa ng mga build tool ng wika ay kasama sa .gitignore ng default.
@@ -967,8 +973,8 @@ readme_helper_desc = Ito ang lugar kung saan makakasulat ka ng kumpletong deskri
trust_model_helper_collaborator_committer = Katulong+Committer: I-trust ang mga signature batay sa mga katulong na tumutugma sa committer
mirror_interval = Interval ng mirror (ang mga wastong unit ng oras ay "h", "m", "s"). 0 para i-disable ang periodic sync. (Pinakamababang interval: %s)
transfer.reject_desc = Kanselahin ang pag-transfer mula sa "%s"
-mirror_lfs_endpoint_desc = Ang sync ay susubukang gamitin ang clone url upang matukoy ang LFS server. Maari ka rin tumukoy ng isang custom na endpoint kapag ang repository LFS data ay nilalagay sa ibang lugar.
-adopt_search = Ilagay ang username para maghanap ng mga unadopted repository... (iwanang walang laman para hanapin lahat)
+mirror_lfs_endpoint_desc = Ang sync ay susubukang gamitin ang clone url upang matukoy ang LFS server. Maari ka rin tumukoy ng isang custom na endpoint kapag ang LFS data ng repositoryo ay nilalagay sa ibang lugar.
+adopt_search = Ilagay ang username para maghanap ng mga unadopted na repositoryo... (iwanang walang laman para hanapin lahat)
object_format = Format ng object
readme_helper = Pumili ng README file template.
default_branch_helper = Ang default branch ay ang base branch para sa mga pull request at mga commit ng code.
@@ -982,27 +988,27 @@ desc.sha256 = SHA256
template.items = Mga template item
template.git_content = Nilalaman ng Git (Default na branch)
reactions_more = at %d pa
-unit_disabled = Na-disable ng tagapangasiwa ng site ang itong seksyon ng repository.
-create_repo = Gumawa ng Repository
+unit_disabled = Na-disable ng tagapangasiwa ng site ang itong seksyon ng repositoryo.
+create_repo = Gumawa ng Repositoryo
generate_from = I-generate mula sa
repo_desc = Deskripsyon
fork_branch = Branch na mako-clone sa fork
all_branches = Lahat ng mga branch
-fork_no_valid_owners = Hindi mapo-fork ang repository dahil walang mga wastong may-ari.
+fork_no_valid_owners = Hindi mapo-fork ang repositoryo dahil walang mga wastong may-ari.
use_template = Gamitin ang template na ito
download_zip = I-download ang ZIP
download_tar = I-download ang TAR.GZ
issue_labels = Mga label ng isyu
-generate_repo = I-generate ang repository
+generate_repo = I-generate ang repositoryo
repo_desc_helper = Maglagay ng maikling deskripsyon (opsyonal)
repo_lang = Wika
issue_labels_helper = Pumili ng label set ng isyu.
license = Lisensya
license_helper = Pumili ng file ng lisensya.
license_helper_desc = Ang lisensya ay namamahala kung ano ang pwede at hindi pwedeng gawin ng mga ibang tao sa iyong code. Hindi sigurado kung alin ang wasto para sa iyong proyekto? Tignan ang Pumili ng lisensya.
-object_format_helper = Object format ng repository. Hindi mababago mamaya. Ang SHA1 ang pinaka-compatible.
+object_format_helper = Object format ng repositoryo. Hindi mababago mamaya. Ang SHA1 ang pinaka-compatible.
readme = README
-auto_init = I-initialize ang repository (Nagdadagdag ng .gitignore, Lisensya, at README)
+auto_init = I-initialize ang repositoryo (Nagdadagdag ng .gitignore, Lisensya, at README)
trust_model_helper = Pumili ng trust model para sa signature verification. Ang mga posibleng opsyon ay:
trust_model_helper_collaborator = Katulong: I-trust ang mga signature batay sa mga katulong
trust_model_helper_committer = Commiter: I-trust ang mga signature na tumutugma sa mga commiter
@@ -1022,11 +1028,11 @@ mirror_password_blank_placeholder = (Hindi tinakda)
mirror_password_help = Palitan ang username para burahin ang na-store na password.
watchers = Mga nanonood
stargazers = Mga Stargazer
-stars_remove_warning = Tatanggalin nito ang lahat ng mga star sa repository na ito.
+stars_remove_warning = Tatanggalin nito ang lahat ng mga bitwin sa repositoryo na ito.
forks = Mga fork
language_other = Iba
adopt_preexisting_label = Mag-adopt ng mga file
-adopt_preexisting_content = Gumawa ng repository mula sa %s
+adopt_preexisting_content = Gumawa ng repositoryo mula sa %s
transfer.accept = Tanggapin ang paglipat
transfer.accept_desc = Ilipat sa "%s"
transfer.reject = Tanggihan ang paglipat
@@ -1039,8 +1045,8 @@ desc.internal = Internal
template.git_hooks = Mga hook ng Git
delete_preexisting_label = Burahin
stars = Mga bitwin
-migrate_options_mirror_helper = Magiging salamin ang [repositoryong] ito
-migrate_options_lfs_endpoint.description.local = Sinusuporta rin ang daanang [local] sa serbiro.
+migrate_options_mirror_helper = Magiging salamin ang repositoryong ito
+migrate_options_lfs_endpoint.description.local = Sinusuporta rin ang lokal na server path.
editor.this_file_locked = Nakakandado ang file
editor.filename_cannot_be_empty = Hindi maaring walang laman ang pangalan ng file.
commits.message = Mensahe
@@ -1049,33 +1055,33 @@ commits.date = Petsa
projects.description_placeholder = Paglalarawan
projects.close = Isara
projects.open = Buksan
-editor.preview_changes = Paunang tingnan ang mga pagbago
+editor.preview_changes = I-preview ang mga pagbago
editor.edit_this_file = Baguhin ang file
commits.author = May-akda
commits.older = Mas luma
editor.add_tmpl = Idagdag ang ""
-delete_preexisting = Burahin ang [pre-]umiiral na mga file
+delete_preexisting = Burahin ang mga dating umiiral na file
delete_preexisting_content = Burahin ang mga file sa %s
-tree_path_not_found_commit = Hindi umiiral ang daanang %[1]s sa [commit] %[2]s
-tree_path_not_found_branch = Hindi umiiral ang daanang %[1]s sa [branch] %[2]s
-migrate_items_pullrequests = Mga pull request
+tree_path_not_found_commit = Hindi umiiral ang path na %[1]s sa commit %[2]s
+tree_path_not_found_branch = Hindi umiiral ang daanang %[1]s sa branch %[2]s
+migrate_items_pullrequests = Mga hiling sa pagtulak
archive.pull.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga pull request.
archive.title = Naka-archive ang repo na ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
-archive.title_date = Naka-archive ang repo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
-pulls = Mga kahilingan sa paghatak
+archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
+pulls = Mga hiling sa paghatak
activity.merged_prs_count_n = Naisamang mga [pull request]
wiki.last_updated = Huling binago %s
file.title = %s sa %s
-file_view_raw = Tingnan ang hilaw
+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 kahilingan sa paghatak
+commit_graph.hide_pr_refs = Itago ang mga hiling sa paghatak
editor.or = o
editor.cancel_lower = kanselahin
issues.filter_sort.latest = Pinakabago
issues.filter_sort.oldest = Pinakaluma
issues.filter_sort.recentupdate = Huling nabago
-issues.action_open = Nakabukas
+issues.action_open = Buksan
issues.closed_title = Sarado
issues.reopen_issue = Buksang muli
pulls.merged = Naisama na
@@ -1090,11 +1096,275 @@ issues.filter_sort = Isaayos ayon sa
activity.title.issues_closed_from = Naisara ang %s mula sa %s
pulls.merged_success = Matagumpay na naisama at sinara ang [pull request]
activity.title.prs_merged_by = Sinama ang %s ni/ng %s
-find_tag = Hanapin ang [tag]
+find_tag = Maghanap ng tag
issues.label.filter_sort.reverse_by_size = Pinakamalaki
issues.label.filter_sort.by_size = Pinakamaliit
-blame.ignore_revs = [Binabaliwala] ang mga pagbabago sa .git-blame-ignore-revs. Pindutin dito upang [bypass] at ipakita ang [regular] na panigin ng [blame].
+blame.ignore_revs = Hindi pinapansin ang mga pagbabago sa .git-blame-ignore-revs. Pindutin dito upang i-bypass at ipakita ang regular na panigin ng blame.
author_search_tooltip = Ipinapakita ang hindi hihigit sa 30 mga tagagamit
+template.avatar = Avatar
+migrate_options = Mga opsyon sa paglipat
+migrate.clone_address_desc = Ang HTTP(S) o Git "clone" URL ng umiiral na repositoryo
+need_auth = Awtorisasyon
+migrate.github_token_desc = Maari kang maglagay ng isa o higit pang mga token na hinihiwalay ng kuwit dito upang gawing mas-mabilis ang pagmigrate dahil sa rate limit ng GitHub API. BABALA: Ang pagabuso ng feature na ito ay maaring maglabag sa patakaran ng tagapagbigay ng serbisyo at maaring magdulot ng pag-block ng account.
+template.invalid = Kailangang pumili ng kahit isang template na repositoryo
+migrate_options_lfs_endpoint.description = Susubukan ng migration na gamitin ang iyong Git remote upang matukoy ang LFS server. Maari mong magtiyak ng custom na endpoint kapag ang LFS data ng repositoryo ay nakalagay sa ibang lugar.
+blame.ignore_revs.failed = Nabigong hindi pansinin ang mga rebisyon sa .git-blame-ignore-revs.
+tree_path_not_found_tag = Hindi umiiral ang path na %[1]s sa tag %[2]s
+form.reach_limit_of_creation_n = Naabot na ng may-ari ang limitasyon na %d mga repositoryo.
+form.reach_limit_of_creation_1 = Naabot na ng may-ari ang limitasyon na %d repositoryo.
+form.name_reserved = Nakareserba ang pangalan ng repositoryo na "%s".
+form.name_pattern_not_allowed = Hindi pinapayagan ang pattern na "%s" sa pangalan ng repositoryo.
+migrate_options_lfs = I-migrate ang mga LFS file
+migrate_options_lfs_endpoint.label = Endpoint ng LFS
+migrate_options_lfs_endpoint.placeholder = Kung iwanang blangko, ang endpoint ay magmumula sa clone URL
+migrate_items_milestones = Mga milestone
+migrate_items_labels = Mga label
+migrate_items_issues = Mga isyu
+migrate_items_merge_requests = Mga merge request
+migrate.clone_address = Magmigrate / Mag-clone mula sa URL
+archive.issue.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga isyu.
+migrate_items = Mga item sa pagmigrate
+migrate_items_releases = Mga paglabas
+migrate_repo = I-migrate ang repositoryo
+size_format = %[1]s: %[2]s, %[3]s: %[4]s
+template.git_hooks_tooltip = Kasalukuyang hindi mo mababago o matatanggal ang mga hook ng Git kapag nadagdag. Piliin lang ito kapag pinagkakatiwalaan mo ang template na repositoryo.
+template.webhooks = Mga webhook
+template.topics = Mga paksa
+template.issue_labels = Mga label ng isyu
+template.one_item = Kailangang pumili ng kahit isang template item
+migrate_items_wiki = Wiki
+migrate.clone_local_path = o isang lokal na path ng server
+adopt_preexisting_success = Pinagtibay ang mga file at ginawa ang repositoryo mula sa %s
+delete_preexisting_success = Burahin ang mga hindi pinatibay na file sa %s
+blame_prior = Tignan ang blame bago ang pagbabago na ito
+migrate.permission_denied = Hindi ka pinapayagang mag-import ng mga lokal na repositoryo.
+migrate.permission_denied_blocked = Hindi ka maaring mag-import mula sa mga hindi pinapayagang host, magyaring magtanong sa pangangasiwa na suriin ang ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS na mga setting.
+migrate.invalid_local_path = Hindi wasto ang lokal na path. Hindi ito umiiral o hindi isang direktoryo.
+migrate.invalid_lfs_endpoint = Hindi wasto ang LFS endpoint.
+migrate.migrating_failed = Nabigo ang pag-migrate mula sa %s.
+migrate.migrating_failed_no_addr = Nabigo ang pagmigrate.
+migrate.github.description = Magmigrate ng data mula sa github.com o GitHub Enterprise server.
+migrate.git.description = Mag-migrate lang ng repositoryo mula sa anumang serbisyo ng Git.
+migrate.gitlab.description = Mag-migrate ng data mula sa gitlab.com o iba pang mga GitLab na instansya.
+migrate.forgejo.description = Mag-migrate ng data mula sa codeberg.org o iba pang mga Forgejo na instansya.
+migrate.gitea.description = Mag-migrate ng data mula sa gitea.com o iba pang mga Gitea na instansya.
+migrate.gogs.description = Mag-migrate ng data mula sa notabug.org o iba pang mga Gogs na instansya.
+migrate.onedev.description = Mag-migrate ng data mula sa code.onedev.io o iba pang mga OneDev na instansya.
+migrate.codebase.description = Mag-migrate ng data mula sa codebasehq.com.
+migrate.gitbucket.description = Mag-migrate ng data mula sa mga GitBucket na instansya.
+migrate.migrating_topics = Nililipat ang mga paksa
+migrate.migrating_milestones = Nililipat ang mga milestone
+migrate.migrating_releases = Nililipat ang mga paglabas
+migrate.migrating_pulls = Nililipat ang mga pull request
+migrate.cancel_migrating_title = Kanselahin ang pag-migrate
+migrate.cancel_migrating_confirm = Gusto mo bang kanselahin ang migration na ito?
+mirror_from = mirror ng
+forked_from = na-fork mula sa
+generated_from = na-generate mula sa
+fork_guest_user = Mag-sign in para i-fork ang repositoryo na ito.
+watch_guest_user = Mag-sign in para panoorin an repositoryo na ito.
+star_guest_user = Mag-sign in para i-bitwin ang repositoryo na ito.
+watch = Panoorin
+unstar = I-unstar
+star = I-star
+fork = I-fork
+download_archive = I-download ang repositoryo
+more_operations = Higit pang mga operasyon
+no_desc = Walang deskripsyon
+push_exist_repo = Pag-push ng umiiral na repositoryo mula sa command line
+empty_message = Ang repositoryong ito ay hindi naglalaman ng anumang nilalaman.
+code.desc = I-access ang source code, mga file, mga commit, at mga branch.
+branch = Branch
+branches = Mga branch
+tags = Mga tag
+org_labels_desc = Mga label sa antas ng organisasyon na maaaring gamitin sa lahat ng mga repositoryo sa ilalim ng organisasyong ito
+commit = Commit
+release = Release
+releases = Mga Release
+released_this = nilabas ito
+file_raw = Hilaw
+file_follow = Sundan ang symlink
+file_view_source = Tignan ang source
+file_view_rendered = Tignan ng naka-render
+ambiguous_runes_header = `Naglalaman ng file na ito ng mga hindi tiyak na Unicode character`
+ambiguous_runes_description = `Ang file na ito ay naglalaman ng mga Unicode character na maaring malilito sa ibang mga character. Kung sa tingin mo ay sinasadya ito, maari mong ligtas na hindi pansinin ang babala ito. Gamitin ang I-escape na button para ipakita sila.`
+file_copy_permalink = Kopyahin ang permalink
+view_git_blame = Tignan ang git blame
+video_not_supported_in_browser = Hindi sinusuportahan ng inyong browser ang HTML5 "video" tag.
+audio_not_supported_in_browser = Hindi sinusuportahan ng inyong browser ang HTML5 "audio" tag.
+stored_lfs = Nilagay gamit ng Git LFS
+symbolic_link = Symbolic link
+executable_file = Executable na file
+generated = Na-generate
+commit_graph = Graph ng commit
+commit_graph.select = Pumili ng mga branch
+commit_graph.monochrome = Mono
+commit_graph.color = Kulay
+commit.contained_in = Ang commit na ito ay nakalagay sa:
+commit.load_referencing_branches_and_tags = I-load ang mga branch at tag na sumasangguni sa commit na ito
+blame = Blame
+download_file = I-download ang file
+normal_view = Normal na Paningin
+line = linya
+lines = mga linya
+from_comment = (komento)
+editor.add_file = Magdagdag ng file
+editor.upload_file = Mag-upload ng file
+editor.cannot_edit_lfs_files = Hindi mababago ang mga LFS file sa web interface.
+migrate.migrating_issues = Nililipat ang mga isyu
+fork_from_self = Hindi ka makaka-fork ng repositoryo na minamay-ari mo.
+broken_message = Ang Git data na pinagbabatayan sa repositoryo na ito ay hindi mabasa. Makipag-ugnayan sa pangangasiwa ng instansya na ito o burahin ang repositoryo na ito.
+file_history = Kasaysayan
+invisible_runes_header = `Nalalaman ng file na ito ng mga hindi nakikitang Unicode character`
+file_too_large = Masyadong malaki ang file para ipakita.
+invisible_runes_description = `Ang file na ito ay naglalaman ng mga hindi nakikitang Unicode character na hindi nakikilala ng mga tao ngunit maaring maproseso ng ibang paraan ng isang computer. Kung sa tingin mo ay sinasadya ito, maari mong ligtas na hindi pansinin ang babala na ito. Gamitin ang I-escape na button para ipakita sila.`
+commit.contained_in_default_branch = Ang commit na ito ay bahagi ng default na branch
+migrate.migrating_labels = Nililipat ang mga label
+filter_branch_and_tag = I-filter ang branch o tag
+clear_ref = `Burahin ang kasalukuyang sanggunian`
+actions = Mga Aksyon
+issues = Mga Isyu
+project_board = Mga Proyekto
+packages = Mga Package
+labels = Mga Label
+org_labels_desc_manage = ipamahala
+milestones = Mga Milestone
+commits = Mga Commit
+file_permalink = Permalink
+migrate.migrating_failed.error = Nabigong magmigrate: %s
+unwatch = I-unwatch
+n_commit_one = %s commit
+n_commit_few = %s mga commit
+n_branch_one = %s branch
+n_branch_few = %s mga branch
+n_tag_one = %s tag
+n_tag_few = %s mga tag
+editor.cannot_edit_non_text_files = Hindi mababago ang mga binary file sa web interface.
+migrated_from = Na-migrate mula sa %[2]s
+migrated_from_fake = Na-migrate mula sa %[1]s
+migrate.migrate = Magmigrate mula sa %s
+migrate.failed = Nabigo ang migration: %v
+migrate.migrate_items_options = Kinakailangan ang token sa pag-access para i-migrate ang mga karagdagang item
+migrate.migrating = Nagma-migrate mula sa %s ...
+quick_guide = Mabilis na gabay
+clone_this_repo = I-clone ang repositoryo na ito
+cite_this_repo = Banggitin ang repositoryo na ito
+create_new_repo_command = Paggawa ng bagong repositoryo sa command line
+code = Code
+ambiguous_character = `Ang %[1]c [U+%04[1]X] ay maaring malito sa %[2]c [U+%04[2]X]`
+escape_control_characters = I-escape
+unescape_control_characters = I-unescape
+invisible_runes_line = `Ang linya na ito ay may mga hindi nakikitang unicode character`
+ambiguous_runes_line = `Ang linya na ito ay may mga hindi tiyak na unicode character`
+tag = Tag
+migrate.migrating_git = Nililipat ang Git data
+vendored = Naka-vendor
+editor.delete = Burahin ang %s
+editor.add = Idagdag ang %s
+editor.must_be_on_a_branch = Dapat nasa [branch] ka upang gumawa o magmunkahi ng mga pagbabago sa [file] na ito.
+editor.new_branch_name_desc = Bagong pangalan ng branch…
+editor.cancel = Kanselahin
+issues.role.member = Miyembro
+issues.remove_request_review_block = Hindi maaring tanggalin ang hiling sa pagsuri
+issues.edit = Baguhin
+issues.cancel = Kanselahin
+issues.save = IImbak
+issues.label_title = Pangalan
+issues.delete.title = Burahin ang isyung ito?
+settings.pulls_desc = Paganahin ang mga [pull request] para sa [repository]
+editor.branch_does_not_exist = Walang natagpuang [branch] na "%s" sa [repository] na ito.
+commits.nothing_to_compare = Magkapareho ang mga branch na ito.
+commits.search_all = Lahat na mga branch
+editor.file_deleting_no_longer_exists = Walang natagpuang binuburang file na "%s" sa [repository] na ito.
+issues.role.owner_helper = May-ari ng [repository] ang tagagamit na ito.
+issues.remove_request_review = Tanggalin ang hiling sa pagsuri
+issues.force_push_compare = Ikumpara
+editor.propose_file_change = Magmunkahi ng mga pagbabago sa file
+issues.author = May-akda
+issues.re_request_review = Hilingin muli ang pagsusuri
+issues.lock.reason = Dahilan sa pagkandado
+issues.action_close = Isara
+issues.label_description = Paglalarawan
+find_file.go_to_file = "Pumunta sa file"
+projects.deletion = Burahin ang proyekto
+issues.filter_project_all = Lahat ng mga proyekto
+issues.filter_project_none = Walang proyekto
+issues.ref_from = `mula %[1]s`
+issues.due_date_form_remove = Tanggalin
+issues.due_date_form_edit = Baguhin
+issues.lock_with_reason = kinandado bilang %s at nilimitahan ang paguusap sa mga [collaborators] %s
+issues.lock_no_reason = kinandado at nilimitahan ang paguusap sa mga [collaborators] %s
+commit.revert = Ibalik
+commit.revert-header = Ibalik: %s
+projects.title =Pangalan
+projects.create_success = Ginawa na ang proyektong "%s".
+projects.modify = Baguhin ang proyekto
+issues.delete_comment_confirm = Gusto mo bang burahin ang [comment] na ito?
+issues.context.edit = Baguhin
+issues.lock.title = Kandaduhin ang paguusap sa isyung ito.
+issues.unlock.title = [Unlock] ang paguusap sa isyung ito.
+pulls.nothing_to_compare_and_allow_empty_pr = Magkapareho ang mga branch na ito. Magiging walang laman ang PR na ito.
+pulls.has_pull_request =
+issues.delete = Burahin
+issues.choose.open_external_link = Buksan
+issues.deleted_project = `(binura)`
+issues.self_assign_at = `itinalaga ang sarili %s`
+issues.filter_poster_no_select = Lahat ng may-akda
+issues.filter_type = Uri
+issues.filter_type.assigned_to_you = Itinalaga sa iyo
+issues.filter_type.all_issues = Lahat ng mga isyu
+issues.author_helper = May-akda ang tagagamit na ito.
+issues.role.owner = May-ari
+activity.title.prs_n = %d mga kahilingan sa paghatak
+issues.label_color = Kulay
+pulls.nothing_to_compare = Magkapareho ang mga branch na ito. Hindi na kailangang gumawa ng pull request.
+projects.column.assigned_to = Itinalaga sa/kay
+issues.new_label_desc_placeholder = Paglalarawan
+issues.next = Susunod
+issues.previous = Nakaraan
+issues.filter_project = Proyekto
+issues.filter_poster = May-akda
+issues.filter_type.review_requested = Hiniling ang pagsuri
+issues.filter_type.created_by_you = Ginawa mo
+issues.opened_by = binuksan ang %[1]s ng/ni %[3]s
+issues.open_title = Nakabukas
+issues.filter_type.mentioning_you = Binabanggit sa iyo
+issues.filter_type.reviewed_by_you = Sinusuri mo
+issues.context.delete = Burahin
+issues.no_content = Walang nakalaang paglalarawan.
+issues.close = Isara ang isyu
+editor.revert = Ibalik ang %s sa:
+commits.signed_by = Nilagdaan ni/ng
+commits.signed_by_untrusted_user = Nilagdaan ng [untrusted] na tagagamit
+projects.description = Paglalarawan ([optional])
+projects.create = Gumawa ng proyekto
+projects.new = Bagong proyekto
+projects.edit = Baguhin ang proyekto
+editor.filename_help = Idagdag ang [directory] sa pamamagitan ng pag-[type] ng pangalan at isunod ang [slash] ("/"). Tanggalin ang [directory] sa pamamagitan ng pag[type] ng [backspace] sa simula ng [field] ng pasukan.
+editor.new_branch_name = Ipangalan ang bagong [branch] para sa [commit] na ito
+issues.cancel_tracking = Pagpaliban
+issues.new.open_projects = Mga nakabukas na proyekto
+issues.review.remove_review_request_self = tinanggihan ang pagsuri %s
+issues.review.reviewers = Mga tagasuri
+editor.signoff_desc = Idagdag ang [Signed-off-by trailer] ng taga-[commit] sa dulo ng [log message] ng [commit].
+editor.commit_message_desc = Idagdag ang [optional] na pinahabang paglalarawan…
+issues.new.closed_projects = Mga saradong proyekto
+projects = Mga proyekto
+projects.deletion_success = Nabura na ang proyekto.
+issues.add_time_short = Idagdag ang oras
+editor.push_rejected_summary = Buong mensahe ng pagtanggi:
+commitstatus.success = Tagumpay
+commitstatus.failure = Kabiguan
+projects.type.none = Wala
+issues.label_edit =
+issues.deleted_milestone = `(binura)`
+issues.add_time_hours = Oras
+projects.column.color = Kulay
+projects.card_type.images_and_text = Mga larawan at [text]
+projects.card_type.text_only = [Text] lamang
+issues.create = Gumawa ng isyu
+commits.gpg_key_id = ID ng susi ng GPG
+editor.no_changes_to_show = Walang maipakitang pagbabago.
[search]
commit_kind = Maghanap ng mga commit...
@@ -1116,11 +1386,49 @@ project_kind = Maghanap ng mga proyekto...
branch_kind = Maghanap ng mga branch...
runner_kind = Maghanap ng mga runner...
no_results = Walang mga tumutugma na resulta na nahanap.
+code_search_by_git_grep = Ang kasalukuyang mga resulta ng paghahanap ng code ay ibinibigay ng "git grep*. Maaring may mga mas magandang resulta kapag na-enable ng tagapangasiwa ng site ang Indexer ng Repositoryo.
[admin]
auths.updated = Nabago
emails.updated = Napalitan na ang [email]
emails.not_updated = Nabigong baguhin ang hinihiling na [email address]: %v
+monitor.next = Susunod na oras
+monitor.last_execution_result = resulta
+dashboard.last_gc_time = Oras noong huling GC
+users.last_login = Huling nag sign-in
+first_page = Una
+last_page = Huli
+monitor.previous = Huling oras
[org]
repo_updated = Binago
+team_access_desc = Access ng repositoryo
+team_permission_desc = Pahintulot
+org_desc = Deskripsyon
+org_name_holder = Pangalan ng organisasyon
+org_full_name_holder = Buong pangalan ng organisasyon
+org_name_helper = Ang mga pangalan ng organisasyon ay dapat maikli at makakaalala.
+create_org = Gumawa ng organisasyon
+teams = Mga koponan
+lower_members = mga miyembro
+lower_repositories = mga repositoryo
+create_new_team = Bagong koponan
+create_team = Gumawa ng koponan
+team_name = Pangalan ng koponan
+team_desc = Deskripsyon
+team_name_helper = Ang mga pangalan ng koponan ay dapat na maikli at makakaalala.
+team_desc_helper = Ilarawan ang layunin ng koponan.
+members = Mga miyembro
+code = Code
+
+
+[packages]
+alpine.repository.branches = Mga sanga
+
+[actions]
+runners.last_online = Huling oras [online]
+runs.no_workflows.quick_start = Hindi alam kung paano magsimula gamit ang Forgejo Actions? Tingnan ang [quick start guide].
+runs.no_workflows.documentation = Para sa higit pang impormasyon tungkol sa Forgejo Actions, tingnan ang [documentation].
+
+[action]
+commit_repo = itinulak sa %[3]s sa %[4]s
\ No newline at end of file
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index 4840f1e478..5fb34bc921 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -633,6 +633,7 @@ admin_cannot_delete_self = Vous ne pouvez supprimer votre compte lorsque vous di
admin_cannot_delete_self=Vous ne pouvez pas vous supprimer vous-même lorsque vous êtes admin. Veuillez d’abord supprimer vos privilèges d’administrateur.
unsupported_login_type = Ce type de compte ne peut être supprimé.
unset_password = L'utilisateur connecté n'a pas de mot de passe.
+required_prefix = Le texte entré doit commencer par "%s"
[user]
change_avatar=Changer votre avatar…
@@ -666,6 +667,7 @@ block_user.detail_3 = Cet utilisateur ne peut pas vous ajouter en tant que colla
follow_blocked_user = Vous ne pouvez pas suivre cet utilisateur parce vous avez bloqué cet utilisateur ou bien cet utilisateur vous a bloqué.
block = Bloquer
unblock = Débloquer
+following_one = Suit %d personnes
[settings]
profile=Profil
@@ -2285,15 +2287,15 @@ settings.event_pull_request_assign=Demande d'ajout assignée
settings.event_pull_request_assign_desc=Demande d'ajout assignée ou non assignée.
settings.event_pull_request_label=Demande d'ajout étiquetée
settings.event_pull_request_label_desc=Label attribué ou retiré.
-settings.event_pull_request_milestone=Jalon
+settings.event_pull_request_milestone=Demande d'ajout jalonnée
settings.event_pull_request_milestone_desc=Demande d'ajout jalonnée ou dé-jalonnée.
-settings.event_pull_request_comment=Commentaire
+settings.event_pull_request_comment=Commentaire sur une demande d'ajout
settings.event_pull_request_comment_desc=Commentaire créé, modifié ou supprimé.
-settings.event_pull_request_review=Évaluation
+settings.event_pull_request_review=Demande d'ajout évaluée
settings.event_pull_request_review_desc=Demande d’ajout approuvée, rejetée ou commentée.
-settings.event_pull_request_sync=Synchronisation
+settings.event_pull_request_sync=Demande d'ajout synchronisée
settings.event_pull_request_sync_desc=Demande d'ajout synchronisée.
-settings.event_pull_request_review_request=Demande d’évaluation
+settings.event_pull_request_review_request=Requête d’évaluation d'une demande d'ajout
settings.event_pull_request_review_request_desc=Création ou suppresion de demandes d’évaluation.
settings.event_pull_request_approvals=Approbations de demande d'ajout
settings.event_pull_request_merge=Fusion de demande d'ajout
@@ -2308,7 +2310,7 @@ settings.active_helper=Les informations sur les événements déclenchés seront
settings.add_hook_success=Nouveau Webhook ajouté.
settings.update_webhook=Actualiser le déclencheur
settings.update_hook_success=Déclencheur Web actualisé.
-settings.delete_webhook=Retirer le Webhook
+settings.delete_webhook=Retirer le webhook
settings.recent_deliveries=Livraisons récentes
settings.hook_type=Type de Hook
settings.slack_token=Jeton
@@ -2343,7 +2345,7 @@ settings.deploy_key_content=Contenu
settings.key_been_used=Une clef de déploiement identique est déjà en cours d'utilisation.
settings.key_name_used=Une clef de déploiement du même nom existe déjà.
settings.add_key_success=La clé de déploiement "%s" a été ajoutée.
-settings.deploy_key_deletion=Supprimer une clef de déploiement
+settings.deploy_key_deletion=Supprimer une clé de déploiement
settings.deploy_key_deletion_desc=La suppression d'une clef de déploiement révoque son accès à ce dépôt. Continuer ?
settings.deploy_key_deletion_success=La clé de déploiement a été supprimée.
settings.branches=Branches
@@ -2717,6 +2719,12 @@ n_branch_few = %s branches
n_tag_one = %s étiquettes
editor.push_out_of_date = Le push semble obsolète.
issues.num_participants_one = %d participant
+issues.archived_label_description = (Archivé) %s
+settings.add_webhook.invalid_path = L'emplacement ne peut pas contenir ni ".", ni "..", ni être vide, et ne peut pas commencer ou se terminer par un slash.
+settings.sourcehut_builds.secrets_helper = Permettre au job d'accéder aux secrets de build (nécessite la permission SECRETS:RO)
+size_format = %[1]s : %[2]s ; %[3]s : %[4]s
+settings.sourcehut_builds.visibility = Visibilité du job
+settings.sourcehut_builds.secrets = Secrets
[graphs]
component_loading=Chargement de %s…
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index 52ff71c90d..2aeedde02a 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -629,6 +629,7 @@ org_still_own_repo = Deze organisatie is eigenaar van één of meer repositories
org_still_own_packages = Deze organisatie is eigenaar van één of meer pakketten, verwijder deze eerst.
unset_password = De inloggebruiker heeft het wachtwoord niet ingesteld.
unsupported_login_type = Het aanmeldtype wordt niet ondersteund om accounts te verwijderen.
+required_prefix = De tekst moet beginnen met "%s"
[user]
@@ -662,6 +663,8 @@ settings = Gebruikersinstellingen
form.name_reserved = De gebruikersnaam "%s" is gereserveerd.
form.name_pattern_not_allowed = Het patroon "%s" is niet toegestaan in een gebruikersnaam.
form.name_chars_not_allowed = Gebruikernaam "%s" bevat ongeldige karakters.
+following_one = %d volgers
+followers_one = %d volger
[settings]
@@ -986,6 +989,9 @@ update_hints = Tips bijwerken
update_hints_success = Tips zijn bijgewerkt.
hints = Tips
additional_repo_units_hint_description = Toon een "Voeg meer eenheden toe..." knop voor repositories die niet alle beschikbare eenheden hebben ingeschakeld.
+pronouns = Persoonlijke voornaamwoord
+pronouns_custom = Aangepast
+pronouns_unspecified = Ongedefinieerd
[repo]
owner=Eigenaar
@@ -2704,6 +2710,11 @@ settings.enforce_on_admins = Handhaaf deze regel voor repository admins
settings.event_pull_request_enforcement = Handhaving
settings.enforce_on_admins_desc = Admins van deze repository kunnen deze regel niet omzeilen.
issues.archived_label_description = (Gearchiveerd) %s
+release.download_count_one = %s download
+release.download_count_few = %s downloads
+release.system_generated = Deze bijlage wordt automatisch gegenereerd.
+settings.sourcehut_builds.secrets = Geheimen
+settings.web_hook_name_sourcehut_builds = SourceHut Builds
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index e70fa9df57..3725bc5e7b 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -148,6 +148,8 @@ filter.is_archived = Arquivado
filter.public = Público
filter.is_template = Modelo
filter.private = Privado
+invalid_data = Dados inválidos: %v
+more_items = Mais itens
[aria]
navbar=Barra de navegação
@@ -160,6 +162,9 @@ number_of_contributions_in_the_last_12_months=%s contribuições nos últimos 12
contributions_zero=Sem contribuições
less=Menos
more=Mais
+contributions_format = {contributions} em {day} de {month} de {year}
+contributions_one = contribuição
+contributions_few = contribuições
[editor]
buttons.heading.tooltip=Adicionar título
@@ -363,6 +368,8 @@ code_search_results=`Resultados da pesquisa por: "%s"`
code_last_indexed_at=Última indexação %s
relevant_repositories_tooltip=Repositórios que são forks ou que não possuem tópico, nem ícone e nem descrição estão ocultos.
relevant_repositories=Apenas repositórios relevantes estão sendo mostrados, mostrar resultados não filtrados.
+stars_one = %d estrela
+stars_few = %d estrelas
[auth]
create_new_account=Cadastrar conta
@@ -438,6 +445,7 @@ change_unconfirmed_email_summary = Alterar o endereço de e-mail que o e-mail de
last_admin = Não é possível remover o último administrador. Deve haver ao menos um usuário administrador.
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
[mail]
view_it_on=Veja em %s
@@ -640,6 +648,7 @@ block_user.detail_2 = Este usuário não poderá interagir com seus repositório
follow_blocked_user = Você não pode seguir este usuário, pois você o bloqueou ou foi bloqueado por ele.
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
[settings]
profile=Perfil
@@ -3587,3 +3596,20 @@ component_loading = Carregando %s...
component_loading_failed = Não foi possível carregar o(a) %s
component_loading_info = Pode demorar um pouco…
contributors.what = contribuições
+
+
+[search]
+org_kind = Buscar organizações...
+team_kind = Buscar equipes...
+code_kind = Buscar código...
+user_kind = Buscar usuários...
+no_results = Nenhum resultado encontrado.
+keyword_search_unavailable = A busca por palavras-chave não está disponível. Entre em contato com o administrador.
+package_kind = Buscar pacotes...
+project_kind = Buscar projetos...
+search = Buscar...
+fuzzy = Aproximada
+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...
\ No newline at end of file
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 1f05e3e50a..0d17c95378 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -142,6 +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.public = Público
+filter.not_archived = Não arquivado
+filter.private = Privado
+filter.not_fork = Não derivado
+filter.not_mirror = Não replicado
+more_items = Mais itens
+invalid_data = Dados inválidos: %v
+filter.clear = Retirar filtros
+filter.is_archived = Arquivado
+filter.not_template = Não é modelo
[aria]
navbar=Barra de navegação
@@ -154,6 +167,9 @@ number_of_contributions_in_the_last_12_months=%s contribuições nos últimos 12
contributions_zero=Nenhuma contribuição
less=Menos
more=Mais
+contributions_format = {contributions} em {day} de {month} de {year}
+contributions_one = contribuição
+contributions_few = contribuições
[editor]
buttons.heading.tooltip=Adicionar cabeçalho
@@ -182,6 +198,7 @@ missing_csrf=Pedido inválido: não há código CSRF
invalid_csrf=Pedido inválido: código CSRF inválido
not_found=Não foi possível encontrar o destino.
network_error=Erro de rede
+server_internal = Erro interno do servidor
[startpage]
app_desc=Um serviço Git auto-hospedado e fácil de usar
@@ -305,6 +322,10 @@ enable_update_checker=Habilitar verificador de novidades
enable_update_checker_helper=Verifica, periodicamente, se foi lançada alguma versão nova, fazendo uma ligação ao gitea.io.
env_config_keys=Configuração do ambiente
env_config_keys_prompt=As seguintes variáveis de ambiente também serão aplicadas ao seu ficheiro de configuração:
+config_location_hint = Estas opções de configuração serão gravadas em:
+enable_update_checker_helper_forgejo = Irá verificar periodicamente a existência de novas versões do Forgejo analisando um registo TXT DNS em release.forgejo.org.
+smtp_from_invalid = O endereço para "Enviar email como" é inválido
+allow_dots_in_usernames = Permitir que os utilizadores usem pontos no nome de utilizador. Não tem efeito sobre as contas existentes.
[home]
uname_holder=Nome de utilizador ou endereço de email
@@ -354,6 +375,10 @@ code_search_results=`Resultados da pesquisa para "%s"`
code_last_indexed_at=Última indexação %s
relevant_repositories_tooltip=Repositórios que são derivações ou que não têm tópico, nem ícone, nem descrição, estão escondidos.
relevant_repositories=Apenas estão a ser mostrados os repositórios relevantes. Mostrar resultados não filtrados.
+stars_one = %d estrela
+stars_few = %d estrelas
+forks_one = %d derivação
+forks_few = %d derivações
[auth]
create_new_account=Fazer inscrição
@@ -426,6 +451,11 @@ sspi_auth_failed=Falhou a autenticação SSPI
password_pwned=A senha utilizada está numa lista de senhas roubadas anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sítios.
password_pwned_err=Não foi possível completar o pedido ao HaveIBeenPwned
last_admin=Não pode remover o último administrador. Tem que existir pelo menos um administrador.
+change_unconfirmed_email = Se forneceu um endereço de email errado durante o registo, pode mudá-lo abaixo e ser-lhe-á enviada uma confirmação para o novo endereço.
+change_unconfirmed_email_summary = Mudar o endereço de email para onde a mensagem de habilitação é enviada.
+tab_signin = Iniciar sessão
+tab_signup = Criar conta
+change_unconfirmed_email_error = Não foi possível mudar o endereço de email: %v
[mail]
view_it_on=Ver em %s
@@ -492,6 +522,9 @@ team_invite.subject=%[1]s fez-lhe um convite para se juntar à organização %[2
team_invite.text_1=%[1]s fez-lhe um convite para se juntar à equipa %[2]s na organização %[3]s.
team_invite.text_2=Clique na ligação seguinte para se juntar à equipa:
team_invite.text_3=Nota: Este convite é dirigido a %[1]s. Se não estava à espera deste convite, pode ignorar este email.
+admin.new_user.subject = O novo utilizador %s acabou de criar uma conta
+admin.new_user.user_info = Informação do utilizador
+admin.new_user.text = Clique aqui para gerir este utilizador a partir do painel de administração.
[modal]
yes=Sim
@@ -592,6 +625,9 @@ org_still_own_packages=Esta organização ainda possui um ou mais pacotes, elimi
target_branch_not_exist=O ramo de destino não existe.
admin_cannot_delete_self=Não se pode auto-remover quando tem privilégios de administração. Remova esses privilégios primeiro.
+username_error_no_dots = ` só pode conter caracteres alfanuméricos ("0-9","a-z","A-Z"), hífen ('-'), sublinhado ('_') e ponto ('.') Não pode começar nem terminar com caracteres não alfanuméricos, e caracteres não alfanuméricos consecutivos também são proibidos.`
+unset_password = O utilizador não definiu a senha.
+unsupported_login_type = O tipo de início de sessão não é suportado para eliminar a conta.
[user]
change_avatar=Mude o seu avatar…
@@ -3619,3 +3655,26 @@ executable_file=Ficheiro executável
symbolic_link=Ligação simbólica
submodule=Submódulo
+
+
+[search]
+org_kind = Pesquisar organizações...
+keyword_search_unavailable = Pesquisar por palavra-chave não está disponível, neste momento. Entre em contacto com o administrador.
+code_search_by_git_grep = Os resultados da pesquisa no código-fonte neste momento são fornecidos pelo "git grep". Esses resultados podem ser melhores se o administrador habilitar o indexador do repositório.
+no_results = Não foram encontrados resultados correspondentes.
+package_kind = Pesquisar pacotes...
+runner_kind = Pesquisar executores...
+project_kind = Pesquisar planeamentos...
+branch_kind = Pesquisar ramos...
+commit_kind = Pesquisar cometimentos...
+search = Procurar...
+type_tooltip = Tipo de pesquisa
+fuzzy = Aproximada
+fuzzy_tooltip = Incluir também os resultados que estejam próximos do termo de pesquisa
+match = Fiel
+match_tooltip = Incluir somente os resultados que correspondam rigorosamente ao termo de pesquisa
+repo_kind = Pesquisar repositórios...
+user_kind = Pesquisar utilizadores...
+team_kind = Pesquisar equipas...
+code_kind = Pesquisar código...
+code_search_unavailable = A pesquisa de código não está disponível, neste momento. Entre em contacto com o administrador.
\ No newline at end of file
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 102eea9d13..52f971676d 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -217,7 +217,7 @@ license_desc=Всё это на документацией, прежде чем изменять любые настройки.
-require_db_desc=Forgejo требует MySQL, PostgreSQL, SQLite3 или TiDB (по протоколу MySQL).
+require_db_desc=Forgejo требуется MySQL, PostgreSQL, SQLite3 или TiDB (по протоколу MySQL).
db_title=Настройки базы данных
db_type=Тип базы данных
host=Хост
@@ -629,6 +629,7 @@ admin_cannot_delete_self = Вы не можете удалить свою учё
username_error_no_dots = ` может состоять только из латинских букв («a-z», «A-Z»), цифр («0-9»), знаков минуса («-») и нижнего подчёркивания («_»). Знаки не могут стоять в начале или в конце, а также идти подряд.`
unsupported_login_type = Удаление аккаунта невозможно с этим типом авторизации.
unset_password = У пользователя не задан пароль.
+required_prefix = Должно начинаться с «%s»
[user]
@@ -663,6 +664,8 @@ follow_blocked_user = Вы не можете подписаться на это
block_user = Заблокировать пользователя
block_user.detail_1 = Вы будете отписаны от этого пользователя.
block_user.detail_3 = Вы не сможете добавлять друг друга в качестве соучастников репозиториев.
+followers_one = %d подписчик
+following_one = %d подписка
[settings]
profile=Профиль
@@ -956,10 +959,10 @@ confirm_delete_account=Подтвердить удаление
delete_account_title=Удалить эту учётную запись
delete_account_desc=Вы уверены, что хотите навсегда удалить эту учётную запись?
-email_notifications.enable=Разрешить уведомления по почте
+email_notifications.enable=Включить уведомления по эл. почте
email_notifications.onmention=Посылать письмо на эл. почту только при упоминании
email_notifications.disable=Отключить уведомления по почте
-email_notifications.submit=Установить настройки эл. почты
+email_notifications.submit=Задать настройку уведомлений
email_notifications.andyourown=И ваши собственные уведомления
visibility=Видимость пользователя
@@ -986,6 +989,9 @@ additional_repo_units_hint = Предлагать включить больше
update_hints = Обновить подсказки
update_hints_success = Подсказки обновлены.
additional_repo_units_hint_description = Показывать кнопку "Добавить больше разделов" в репозиториях, в которых включены не все разделы.
+pronouns_custom = Другие
+pronouns = Местоимения
+pronouns_unspecified = Не указаны
[repo]
owner=Владелец
@@ -1211,11 +1217,11 @@ tag=тег
released_this=выпустил(-а) это
tagged_this=добавил(а) тег
file.title=%s в %s
-file_raw=Исходник
+file_raw=Исходный
file_history=История
-file_view_source=Просмотреть исходный код
-file_view_rendered=Просмотр отрендеренного
-file_view_raw=Посмотреть исходник
+file_view_source=Просмотр исходного текста
+file_view_rendered=Просмотр рендера
+file_view_raw=Открыть исходный
file_permalink=Постоянная ссылка
file_too_large=Этот файл слишком большой, поэтому он не может быть отображён.
invisible_runes_header=`Этот файл содержит невидимые символы Юникода`
@@ -1397,7 +1403,7 @@ issues.filter_milestones=Фильтр этапов
issues.filter_projects=Фильтровать проекты
issues.filter_labels=Фильтр меток
issues.filter_reviewers=Фильтр рецензентов
-issues.new=Создать задачу
+issues.new=Добавить задачу
issues.new.title_empty=Заголовок не может быть пустым
issues.new.labels=Метки
issues.new.no_label=Нет меток
@@ -1425,7 +1431,7 @@ issues.choose.ignore_invalid_templates=Некорректные шаблоны
issues.choose.invalid_templates=Найден(ы) %v неверный(х) шаблон(ов)
issues.choose.invalid_config=Конфигурация задачи содержит ошибки:
issues.no_ref=Нет связанной ветки или тега
-issues.create=Добавить задачу
+issues.create=Создать задачу
issues.new_label=Новая метка
issues.new_label_placeholder=Имя метки
issues.new_label_desc_placeholder=Описание
@@ -1727,7 +1733,7 @@ compare.compare_base=Основа
compare.compare_head=сравнить
pulls.desc=Включить запросы на слияние и проверки кода.
-pulls.new=Новый запрос на слияние
+pulls.new=Новый запрос
pulls.view=Просмотр запроса на слияние
pulls.compare_changes=Новый запрос на слияние
pulls.allow_edits_from_maintainers=Разрешить редактирование сопровождающими
@@ -2653,7 +2659,7 @@ editor.invalid_commit_mail = Неправильная почта для созд
pulls.has_merged = Слияние не удалось: запрос уже был слит, изменение целевой ветки или повторное слияние невозможно.
settings.enter_repo_name = Введите имя владельца и название репозитория как указано:
signing.wont_sign.error = Не удалось проверить возможность подписать коммит.
-signing.wont_sign.nokey = Нет ключей для подписи этого коммита.
+signing.wont_sign.nokey = Сервер не предоставляет ключ для подписи коммита.
settings.wiki_globally_editable = Разрешить редактирование вики всем пользователям
settings.webhook.test_delivery_desc_disabled = Активируйте этот веб-хук для проверки тестовым событием.
commits.browse_further = Смотреть далее
@@ -2703,6 +2709,17 @@ settings.enforce_on_admins = Обязательно для администра
settings.enforce_on_admins_desc = Администраторы репозитория не смогут обойти это ограничение.
settings.rename_branch_failed_protected = Невозможно переименовать защищённую ветку «%s».
issues.archived_label_description = (Архивная) %s
+settings.sourcehut_builds.graphql_url = Ссылка на GraphQL (напр. https://builds.sr.ht/query)
+settings.sourcehut_builds.secrets_helper = Дать задачам доступ к секретам сборки (требуется разрешение SECRETS:RO)
+settings.add_webhook.invalid_path = Путь не может включать части «.», «..» или «//». Он не может начинаться или заканчиваться на слеш.
+settings.web_hook_name_sourcehut_builds = SourceHut Builds
+settings.sourcehut_builds.manifest_path = Путь манифеста сборки
+settings.sourcehut_builds.visibility = Видимость задач
+settings.sourcehut_builds.secrets = Секреты
+release.download_count_one = %s скачивание
+release.download_count_few = %s скачиваний
+release.system_generated = Это вложение сгенерировано автоматически.
+settings.event_pull_request_enforcement = Форсирование
[graphs]
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index f30759686e..dfa33becff 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -57,7 +57,7 @@ mirror=镜像
new_repo=创建仓库
new_migrate=迁移外部仓库
new_mirror=创建新的镜像
-new_fork=新的仓库Fork
+new_fork=新的派生仓库
new_org=创建组织
new_project=创建项目
new_project_column=创建列
@@ -169,7 +169,9 @@ number_of_contributions_in_the_last_12_months=一年内 %s 次贡献
contributions_zero=目前还没有贡献。
less=更少的
more=更多的
-contributions_format = {contributions} 于 {month} {day}, {year}
+contributions_format = {year}{month}{day} 当日有 {contributions}
+contributions_few = 项贡献
+contributions_one = 贡献
[editor]
buttons.heading.tooltip=添加标题
@@ -662,6 +664,8 @@ follow_blocked_user = 您不能关注该用户,因为您已屏蔽该用户或
block = 屏蔽
unblock = 解除屏蔽
block_user.detail_3 = 该用户无法将您添加为合作者,您也无法将其添加为合作者。
+followers_one = %d 人关注
+following_one = %d 人被该用户关注
[settings]
profile=个人信息
@@ -724,10 +728,10 @@ comment_type_group_issue_ref=工单引用
saved_successfully=您的设置已成功保存。
privacy=隐私设置
keep_activity_private=隐藏个人资料页面中的活动
-keep_activity_private_popup=使活动仅对您和管理员可见
+keep_activity_private_popup=您的活动将只对您自己和本实例的管理员可见
lookup_avatar_by_mail=使用电子邮箱地址查找头像
-federated_avatar_lookup=Federated Avatar 查找
+federated_avatar_lookup=查找联合头像
enable_custom_avatar=启动自定义头像
choose_new_avatar=选择新的头像
update_avatar=更新头像
@@ -980,6 +984,11 @@ blocked_since = 自 %s 起被屏蔽
user_unblock_success = 已成功取消对该用户的屏蔽。
user_block_success = 已成功屏蔽该用户。
change_password = 更改密码
+additional_repo_units_hint = 鼓励仓库启用更多功能
+hints = 提示
+update_hints = 更新提示
+additional_repo_units_hint_description = 在所有存在未启用的功能的仓库内显示一个“选择更多功能…”按钮。
+update_hints_success = 提示更改成功。
[repo]
new_repo_helper=代码仓库包含了所有的项目文件,包括版本历史记录。已经在其他地方托管了?迁移仓库。
@@ -1307,7 +1316,7 @@ editor.file_is_a_symlink=`"%s" 是一个符号链接,无法在 web 编辑器
editor.filename_is_a_directory=此仓库中已存在名为“%s” 的目录。
editor.file_editing_no_longer_exists=正在编辑的文件 %s 已不存在。
editor.file_deleting_no_longer_exists=正在删除的文件 %s 已不存在。
-editor.file_changed_while_editing=文件内容在您进行编辑时已经发生变动。单击此处 查看变动的具体内容,或者 再次提交 覆盖已发生的变动。
+editor.file_changed_while_editing=文件内容在您进行编辑时被更改。单击此处 查看具体被更改的内容,或者 再次提交 覆盖其它在编辑时产生的更改。
editor.file_already_exists=此仓库已经存在名为 %s 的文件。
editor.commit_empty_file_header=提交一个空文件
editor.commit_empty_file_text=您要提交的文件是空的,继续吗?
@@ -1396,7 +1405,7 @@ projects.column.set_default_desc=设置此列为未分类工单和合并请求
projects.column.unset_default=取消设为默认
projects.column.unset_default_desc=取消此列为默认值
projects.column.delete=删除列
-projects.column.deletion_desc=删除项目列会将所有相关工单移到“未分类”。是否继续?
+projects.column.deletion_desc=删除项目列会将所有相关工单移到默认的列。是否继续?
projects.column.color=颜色
projects.open=开启
projects.close=关闭
@@ -1975,7 +1984,7 @@ activity.period.semiyearly=6 个月
activity.period.yearly=1年
activity.overview=概览
activity.active_prs_count_1=%d 合并请求
-activity.active_prs_count_n=%d 合并请求
+activity.active_prs_count_n=%d 项活动的合并请求
activity.merged_prs_count_1=已合并的合并请求
activity.merged_prs_count_n=已合并的合并请求
activity.opened_prs_count_1=新合并请求
@@ -1988,24 +1997,24 @@ activity.title.prs_merged_by=%[2]s 由 %[1]s 合并
activity.title.prs_opened_by=%[2]s 创建了 %[1]s
activity.merged_prs_label=已合并
activity.opened_prs_label=已创建
-activity.active_issues_count_1=%d 工单
-activity.active_issues_count_n=%d 工单
+activity.active_issues_count_1=%d 项活动的工单
+activity.active_issues_count_n=%d 项活动的工单
activity.closed_issues_count_1=已关闭的工单
activity.closed_issues_count_n=已关闭的工单
-activity.title.issues_1=%d 工单
-activity.title.issues_n=%d 工单
+activity.title.issues_1=%d 项工单
+activity.title.issues_n=%d 项工单
activity.title.issues_closed_from=%s 从 %s 被关闭
activity.title.issues_created_by=%[2]s 创建了 %[1]s
activity.closed_issue_label=已关闭
-activity.new_issues_count_1=创建工单
-activity.new_issues_count_n=创建工单
+activity.new_issues_count_1=新工单
+activity.new_issues_count_n=新工单
activity.new_issue_label=打开的
-activity.title.unresolved_conv_1=%d 未解决的会话
-activity.title.unresolved_conv_n=%d 未解决的会话
+activity.title.unresolved_conv_1=%d 项未解决的会话
+activity.title.unresolved_conv_n=%d 项未解决的会话
activity.unresolved_conv_desc=这些最近更新的工单和合并请求还没有解决。
activity.unresolved_conv_label=打开
-activity.title.releases_1=%d 版本发布
-activity.title.releases_n=%d 版本发布
+activity.title.releases_1=%d 个版本发布
+activity.title.releases_n=%d 个版本发布
activity.title.releases_published_by=%[2]s 发布了 %[1]s
activity.published_release_label=已发布
activity.no_git_activity=在此期间没有任何提交活动。
@@ -2235,7 +2244,7 @@ settings.update_githook=更新钩子设置
settings.add_webhook_desc=Forgejo 将向目标 URL 发送具有指定内容类型的 POST 请求。在 webhooks 指南 中阅读更多内容。
settings.payload_url=目标 URL
settings.http_method=HTTP 方法
-settings.content_type=POST Content Type
+settings.content_type=POST 内容类型
settings.secret=密钥文本
settings.slack_username=服务名称
settings.slack_icon_url=图标 URL
@@ -2409,7 +2418,7 @@ settings.block_outdated_branch=如果拉取请求已经过时,阻止合并
settings.block_outdated_branch_desc=当头部分支落后基础分支时,不能合并。
settings.default_branch_desc=请选择一个默认的分支用于合并请求和提交:
settings.merge_style_desc=合并方式
-settings.default_merge_style_desc=合并请求的默认合并样式:
+settings.default_merge_style_desc=默认合并方式
settings.choose_branch=选择一个分支...
settings.no_protected_branch=没有受保护的分支
settings.edit_protected_branch=编辑
@@ -2423,10 +2432,10 @@ settings.tags.protection.allowed=允许列表
settings.tags.protection.allowed.users=允许的账号
settings.tags.protection.allowed.teams=允许的团队
settings.tags.protection.allowed.noone=无
-settings.tags.protection.create=保护Git标签
+settings.tags.protection.create=新建规则
settings.tags.protection.none=没有受保护的Git标签
settings.tags.protection.pattern.description=你可以使用单个名称或 glob 模式匹配或正则表达式来匹配多个标签。了解详情请访问 受保护Git标签指南。
-settings.bot_token=Bot 令牌
+settings.bot_token=机器人令牌
settings.chat_id=聊天 ID
settings.thread_id=线程 ID
settings.matrix.homeserver_url=主服务器网址
@@ -2672,15 +2681,15 @@ pulls.commit_ref_at = `在提交 %[2]s 中引用
desc.sha256 = SHA256
settings.ignore_stale_approvals = 忽略过时的批准
settings.ignore_stale_approvals_desc = 不对旧的提交(过时的审查)计入已批准的合并请求数量。注:如过期的审核已被取消,则无需设置。
-settings.archive.mirrors_unavailable = 如果仓库已存档,则仓库镜像不再可用。
+settings.archive.mirrors_unavailable = 不能镜像已归档的仓库。
settings.wiki_rename_branch_main_notices_2 = 这将预先重命名 %s 的存储库 wiki 的内部分支。 现存的检出方式需要更新。
settings.wiki_branch_rename_failure = 无法标准化存储库 wiki 的分支名称。
settings.add_collaborator_blocked_our = 因仓库所有者已将其拉黑,不能添加该用户为协作者。
settings.add_collaborator_blocked_them = 因该用户已将仓库所有者拉黑,不能添加该用户为协作者。
-settings.units.units = 仓库单元
+settings.units.units = 仓库功能
pulls.fast_forward_only_merge_pull_request = 仅快速向前
settings.units.overview = 概览
-settings.units.add_more = 添加更多
+settings.units.add_more = 添加更多…
file_follow = 跟随符号链接
pulls.reopen_failed.head_branch = 因头部分支不再存在,该合并请求不能再被重新打开。
pulls.reopen_failed.base_branch = 因基础分支不再存在,该合并请求不能再被重新打开。
@@ -2703,7 +2712,12 @@ n_branch_one = %s 分支
n_branch_few = %s 分支
n_tag_one = %s 标签
n_tag_few = %s 标签
-editor.commit_id_not_matching = 此提交ID与您当前编辑的不匹配,将提交至新分支后合并。
+editor.commit_id_not_matching = 此提交ID与您当前编辑的不匹配。请提交到一个新的分支,然后再将这个新的分支合并回当前分支。
+issues.num_participants_one = %d 个参与者
+issues.archived_label_description = (已归档)%s
+editor.push_out_of_date = 推送似乎已过期。
+settings.enforce_on_admins = 对仓库的管理员适用该规则
+settings.enforce_on_admins_desc = 使仓库管理员也须遵守此规则。
[graphs]
component_loading=正在加载 %s...
@@ -3776,3 +3790,4 @@ fuzzy = 模糊
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了仓库索引可能会有更好的结果。
match = 匹配
match_tooltip = 仅包含与搜索词完全匹配的结果
+fuzzy_tooltip = 在搜索结果中包含与搜索词相近的项目
From f7aca6ed216aeb7dc7f7efcac9ea20f5125131e5 Mon Sep 17 00:00:00 2001
From: Gusted
Date: Sat, 6 Apr 2024 14:49:03 +0200
Subject: [PATCH 006/233] Remove unused translation
- Remove `enable_update_checker_helper` translation key which became
obsolete with #278
---
options/locale/locale_cs-CZ.ini | 1 -
options/locale/locale_de-DE.ini | 1 -
options/locale/locale_el-GR.ini | 1 -
options/locale/locale_en-US.ini | 1 -
options/locale/locale_eo.ini | 1 -
options/locale/locale_es-ES.ini | 1 -
options/locale/locale_fil.ini | 1 -
options/locale/locale_fr-FR.ini | 1 -
options/locale/locale_it-IT.ini | 1 -
options/locale/locale_ja-JP.ini | 1 -
options/locale/locale_lv-LV.ini | 1 -
options/locale/locale_nl-NL.ini | 1 -
options/locale/locale_pt-BR.ini | 1 -
options/locale/locale_pt-PT.ini | 1 -
options/locale/locale_ru-RU.ini | 1 -
options/locale/locale_sk-SK.ini | 1 -
options/locale/locale_sl.ini | 1 -
options/locale/locale_tr-TR.ini | 1 -
options/locale/locale_zh-CN.ini | 1 -
options/locale/locale_zh-TW.ini | 1 -
20 files changed, 20 deletions(-)
diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini
index 4eb529331d..9ff5692325 100644
--- a/options/locale/locale_cs-CZ.ini
+++ b/options/locale/locale_cs-CZ.ini
@@ -323,7 +323,6 @@ password_algorithm=Hashovací algoritmus hesla
invalid_password_algorithm=Neplatný algoritmus hashe hesla
password_algorithm_helper=Nastavte algoritmus hashování hesla. Algoritmy mají odlišné požadavky a sílu. Algoritmus argon2 je poměrně bezpečný, ale používá spoustu paměti a může být nevhodný pro malé systémy.
enable_update_checker=Povolit kontrolu aktualizací
-enable_update_checker_helper=Kontroluje vydání nových verzí pravidelně připojením ke gitea.io.
env_config_keys=Konfigurace prostředí
env_config_keys_prompt=Následující proměnné prostředí budou také použity pro váš konfigurační soubor:
enable_update_checker_helper_forgejo = Bude pravidelně kontrolovat nové verze Forgejo kontrolou TXT DNS záznamu na adrese release.forgejo.org.
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index 60ddf340f8..e0a23cd902 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -321,7 +321,6 @@ password_algorithm=Passwort Hashing Algorithmus
invalid_password_algorithm=Ungültiger Passwort-Hash-Algorithmus
password_algorithm_helper=Lege einen Passwort-Hashing-Algorithmus fest. Algorithmen haben unterschiedliche Anforderungen und Stärken. Der argon2-Algorithmus ist ziemlich sicher, aber er verbraucht viel Speicher und kann für kleine Systeme ungeeignet sein.
enable_update_checker=Aktualisierungsprüfung aktivieren
-enable_update_checker_helper=Stellt regelmäßig eine Verbindung zu gitea.io her, um nach neuen Versionen zu prüfen.
env_config_keys=Umgebungskonfiguration
env_config_keys_prompt=Die folgenden Umgebungsvariablen werden auch auf Ihre Konfigurationsdatei angewendet:
allow_dots_in_usernames = Erlaubt Benutzern die Verwendung von Punkten in ihren Benutzernamen. Hat keine Auswirkungen auf bestehende Konten.
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index 901fa0b4b9..b84e32f58a 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -321,7 +321,6 @@ password_algorithm=Αλγόριθμος hash για κωδικούς
invalid_password_algorithm=Μη έγκυρος αλγόριθμος κωδικού πρόσβασης
password_algorithm_helper=Ορίστε τον αλγόριθμο κατακερματισμού για το κωδικό πρόσβασης. Οι αλγόριθμοι διαφέρουν σε απαιτήσεις και αντοχή. Ο αλγόριθμος argon2 είναι αρκετά ασφαλής, αλλά χρησιμοποιεί πολλή μνήμη και μπορεί να είναι ακατάλληλος για μικρά συστήματα.
enable_update_checker=Ενεργοποίηση ελέγχου ενημερώσεων
-enable_update_checker_helper=Ελέγχει περιοδικά για νέες εκδόσεις κάνοντας σύνδεση στο gitea.io.
env_config_keys=Ρυθμίσεις Περιβάλλοντος
env_config_keys_prompt=Οι ακόλουθες μεταβλητές περιβάλλοντος θα εφαρμοστούν επίσης στο αρχείο ρυθμίσεων σας:
allow_dots_in_usernames = Επιτρέπει την χρήση τελείων σε ονόματα χρηστών. Δεν θα επηρεαστούν λογαριασμοί που ήδη υπάρχουν.
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index fad1e820bc..ea2fb232b0 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -347,7 +347,6 @@ password_algorithm = Password hash algorithm
invalid_password_algorithm = Invalid password hash algorithm
password_algorithm_helper = Set the password hashing algorithm. Algorithms have differing requirements and strength. The argon2 algorithm is rather secure but uses a lot of memory and may be inappropriate for small systems.
enable_update_checker = Enable update checker
-enable_update_checker_helper = Checks for new version releases periodically by connecting to gitea.io.
env_config_keys = Environment Configuration
env_config_keys_prompt = The following environment variables will also be applied to your configuration file:
diff --git a/options/locale/locale_eo.ini b/options/locale/locale_eo.ini
index 88bbb958bd..02542631eb 100644
--- a/options/locale/locale_eo.ini
+++ b/options/locale/locale_eo.ini
@@ -295,7 +295,6 @@ no_reply_address_helper = Retnomo kiu uziĝus por uzantoj kun kaŝita retpoŝtad
enable_update_checker = Ŝalti novversian kontrolanton
password_algorithm = Pasvorthaketiga algoritmo
env_config_keys = Mediagordoj
-enable_update_checker_helper = Foje kontrolas ĉu estas novaj versioj per konektiĝo al gitea.io.
invalid_password_algorithm = Malvalida pasvorthakeita algoritmo
password_algorithm_helper = Agordas la pasvorthaketigan algoritmon. Algoritmoj havas malsamajn postulojn kaj efikecojn. La algoritmo argon2 sufiĉe sekuras, sed postulas multan memoron kaj eble ne taŭgas por nepotencaj serviloj.
internal_token_failed = Malsukcesis krei internan ĵetonon: %v
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index 5ac709e875..721249707f 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -314,7 +314,6 @@ password_algorithm=Algoritmo Hash de Contraseña
invalid_password_algorithm=Algoritmo hash de contraseña no válido
password_algorithm_helper=Establece el algoritmo de hashing de contraseña. Los algoritmos tienen diferentes requisitos y fuerza. El algoritmo argon2 es bastante seguro, pero usa mucha memoria y puede ser inapropiado para sistemas pequeños.
enable_update_checker=Activar comprobador de actualizaciones
-enable_update_checker_helper=Comprueba el lanzamiento de nuevas versiones periódicamente en gitea.io.
env_config_keys=Configuración del entorno
env_config_keys_prompt=Las siguientes variables de entorno también se aplicarán a su archivo de configuración:
allow_dots_in_usernames = Permite utilizar puntos en los nombres de usuario. No tiene efecto sobre cuentas existentes.
diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini
index daa4169729..c65875db79 100644
--- a/options/locale/locale_fil.ini
+++ b/options/locale/locale_fil.ini
@@ -318,7 +318,6 @@ default_allow_create_organization = Payagan ang paggawa ng mga organisasyon bila
disable_registration_popup = I-disable ang pansariling pagrehistro ng user. Ang mga administrator lamang ang makakagawa ng mga bagong user account.
disable_gravatar_popup = I-disable ang Gravatar at mga third-party na avatar source. Ang isang default na avatar ay gagamitin maliban kung maga-upload ng avatar ang user.
admin_setting_desc = Ang paggawa ng administrator account ay opsyonal. Ang pinakaunang nakarehistro na user ay awtomatikong magiging administrator.
-enable_update_checker_helper = Tinitingnan para sa mga pagpalabas ng bagong bersyon sa pamamagitan ng pagkonekta sa gitea.io.
[heatmap]
number_of_contributions_in_the_last_12_months = %s mga kontribusyon sa nakalipas na 12 buwan
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index 5fb34bc921..c87d6cf79f 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -322,7 +322,6 @@ password_algorithm=Algorithme de hachage du mot de passe
invalid_password_algorithm=Algorithme de hachage du mot de passe invalide
password_algorithm_helper=Définissez l’algorithme de hachage du mot de passe. Les algorithmes ont des exigences matérielles et une résistance différentes. L’algorithme argon2 est bien sécurisé mais utilise beaucoup de mémoire et peut être inapproprié pour les systèmes limités en ressources.
enable_update_checker=Activer la vérification des mises-à-jour
-enable_update_checker_helper=Vérifie les mises à jour régulièrement en se connectant à gitea.io.
env_config_keys=Configuration de l'environnement
env_config_keys_prompt=Les variables d'environnement suivantes seront également ajoutées à votre fichier de configuration :
enable_update_checker_helper_forgejo = Vérifie la disponibilité de nouvelles versions de Forgejo en interrogeant l'enregistrement DNS TXT de release.forgejo.org.
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index ee367101a3..f84d499302 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -318,7 +318,6 @@ enable_update_checker_helper_forgejo = Verificherà periodicamente nuove version
invalid_db_table = La tabella del database "%s" non è valida: %v
invalid_password_algorithm = Algoritmo di hash della password non valido
enable_update_checker = Attiva il controllo degli aggiornamenti
-enable_update_checker_helper = Verifica periodicamente la presenza di nuove versioni tramite gitea.io.
env_config_keys = Configurazione Ambiente
env_config_keys_prompt = Le seguenti variabili di ambiente saranno anche applicate al tuo file di configurazione:
run_user_helper = Il nome utente del sistema operativo con il quale Forgejo viene eseguito. Questo utente deve avere accesso alla cartella principale delle repository.
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index 3a4f414a9b..7aa2ccd6ee 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -318,7 +318,6 @@ password_algorithm=パスワードハッシュアルゴリズム
invalid_password_algorithm=無効なパスワードハッシュアルゴリズム
password_algorithm_helper=パスワードハッシュアルゴリズムを設定します。 アルゴリズムにより動作要件と強度が異なります。 argon2アルゴリズムはかなり安全ですが、多くのメモリを使用するため小さなシステムには適さない場合があります。
enable_update_checker=アップデートチェッカーを有効にする
-enable_update_checker_helper=gitea.ioに接続して定期的に新しいバージョンのリリースを確認します。
env_config_keys=環境設定
env_config_keys_prompt=以下の環境変数も設定ファイルに適用されます:
allow_dots_in_usernames = ユーザー名にドットを使用できるようにします。既存のアカウントには影響しません。
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index 3ccc1054c8..cf367baf54 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -301,7 +301,6 @@ password_algorithm=Paroles jaucējsummas algoritms
invalid_password_algorithm=Kļūdaina paroles jaucējfunkcija
password_algorithm_helper=Norādiet paroles jaucējalgoritmu. Algoritmi atšķirās pēc prasībām pret resursiem un stipruma. Argon2 algoritms ir drošs, bet tam nepieciešams daudz operatīvās atmiņas, līdz ar ko tas var nebūt piemērots sistēmām ar maz pieejamajiem resursiem.
enable_update_checker=Iespējot jaunu versiju paziņojumus
-enable_update_checker_helper=Periodiski pārbaudīt jaunu version pieejamību, izgūstot datus no gitea.io.
env_config_keys=Vides konfigurācija
env_config_keys_prompt=Šie vides mainīgie tiks pielietoti arī konfigurācijas failā:
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index 2aeedde02a..bdb6cd50d6 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -325,7 +325,6 @@ password_algorithm_helper = Stel het hashing-algoritme voor wachtwoorden in. De
run_user_helper = De gebruikersnaam van het besturingssysteem waaronder Forgejo draait. Merk op dat deze gebruiker toegang moet hebben tot de hoofdmap van de repository.
require_sign_in_view_popup = Beperk de toegang tot de pagina's tot ingelogde gebruikers. Bezoekers zien alleen de aanmeldings- en registratiepagina's.
enable_update_checker_helper_forgejo = Het zal periodiek controleren op nieuwe Forgejo-versies door een TXT DNS-record op release.forgejo.org te controleren.
-enable_update_checker_helper = Controleert periodiek op nieuwe versies door verbinding te maken met gitea.io.
smtp_from_invalid = Het adres "E-mails versturen als" is ongeldig
config_location_hint = Deze configuratieopties worden opgeslagen in:
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 3725bc5e7b..ed4231d18c 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -314,7 +314,6 @@ password_algorithm=Algoritmo Hash de Senha
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.
enable_update_checker=Habilitar Verificador de Atualizações
-enable_update_checker_helper=Procura por novas versões periodicamente conectando-se ao gitea.io.
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.
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 0d17c95378..b72a357333 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -319,7 +319,6 @@ password_algorithm=Algoritmo de Hash da Senha
invalid_password_algorithm=Algoritmo de hash da senha inválido
password_algorithm_helper=Definir o algoritmo de hash da senha. Os algoritmos têm requisitos e resistência distintos. `argon2` é bastante seguro, mas usa muita memória e pode ser inapropriado para sistemas pequenos.
enable_update_checker=Habilitar verificador de novidades
-enable_update_checker_helper=Verifica, periodicamente, se foi lançada alguma versão nova, fazendo uma ligação ao gitea.io.
env_config_keys=Configuração do ambiente
env_config_keys_prompt=As seguintes variáveis de ambiente também serão aplicadas ao seu ficheiro de configuração:
config_location_hint = Estas opções de configuração serão gravadas em:
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 52f971676d..a235b64c83 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -321,7 +321,6 @@ password_algorithm=Алгоритм хеширования паролей
invalid_password_algorithm=Некорректный алгоритм хеширования пароля
password_algorithm_helper=Задайте алгоритм хеширования паролей. Алгоритмы имеют различные требования и стойкость. Алгоритм argon2 довольно безопасен, но он использует много памяти и может не подходить для слабых систем.
enable_update_checker=Проверка обновлений
-enable_update_checker_helper=Периодически проверяет наличие новых версий, подключаясь к gitea.io.
env_config_keys=Настройка окружения
env_config_keys_prompt=Следующие переменные окружения также будут применены к вашему конфигурационному файлу:
enable_update_checker_helper_forgejo = Периодически проверять наличие новых версий Forgejo через DNS-запись TXT на release.forgejo.org.
diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini
index 28c3c3cc21..6313fe1ee2 100644
--- a/options/locale/locale_sk-SK.ini
+++ b/options/locale/locale_sk-SK.ini
@@ -298,7 +298,6 @@ password_algorithm=Hašovací algoritmus hesla
invalid_password_algorithm=Neplatný hash algoritmus hesla
password_algorithm_helper=Nastavte algoritmus hashovania hesla. Algoritmy majú rôzne požiadavky a silu. Algoritmus argon2 je pomerne bezpečný, ale využíva veľa pamäte a môže byť nevhodný pre malé systémy.
enable_update_checker=Povoliť kontrolu aktualizácií
-enable_update_checker_helper=Pravidelne kontroluje nové verzie pripojením k gitea.io.
[home]
uname_holder=Používateľské meno alebo emailová adresa
diff --git a/options/locale/locale_sl.ini b/options/locale/locale_sl.ini
index cda98d17a4..ed6153b70f 100644
--- a/options/locale/locale_sl.ini
+++ b/options/locale/locale_sl.ini
@@ -235,7 +235,6 @@ default_enable_timetracking = Privzeto omogočite sledenje času
default_enable_timetracking_popup = Privzeto omogočite sledenje času za nove shrambe.
invalid_password_algorithm = Nepravilen algoritem za stiskanje gesla
enable_update_checker = Omogočite preverjanje posodobitev
-enable_update_checker_helper = Redno preverja izdaje novih različic tako, da se poveže s spletnim mestom gitea.io.
env_config_keys = Konfiguracija okolja
env_config_keys_prompt = V konfiguracijski datoteki bodo uporabljene tudi naslednje okoljske spremenljivke:
smtp_from_invalid = Naslov "Pošlji e-pošto kot" je neveljaven
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index 0c9aa521c6..becf41b714 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -301,7 +301,6 @@ password_algorithm=Parola Hash Algoritması
invalid_password_algorithm=Hatalı parola hash algoritması
password_algorithm_helper=Parola hash algoritmasını ayarlayın. Algoritmalar değişen gereksinimlere ve güce sahiptirler. argon2 algoritması iyi özelliklere sahip olmasına rağmen fazla miktarda bellek kullanır ve küçük sistemler için uygun olmayabilir.
enable_update_checker=Güncelleme Denetleyicisini Etkinleştir
-enable_update_checker_helper=Düzenli olarak gitea.io'ya bağlanarak yeni yayınlanan sürümleri denetler.
env_config_keys=Ortam Yapılandırma
env_config_keys_prompt=Aşağıdaki ortam değişkenleri de yapılandırma dosyanıza eklenecektir:
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index dfa33becff..3b05fb3762 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -321,7 +321,6 @@ password_algorithm=密码哈希算法
invalid_password_algorithm=无效的密码哈希算法
password_algorithm_helper=设置密码散列算法。算法有不同的要求和强度。 argon2 算法相当安全,但使用大量内存,因此可能不适合小型系统。
enable_update_checker=启用更新检查
-enable_update_checker_helper=通过连接到 gitea.io 定期检查新版本发布。
env_config_keys=环境配置
env_config_keys_prompt=以下环境变量也将应用于您的配置文件:
allow_dots_in_usernames = 允许用户在用户名中使用英文句号。不影响已有的帐户。
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index 1faabf9b99..96d5d0b29c 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -314,7 +314,6 @@ password_algorithm=密碼雜湊演算法
invalid_password_algorithm=無效的密碼雜湊演算法
password_algorithm_helper=設定密碼雜湊演算法。演算法有不同的需求與強度。argon2 演算法雖然較安全但會使用大量記憶體,可能不適用於小型系統。
enable_update_checker=啟用更新檢查器
-enable_update_checker_helper=定期連線到 gitea.io 檢查更新。
run_user_helper = 輸入 Forgejo 執行的作業系統使用者名稱。請注意,此使用者必須具有對儲存庫根路徑的訪問許可權。
[home]
From c1f7c498048bcc9afdca829cd64243ff52a43e23 Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 11:58:19 +0200
Subject: [PATCH 007/233] webhook: add admin-hooks new list test
---
tests/integration/repo_webhook_test.go | 47 ++++++++++++++++++++------
1 file changed, 37 insertions(+), 10 deletions(-)
diff --git a/tests/integration/repo_webhook_test.go b/tests/integration/repo_webhook_test.go
index 1898c35976..4e8788f0be 100644
--- a/tests/integration/repo_webhook_test.go
+++ b/tests/integration/repo_webhook_test.go
@@ -7,7 +7,6 @@ import (
"net/http"
"net/http/httptest"
"net/url"
- "strings"
"testing"
gitea_context "code.gitea.io/gitea/services/context"
@@ -37,24 +36,52 @@ func TestNewWebHookLink(t *testing.T) {
for _, url := range tests {
resp := session.MakeRequest(t, NewRequest(t, "GET", url), http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
- menus := htmlDoc.doc.Find(".ui.top.attached.header .ui.dropdown .menu a")
- menus.Each(func(i int, menu *goquery.Selection) {
- url, exist := menu.Attr("href")
- assert.True(t, exist)
- assert.True(t, strings.HasPrefix(url, baseurl))
- })
- assert.Equal(t, webhooksLen, htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(), "not all webhooks are listed in the 'new' dropdown")
+ assert.Equal(t,
+ webhooksLen,
+ htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(),
+ "not all webhooks are listed in the 'new' dropdown")
+
csrfToken = htmlDoc.GetCSRF()
}
// ensure that the "failure" pages has the full dropdown as well
resp := session.MakeRequest(t, NewRequestWithValues(t, "POST", baseurl+"/gitea/new", map[string]string{"_csrf": csrfToken}), http.StatusUnprocessableEntity)
htmlDoc := NewHTMLParser(t, resp.Body)
- assert.Equal(t, webhooksLen, htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(), "not all webhooks are listed in the 'new' dropdown on failure")
+ assert.Equal(t,
+ webhooksLen,
+ htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(),
+ "not all webhooks are listed in the 'new' dropdown on failure")
resp = session.MakeRequest(t, NewRequestWithValues(t, "POST", baseurl+"/1", map[string]string{"_csrf": csrfToken}), http.StatusUnprocessableEntity)
htmlDoc = NewHTMLParser(t, resp.Body)
- assert.Equal(t, webhooksLen, htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(), "not all webhooks are listed in the 'new' dropdown on failure")
+ assert.Equal(t,
+ webhooksLen,
+ htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(),
+ "not all webhooks are listed in the 'new' dropdown on failure")
+
+ adminSession := loginUser(t, "user1")
+ t.Run("org3", func(t *testing.T) {
+ baseurl := "/org/org3/settings/hooks"
+ resp := adminSession.MakeRequest(t, NewRequest(t, "GET", baseurl), http.StatusOK)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+ assert.Equal(t,
+ webhooksLen,
+ htmlDoc.Find(`a[href^="`+baseurl+`/"][href$="/new"]`).Length(),
+ "not all webhooks are listed in the 'new' dropdown")
+ })
+ t.Run("admin", func(t *testing.T) {
+ baseurl := "/admin/hooks"
+ resp := adminSession.MakeRequest(t, NewRequest(t, "GET", baseurl), http.StatusOK)
+ htmlDoc := NewHTMLParser(t, resp.Body)
+ assert.Equal(t,
+ webhooksLen,
+ htmlDoc.Find(`a[href^="/admin/default-hooks/"][href$="/new"]`).Length(),
+ "not all webhooks are listed in the 'new' dropdown for default-hooks")
+ assert.Equal(t,
+ webhooksLen,
+ htmlDoc.Find(`a[href^="/admin/system-hooks/"][href$="/new"]`).Length(),
+ "not all webhooks are listed in the 'new' dropdown for system-hooks")
+ })
}
func TestWebhookForms(t *testing.T) {
From e0b5f2d59bd3b9ec3796c867982c07c76c4a4428 Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 11:58:44 +0200
Subject: [PATCH 008/233] webhook: fix admin-hooks new dropdowns
---
routers/web/admin/hooks.go | 3 +++
1 file changed, 3 insertions(+)
diff --git a/routers/web/admin/hooks.go b/routers/web/admin/hooks.go
index 8d59fbb858..91857d2753 100644
--- a/routers/web/admin/hooks.go
+++ b/routers/web/admin/hooks.go
@@ -11,6 +11,7 @@ import (
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/services/context"
+ webhook_service "code.gitea.io/gitea/services/webhook"
)
const (
@@ -38,6 +39,7 @@ func DefaultOrSystemWebhooks(ctx *context.Context) {
sys["Webhooks"], err = webhook.GetSystemWebhooks(ctx, optional.None[bool]())
sys["BaseLink"] = setting.AppSubURL + "/admin/hooks"
sys["BaseLinkNew"] = setting.AppSubURL + "/admin/system-hooks"
+ sys["WebhookList"] = webhook_service.List()
if err != nil {
ctx.ServerError("GetWebhooksAdmin", err)
return
@@ -48,6 +50,7 @@ func DefaultOrSystemWebhooks(ctx *context.Context) {
def["Webhooks"], err = webhook.GetDefaultWebhooks(ctx)
def["BaseLink"] = setting.AppSubURL + "/admin/hooks"
def["BaseLinkNew"] = setting.AppSubURL + "/admin/default-hooks"
+ def["WebhookList"] = webhook_service.List()
if err != nil {
ctx.ServerError("GetWebhooksAdmin", err)
return
From 9a94019db4f5604a1923baa9b874a22adc4e7c5e Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 11:59:10 +0200
Subject: [PATCH 009/233] webhook: add admin-hooks tests
---
models/webhook/webhook_system.go | 20 ++++++++--------
routers/api/v1/admin/hooks.go | 3 +--
routers/web/admin/hooks.go | 3 +--
services/webhook/webhook.go | 2 +-
tests/integration/repo_webhook_test.go | 32 +++++++++++++++++++++-----
5 files changed, 40 insertions(+), 20 deletions(-)
diff --git a/models/webhook/webhook_system.go b/models/webhook/webhook_system.go
index a2a9ee321a..62e8286205 100644
--- a/models/webhook/webhook_system.go
+++ b/models/webhook/webhook_system.go
@@ -8,15 +8,11 @@ import (
"fmt"
"code.gitea.io/gitea/models/db"
- "code.gitea.io/gitea/modules/optional"
)
// GetDefaultWebhooks returns all admin-default webhooks.
func GetDefaultWebhooks(ctx context.Context) ([]*Webhook, error) {
- webhooks := make([]*Webhook, 0, 5)
- return webhooks, db.GetEngine(ctx).
- Where("repo_id=? AND owner_id=? AND is_system_webhook=?", 0, 0, false).
- Find(&webhooks)
+ return getAdminWebhooks(ctx, false)
}
// GetSystemOrDefaultWebhook returns admin system or default webhook by given ID.
@@ -34,15 +30,21 @@ func GetSystemOrDefaultWebhook(ctx context.Context, id int64) (*Webhook, error)
}
// GetSystemWebhooks returns all admin system webhooks.
-func GetSystemWebhooks(ctx context.Context, isActive optional.Option[bool]) ([]*Webhook, error) {
+func GetSystemWebhooks(ctx context.Context, onlyActive bool) ([]*Webhook, error) {
+ return getAdminWebhooks(ctx, true, onlyActive)
+}
+
+func getAdminWebhooks(ctx context.Context, systemWebhooks bool, onlyActive ...bool) ([]*Webhook, error) {
webhooks := make([]*Webhook, 0, 5)
- if !isActive.Has() {
+ if len(onlyActive) > 0 && onlyActive[0] {
return webhooks, db.GetEngine(ctx).
- Where("repo_id=? AND owner_id=? AND is_system_webhook=?", 0, 0, true).
+ Where("repo_id=? AND owner_id=? AND is_system_webhook=? AND is_active = ?", 0, 0, systemWebhooks, true).
+ OrderBy("id").
Find(&webhooks)
}
return webhooks, db.GetEngine(ctx).
- Where("repo_id=? AND owner_id=? AND is_system_webhook=? AND is_active = ?", 0, 0, true, isActive.Value()).
+ Where("repo_id=? AND owner_id=? AND is_system_webhook=?", 0, 0, systemWebhooks).
+ OrderBy("id").
Find(&webhooks)
}
diff --git a/routers/api/v1/admin/hooks.go b/routers/api/v1/admin/hooks.go
index 4c168b55bf..b246cb61b1 100644
--- a/routers/api/v1/admin/hooks.go
+++ b/routers/api/v1/admin/hooks.go
@@ -8,7 +8,6 @@ import (
"net/http"
"code.gitea.io/gitea/models/webhook"
- "code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util"
@@ -38,7 +37,7 @@ func ListHooks(ctx *context.APIContext) {
// "200":
// "$ref": "#/responses/HookList"
- sysHooks, err := webhook.GetSystemWebhooks(ctx, optional.None[bool]())
+ sysHooks, err := webhook.GetSystemWebhooks(ctx, false)
if err != nil {
ctx.Error(http.StatusInternalServerError, "GetSystemWebhooks", err)
return
diff --git a/routers/web/admin/hooks.go b/routers/web/admin/hooks.go
index 91857d2753..c1f42c0061 100644
--- a/routers/web/admin/hooks.go
+++ b/routers/web/admin/hooks.go
@@ -8,7 +8,6 @@ import (
"code.gitea.io/gitea/models/webhook"
"code.gitea.io/gitea/modules/base"
- "code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/services/context"
webhook_service "code.gitea.io/gitea/services/webhook"
@@ -36,7 +35,7 @@ func DefaultOrSystemWebhooks(ctx *context.Context) {
sys["Title"] = ctx.Tr("admin.systemhooks")
sys["Description"] = ctx.Tr("admin.systemhooks.desc")
- sys["Webhooks"], err = webhook.GetSystemWebhooks(ctx, optional.None[bool]())
+ sys["Webhooks"], err = webhook.GetSystemWebhooks(ctx, false)
sys["BaseLink"] = setting.AppSubURL + "/admin/hooks"
sys["BaseLinkNew"] = setting.AppSubURL + "/admin/system-hooks"
sys["WebhookList"] = webhook_service.List()
diff --git a/services/webhook/webhook.go b/services/webhook/webhook.go
index dc68cae84d..cf4f2fdfd2 100644
--- a/services/webhook/webhook.go
+++ b/services/webhook/webhook.go
@@ -243,7 +243,7 @@ func PrepareWebhooks(ctx context.Context, source EventSource, event webhook_modu
}
// Add any admin-defined system webhooks
- systemHooks, err := webhook_model.GetSystemWebhooks(ctx, optional.Some(true))
+ systemHooks, err := webhook_model.GetSystemWebhooks(ctx, true)
if err != nil {
return fmt.Errorf("GetSystemWebhooks: %w", err)
}
diff --git a/tests/integration/repo_webhook_test.go b/tests/integration/repo_webhook_test.go
index 4e8788f0be..9a278e706d 100644
--- a/tests/integration/repo_webhook_test.go
+++ b/tests/integration/repo_webhook_test.go
@@ -87,7 +87,7 @@ func TestNewWebHookLink(t *testing.T) {
func TestWebhookForms(t *testing.T) {
defer tests.PrepareTestEnv(t)()
- session := loginUser(t, "user2")
+ session := loginUser(t, "user1")
t.Run("forgejo/required", testWebhookForms("forgejo", session, map[string]string{
"payload_url": "https://forgejo.example.com",
@@ -299,7 +299,9 @@ func assertInput(t testing.TB, form *goquery.Selection, name string) string {
t.Helper()
input := form.Find(`input[name="` + name + `"]`)
if input.Length() != 1 {
- t.Log(form.Html())
+ form.Find("input").Each(func(i int, s *goquery.Selection) {
+ t.Logf("found ", s.AttrOr("name", ""))
+ })
t.Errorf("field found %d times, expected once", name, input.Length())
}
switch input.AttrOr("type", "") {
@@ -321,6 +323,12 @@ func testWebhookForms(name string, session *TestSession, validFields map[string]
t.Run("org3", func(t *testing.T) {
testWebhookFormsShared(t, "/org/org3/settings/hooks", name, session, validFields, invalidPatches...)
})
+ t.Run("system", func(t *testing.T) {
+ testWebhookFormsShared(t, "/admin/system-hooks", name, session, validFields, invalidPatches...)
+ })
+ t.Run("default", func(t *testing.T) {
+ testWebhookFormsShared(t, "/admin/default-hooks", name, session, validFields, invalidPatches...)
+ })
}
}
@@ -345,17 +353,29 @@ func testWebhookFormsShared(t *testing.T, endpoint, name string, session *TestSe
// create the webhook (this redirects back to the hook list)
resp = session.MakeRequest(t, NewRequestWithValues(t, "POST", endpoint+"/"+name+"/new", payload), http.StatusSeeOther)
assertHasFlashMessages(t, resp, "success")
+ listEndpoint := resp.Header().Get("Location")
+ updateEndpoint := endpoint + "/"
+ if endpoint == "/admin/system-hooks" || endpoint == "/admin/default-hooks" {
+ updateEndpoint = "/admin/hooks/"
+ }
// find last created hook in the hook list
// (a bit hacky, but the list should be sorted)
- resp = session.MakeRequest(t, NewRequest(t, "GET", endpoint), http.StatusOK)
+ resp = session.MakeRequest(t, NewRequest(t, "GET", listEndpoint), http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
- editFormURL := htmlDoc.Find(`a[href^="`+endpoint+`/"]`).Last().AttrOr("href", "")
+ selector := `a[href^="` + updateEndpoint + `"]`
+ if endpoint == "/admin/system-hooks" {
+ // system-hooks and default-hooks are listed on the same page
+ // add a specifier to select the latest system-hooks
+ // (the default-hooks are at the end, so no further specifier needed)
+ selector = `.admin-setting-content > div:first-of-type ` + selector
+ }
+ editFormURL := htmlDoc.Find(selector).Last().AttrOr("href", "")
assert.NotEmpty(t, editFormURL)
// edit webhook form
resp = session.MakeRequest(t, NewRequest(t, "GET", editFormURL), http.StatusOK)
- htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
+ htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + updateEndpoint + `"]`)
editPostURL := htmlForm.AttrOr("action", "")
assert.NotEmpty(t, editPostURL)
@@ -375,7 +395,7 @@ func testWebhookFormsShared(t *testing.T, endpoint, name string, session *TestSe
// check the updated webhook
resp = session.MakeRequest(t, NewRequest(t, "GET", editFormURL), http.StatusOK)
- htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + endpoint + `/"]`)
+ htmlForm = NewHTMLParser(t, resp.Body).Find(`form[action^="` + updateEndpoint + `"]`)
for k, v := range validFields {
assert.Equal(t, v, assertInput(t, htmlForm, k), "input %q did not contain value %q", k, v)
}
From aba99ab8fc3b8bc8f55fa0b7d6261eea7b28d7c0 Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 15:08:01 +0200
Subject: [PATCH 010/233] [TEST] cancel all processes on PrepareTestEnv
---
tests/test_utils.go | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/tests/test_utils.go b/tests/test_utils.go
index af83f9027d..f52a060adf 100644
--- a/tests/test_utils.go
+++ b/tests/test_utils.go
@@ -11,7 +11,9 @@ import (
"os"
"path"
"path/filepath"
+ "runtime"
"testing"
+ "time"
"code.gitea.io/gitea/models/db"
packages_model "code.gitea.io/gitea/models/packages"
@@ -20,6 +22,7 @@ import (
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/process"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/storage"
@@ -181,6 +184,36 @@ func PrepareAttachmentsStorage(t testing.TB) {
}))
}
+// cancelProcesses cancels all processes of the [process.Manager].
+// Returns immediately if delay is 0, otherwise wait until all processes are done
+// and fails the test if it takes longer that the given delay.
+func cancelProcesses(t testing.TB, delay time.Duration) {
+ processManager := process.GetManager()
+ processes, _ := processManager.Processes(true, true)
+ for _, p := range processes {
+ processManager.Cancel(p.PID)
+ t.Logf("PrepareTestEnv:Process %q cancelled", p.Description)
+ }
+ if delay == 0 || len(processes) == 0 {
+ return
+ }
+
+ start := time.Now()
+ processes, _ = processManager.Processes(true, true)
+ for len(processes) > 0 {
+ if time.Since(start) > delay {
+ t.Errorf("ERROR PrepareTestEnv: could not cancel all processes within %s", delay)
+ for _, p := range processes {
+ t.Logf("PrepareTestEnv:Remaining Process: %q", p.Description)
+ }
+ return
+ }
+ runtime.Gosched() // let the context cancellation propagate
+ processes, _ = processManager.Processes(true, true)
+ }
+ t.Logf("PrepareTestEnv: all processes cancelled within %s", time.Since(start))
+}
+
func PrepareTestEnv(t testing.TB, skip ...int) func() {
t.Helper()
ourSkip := 1
@@ -189,6 +222,11 @@ func PrepareTestEnv(t testing.TB, skip ...int) func() {
}
deferFn := PrintCurrentTest(t, ourSkip)
+ // kill all background processes to prevent them from interfering with the fixture loading
+ // see https://codeberg.org/forgejo/forgejo/issues/2962
+ cancelProcesses(t, time.Second)
+ t.Cleanup(func() { cancelProcesses(t, 0) }) // cancel remaining processes in a non-blocking way
+
// load database fixtures
assert.NoError(t, unittest.LoadFixtures())
From 8ffaa08b04f507c5133cef2b585777a469127563 Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Tue, 9 Apr 2024 21:14:51 +0200
Subject: [PATCH 011/233] add missing defer
---
tests/integration/git_test.go | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/integration/git_test.go b/tests/integration/git_test.go
index 708f9a820d..f833366568 100644
--- a/tests/integration/git_test.go
+++ b/tests/integration/git_test.go
@@ -1076,6 +1076,7 @@ func TestDataAsync_Issue29101(t *testing.T) {
gitRepo, err := gitrepo.OpenRepository(db.DefaultContext, repo)
assert.NoError(t, err)
+ defer gitRepo.Close()
commit, err := gitRepo.GetCommit(sha)
assert.NoError(t, err)
From 92a5dbe0153e9b20ed3fb94229213f94535ded0a Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Wed, 10 Apr 2024 00:06:37 +0000
Subject: [PATCH 012/233] Update dependency vue-chartjs to v5.3.1
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index cba2278ead..1c02d25d95 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -56,7 +56,7 @@
"vanilla-colorful": "0.7.2",
"vue": "3.4.21",
"vue-bar-graph": "2.0.0",
- "vue-chartjs": "5.3.0",
+ "vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
"vue3-calendar-heatmap": "2.0.5",
"webpack": "5.91.0",
@@ -12348,9 +12348,9 @@
}
},
"node_modules/vue-chartjs": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.0.tgz",
- "integrity": "sha512-8XqX0JU8vFZ+WA2/knz4z3ThClduni2Nm0BMe2u0mXgTfd9pXrmJ07QBI+WAij5P/aPmPMX54HCE1seWL37ZdQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.1.tgz",
+ "integrity": "sha512-rZjqcHBxKiHrBl0CIvcOlVEBwRhpWAVf6rDU3vUfa7HuSRmGtCslc0Oc8m16oAVuk0erzc1FCtH1VCriHsrz+A==",
"peerDependencies": {
"chart.js": "^4.1.1",
"vue": "^3.0.0-0 || ^2.7.0"
diff --git a/package.json b/package.json
index 1723216f51..d8153f2bd0 100644
--- a/package.json
+++ b/package.json
@@ -55,7 +55,7 @@
"vanilla-colorful": "0.7.2",
"vue": "3.4.21",
"vue-bar-graph": "2.0.0",
- "vue-chartjs": "5.3.0",
+ "vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
"vue3-calendar-heatmap": "2.0.5",
"webpack": "5.91.0",
From aec0e1c43a65656dc18fa74ef2951d6518a1aaef Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Wed, 10 Apr 2024 02:10:00 +0000
Subject: [PATCH 013/233] Update module github.com/klauspost/compress to
v1.17.8
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index 7a7fd8e30f..2f4c64b2da 100644
--- a/go.mod
+++ b/go.mod
@@ -64,7 +64,7 @@ require (
github.com/json-iterator/go v1.1.12
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/keybase/go-crypto v0.0.0-20200123153347-de78d2cb44f4
- github.com/klauspost/compress v1.17.7
+ github.com/klauspost/compress v1.17.8
github.com/klauspost/cpuid/v2 v2.2.6
github.com/lib/pq v1.10.9
github.com/markbates/goth v1.78.0
diff --git a/go.sum b/go.sum
index f9b4bb00c9..ce55e89399 100644
--- a/go.sum
+++ b/go.sum
@@ -551,8 +551,8 @@ github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
-github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
-github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
+github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
From d79690ce1890e692add310532858a77076792965 Mon Sep 17 00:00:00 2001
From: oliverpool
Date: Wed, 10 Apr 2024 14:26:47 +0200
Subject: [PATCH 014/233] [TEST] make the indexer and pull tasks cancellable
(without shutdown)
---
modules/indexer/code/indexer.go | 5 ++++-
services/pull/pull.go | 9 +++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/modules/indexer/code/indexer.go b/modules/indexer/code/indexer.go
index ebebf6ba8a..b14fc3e97a 100644
--- a/modules/indexer/code/indexer.go
+++ b/modules/indexer/code/indexer.go
@@ -120,9 +120,12 @@ func Init() {
case "bleve", "elasticsearch":
handler := func(items ...*internal.IndexerData) (unhandled []*internal.IndexerData) {
indexer := *globalIndexer.Load()
+ // make it a process to allow for cancellation (especially during integration tests where no global shutdown happens)
+ batchCtx, _, finished := process.GetManager().AddContext(ctx, "CodeIndexer batch")
+ defer finished()
for _, indexerData := range items {
log.Trace("IndexerData Process Repo: %d", indexerData.RepoID)
- if err := index(ctx, indexer, indexerData.RepoID); err != nil {
+ if err := index(batchCtx, indexer, indexerData.RepoID); err != nil {
unhandled = append(unhandled, indexerData)
if !setting.IsInTesting {
log.Error("Codes indexer handler: index error for repo %v: %v", indexerData.RepoID, err)
diff --git a/services/pull/pull.go b/services/pull/pull.go
index 3d0d38f488..b404fc60f2 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -26,6 +26,7 @@ import (
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/process"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/sync"
@@ -296,8 +297,12 @@ func checkForInvalidation(ctx context.Context, requests issues_model.PullRequest
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
// and generate new patch for testing as needed.
func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string, isSync bool, oldCommitID, newCommitID string) {
- log.Trace("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
- graceful.GetManager().RunWithShutdownContext(func(ctx context.Context) {
+ description := fmt.Sprintf("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
+ log.Trace(description)
+ graceful.GetManager().RunWithShutdownContext(func(shutdownCtx context.Context) {
+ // make it a process to allow for cancellation (especially during integration tests where no global shutdown happens)
+ ctx, _, finished := process.GetManager().AddContext(shutdownCtx, description)
+ defer finished()
// There is no sensible way to shut this down ":-("
// If you don't let it run all the way then you will lose data
// TODO: graceful: AddTestPullRequestTask needs to become a queue!
From 9862f28ac5a11c6354fdd830644647939ee742e2 Mon Sep 17 00:00:00 2001
From: Gusted
Date: Wed, 10 Apr 2024 19:06:34 +0200
Subject: [PATCH 015/233] Remove error check
- This error check was made redudant by 375fd15fbfc29787323840688bacdfa0a9e9e414
---
modules/indexer/code/indexer.go | 6 ------
1 file changed, 6 deletions(-)
diff --git a/modules/indexer/code/indexer.go b/modules/indexer/code/indexer.go
index ebebf6ba8a..c1ab26569c 100644
--- a/modules/indexer/code/indexer.go
+++ b/modules/indexer/code/indexer.go
@@ -178,12 +178,6 @@ func Init() {
}()
rIndexer = elasticsearch.NewIndexer(setting.Indexer.RepoConnStr, setting.Indexer.RepoIndexerName)
- if err != nil {
- cancel()
- (*globalIndexer.Load()).Close()
- close(waitChannel)
- log.Fatal("PID: %d Unable to create the elasticsearch Repository Indexer connstr: %s Error: %v", os.Getpid(), setting.Indexer.RepoConnStr, err)
- }
existed, err = rIndexer.Init(ctx)
if err != nil {
cancel()
From 3e9a97b9cebccb395e8acd7b7609133457f84477 Mon Sep 17 00:00:00 2001
From: Gusted
Date: Wed, 10 Apr 2024 23:50:06 +0200
Subject: [PATCH 016/233] [BUG] Fix tooltip for 1000+ stars/forks
- The tooltip attribute should be inside the `` element not outside of it.
- Regression of 854164f40b9d18e624182084a8c9f2f7bce96a64
---
templates/explore/repo_list.tmpl | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/templates/explore/repo_list.tmpl b/templates/explore/repo_list.tmpl
index a59235abc1..6381f1217e 100644
--- a/templates/explore/repo_list.tmpl
+++ b/templates/explore/repo_list.tmpl
@@ -38,15 +38,15 @@
{{end}}
{{if not $.DisableStars}}
-
+
{{svg "octicon-star" 16}}
- {{if ge .NumStars 1000}}data-tooltip-content="{{.NumStars}}"{{end}}{{CountFmt .NumStars}}
+ {{CountFmt .NumStars}}
{{end}}
{{if not $.DisableForks}}
-
+
{{svg "octicon-git-branch" 16}}
- {{if ge .NumForks 1000}}data-tooltip-content="{{.NumForks}}"{{end}}{{CountFmt .NumForks}}
+ {{CountFmt .NumForks}}
{{end}}
From 90b160dd343f7870d5d79aab4986f080bfc4d6de Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Thu, 11 Apr 2024 00:04:53 +0000
Subject: [PATCH 017/233] Update ghcr.io/visualon/renovate Docker tag to
v37.282.1
---
.forgejo/workflows/renovate.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.forgejo/workflows/renovate.yml b/.forgejo/workflows/renovate.yml
index 457d5b5d56..66c9b277fb 100644
--- a/.forgejo/workflows/renovate.yml
+++ b/.forgejo/workflows/renovate.yml
@@ -22,7 +22,7 @@ jobs:
runs-on: docker
container:
- image: ghcr.io/visualon/renovate:37.280.0
+ image: ghcr.io/visualon/renovate:37.282.1
steps:
- uses: https://code.forgejo.org/actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
From 37f7c899a57c74473d37f44143fbe4b820278ac6 Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Thu, 11 Apr 2024 00:06:13 +0000
Subject: [PATCH 018/233] Update dependency
@eslint-community/eslint-plugin-eslint-comments to v4.3.0
---
package-lock.json | 10 +++++-----
package.json | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1c02d25d95..fc583dbba3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -64,7 +64,7 @@
"wrap-ansi": "9.0.0"
},
"devDependencies": {
- "@eslint-community/eslint-plugin-eslint-comments": "4.1.0",
+ "@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
"@playwright/test": "1.42.1",
"@stoplight/spectral-cli": "6.11.1",
"@stylistic/eslint-plugin-js": "1.7.0",
@@ -866,9 +866,9 @@
}
},
"node_modules/@eslint-community/eslint-plugin-eslint-comments": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.1.0.tgz",
- "integrity": "sha512-B2mwipifrBS5E00vN8vME68laPMZ0h3sNGOEDj5g9iUN9k5EU99Omq0Nc325eKNoFFDnDtiHp3DqIjO+1bstag==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.3.0.tgz",
+ "integrity": "sha512-6e93KtgsndNkvwCCa07LOQJSwzzLLxwrFll3+huyFoiiQXWG0KBcmo0Q1bVgYQQDLfWOOZl2VPBsXqZL6vHIBQ==",
"dev": true,
"dependencies": {
"escape-string-regexp": "^4.0.0",
@@ -878,7 +878,7 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
diff --git a/package.json b/package.json
index d8153f2bd0..b4a39af976 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"wrap-ansi": "9.0.0"
},
"devDependencies": {
- "@eslint-community/eslint-plugin-eslint-comments": "4.1.0",
+ "@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
"@playwright/test": "1.42.1",
"@stoplight/spectral-cli": "6.11.1",
"@stylistic/eslint-plugin-js": "1.7.0",
From fd62033b98ea40db0285309892ba61ae49abb85d Mon Sep 17 00:00:00 2001
From: Earl Warren
Date: Thu, 11 Apr 2024 07:36:59 +0200
Subject: [PATCH 019/233] [TESTS] disable test failure on log.Error for now
(part 2)
Fixes: https://codeberg.org/forgejo/forgejo/issues/3153
---
models/migrations/base/tests.go | 3 +--
tests/e2e/e2e_test.go | 3 +--
tests/integration/integration_test.go | 3 +--
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/models/migrations/base/tests.go b/models/migrations/base/tests.go
index 0726211ea8..0989902a65 100644
--- a/models/migrations/base/tests.go
+++ b/models/migrations/base/tests.go
@@ -161,8 +161,7 @@ func MainTest(m *testing.M) {
exitStatus := m.Run()
if err := testlogger.WriterCloser.Reset(); err != nil && exitStatus == 0 {
- fmt.Printf("testlogger.WriterCloser.Reset: %v\n", err)
- os.Exit(1)
+ fmt.Printf("testlogger.WriterCloser.Reset: error ignored: %v\n", err)
}
if err := removeAllWithRetry(setting.RepoRootPath); err != nil {
fmt.Fprintf(os.Stderr, "os.RemoveAll: %v\n", err)
diff --git a/tests/e2e/e2e_test.go b/tests/e2e/e2e_test.go
index b2087d4660..97f6844abc 100644
--- a/tests/e2e/e2e_test.go
+++ b/tests/e2e/e2e_test.go
@@ -60,8 +60,7 @@ func TestMain(m *testing.M) {
exitVal := m.Run()
if err := testlogger.WriterCloser.Reset(); err != nil {
- fmt.Printf("testlogger.WriterCloser.Reset: %v\n", err)
- os.Exit(1)
+ fmt.Printf("testlogger.WriterCloser.Reset: error ignored: %v\n", err)
}
if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil {
fmt.Printf("util.RemoveAll: %v\n", err)
diff --git a/tests/integration/integration_test.go b/tests/integration/integration_test.go
index e147d6a21b..8fd55d7fa8 100644
--- a/tests/integration/integration_test.go
+++ b/tests/integration/integration_test.go
@@ -184,8 +184,7 @@ func TestMain(m *testing.M) {
exitCode := m.Run()
if err := testlogger.WriterCloser.Reset(); err != nil {
- fmt.Printf("testlogger.WriterCloser.Reset: %v\n", err)
- os.Exit(1)
+ fmt.Printf("testlogger.WriterCloser.Reset: error ignored: %v\n", err)
}
if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil {
From 0355f63a481b21c59faad11276f3801709f008aa Mon Sep 17 00:00:00 2001
From: Earl Warren
Date: Thu, 11 Apr 2024 10:15:38 +0200
Subject: [PATCH 020/233] [CI] backport upgrade to git-backporting@v4.8.0
* no-auto-squash: true so it DTRT for merged & squashed PRs
* target-branch-pattern: replaces the ad-hoc logic to determine the
target branch name
It also now supports backporting to multiple branches. This is not
going to be immediately useful but will greatly help in three months
when there are two releases receiving backports.
---
.forgejo/workflows/backport.yml | 33 +++------------------------------
1 file changed, 3 insertions(+), 30 deletions(-)
diff --git a/.forgejo/workflows/backport.yml b/.forgejo/workflows/backport.yml
index da064feff3..8ec41cd7af 100644
--- a/.forgejo/workflows/backport.yml
+++ b/.forgejo/workflows/backport.yml
@@ -45,39 +45,12 @@ jobs:
cat <<'EOF'
${{ toJSON(github) }}
EOF
- - name: Fetch labels
- id: fetch-labels
- shell: bash
- run: |
- set -x
- echo "Labels retrieved below"
- export DEBIAN_FRONTEND=noninteractive
- apt-get update -qq
- apt-get -q install -qq -y jq
- filtered_labels=$(echo "$LABELS" | jq -c 'map(select(.name | startswith("backport/v")))')
- echo "FILTERED_LABELS=${filtered_labels}" >> $GITHUB_ENV
- env:
- LABELS: ${{ toJSON(github.event.pull_request.labels) }}
- - name: Extract targets
- id: extract-targets
- shell: bash
- run: |
- set -x
- targets="$(echo $FILTERED_LABELS | jq -c '[.[] | .name | sub("backport/"; "")]')"
- echo "targets=$(echo $targets)" >> $GITHUB_OUTPUT
-
- - name: Printing info
- shell: bash
- run: |
- echo "targets: ${{ steps.extract-targets.outputs.targets }}"
- echo "target-branch: ${{ fromJSON(steps.extract-targets.outputs.targets)[0] }}"
- echo "pull-request: ${{ github.event.pull_request.url }}"
-
- - uses: https://code.forgejo.org/forgejo/git-backporting@b2554a678d5ea2814f0df3abad2ac4fcdee2d81f
+ - uses: https://code.forgejo.org/actions/git-backporting@v4.8.0
with:
- target-branch: ${{ fromJSON(steps.extract-targets.outputs.targets)[0] }}/forgejo
+ target-branch-pattern: "^backport/(?(v.*))$"
strategy: ort
strategy-option: find-renames
cherry-pick-options: -x
auth: ${{ secrets.BACKPORT_TOKEN }}
pull-request: ${{ github.event.pull_request.url }}
+ auto-no-squash: true
From f672a63ae72f88b3398e06f59f3a68281de12bed Mon Sep 17 00:00:00 2001
From: Earl Warren
Date: Thu, 11 Apr 2024 10:59:40 +0200
Subject: [PATCH 021/233] [RENOVATE] bitnami/minio upgrades are rare
It is used in the CI to verify the S3 backend works. It has no
security or feature requirements and upgrading would only be required
when a major version is published, which cannot be deduced from the
version number.
Making that upgrade available from the dashboard and dealt with when
and if it gets the attention of a developer, even if once a year, is
good enough.
---
renovate.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/renovate.json b/renovate.json
index 0be6ebaa37..100f322dcd 100644
--- a/renovate.json
+++ b/renovate.json
@@ -26,7 +26,7 @@
},
{
"description": "Require dashboard approval for some deps",
- "matchDepNames": ["github.com/go-ap/activitypub"],
+ "matchDepNames": ["github.com/go-ap/activitypub", "bitnami/minio"],
"dependencyDashboardApproval": true
},
{
From f1c1a1e877e5091ce52ea7f96c2b0a6bdfa7558b Mon Sep 17 00:00:00 2001
From: Earl Warren
Date: Thu, 11 Apr 2024 11:13:28 +0200
Subject: [PATCH 022/233] models: reserve v11 for backporting release blocker
---
models/forgejo_migrations/migrate.go | 2 ++
models/forgejo_migrations/v1_22/{v11.go => v12.go} | 0
2 files changed, 2 insertions(+)
rename models/forgejo_migrations/v1_22/{v11.go => v12.go} (100%)
diff --git a/models/forgejo_migrations/migrate.go b/models/forgejo_migrations/migrate.go
index c1a654cbde..63791ec33c 100644
--- a/models/forgejo_migrations/migrate.go
+++ b/models/forgejo_migrations/migrate.go
@@ -59,6 +59,8 @@ var migrations = []*Migration{
// v9 -> v10
NewMigration("Add pronouns to user", forgejo_v1_22.AddPronounsToUser),
// v11 -> v12
+ // NewMigration()
+ // v12 -> v13
NewMigration("Add repo_archive_download_count table", forgejo_v1_22.AddRepoArchiveDownloadCount),
}
diff --git a/models/forgejo_migrations/v1_22/v11.go b/models/forgejo_migrations/v1_22/v12.go
similarity index 100%
rename from models/forgejo_migrations/v1_22/v11.go
rename to models/forgejo_migrations/v1_22/v12.go
From 998a431747a15cc95f7056a2029b736551eb037b Mon Sep 17 00:00:00 2001
From: Earl Warren
Date: Sun, 31 Mar 2024 15:27:59 +0200
Subject: [PATCH 023/233] Do not update PRs based on events that happened
before they existed
* Split TestPullRequest out of AddTestPullRequestTask
* A Created field is added to the Issue table
* The Created field is set to the time (with nano resolution) on creation
* Record the nano time repo_module.PushUpdateOptions is created by the hook
* The decision to update a pull request created before a commit was
pushed is based on the time (with nano resolution) the git hook
was run and the Created field
It ensures the following happens:
* commit C is pushed
* the git hook queues AddTestPullRequestTask for processing and returns with success
* TestPullRequest is not called yet
* a pull request P with commit C as the head is created
* TestPullRequest runs and ignores P because it was created after the commit was received
When the "created" column is NULL, no verification is done, pull
requests that were created before the column was created in the
database cannot be newer than the latest call to a git hook.
Fixes: https://codeberg.org/forgejo/forgejo/issues/2009
---
.../issue.yml | 12 ++
.../pull_request.yml | 13 ++
models/forgejo_migrations/migrate.go | 2 +-
models/forgejo_migrations/v1_22/v11.go | 19 ++
models/issues/issue.go | 2 +
models/issues/issue_index.go | 12 +-
models/issues/issue_index_test.go | 38 ++++
models/issues/issue_update.go | 2 +
models/issues/pull_list.go | 8 +
models/issues/pull_test.go | 97 ++++++++++
modules/repository/push.go | 1 +
routers/private/hook_post_receive.go | 2 +
services/pull/merge.go | 2 +-
services/pull/pull.go | 183 ++++++++++--------
services/pull/update.go | 4 +-
services/repository/push.go | 2 +-
tests/integration/pull_request_task_test.go | 109 +++++++++++
17 files changed, 416 insertions(+), 92 deletions(-)
create mode 100644 models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/issue.yml
create mode 100644 models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/pull_request.yml
create mode 100644 models/forgejo_migrations/v1_22/v11.go
create mode 100644 models/issues/issue_index_test.go
create mode 100644 tests/integration/pull_request_task_test.go
diff --git a/models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/issue.yml b/models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/issue.yml
new file mode 100644
index 0000000000..7fe592ed5a
--- /dev/null
+++ b/models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/issue.yml
@@ -0,0 +1,12 @@
+-
+ id: 1001
+ repo_id: 1
+ index: 1001
+ poster_id: 1
+ name: issue1
+ content: content for the first issue
+ is_pull: true
+ created: 111111111
+ created_unix: 946684800
+ updated_unix: 978307200
+ is_closed: false
diff --git a/models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/pull_request.yml b/models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/pull_request.yml
new file mode 100644
index 0000000000..93f27c747c
--- /dev/null
+++ b/models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/pull_request.yml
@@ -0,0 +1,13 @@
+-
+ id: 1001
+ type: 0 # pull request
+ status: 2 # mergable
+ issue_id: 1001
+ index: 1001
+ head_repo_id: 1
+ base_repo_id: 1
+ head_branch: branchmax
+ base_branch: master
+ merge_base: 4a357436d925b5c974181ff12a994538ddc5a269
+ has_merged: false
+ flow: 0
diff --git a/models/forgejo_migrations/migrate.go b/models/forgejo_migrations/migrate.go
index 63791ec33c..697efb5b56 100644
--- a/models/forgejo_migrations/migrate.go
+++ b/models/forgejo_migrations/migrate.go
@@ -59,7 +59,7 @@ var migrations = []*Migration{
// v9 -> v10
NewMigration("Add pronouns to user", forgejo_v1_22.AddPronounsToUser),
// v11 -> v12
- // NewMigration()
+ NewMigration("Add the `created` column to the `issue` table", forgejo_v1_22.AddCreatedToIssue),
// v12 -> v13
NewMigration("Add repo_archive_download_count table", forgejo_v1_22.AddRepoArchiveDownloadCount),
}
diff --git a/models/forgejo_migrations/v1_22/v11.go b/models/forgejo_migrations/v1_22/v11.go
new file mode 100644
index 0000000000..c693993565
--- /dev/null
+++ b/models/forgejo_migrations/v1_22/v11.go
@@ -0,0 +1,19 @@
+// Copyright 2024 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package v1_22 //nolint
+
+import (
+ "code.gitea.io/gitea/modules/timeutil"
+
+ "xorm.io/xorm"
+)
+
+func AddCreatedToIssue(x *xorm.Engine) error {
+ type Issue struct {
+ ID int64 `xorm:"pk autoincr"`
+ Created timeutil.TimeStampNano
+ }
+
+ return x.Sync(&Issue{})
+}
diff --git a/models/issues/issue.go b/models/issues/issue.go
index 11256f788a..affd581929 100644
--- a/models/issues/issue.go
+++ b/models/issues/issue.go
@@ -124,6 +124,8 @@ type Issue struct {
DeadlineUnix timeutil.TimeStamp `xorm:"INDEX"`
+ Created timeutil.TimeStampNano
+
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
ClosedUnix timeutil.TimeStamp `xorm:"INDEX"`
diff --git a/models/issues/issue_index.go b/models/issues/issue_index.go
index 16274d0ef0..9386027f74 100644
--- a/models/issues/issue_index.go
+++ b/models/issues/issue_index.go
@@ -9,6 +9,14 @@ import (
"code.gitea.io/gitea/models/db"
)
+func GetMaxIssueIndexForRepo(ctx context.Context, repoID int64) (int64, error) {
+ var max int64
+ if _, err := db.GetEngine(ctx).Select("MAX(`index`)").Table("issue").Where("repo_id=?", repoID).Get(&max); err != nil {
+ return 0, err
+ }
+ return max, nil
+}
+
// RecalculateIssueIndexForRepo create issue_index for repo if not exist and
// update it based on highest index of existing issues assigned to a repo
func RecalculateIssueIndexForRepo(ctx context.Context, repoID int64) error {
@@ -18,8 +26,8 @@ func RecalculateIssueIndexForRepo(ctx context.Context, repoID int64) error {
}
defer committer.Close()
- var max int64
- if _, err = db.GetEngine(ctx).Select(" MAX(`index`)").Table("issue").Where("repo_id=?", repoID).Get(&max); err != nil {
+ max, err := GetMaxIssueIndexForRepo(ctx, repoID)
+ if err != nil {
return err
}
diff --git a/models/issues/issue_index_test.go b/models/issues/issue_index_test.go
new file mode 100644
index 0000000000..9937aac70e
--- /dev/null
+++ b/models/issues/issue_index_test.go
@@ -0,0 +1,38 @@
+// Copyright 2024 The Forgejo Authors
+// SPDX-License-Identifier: MIT
+
+package issues_test
+
+import (
+ "testing"
+
+ "code.gitea.io/gitea/models/db"
+ issues_model "code.gitea.io/gitea/models/issues"
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/models/unittest"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestGetMaxIssueIndexForRepo(t *testing.T) {
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
+
+ maxPR, err := issues_model.GetMaxIssueIndexForRepo(db.DefaultContext, repo.ID)
+ assert.NoError(t, err)
+
+ issue := testCreateIssue(t, repo.ID, repo.OwnerID, "title1", "content1", false)
+ assert.Greater(t, issue.Index, maxPR)
+
+ maxPR, err = issues_model.GetMaxIssueIndexForRepo(db.DefaultContext, repo.ID)
+ assert.NoError(t, err)
+
+ pull := testCreateIssue(t, repo.ID, repo.OwnerID, "title2", "content2", true)
+ assert.Greater(t, pull.Index, maxPR)
+
+ maxPR, err = issues_model.GetMaxIssueIndexForRepo(db.DefaultContext, repo.ID)
+ assert.NoError(t, err)
+
+ assert.Equal(t, maxPR, pull.Index)
+}
diff --git a/models/issues/issue_update.go b/models/issues/issue_update.go
index f20d552a1b..78e1f8e030 100644
--- a/models/issues/issue_update.go
+++ b/models/issues/issue_update.go
@@ -325,6 +325,8 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
return fmt.Errorf("issue exist")
}
+ opts.Issue.Created = timeutil.TimeStampNanoNow()
+
if _, err := e.Insert(opts.Issue); err != nil {
return err
}
diff --git a/models/issues/pull_list.go b/models/issues/pull_list.go
index de3eceed37..61b4168ea2 100644
--- a/models/issues/pull_list.go
+++ b/models/issues/pull_list.go
@@ -47,6 +47,14 @@ func listPullRequestStatement(ctx context.Context, baseRepoID int64, opts *PullR
return sess, nil
}
+func GetUnmergedPullRequestsByHeadInfoMax(ctx context.Context, repoID, olderThan int64, branch string) ([]*PullRequest, error) {
+ prs := make([]*PullRequest, 0, 2)
+ sess := db.GetEngine(ctx).
+ Join("INNER", "issue", "issue.id = `pull_request`.issue_id").
+ Where("`pull_request`.head_repo_id = ? AND `pull_request`.head_branch = ? AND `pull_request`.has_merged = ? AND `issue`.is_closed = ? AND `pull_request`.flow = ? AND (`issue`.`created` IS NULL OR `issue`.`created` <= ?)", repoID, branch, false, false, PullRequestFlowGithub, olderThan)
+ return prs, sess.Find(&prs)
+}
+
// GetUnmergedPullRequestsByHeadInfo returns all pull requests that are open and has not been merged
func GetUnmergedPullRequestsByHeadInfo(ctx context.Context, repoID int64, branch string) ([]*PullRequest, error) {
prs := make([]*PullRequest, 0, 2)
diff --git a/models/issues/pull_test.go b/models/issues/pull_test.go
index 675c90527d..a9d4edc8a5 100644
--- a/models/issues/pull_test.go
+++ b/models/issues/pull_test.go
@@ -4,7 +4,9 @@
package issues_test
import (
+ "fmt"
"testing"
+ "time"
"code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues"
@@ -12,6 +14,7 @@ import (
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
)
@@ -156,6 +159,100 @@ func TestGetUnmergedPullRequestsByHeadInfo(t *testing.T) {
}
}
+func TestGetUnmergedPullRequestsByHeadInfoMax(t *testing.T) {
+ defer tests.AddFixtures("models/fixtures/TestGetUnmergedPullRequestsByHeadInfoMax/")()
+ assert.NoError(t, unittest.PrepareTestDatabase())
+
+ repoID := int64(1)
+ olderThan := int64(0)
+
+ // for NULL created field the olderThan condition is ignored
+ prs, err := issues_model.GetUnmergedPullRequestsByHeadInfoMax(db.DefaultContext, repoID, olderThan, "branch2")
+ assert.NoError(t, err)
+ assert.Equal(t, int64(1), prs[0].HeadRepoID)
+
+ // test for when the created field is set
+ branch := "branchmax"
+ prs, err = issues_model.GetUnmergedPullRequestsByHeadInfoMax(db.DefaultContext, repoID, olderThan, branch)
+ assert.NoError(t, err)
+ assert.Len(t, prs, 0)
+ olderThan = time.Now().UnixNano()
+ assert.NoError(t, err)
+ prs, err = issues_model.GetUnmergedPullRequestsByHeadInfoMax(db.DefaultContext, repoID, olderThan, branch)
+ assert.NoError(t, err)
+ assert.Len(t, prs, 1)
+ for _, pr := range prs {
+ assert.Equal(t, int64(1), pr.HeadRepoID)
+ assert.Equal(t, branch, pr.HeadBranch)
+ }
+ pr := prs[0]
+
+ for _, testCase := range []struct {
+ table string
+ field string
+ id int64
+ match any
+ nomatch any
+ }{
+ {
+ table: "issue",
+ field: "is_closed",
+ id: pr.IssueID,
+ match: false,
+ nomatch: true,
+ },
+ {
+ table: "pull_request",
+ field: "flow",
+ id: pr.ID,
+ match: issues_model.PullRequestFlowGithub,
+ nomatch: issues_model.PullRequestFlowAGit,
+ },
+ {
+ table: "pull_request",
+ field: "head_repo_id",
+ id: pr.ID,
+ match: pr.HeadRepoID,
+ nomatch: 0,
+ },
+ {
+ table: "pull_request",
+ field: "head_branch",
+ id: pr.ID,
+ match: pr.HeadBranch,
+ nomatch: "something else",
+ },
+ {
+ table: "pull_request",
+ field: "has_merged",
+ id: pr.ID,
+ match: false,
+ nomatch: true,
+ },
+ } {
+ t.Run(testCase.field, func(t *testing.T) {
+ update := fmt.Sprintf("UPDATE `%s` SET `%s` = ? WHERE `id` = ?", testCase.table, testCase.field)
+
+ // expect no match
+ _, err = db.GetEngine(db.DefaultContext).Exec(update, testCase.nomatch, testCase.id)
+ assert.NoError(t, err)
+ prs, err = issues_model.GetUnmergedPullRequestsByHeadInfoMax(db.DefaultContext, repoID, olderThan, branch)
+ assert.NoError(t, err)
+ assert.Len(t, prs, 0)
+
+ // expect one match
+ _, err = db.GetEngine(db.DefaultContext).Exec(update, testCase.match, testCase.id)
+ assert.NoError(t, err)
+ prs, err = issues_model.GetUnmergedPullRequestsByHeadInfoMax(db.DefaultContext, repoID, olderThan, branch)
+ assert.NoError(t, err)
+ assert.Len(t, prs, 1)
+
+ // identical to the known PR
+ assert.Equal(t, pr.ID, prs[0].ID)
+ })
+ }
+}
+
func TestGetUnmergedPullRequestsByBaseInfo(t *testing.T) {
assert.NoError(t, unittest.PrepareTestDatabase())
prs, err := issues_model.GetUnmergedPullRequestsByBaseInfo(db.DefaultContext, 1, "master")
diff --git a/modules/repository/push.go b/modules/repository/push.go
index cf047847b6..751ee83a09 100644
--- a/modules/repository/push.go
+++ b/modules/repository/push.go
@@ -16,6 +16,7 @@ type PushUpdateOptions struct {
RefFullName git.RefName // branch, tag or other name to push
OldCommitID string
NewCommitID string
+ TimeNano int64
}
// IsNewRef return true if it's a first-time push to a branch, tag or etc.
diff --git a/routers/private/hook_post_receive.go b/routers/private/hook_post_receive.go
index fff47caa88..2558ffe1ab 100644
--- a/routers/private/hook_post_receive.go
+++ b/routers/private/hook_post_receive.go
@@ -7,6 +7,7 @@ import (
"fmt"
"net/http"
"strconv"
+ "time"
git_model "code.gitea.io/gitea/models/git"
issues_model "code.gitea.io/gitea/models/issues"
@@ -71,6 +72,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
PusherName: opts.UserName,
RepoUserName: ownerName,
RepoName: repoName,
+ TimeNano: time.Now().UnixNano(),
}
updates = append(updates, option)
if repo.IsEmpty && (refFullName.BranchName() == "master" || refFullName.BranchName() == "main") {
diff --git a/services/pull/merge.go b/services/pull/merge.go
index 7f79eca2aa..2989d77c6a 100644
--- a/services/pull/merge.go
+++ b/services/pull/merge.go
@@ -187,7 +187,7 @@ func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.U
}
defer func() {
- go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "")
+ AddTestPullRequestTask(ctx, doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "", 0)
}()
pr.MergedCommitID, err = doMergeAndPush(ctx, pr, doer, mergeStyle, expectedHeadCommitID, message)
diff --git a/services/pull/pull.go b/services/pull/pull.go
index b404fc60f2..720efdb0cb 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -296,117 +296,130 @@ func checkForInvalidation(ctx context.Context, requests issues_model.PullRequest
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
// and generate new patch for testing as needed.
-func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string, isSync bool, oldCommitID, newCommitID string) {
- description := fmt.Sprintf("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: finding pull requests", repoID, branch)
+func AddTestPullRequestTask(ctx context.Context, doer *user_model.User, repoID int64, branch string, isSync bool, oldCommitID, newCommitID string, timeNano int64) {
+ description := fmt.Sprintf("AddTestPullRequestTask [head_repo_id: %d, head_branch: %s]: only pull requests created before nano time %d will be considered", repoID, branch, timeNano)
log.Trace(description)
- graceful.GetManager().RunWithShutdownContext(func(shutdownCtx context.Context) {
+ go graceful.GetManager().RunWithShutdownContext(func(shutdownCtx context.Context) {
// make it a process to allow for cancellation (especially during integration tests where no global shutdown happens)
ctx, _, finished := process.GetManager().AddContext(shutdownCtx, description)
defer finished()
// There is no sensible way to shut this down ":-("
// If you don't let it run all the way then you will lose data
- // TODO: graceful: AddTestPullRequestTask needs to become a queue!
+ // TODO: graceful: TestPullRequest needs to become a queue!
- // GetUnmergedPullRequestsByHeadInfo() only return open and unmerged PR.
- prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(ctx, repoID, branch)
- if err != nil {
- log.Error("Find pull requests [head_repo_id: %d, head_branch: %s]: %v", repoID, branch, err)
- return
- }
+ TestPullRequest(ctx, doer, repoID, timeNano, branch, isSync, oldCommitID, newCommitID)
+ })
+}
- for _, pr := range prs {
- log.Trace("Updating PR[%d]: composing new test task", pr.ID)
- if pr.Flow == issues_model.PullRequestFlowGithub {
- if err := PushToBaseRepo(ctx, pr); err != nil {
- log.Error("PushToBaseRepo: %v", err)
- continue
- }
- } else {
+func TestPullRequest(ctx context.Context, doer *user_model.User, repoID, olderThan int64, branch string, isSync bool, oldCommitID, newCommitID string) {
+ // Only consider PR that are older than olderThan, which is the time at
+ // which the newCommitID was added to repoID.
+ //
+ // * commit C is pushed
+ // * the git hook queues AddTestPullRequestTask for processing and returns with success
+ // * TestPullRequest is not called yet
+ // * a pull request P with commit C as the head is created
+ // * TestPullRequest runs and ignores P because it was created after the commit was received
+ //
+ // In other words, a PR must not be updated based on events that happened before it existed
+ prs, err := issues_model.GetUnmergedPullRequestsByHeadInfoMax(ctx, repoID, olderThan, branch)
+ if err != nil {
+ log.Error("Find pull requests [head_repo_id: %d, head_branch: %s]: %v", repoID, branch, err)
+ return
+ }
+
+ for _, pr := range prs {
+ log.Trace("Updating PR[id=%d,index=%d]: composing new test task", pr.ID, pr.Index)
+ if pr.Flow == issues_model.PullRequestFlowGithub {
+ if err := PushToBaseRepo(ctx, pr); err != nil {
+ log.Error("PushToBaseRepo: %v", err)
continue
}
-
- AddToTaskQueue(ctx, pr)
- comment, err := CreatePushPullComment(ctx, doer, pr, oldCommitID, newCommitID)
- if err == nil && comment != nil {
- notify_service.PullRequestPushCommits(ctx, doer, pr, comment)
- }
+ } else {
+ continue
}
- if isSync {
- requests := issues_model.PullRequestList(prs)
- if err = requests.LoadAttributes(ctx); err != nil {
- log.Error("PullRequestList.LoadAttributes: %v", err)
- }
- if invalidationErr := checkForInvalidation(ctx, requests, repoID, doer, branch); invalidationErr != nil {
- log.Error("checkForInvalidation: %v", invalidationErr)
- }
- if err == nil {
- for _, pr := range prs {
- objectFormat := git.ObjectFormatFromName(pr.BaseRepo.ObjectFormatName)
- if newCommitID != "" && newCommitID != objectFormat.EmptyObjectID().String() {
- changed, err := checkIfPRContentChanged(ctx, pr, oldCommitID, newCommitID)
- if err != nil {
- log.Error("checkIfPRContentChanged: %v", err)
- }
- if changed {
- // Mark old reviews as stale if diff to mergebase has changed
- if err := issues_model.MarkReviewsAsStale(ctx, pr.IssueID); err != nil {
- log.Error("MarkReviewsAsStale: %v", err)
- }
+ AddToTaskQueue(ctx, pr)
+ comment, err := CreatePushPullComment(ctx, doer, pr, oldCommitID, newCommitID)
+ if err == nil && comment != nil {
+ notify_service.PullRequestPushCommits(ctx, doer, pr, comment)
+ }
+ }
- // dismiss all approval reviews if protected branch rule item enabled.
- pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch)
- if err != nil {
- log.Error("GetFirstMatchProtectedBranchRule: %v", err)
- }
- if pb != nil && pb.DismissStaleApprovals {
- if err := DismissApprovalReviews(ctx, doer, pr); err != nil {
- log.Error("DismissApprovalReviews: %v", err)
- }
- }
+ if isSync {
+ requests := issues_model.PullRequestList(prs)
+ if err = requests.LoadAttributes(ctx); err != nil {
+ log.Error("PullRequestList.LoadAttributes: %v", err)
+ }
+ if invalidationErr := checkForInvalidation(ctx, requests, repoID, doer, branch); invalidationErr != nil {
+ log.Error("checkForInvalidation: %v", invalidationErr)
+ }
+ if err == nil {
+ for _, pr := range prs {
+ objectFormat := git.ObjectFormatFromName(pr.BaseRepo.ObjectFormatName)
+ if newCommitID != "" && newCommitID != objectFormat.EmptyObjectID().String() {
+ changed, err := checkIfPRContentChanged(ctx, pr, oldCommitID, newCommitID)
+ if err != nil {
+ log.Error("checkIfPRContentChanged: %v", err)
+ }
+ if changed {
+ // Mark old reviews as stale if diff to mergebase has changed
+ if err := issues_model.MarkReviewsAsStale(ctx, pr.IssueID); err != nil {
+ log.Error("MarkReviewsAsStale: %v", err)
}
- if err := issues_model.MarkReviewsAsNotStale(ctx, pr.IssueID, newCommitID); err != nil {
- log.Error("MarkReviewsAsNotStale: %v", err)
- }
- divergence, err := GetDiverging(ctx, pr)
+
+ // dismiss all approval reviews if protected branch rule item enabled.
+ pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch)
if err != nil {
- log.Error("GetDiverging: %v", err)
- } else {
- err = pr.UpdateCommitDivergence(ctx, divergence.Ahead, divergence.Behind)
- if err != nil {
- log.Error("UpdateCommitDivergence: %v", err)
+ log.Error("GetFirstMatchProtectedBranchRule: %v", err)
+ }
+ if pb != nil && pb.DismissStaleApprovals {
+ if err := DismissApprovalReviews(ctx, doer, pr); err != nil {
+ log.Error("DismissApprovalReviews: %v", err)
}
}
}
-
- notify_service.PullRequestSynchronized(ctx, doer, pr)
+ if err := issues_model.MarkReviewsAsNotStale(ctx, pr.IssueID, newCommitID); err != nil {
+ log.Error("MarkReviewsAsNotStale: %v", err)
+ }
+ divergence, err := GetDiverging(ctx, pr)
+ if err != nil {
+ log.Error("GetDiverging: %v", err)
+ } else {
+ err = pr.UpdateCommitDivergence(ctx, divergence.Ahead, divergence.Behind)
+ if err != nil {
+ log.Error("UpdateCommitDivergence: %v", err)
+ }
+ }
}
+
+ notify_service.PullRequestSynchronized(ctx, doer, pr)
}
}
+ }
- log.Trace("AddTestPullRequestTask [base_repo_id: %d, base_branch: %s]: finding pull requests", repoID, branch)
- prs, err = issues_model.GetUnmergedPullRequestsByBaseInfo(ctx, repoID, branch)
+ log.Trace("TestPullRequest [base_repo_id: %d, base_branch: %s]: finding pull requests", repoID, branch)
+ prs, err = issues_model.GetUnmergedPullRequestsByBaseInfo(ctx, repoID, branch)
+ if err != nil {
+ log.Error("Find pull requests [base_repo_id: %d, base_branch: %s]: %v", repoID, branch, err)
+ return
+ }
+ for _, pr := range prs {
+ divergence, err := GetDiverging(ctx, pr)
if err != nil {
- log.Error("Find pull requests [base_repo_id: %d, base_branch: %s]: %v", repoID, branch, err)
- return
- }
- for _, pr := range prs {
- divergence, err := GetDiverging(ctx, pr)
- if err != nil {
- if git_model.IsErrBranchNotExist(err) && !git.IsBranchExist(ctx, pr.HeadRepo.RepoPath(), pr.HeadBranch) {
- log.Warn("Cannot test PR %s/%d: head_branch %s no longer exists", pr.BaseRepo.Name, pr.IssueID, pr.HeadBranch)
- } else {
- log.Error("GetDiverging: %v", err)
- }
+ if git_model.IsErrBranchNotExist(err) && !git.IsBranchExist(ctx, pr.HeadRepo.RepoPath(), pr.HeadBranch) {
+ log.Warn("Cannot test PR %s/%d: head_branch %s no longer exists", pr.BaseRepo.Name, pr.IssueID, pr.HeadBranch)
} else {
- err = pr.UpdateCommitDivergence(ctx, divergence.Ahead, divergence.Behind)
- if err != nil {
- log.Error("UpdateCommitDivergence: %v", err)
- }
+ log.Error("GetDiverging: %v", err)
+ }
+ } else {
+ err = pr.UpdateCommitDivergence(ctx, divergence.Ahead, divergence.Behind)
+ if err != nil {
+ log.Error("UpdateCommitDivergence: %v", err)
}
- AddToTaskQueue(ctx, pr)
}
- })
+ AddToTaskQueue(ctx, pr)
+ }
}
// checkIfPRContentChanged checks if diff to target branch has changed by push
diff --git a/services/pull/update.go b/services/pull/update.go
index bc8c4a25e5..1de125eb4d 100644
--- a/services/pull/update.go
+++ b/services/pull/update.go
@@ -36,7 +36,7 @@ func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.
if rebase {
defer func() {
- go AddTestPullRequestTask(doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "")
+ AddTestPullRequestTask(ctx, doer, pr.BaseRepo.ID, pr.BaseBranch, false, "", "", 0)
}()
return updateHeadByRebaseOnToBase(ctx, pr, doer, message)
@@ -75,7 +75,7 @@ func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.
_, err = doMergeAndPush(ctx, reversePR, doer, repo_model.MergeStyleMerge, "", message)
defer func() {
- go AddTestPullRequestTask(doer, reversePR.HeadRepo.ID, reversePR.HeadBranch, false, "", "")
+ AddTestPullRequestTask(ctx, doer, reversePR.HeadRepo.ID, reversePR.HeadBranch, false, "", "", 0)
}()
return err
diff --git a/services/repository/push.go b/services/repository/push.go
index 0aeb4c830b..51c3a935d1 100644
--- a/services/repository/push.go
+++ b/services/repository/push.go
@@ -166,7 +166,7 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error {
branch := opts.RefFullName.BranchName()
if !opts.IsDelRef() {
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
- go pull_service.AddTestPullRequestTask(pusher, repo.ID, branch, true, opts.OldCommitID, opts.NewCommitID)
+ pull_service.AddTestPullRequestTask(ctx, pusher, repo.ID, branch, true, opts.OldCommitID, opts.NewCommitID, opts.TimeNano)
newCommit, err := gitRepo.GetCommit(opts.NewCommitID)
if err != nil {
diff --git a/tests/integration/pull_request_task_test.go b/tests/integration/pull_request_task_test.go
new file mode 100644
index 0000000000..4366d97c39
--- /dev/null
+++ b/tests/integration/pull_request_task_test.go
@@ -0,0 +1,109 @@
+// Copyright 2024 The Forgejo Authors
+// SPDX-License-Identifier: MIT
+
+package integration
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "code.gitea.io/gitea/models/db"
+ issues_model "code.gitea.io/gitea/models/issues"
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/models/unittest"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/log"
+ repo_module "code.gitea.io/gitea/modules/repository"
+ "code.gitea.io/gitea/modules/test"
+ "code.gitea.io/gitea/modules/timeutil"
+ pull_service "code.gitea.io/gitea/services/pull"
+ repo_service "code.gitea.io/gitea/services/repository"
+ "code.gitea.io/gitea/tests"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestPullRequestSynchronized(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ // unmerged pull request of user2/repo1 from branch2 to master
+ pull := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
+ // tip of tests/gitea-repositories-meta/user2/repo1 branch2
+ pull.HeadCommitID = "985f0301dba5e7b34be866819cd15ad3d8f508ee"
+ pull.LoadIssue(db.DefaultContext)
+ pull.Issue.Created = timeutil.TimeStampNanoNow()
+ issues_model.UpdateIssueCols(db.DefaultContext, pull.Issue, "created")
+
+ require.Equal(t, pull.HeadRepoID, pull.BaseRepoID)
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: pull.HeadRepoID})
+ owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
+
+ for _, testCase := range []struct {
+ name string
+ timeNano int64
+ expected bool
+ }{
+ {
+ name: "AddTestPullRequestTask process PR",
+ timeNano: int64(pull.Issue.Created),
+ expected: true,
+ },
+ {
+ name: "AddTestPullRequestTask skip PR",
+ timeNano: 0,
+ expected: false,
+ },
+ } {
+ t.Run(testCase.name, func(t *testing.T) {
+ logChecker, cleanup := test.NewLogChecker(log.DEFAULT, log.TRACE)
+ logChecker.Filter("Updating PR").StopMark("TestPullRequest ")
+ defer cleanup()
+
+ opt := &repo_module.PushUpdateOptions{
+ PusherID: owner.ID,
+ PusherName: owner.Name,
+ RepoUserName: owner.Name,
+ RepoName: repo.Name,
+ RefFullName: git.RefName("refs/heads/branch2"),
+ OldCommitID: pull.HeadCommitID,
+ NewCommitID: pull.HeadCommitID,
+ TimeNano: testCase.timeNano,
+ }
+ require.NoError(t, repo_service.PushUpdate(opt))
+ logFiltered, logStopped := logChecker.Check(5 * time.Second)
+ assert.True(t, logStopped)
+ assert.Equal(t, testCase.expected, logFiltered[0])
+ })
+ }
+
+ for _, testCase := range []struct {
+ name string
+ olderThan int64
+ expected bool
+ }{
+ {
+ name: "TestPullRequest process PR",
+ olderThan: int64(pull.Issue.Created),
+ expected: true,
+ },
+ {
+ name: "TestPullRequest skip PR",
+ olderThan: int64(pull.Issue.Created) - 1,
+ expected: false,
+ },
+ } {
+ t.Run(testCase.name, func(t *testing.T) {
+ logChecker, cleanup := test.NewLogChecker(log.DEFAULT, log.TRACE)
+ logChecker.Filter("Updating PR").StopMark("TestPullRequest ")
+ defer cleanup()
+
+ pull_service.TestPullRequest(context.Background(), owner, repo.ID, testCase.olderThan, "branch2", true, pull.HeadCommitID, pull.HeadCommitID)
+ logFiltered, logStopped := logChecker.Check(5 * time.Second)
+ assert.True(t, logStopped)
+ assert.Equal(t, testCase.expected, logFiltered[0])
+ })
+ }
+}
From 1d383a635473f8c2d46c934d3028c078751fa7af Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Thu, 11 Apr 2024 10:05:56 +0000
Subject: [PATCH 024/233] Update dependency @playwright/test to v1.43.0
---
package-lock.json | 24 ++++++++++++------------
package.json | 2 +-
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index fc583dbba3..3d543b4c14 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -65,7 +65,7 @@
},
"devDependencies": {
"@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
- "@playwright/test": "1.42.1",
+ "@playwright/test": "1.43.0",
"@stoplight/spectral-cli": "6.11.1",
"@stylistic/eslint-plugin-js": "1.7.0",
"@stylistic/stylelint-plugin": "2.1.1",
@@ -1351,12 +1351,12 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.42.1.tgz",
- "integrity": "sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ==",
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.0.tgz",
+ "integrity": "sha512-Ebw0+MCqoYflop7wVKj711ccbNlrwTBCtjY5rlbiY9kHL2bCYxq+qltK6uPsVBGGAOb033H2VO0YobcQVxoW7Q==",
"dev": true,
"dependencies": {
- "playwright": "1.42.1"
+ "playwright": "1.43.0"
},
"bin": {
"playwright": "cli.js"
@@ -9532,12 +9532,12 @@
"dev": true
},
"node_modules/playwright": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.42.1.tgz",
- "integrity": "sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==",
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.0.tgz",
+ "integrity": "sha512-SiOKHbVjTSf6wHuGCbqrEyzlm6qvXcv7mENP+OZon1I07brfZLGdfWV0l/efAzVx7TF3Z45ov1gPEkku9q25YQ==",
"dev": true,
"dependencies": {
- "playwright-core": "1.42.1"
+ "playwright-core": "1.43.0"
},
"bin": {
"playwright": "cli.js"
@@ -9550,9 +9550,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.42.1.tgz",
- "integrity": "sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==",
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.0.tgz",
+ "integrity": "sha512-iWFjyBUH97+pUFiyTqSLd8cDMMOS0r2ZYz2qEsPjH8/bX++sbIJT35MSwKnp1r/OQBAqC5XO99xFbJ9XClhf4w==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
diff --git a/package.json b/package.json
index b4a39af976..396bc59b9d 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
},
"devDependencies": {
"@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
- "@playwright/test": "1.42.1",
+ "@playwright/test": "1.43.0",
"@stoplight/spectral-cli": "6.11.1",
"@stylistic/eslint-plugin-js": "1.7.0",
"@stylistic/stylelint-plugin": "2.1.1",
From 4c8b67c4b2f8a616b6e20304f7135934e7aab7e7 Mon Sep 17 00:00:00 2001
From: Gusted
Date: Thu, 11 Apr 2024 12:50:04 +0200
Subject: [PATCH 025/233] [BUG] Store JSON in contributors commit cache
- The code that gets contributor stats tried to store an
`map[string]*ContributorData` type in the cache, this works for the
memory cache but not for other caches such as Redis.
- The cache implementation for Redis would convert this map via
`fmt.Sprintf` to an string, which would simply print the pointer and not
the value of the pointer. Storing pointers is a no-go as this will get
GC-ed eventually within a few minutes. Therefore store everything with
json, that does properly store the value of the pointers.
- Adds unit test that verifies JSON is being used.
- Resolves https://codeberg.org/forgejo/forgejo/issues/3158
---
services/repository/contributors_graph.go | 17 ++++++++++++++---
services/repository/contributors_graph_test.go | 9 ++++++++-
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/services/repository/contributors_graph.go b/services/repository/contributors_graph.go
index 7c9f535ae0..516e7f1475 100644
--- a/services/repository/contributors_graph.go
+++ b/services/repository/contributors_graph.go
@@ -20,6 +20,7 @@ import (
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
"code.gitea.io/gitea/modules/graceful"
+ "code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log"
api "code.gitea.io/gitea/modules/structs"
@@ -108,8 +109,9 @@ func GetContributorStats(ctx context.Context, cache cache.Cache, repo *repo_mode
switch v := cache.Get(cacheKey).(type) {
case error:
return nil, v
- case map[string]*ContributorData:
- return v, nil
+ case string:
+ var cachedStats map[string]*ContributorData
+ return cachedStats, json.Unmarshal([]byte(v), &cachedStats)
default:
return nil, fmt.Errorf("unexpected type in cache detected")
}
@@ -309,7 +311,16 @@ func generateContributorStats(genDone chan struct{}, cache cache.Cache, cacheKey
total.TotalCommits++
}
- _ = cache.Put(cacheKey, contributorsCommitStats, contributorStatsCacheTimeout)
+ data, err := json.Marshal(contributorsCommitStats)
+ if err != nil {
+ err := fmt.Errorf("couldn't marshal the data: %w", err)
+ _ = cache.Put(cacheKey, err, contributorStatsCacheTimeout)
+ return
+ }
+
+ // Store the data as an string, to make it uniform what data type is returned
+ // from caches.
+ _ = cache.Put(cacheKey, string(data), contributorStatsCacheTimeout)
generateLock.Delete(cacheKey)
if genDone != nil {
genDone <- struct{}{}
diff --git a/services/repository/contributors_graph_test.go b/services/repository/contributors_graph_test.go
index 3801a5eee4..2c6102005d 100644
--- a/services/repository/contributors_graph_test.go
+++ b/services/repository/contributors_graph_test.go
@@ -11,6 +11,7 @@ import (
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unittest"
"code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/modules/json"
"gitea.com/go-chi/cache"
"github.com/stretchr/testify/assert"
@@ -32,8 +33,14 @@ func TestRepository_ContributorsGraph(t *testing.T) {
assert.ErrorAs(t, err, &git.ErrNotExist{})
generateContributorStats(nil, mockCache, "key2", repo, "master")
- data, isData := mockCache.Get("key2").(map[string]*ContributorData)
+ dataString, isData := mockCache.Get("key2").(string)
assert.True(t, isData)
+ // Verify that JSON is actually stored in the cache.
+ assert.EqualValues(t, `{"ethantkoenig@gmail.com":{"name":"Ethan Koenig","login":"","avatar_link":"https://secure.gravatar.com/avatar/b42fb195faa8c61b8d88abfefe30e9e3?d=identicon","home_link":"","total_commits":1,"weeks":{"1511654400000":{"week":1511654400000,"additions":3,"deletions":0,"commits":1}}},"jimmy.praet@telenet.be":{"name":"Jimmy Praet","login":"","avatar_link":"https://secure.gravatar.com/avatar/93c49b7c89eb156971d11161c9b52795?d=identicon","home_link":"","total_commits":1,"weeks":{"1624752000000":{"week":1624752000000,"additions":2,"deletions":0,"commits":1}}},"jon@allspice.io":{"name":"Jon","login":"","avatar_link":"https://secure.gravatar.com/avatar/00388ce725e6886f3e07c3733007289b?d=identicon","home_link":"","total_commits":1,"weeks":{"1607817600000":{"week":1607817600000,"additions":10,"deletions":0,"commits":1}}},"total":{"name":"Total","login":"","avatar_link":"","home_link":"","total_commits":3,"weeks":{"1511654400000":{"week":1511654400000,"additions":3,"deletions":0,"commits":1},"1607817600000":{"week":1607817600000,"additions":10,"deletions":0,"commits":1},"1624752000000":{"week":1624752000000,"additions":2,"deletions":0,"commits":1}}}}`, dataString)
+
+ var data map[string]*ContributorData
+ assert.NoError(t, json.Unmarshal([]byte(dataString), &data))
+
var keys []string
for k := range data {
keys = append(keys, k)
From 668709a33f3acd4aa63448ce512c98cb48d9792e Mon Sep 17 00:00:00 2001
From: Gusted
Date: Thu, 11 Apr 2024 13:34:53 +0200
Subject: [PATCH 026/233] [BUG] Handle bigger files in `git grep`
- The parser of `git grep`'s output uses `bufio.Scanner`, which is a good
choice overall, however it does have a limit that's usually not noticed,
it will not read more than `64 * 1024` bytes at once which can be hit in
practical scenarios.
- Use `bufio.Reader` instead which doesn't have this limitation, but is
a bit harder to work with as it's a more lower level primitive.
- Adds unit test.
- Resolves https://codeberg.org/forgejo/forgejo/issues/3149
---
modules/git/grep.go | 20 ++++++++++++++++----
modules/git/grep_test.go | 27 +++++++++++++++++++++++++++
2 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/modules/git/grep.go b/modules/git/grep.go
index ee6a858f74..1de739107a 100644
--- a/modules/git/grep.go
+++ b/modules/git/grep.go
@@ -10,6 +10,7 @@ import (
"context"
"errors"
"fmt"
+ "io"
"os"
"strconv"
"strings"
@@ -80,10 +81,21 @@ func GrepSearch(ctx context.Context, repo *Repository, search string, opts GrepO
defer stdoutReader.Close()
isInBlock := false
- scanner := bufio.NewScanner(stdoutReader)
+ scanner := bufio.NewReader(stdoutReader)
var res *GrepResult
- for scanner.Scan() {
- line := scanner.Text()
+ for {
+ line, err := scanner.ReadString('\n')
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+ // Remove delimiter.
+ if len(line) > 0 {
+ line = line[:len(line)-1]
+ }
+
if !isInBlock {
if _ /* ref */, filename, ok := strings.Cut(line, ":"); ok {
isInBlock = true
@@ -109,7 +121,7 @@ func GrepSearch(ctx context.Context, repo *Repository, search string, opts GrepO
res.LineCodes = append(res.LineCodes, lineCode)
}
}
- return scanner.Err()
+ return nil
},
})
// git grep exits by cancel (killed), usually it is caused by the limit of results
diff --git a/modules/git/grep_test.go b/modules/git/grep_test.go
index b5fa437c53..a321b11452 100644
--- a/modules/git/grep_test.go
+++ b/modules/git/grep_test.go
@@ -4,7 +4,10 @@
package git
import (
+ "bytes"
"context"
+ "os"
+ "path"
"path/filepath"
"testing"
@@ -49,3 +52,27 @@ func TestGrepSearch(t *testing.T) {
assert.Error(t, err)
assert.Len(t, res, 0)
}
+
+func TestGrepLongFiles(t *testing.T) {
+ tmpDir := t.TempDir()
+
+ err := InitRepository(DefaultContext, tmpDir, false, Sha1ObjectFormat.Name())
+ assert.NoError(t, err)
+
+ gitRepo, err := openRepositoryWithDefaultContext(tmpDir)
+ assert.NoError(t, err)
+ defer gitRepo.Close()
+
+ assert.NoError(t, os.WriteFile(path.Join(tmpDir, "README.md"), bytes.Repeat([]byte{'a'}, 65*1024), 0o666))
+
+ err = AddChanges(tmpDir, true)
+ assert.NoError(t, err)
+
+ err = CommitChanges(tmpDir, CommitChangesOptions{Message: "Long file"})
+ assert.NoError(t, err)
+
+ res, err := GrepSearch(context.Background(), gitRepo, "a", GrepOptions{})
+ assert.NoError(t, err)
+ assert.Len(t, res, 1)
+ assert.Len(t, res[0].LineCodes[0], 65*1024)
+}
From 9f4f7368d033c80e3cc715697f42f02aac02622e Mon Sep 17 00:00:00 2001
From: Michael Kriese
Date: Thu, 11 Apr 2024 15:00:11 +0200
Subject: [PATCH 027/233] chore(renovate): Update deps inside `Makefile`
---
Makefile | 28 ++++++++++++++--------------
renovate.json | 6 ++++++
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/Makefile b/Makefile
index 44f4f9b925..0666e55625 100644
--- a/Makefile
+++ b/Makefile
@@ -26,18 +26,18 @@ DIFF ?= diff --unified
XGO_VERSION := go-1.21.x
-AIR_PACKAGE ?= github.com/cosmtrek/air@v1.49.0
-EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@2.7.0
-GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.6.0
-GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.56.1
-GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11
-MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.4.1
-SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.30.6-0.20240201115257-bcc7c78b7786
-XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
-GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0
-GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1.0.3
-ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/actionlint@v1.6.26
-DEADCODE_PACKAGE ?= golang.org/x/tools/internal/cmd/deadcode@v0.14.0
+AIR_PACKAGE ?= github.com/cosmtrek/air@v1.49.0 # renovate: datasource=go
+EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@2.7.0 # renovate: datasource=go
+GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.6.0 # renovate: datasource=go
+GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.56.1 # renovate: datasource=go
+GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 # renovate: datasource=go
+MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.4.1 # renovate: datasource=go
+SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.30.6-0.20240201115257-bcc7c78b7786 # renovate: datasource=go
+XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest # renovate: datasource=go
+GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0 # renovate: datasource=go
+GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1.0.3 # renovate: datasource=go
+ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/actionlint@v1.6.26 # renovate: datasource=go
+DEADCODE_PACKAGE ?= golang.org/x/tools/internal/cmd/deadcode@v0.14.0 # renovate: datasource=go
DOCKER_IMAGE ?= gitea/gitea
DOCKER_TAG ?= latest
@@ -335,8 +335,8 @@ ifneq "$(TAGS)" "$(shell cat $(TAGS_EVIDENCE) 2>/dev/null)"
TAGS_PREREQ := $(TAGS_EVIDENCE)
endif
-OAPI_CODEGEN_PACKAGE ?= github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.12.4
-KIN_OPENAPI_CODEGEN_PACKAGE ?= github.com/getkin/kin-openapi/cmd/validate@v0.114.0
+OAPI_CODEGEN_PACKAGE ?= github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.12.4 # renovate: datasource=go
+KIN_OPENAPI_CODEGEN_PACKAGE ?= github.com/getkin/kin-openapi/cmd/validate@v0.114.0 # renovate: datasource=go
FORGEJO_API_SERVER = routers/api/forgejo/v1/generated.go
.PHONY: generate-forgejo-api
diff --git a/renovate.json b/renovate.json
index 100f322dcd..292a38383f 100644
--- a/renovate.json
+++ b/renovate.json
@@ -76,6 +76,12 @@
"matchStrings": ["\\s+node-version: ['\"]?(?.+?)['\"]?\\s"],
"depNameTemplate": "node",
"datasourceTemplate": "node-version"
+ },
+ {
+ "description": "Update deps inside Makefile",
+ "customType": "regex",
+ "fileMatch": ["^Makefile$"],
+ "matchStrings": [" \\?= (?.+?)@(?.+?) # renovate: datasource=(?.+?)\\s"]
}
]
}
From aec787b9279399e54e6dd04dc4009addbf93fe89 Mon Sep 17 00:00:00 2001
From: Shiny Nematoda
Date: Thu, 11 Apr 2024 14:52:37 +0000
Subject: [PATCH 028/233] fix code search template
---
routers/web/repo/search.go | 2 +-
templates/shared/search/code/results.tmpl | 4 ++--
templates/shared/search/code/search.tmpl | 8 ++------
templates/shared/searchfile.tmpl | 2 +-
4 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/routers/web/repo/search.go b/routers/web/repo/search.go
index 6e70428547..02df17a7e6 100644
--- a/routers/web/repo/search.go
+++ b/routers/web/repo/search.go
@@ -86,7 +86,7 @@ func Search(ctx *context.Context) {
}
}
- ctx.Data["CodeIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
+ ctx.Data["CodeIndexerDisabled"] = !setting.Indexer.RepoIndexerEnabled
ctx.Data["Repo"] = ctx.Repo.Repository
ctx.Data["SourcePath"] = ctx.Repo.Repository.Link()
ctx.Data["SearchResults"] = searchResults
diff --git a/templates/shared/search/code/results.tmpl b/templates/shared/search/code/results.tmpl
index 022192a150..a98a662654 100644
--- a/templates/shared/search/code/results.tmpl
+++ b/templates/shared/search/code/results.tmpl
@@ -24,10 +24,10 @@
{{else}}
{{.Filename}}
{{end}}
- {{ctx.Locale.Tr "repo.diff.view_file"}}
+ {{ctx.Locale.Tr "repo.diff.view_file"}}