diff --git a/.deadcode-out b/.deadcode-out index 403a6e40d2..b17d738bd6 100644 --- a/.deadcode-out +++ b/.deadcode-out @@ -87,6 +87,9 @@ code.gitea.io/gitea/modules/eventsource Event.String code.gitea.io/gitea/modules/forgefed + NewForgeUndoLike + ForgeUndoLike.UnmarshalJSON + ForgeUndoLike.Validate GetItemByType JSONUnmarshalerFn NotEmpty @@ -103,9 +106,6 @@ code.gitea.io/gitea/modules/git openRepositoryWithDefaultContext ToEntryMode -code.gitea.io/gitea/modules/gitgraph - Parser.Reset - code.gitea.io/gitea/modules/gitrepo GetBranchCommitID GetWikiDefaultBranch @@ -224,6 +224,9 @@ code.gitea.io/gitea/services/repository code.gitea.io/gitea/services/repository/files ContentType.String +code.gitea.io/gitea/services/repository/gitgraph + Parser.Reset + code.gitea.io/gitea/services/webhook NewNotifier diff --git a/.forgejo/workflows/renovate.yml b/.forgejo/workflows/renovate.yml index c327691033..4385cafa3f 100644 --- a/.forgejo/workflows/renovate.yml +++ b/.forgejo/workflows/renovate.yml @@ -28,7 +28,7 @@ jobs: runs-on: docker container: - image: data.forgejo.org/renovate/renovate:39.158.2 + image: data.forgejo.org/renovate/renovate:39.171.2 steps: - name: Load renovate repo cache diff --git a/Dockerfile.rootless b/Dockerfile.rootless index 1d3f0e4538..394eae0526 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -71,6 +71,7 @@ RUN apk --no-cache add \ git \ curl \ gnupg \ + openssh-client \ && rm -rf /var/cache/apk/* RUN addgroup \ diff --git a/Makefile b/Makefile index fd5f4f5352..75369dce35 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1 # renovate: datasour DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.29.0 # renovate: datasource=go GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.1 # renovate: datasource=go -RENOVATE_NPM_PACKAGE ?= renovate@39.158.2 # renovate: datasource=docker packageName=data.forgejo.org/renovate/renovate +RENOVATE_NPM_PACKAGE ?= renovate@39.171.2 # renovate: datasource=docker packageName=data.forgejo.org/renovate/renovate # https://github.com/disposable-email-domains/disposable-email-domains/commits/main/ DISPOSABLE_EMAILS_SHA ?= 0c27e671231d27cf66370034d7f6818037416989 # renovate: ... @@ -127,6 +127,11 @@ FORGEJO_VERSION_API ?= ${FORGEJO_VERSION} show-version-api: @echo ${FORGEJO_VERSION_API} +# Strip binaries by default to reduce size, allow overriding for debugging +STRIP ?= 1 +ifeq ($(STRIP),1) + LDFLAGS := $(LDFLAGS) -s -w +endif LDFLAGS := $(LDFLAGS) -X "main.ReleaseVersion=$(RELEASE_VERSION)" -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(FORGEJO_VERSION)" -X "main.Tags=$(TAGS)" -X "main.ForgejoVersion=$(FORGEJO_VERSION_API)" LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64 @@ -827,7 +832,7 @@ check: test .PHONY: install $(TAGS_PREREQ) install: $(wildcard *.go) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) install -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' .PHONY: build build: frontend backend @@ -855,13 +860,13 @@ merge-locales: @echo "NOT NEEDED: THIS IS A NOOP AS OF Forgejo 7.0 BUT KEPT FOR BACKWARD COMPATIBILITY" $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@ + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $@ forgejo: $(EXECUTABLE) ln -f $(EXECUTABLE) forgejo static-executable: $(GO_SOURCES) $(TAGS_PREREQ) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -o $(EXECUTABLE) + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -o $(EXECUTABLE) .PHONY: release release: frontend generate release-linux release-copy release-compress vendor release-sources release-check diff --git a/go.mod b/go.mod index 19a9e73dca..c0a97b21fd 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/alecthomas/chroma/v2 v2.15.0 github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb github.com/blevesearch/bleve/v2 v2.4.4 - github.com/buildkite/terminal-to-html/v3 v3.16.4 + github.com/buildkite/terminal-to-html/v3 v3.16.5 github.com/caddyserver/certmagic v0.21.7 github.com/chi-middleware/proxy v1.1.1 github.com/djherbis/buffer v1.2.0 @@ -76,7 +76,7 @@ require ( github.com/meilisearch/meilisearch-go v0.29.0 github.com/mholt/archiver/v3 v3.5.1 github.com/microcosm-cc/bluemonday v1.0.27 - github.com/minio/minio-go/v7 v7.0.84 + github.com/minio/minio-go/v7 v7.0.85 github.com/msteinert/pam v1.2.0 github.com/nektos/act v0.2.52 github.com/niklasfasching/go-org v1.7.0 @@ -103,7 +103,7 @@ require ( go.uber.org/mock v0.4.0 golang.org/x/crypto v0.33.0 golang.org/x/image v0.23.0 - golang.org/x/net v0.34.0 + golang.org/x/net v0.35.0 golang.org/x/oauth2 v0.24.0 golang.org/x/sync v0.11.0 golang.org/x/sys v0.30.0 diff --git a/go.sum b/go.sum index 05a37c374e..b2d734d636 100644 --- a/go.sum +++ b/go.sum @@ -768,8 +768,8 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q= -github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0= +github.com/buildkite/terminal-to-html/v3 v3.16.5 h1:s/8NElw/Yhm09jKdMq4nY31tjcFMgHukjLfPrqxApcQ= +github.com/buildkite/terminal-to-html/v3 v3.16.5/go.mod h1:PgzeBymbRFC8I2m46Sci3S18AbwonEgpaz3TGhD7EPs= github.com/caddyserver/certmagic v0.21.7 h1:66KJioPFJwttL43KYSWk7ErSmE6LfaJgCQuhm8Sg6fg= github.com/caddyserver/certmagic v0.21.7/go.mod h1:LCPG3WLxcnjVKl/xpjzM0gqh0knrKKKiO5WVttX2eEI= github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA= @@ -1263,8 +1263,8 @@ github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcs github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.84 h1:D1HVmAF8JF8Bpi6IU4V9vIEj+8pc+xU88EWMs2yed0E= -github.com/minio/minio-go/v7 v7.0.84/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY= +github.com/minio/minio-go/v7 v7.0.85 h1:9psTLS/NTvC3MWoyjhjXpwcKoNbkongaCSF3PNpSuXo= +github.com/minio/minio-go/v7 v7.0.85/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1640,8 +1640,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= diff --git a/models/asymkey/ssh_key_parse.go b/models/asymkey/ssh_key_parse.go index 94b1cf112b..3cb51b2b22 100644 --- a/models/asymkey/ssh_key_parse.go +++ b/models/asymkey/ssh_key_parse.go @@ -219,8 +219,13 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) { return "", 0, fmt.Errorf("ParsePublicKey: %w", err) } + pkeyType := pkey.Type() + if certPkey, ok := pkey.(*ssh.Certificate); ok { + pkeyType = certPkey.Key.Type() + } + // The ssh library can parse the key, so next we find out what key exactly we have. - switch pkey.Type() { + switch pkeyType { case ssh.KeyAlgoDSA: rawPub := struct { Name string diff --git a/models/asymkey/ssh_key_test.go b/models/asymkey/ssh_key_test.go index 2625d6ac91..9a4ef665af 100644 --- a/models/asymkey/ssh_key_test.go +++ b/models/asymkey/ssh_key_test.go @@ -35,6 +35,7 @@ func Test_SSHParsePublicKey(t *testing.T) { {"ecdsa-384", false, "ecdsa", 384, "ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBINmioV+XRX1Fm9Qk2ehHXJ2tfVxW30ypUWZw670Zyq5GQfBAH6xjygRsJ5wWsHXBsGYgFUXIHvMKVAG1tpw7s6ax9oA+dJOJ7tj+vhn8joFqT+sg3LYHgZkHrfqryRasQ== nocomment"}, {"ecdsa-sk", true, "ecdsa-sk", 256, "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBGXEEzWmm1dxb+57RoK5KVCL0w2eNv9cqJX2AGGVlkFsVDhOXHzsadS3LTK4VlEbbrDMJdoti9yM8vclA8IeRacAAAAEc3NoOg== nocomment"}, {"ed25519-sk", true, "ed25519-sk", 256, "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIE7kM1R02+4ertDKGKEDcKG0s+2vyDDcIvceJ0Gqv5f1AAAABHNzaDo= nocomment"}, + {"ed25519-cert-v01", true, "ed25519", 256, "ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIAlIAPlEj0mYQzQo8Ks0Nm/Ct8ceNkyJSf4DLuF5l7+5AAAAIEuWAoaBo2tT29/oMNnoDfdAPRCIdM2RGapKUhY4nDfLRgPQwfnRoc0AAAABAAAAcHZhdWx0LW9pZGMtNmRhYjdiZDgtNDg5YS00MDFkLTg3ZmItNjdjNTlhMDZkZDkxLTNjNTk2M2YyMGRmMDM3MDkyMzc1YmNiYmNiNzkxY2EyZWIxM2I0NGZhMzc2NTcwMWI0MjMwODU0MWFmNjhkNTgAAAALAAAAB2Zvcmdlam8AAAAAZ6/RUQAAAABn115vAAAAAAAAAAAAAAAAAAACFwAAAAdzc2gtcnNhAAAAAwEAAQAAAgEAySnM/TvD117GyKgOgMatDB2t+fCHORFaWVmH5SaadAzNJ2DfDAauRSLfnim1xdgAOMTzsPEEHH47zyYMjE85o2AiJxrfUBMw3O/7AbNc6+HyLr/txH4+vD9tWQknKnpVWM+3Z9wiHDcOdKRoXCmFZKJH1vxs16GNWjwbrfNiimv7Oi0fadgvTDKX603gpLTuVDXqs9eQFLCONptei86JYBAJqaHvg51k8YUCKt9WFqKAj7BJUWmrDvhv5VFMOsnZieJjqxkoxnpsQNlXfPzxK0vIpJofbYfWwscv/g9WZypHwO1ZR2PqzKm99YrSdr8w5256l0f44vsF0NSP0N7bDQEfYYnRGj8zWTYCBFD+uYF7AxIeaRUpZoTQO8MvCHOLMIDinNgEeCUvNA2v9zHl4BGq+PQjzUKAgJiKj0MZeiCDAmQ22g83ggQlB6BOrBb1fNa/S1cmTbGHQ2oAN358aqkmHVCBhPOyA2Rf65D2M2vzDlUdOsNDUIWAHk7GbwSNGDgcYfTWqtR5fTzp2MJovMh1dDUDXjOvojbhzjJtSy9+rzUYIv18aXdOitzVBgPMWdeVCZFZv4OKF+5MiqxQvedUvfiSjsdxZWLxyT1CJ88G3MzxNMS/Djm86T8h/Oa55bdvFtqpsLfvpIqq0pnXq1V/vF2j1MWwRB5z5Xh/HtEAAAIUAAAADHJzYS1zaGEyLTI1NgAAAgB2I2gzqemQl8/ETxtakALlm/2BpUcbhADcFWuoH6BCPnWHuTSwf3OayM6KXv1PQfL3YFRoi9Afrp8kVFL6DePsmKH+0BUEMz71sZ7v1ty7pwfzibItGnpTbQXhzbEiNYAFoz77rl7oaXF7pV6JNZhj3DVAB5gVA2oN5KRNVxijz+6uyuFJEw1HIl1C7GworvGwZcN7BThTEh3i72/Vntejy9Z8uGVjSFjS0rjRo2oXK1LKN0rVt66p3TmCWHouLkVnOTk0qrhLGlL2HVyo24OYHbkAAObD9b6aMDYlmluk6NsaiTKsSTsvMrbIbjtFQlh7nNyoPhZ0VMwaT1l10pDQ5uxWWZjKGIkz4xM1ZfpBszjJNPo+ivYQnTSjj9LwkbLAT9a/5LawSj80TGcLEMO+0eyPdJsP0wYmOVRFAZeRiBgwb3HrzcF6Wqr8icj1EjYkKSy9YFHGTnFBGknpdh3HGwghRXrCUwAnSM76db9pv4/qowT8LthtJ3dY5Epe0OJ1Tqm+q8bkGH4gB+7uqLSqM5pIHSKLp7lfHQBt1J6xa7H2saiweaWjU+QGTgQ2Lg+uUC5DXJrmm60CeFJ4BoGhUenDlgijbQpjH/l6330PbwefgjWtUK/pqaEA4lCoPyvJ+eF2DbYfPiAIBAFQnhVJJae4AH+XoCt29nb2j30ztg== nocomment"}, } for _, tc := range testCases { diff --git a/models/fixtures/pull_request.yml b/models/fixtures/pull_request.yml index 9a16316e5a..fbc0d504f8 100644 --- a/models/fixtures/pull_request.yml +++ b/models/fixtures/pull_request.yml @@ -64,6 +64,7 @@ base_branch: branch2 merge_base: 985f0301dba5e7b34be866819cd15ad3d8f508ee has_merged: false + allow_maintainer_edit: true - id: 6 diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml index c23abbb17e..630505b8b4 100644 --- a/models/fixtures/user.yml +++ b/models/fixtures/user.yml @@ -45,6 +45,7 @@ full_name: ' < Ur Tw >< ' email: user2@example.com keep_email_private: true + keep_pronouns_private: true email_notifications_preference: enabled passwd: ZogKvWdyEx:password passwd_hash_algo: dummy @@ -350,6 +351,7 @@ full_name: User Ten email: user10@example.com keep_email_private: false + keep_pronouns_private: true email_notifications_preference: enabled passwd: ZogKvWdyEx:password passwd_hash_algo: dummy diff --git a/models/forgejo_migrations/migrate.go b/models/forgejo_migrations/migrate.go index 1450ad3c54..935b072331 100644 --- a/models/forgejo_migrations/migrate.go +++ b/models/forgejo_migrations/migrate.go @@ -58,40 +58,42 @@ var migrations = []*Migration{ NewMigration("Add the `apply_to_admins` column to the `protected_branch` table", forgejo_v1_22.AddApplyToAdminsSetting), // v9 -> v10 NewMigration("Add pronouns to user", forgejo_v1_22.AddPronounsToUser), - // v11 -> v12 + // v10 -> v11 NewMigration("Add the `created` column to the `issue` table", forgejo_v1_22.AddCreatedToIssue), - // v12 -> v13 + // v11 -> v12 NewMigration("Add repo_archive_download_count table", forgejo_v1_22.AddRepoArchiveDownloadCount), - // v13 -> v14 + // v12 -> v13 NewMigration("Add `hide_archive_links` column to `release` table", AddHideArchiveLinksToRelease), - // v14 -> v15 + // v13 -> v14 NewMigration("Remove Gitea-specific columns from the repository and badge tables", RemoveGiteaSpecificColumnsFromRepositoryAndBadge), - // v15 -> v16 + // v14 -> v15 NewMigration("Create the `federation_host` table", CreateFederationHostTable), - // v16 -> v17 + // v15 -> v16 NewMigration("Create the `federated_user` table", CreateFederatedUserTable), - // v17 -> v18 + // v16 -> v17 NewMigration("Add `normalized_federated_uri` column to `user` table", AddNormalizedFederatedURIToUser), - // v18 -> v19 + // v17 -> v18 NewMigration("Create the `following_repo` table", CreateFollowingRepoTable), - // v19 -> v20 + // v18 -> v19 NewMigration("Add external_url to attachment table", AddExternalURLColumnToAttachmentTable), - // v20 -> v21 + // v19 -> v20 NewMigration("Creating Quota-related tables", CreateQuotaTables), - // v21 -> v22 + // v20 -> v21 NewMigration("Add SSH keypair to `pull_mirror` table", AddSSHKeypairToPushMirror), - // v22 -> v23 + // v21 -> v22 NewMigration("Add `legacy` to `web_authn_credential` table", AddLegacyToWebAuthnCredential), - // v23 -> v24 + // v22 -> v23 NewMigration("Add `delete_branch_after_merge` to `auto_merge` table", AddDeleteBranchAfterMergeToAutoMerge), - // v24 -> v25 + // v23 -> v24 NewMigration("Add `purpose` column to `forgejo_auth_token` table", AddPurposeToForgejoAuthToken), - // v25 -> v26 + // v24 -> v25 NewMigration("Migrate `secret` column to store keying material", MigrateTwoFactorToKeying), - // v26 -> v27 + // v25 -> v26 NewMigration("Add `hash_blake2b` column to `package_blob` table", AddHashBlake2bToPackageBlob), - // v27 -> v28 + // v26 -> v27 NewMigration("Add `created_unix` column to `user_redirect` table", AddCreatedUnixToRedirect), + // v27 -> v28 + NewMigration("Add pronoun privacy settings to user", AddHidePronounsOptionToUser), } // GetCurrentDBVersion returns the current Forgejo database version. diff --git a/models/forgejo_migrations/v28.go b/models/forgejo_migrations/v28.go new file mode 100644 index 0000000000..cba888d2ec --- /dev/null +++ b/models/forgejo_migrations/v28.go @@ -0,0 +1,15 @@ +// Copyright 2024 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package forgejo_migrations //nolint:revive + +import "xorm.io/xorm" + +func AddHidePronounsOptionToUser(x *xorm.Engine) error { + type User struct { + ID int64 `xorm:"pk autoincr"` + KeepPronounsPrivate bool `xorm:"NOT NULL DEFAULT false"` + } + + return x.Sync(&User{}) +} diff --git a/models/user/user.go b/models/user/user.go index f986ac5482..37dd69f42d 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -154,6 +154,7 @@ type User struct { DiffViewStyle string `xorm:"NOT NULL DEFAULT ''"` Theme string `xorm:"NOT NULL DEFAULT ''"` KeepActivityPrivate bool `xorm:"NOT NULL DEFAULT false"` + KeepPronounsPrivate bool `xorm:"NOT NULL DEFAULT false"` EnableRepoUnitHints bool `xorm:"NOT NULL DEFAULT true"` } @@ -500,6 +501,16 @@ func (u *User) GetCompleteName() string { return u.Name } +// GetPronouns returns an empty string, if the user has set to keep his +// pronouns private from non-logged in users, otherwise the pronouns +// are returned. +func (u *User) GetPronouns(signed bool) string { + if u.KeepPronounsPrivate && !signed { + return "" + } + return u.Pronouns +} + func gitSafeName(name string) string { return strings.TrimSpace(strings.NewReplacer("\n", "", "<", "", ">", "").Replace(name)) } @@ -854,48 +865,46 @@ func countUsers(ctx context.Context, opts *CountUserFilter) int64 { // VerifyUserActiveCode verifies that the code is valid for the given purpose for this user. // If delete is specified, the token will be deleted. -func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose, delete bool) (*User, error) { +func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose) (user *User, deleteToken func() error, err error) { lookupKey, validator, found := strings.Cut(code, ":") if !found { - return nil, nil + return nil, nil, nil } authToken, err := auth.FindAuthToken(ctx, lookupKey, purpose) if err != nil { if errors.Is(err, util.ErrNotExist) { - return nil, nil + return nil, nil, nil } - return nil, err + return nil, nil, err } if authToken.IsExpired() { - return nil, auth.DeleteAuthToken(ctx, authToken) + return nil, nil, auth.DeleteAuthToken(ctx, authToken) } rawValidator, err := hex.DecodeString(validator) if err != nil { - return nil, err + return nil, nil, err } if subtle.ConstantTimeCompare([]byte(authToken.HashedValidator), []byte(auth.HashValidator(rawValidator))) == 0 { - return nil, errors.New("validator doesn't match") + return nil, nil, errors.New("validator doesn't match") } u, err := GetUserByID(ctx, authToken.UID) if err != nil { if IsErrUserNotExist(err) { - return nil, nil + return nil, nil, nil } - return nil, err + return nil, nil, err } - if delete { - if err := auth.DeleteAuthToken(ctx, authToken); err != nil { - return nil, err - } + deleteToken = func() error { + return auth.DeleteAuthToken(ctx, authToken) } - return u, nil + return u, deleteToken, nil } // ValidateUser check if user is valid to insert / update into database diff --git a/models/user/user_test.go b/models/user/user_test.go index 263c38933a..9ac63b5a72 100644 --- a/models/user/user_test.go +++ b/models/user/user_test.go @@ -756,13 +756,13 @@ func TestVerifyUserAuthorizationToken(t *testing.T) { assert.True(t, ok) t.Run("Wrong purpose", func(t *testing.T) { - u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset, false) + u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset) require.NoError(t, err) assert.Nil(t, u) }) t.Run("No delete", func(t *testing.T) { - u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, false) + u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation) require.NoError(t, err) assert.EqualValues(t, user.ID, u.ID) @@ -772,9 +772,10 @@ func TestVerifyUserAuthorizationToken(t *testing.T) { }) t.Run("Delete", func(t *testing.T) { - u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, true) + u, deleteToken, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation) require.NoError(t, err) assert.EqualValues(t, user.ID, u.ID) + require.NoError(t, deleteToken()) authToken, err := auth.FindAuthToken(db.DefaultContext, lookupKey, auth.UserActivation) require.ErrorIs(t, err, util.ErrNotExist) @@ -795,3 +796,42 @@ func TestGetInactiveUsers(t *testing.T) { require.NoError(t, err) require.Empty(t, users) } + +func TestPronounsPrivacy(t *testing.T) { + require.NoError(t, unittest.PrepareTestDatabase()) + t.Run("EmptyPronounsIfNoneSet", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "" + user.KeepPronounsPrivate = false + + assert.Equal(t, "", user.GetPronouns(false)) + }) + t.Run("EmptyPronounsIfSetButPrivateAndNotLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = true + + assert.Equal(t, "", user.GetPronouns(false)) + }) + t.Run("ReturnPronounsIfSetAndNotPrivateAndNotLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = false + + assert.Equal(t, "any", user.GetPronouns(false)) + }) + t.Run("ReturnPronounsIfSetAndPrivateAndLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = false + + assert.Equal(t, "any", user.GetPronouns(true)) + }) + t.Run("ReturnPronounsIfSetAndNotPrivateAndLoggedIn", func(t *testing.T) { + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + user.Pronouns = "any" + user.KeepPronounsPrivate = true + + assert.Equal(t, "any", user.GetPronouns(true)) + }) +} diff --git a/modules/forgefed/activity.go b/modules/forgefed/activity_like.go similarity index 93% rename from modules/forgefed/activity.go rename to modules/forgefed/activity_like.go index 247abd255a..0f001486b5 100644 --- a/modules/forgefed/activity.go +++ b/modules/forgefed/activity_like.go @@ -21,8 +21,8 @@ type ForgeLike struct { func NewForgeLike(actorIRI, objectIRI string, startTime time.Time) (ForgeLike, error) { result := ForgeLike{} result.Type = ap.LikeType - result.Actor = ap.IRI(actorIRI) // That's us, a User - result.Object = ap.IRI(objectIRI) // That's them, a Repository + result.Actor = ap.IRI(actorIRI) + result.Object = ap.IRI(objectIRI) result.StartTime = startTime if valid, err := validation.IsValid(result); !valid { return ForgeLike{}, err @@ -46,20 +46,23 @@ func (like ForgeLike) Validate() []string { var result []string result = append(result, validation.ValidateNotEmpty(string(like.Type), "type")...) result = append(result, validation.ValidateOneOf(string(like.Type), []any{"Like"}, "type")...) + if like.Actor == nil { result = append(result, "Actor should not be nil.") } else { result = append(result, validation.ValidateNotEmpty(like.Actor.GetID().String(), "actor")...) } - if like.Object == nil { - result = append(result, "Object should not be nil.") - } else { - result = append(result, validation.ValidateNotEmpty(like.Object.GetID().String(), "object")...) - } + result = append(result, validation.ValidateNotEmpty(like.StartTime.String(), "startTime")...) if like.StartTime.IsZero() { result = append(result, "StartTime was invalid.") } + if like.Object == nil { + result = append(result, "Object should not be nil.") + } else { + result = append(result, validation.ValidateNotEmpty(like.Object.GetID().String(), "object")...) + } + return result } diff --git a/modules/forgefed/activity_test.go b/modules/forgefed/activity_like_test.go similarity index 80% rename from modules/forgefed/activity_test.go rename to modules/forgefed/activity_like_test.go index 9a7979c4e6..6b83381cf9 100644 --- a/modules/forgefed/activity_test.go +++ b/modules/forgefed/activity_like_test.go @@ -16,11 +16,11 @@ import ( ) func Test_NewForgeLike(t *testing.T) { + want := []byte(`{"type":"Like","startTime":"2024-03-07T00:00:00Z","actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1","object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}`) + actorIRI := "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1" objectIRI := "https://codeberg.org/api/v1/activitypub/repository-id/1" - want := []byte(`{"type":"Like","startTime":"2024-03-27T00:00:00Z","actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1","object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}`) - - startTime, _ := time.Parse("2006-Jan-02", "2024-Mar-27") + startTime, _ := time.Parse("2006-Jan-02", "2024-Mar-07") sut, err := NewForgeLike(actorIRI, objectIRI, startTime) if err != nil { t.Errorf("unexpected error: %v\n", err) @@ -84,7 +84,6 @@ func Test_LikeUnmarshalJSON(t *testing.T) { wantErr error } - //revive:disable tests := map[string]testPair{ "with ID": { item: []byte(`{"type":"Like","actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1","object":"https://codeberg.org/api/activitypub/repository-id/1"}`), @@ -100,10 +99,9 @@ func Test_LikeUnmarshalJSON(t *testing.T) { "invalid": { item: []byte(`{"type":"Invalid","actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1","object":"https://codeberg.org/api/activitypub/repository-id/1"`), want: &ForgeLike{}, - wantErr: fmt.Errorf("cannot parse JSON:"), + wantErr: fmt.Errorf("cannot parse JSON"), }, } - //revive:enable for name, test := range tests { t.Run(name, func(t *testing.T) { @@ -120,7 +118,9 @@ func Test_LikeUnmarshalJSON(t *testing.T) { } } -func TestActivityValidation(t *testing.T) { +func Test_ForgeLikeValidation(t *testing.T) { + // Successful + sut := new(ForgeLike) sut.UnmarshalJSON([]byte(`{"type":"Like", "actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1", @@ -130,35 +130,37 @@ func TestActivityValidation(t *testing.T) { t.Errorf("sut expected to be valid: %v\n", sut.Validate()) } + // Errors + sut.UnmarshalJSON([]byte(`{"actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1", "object":"https://codeberg.org/api/activitypub/repository-id/1", "startTime": "2014-12-31T23:00:00-08:00"}`)) - if sut.Validate()[0] != "type should not be empty" { - t.Errorf("validation error expected but was: %v\n", sut.Validate()[0]) + if err := validateAndCheckError(sut, "type should not be empty"); err != nil { + t.Error(err) } sut.UnmarshalJSON([]byte(`{"type":"bad-type", "actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1", "object":"https://codeberg.org/api/activitypub/repository-id/1", "startTime": "2014-12-31T23:00:00-08:00"}`)) - if sut.Validate()[0] != "Value bad-type is not contained in allowed values [Like]" { - t.Errorf("validation error expected but was: %v\n", sut.Validate()[0]) + if err := validateAndCheckError(sut, "Value bad-type is not contained in allowed values [Like]"); err != nil { + t.Error(err) } sut.UnmarshalJSON([]byte(`{"type":"Like", "actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1", - "object":"https://codeberg.org/api/activitypub/repository-id/1", - "startTime": "not a date"}`)) - if sut.Validate()[0] != "StartTime was invalid." { - t.Errorf("validation error expected but was: %v\n", sut.Validate()) + "object":"https://codeberg.org/api/activitypub/repository-id/1", + "startTime": "not a date"}`)) + if err := validateAndCheckError(sut, "StartTime was invalid."); err != nil { + t.Error(err) } sut.UnmarshalJSON([]byte(`{"type":"Wrong", "actor":"https://repo.prod.meissa.de/api/activitypub/user-id/1", - "object":"https://codeberg.org/api/activitypub/repository-id/1", - "startTime": "2014-12-31T23:00:00-08:00"}`)) - if sut.Validate()[0] != "Value Wrong is not contained in allowed values [Like]" { - t.Errorf("validation error expected but was: %v\n", sut.Validate()) + "object":"https://codeberg.org/api/activitypub/repository-id/1", + "startTime": "2014-12-31T23:00:00-08:00"}`)) + if err := validateAndCheckError(sut, "Value Wrong is not contained in allowed values [Like]"); err != nil { + t.Error(err) } } @@ -166,6 +168,6 @@ func TestActivityValidation_Attack(t *testing.T) { sut := new(ForgeLike) sut.UnmarshalJSON([]byte(`{rubbish}`)) if len(sut.Validate()) != 5 { - t.Errorf("5 validateion errors expected but was: %v\n", len(sut.Validate())) + t.Errorf("5 validation errors expected but was: %v\n", len(sut.Validate())) } } diff --git a/modules/forgefed/activity_undo_like.go b/modules/forgefed/activity_undo_like.go new file mode 100644 index 0000000000..b6b13ba50d --- /dev/null +++ b/modules/forgefed/activity_undo_like.go @@ -0,0 +1,80 @@ +// Copyright 2023, 2024 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package forgefed + +import ( + "time" + + "code.gitea.io/gitea/modules/validation" + + ap "github.com/go-ap/activitypub" +) + +// ForgeLike activity data type +// swagger:model +type ForgeUndoLike struct { + // swagger:ignore + ap.Activity +} + +func NewForgeUndoLike(actorIRI, objectIRI string, startTime time.Time) (ForgeUndoLike, error) { + result := ForgeUndoLike{} + result.Type = ap.UndoType + result.Actor = ap.IRI(actorIRI) + result.StartTime = startTime + + like := ap.Activity{} + like.Type = ap.LikeType + like.Actor = ap.IRI(actorIRI) + like.Object = ap.IRI(objectIRI) + result.Object = &like + + if valid, err := validation.IsValid(result); !valid { + return ForgeUndoLike{}, err + } + return result, nil +} + +func (undo *ForgeUndoLike) UnmarshalJSON(data []byte) error { + return undo.Activity.UnmarshalJSON(data) +} + +func (undo ForgeUndoLike) Validate() []string { + var result []string + result = append(result, validation.ValidateNotEmpty(string(undo.Type), "type")...) + result = append(result, validation.ValidateOneOf(string(undo.Type), []any{"Undo"}, "type")...) + + if undo.Actor == nil { + result = append(result, "Actor should not be nil.") + } else { + result = append(result, validation.ValidateNotEmpty(undo.Actor.GetID().String(), "actor")...) + } + + result = append(result, validation.ValidateNotEmpty(undo.StartTime.String(), "startTime")...) + if undo.StartTime.IsZero() { + result = append(result, "StartTime was invalid.") + } + + if undo.Object == nil { + result = append(result, "object should not be empty.") + } else if activity, ok := undo.Object.(*ap.Activity); !ok { + result = append(result, "object is not of type Activity") + } else { + result = append(result, validation.ValidateNotEmpty(string(activity.Type), "type")...) + result = append(result, validation.ValidateOneOf(string(activity.Type), []any{"Like"}, "type")...) + + if activity.Actor == nil { + result = append(result, "Object.Actor should not be nil.") + } else { + result = append(result, validation.ValidateNotEmpty(activity.Actor.GetID().String(), "actor")...) + } + + if activity.Object == nil { + result = append(result, "Object.Object should not be nil.") + } else { + result = append(result, validation.ValidateNotEmpty(activity.Object.GetID().String(), "object")...) + } + } + return result +} diff --git a/modules/forgefed/activity_undo_like_test.go b/modules/forgefed/activity_undo_like_test.go new file mode 100644 index 0000000000..541e524cb3 --- /dev/null +++ b/modules/forgefed/activity_undo_like_test.go @@ -0,0 +1,246 @@ +// Copyright 2023, 2024 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package forgefed + +import ( + "fmt" + "reflect" + "strings" + "testing" + "time" + + "code.gitea.io/gitea/modules/validation" + + ap "github.com/go-ap/activitypub" +) + +func Test_NewForgeUndoLike(t *testing.T) { + actorIRI := "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1" + objectIRI := "https://codeberg.org/api/v1/activitypub/repository-id/1" + want := []byte(`{"type":"Undo","startTime":"2024-03-27T00:00:00Z",` + + `"actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",` + + `"object":{` + + `"type":"Like",` + + `"actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",` + + `"object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`) + + startTime, _ := time.Parse("2006-Jan-02", "2024-Mar-27") + sut, err := NewForgeUndoLike(actorIRI, objectIRI, startTime) + if err != nil { + t.Errorf("unexpected error: %v\n", err) + } + if valid, _ := validation.IsValid(sut); !valid { + t.Errorf("sut expected to be valid: %v\n", sut.Validate()) + } + + got, err := sut.MarshalJSON() + if err != nil { + t.Errorf("MarshalJSON() error = \"%v\"", err) + return + } + if !reflect.DeepEqual(got, want) { + t.Errorf("MarshalJSON() got = %q, want %q", got, want) + } +} + +func Test_UndoLikeMarshalJSON(t *testing.T) { + type testPair struct { + item ForgeUndoLike + want []byte + wantErr error + } + + startTime, _ := time.Parse("2006-Jan-02", "2024-Mar-27") + like, _ := NewForgeLike("https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", "https://codeberg.org/api/v1/activitypub/repository-id/1", startTime) + tests := map[string]testPair{ + "empty": { + item: ForgeUndoLike{}, + want: nil, + }, + "valid": { + item: ForgeUndoLike{ + Activity: ap.Activity{ + StartTime: startTime, + Actor: ap.IRI("https://repo.prod.meissa.de/api/v1/activitypub/user-id/1"), + Type: "Undo", + Object: like, + }, + }, + want: []byte(`{"type":"Undo",` + + `"startTime":"2024-03-27T00:00:00Z",` + + `"actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",` + + `"object":{` + + `"type":"Like",` + + `"startTime":"2024-03-27T00:00:00Z",` + + `"actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",` + + `"object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`), + }, + } + + for name, tt := range tests { + t.Run(name, func(t *testing.T) { + got, err := tt.item.MarshalJSON() + if (err != nil || tt.wantErr != nil) && tt.wantErr.Error() != err.Error() { + t.Errorf("MarshalJSON() error = \"%v\", wantErr \"%v\"", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("MarshalJSON() got = %q\nwant %q", got, tt.want) + } + }) + } +} + +func Test_UndoLikeUnmarshalJSON(t *testing.T) { + type testPair struct { + item []byte + want *ForgeUndoLike + wantErr error + } + + startTime, _ := time.Parse("2006-Jan-02", "2024-Mar-27") + like, _ := NewForgeLike("https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", "https://codeberg.org/api/v1/activitypub/repository-id/1", startTime) + + tests := map[string]testPair{ + "valid": { + item: []byte(`{"type":"Undo",` + + `"startTime":"2024-03-27T00:00:00Z",` + + `"actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",` + + `"object":{` + + `"type":"Like",` + + `"startTime":"2024-03-27T00:00:00Z",` + + `"actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1",` + + `"object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`), + want: &ForgeUndoLike{ + Activity: ap.Activity{ + StartTime: startTime, + Actor: ap.IRI("https://repo.prod.meissa.de/api/v1/activitypub/user-id/1"), + Type: "Undo", + Object: like, + }, + }, + wantErr: nil, + }, + "invalid": { + item: []byte(`invalid JSON`), + want: nil, + wantErr: fmt.Errorf("cannot parse JSON"), + }, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + got := new(ForgeUndoLike) + err := got.UnmarshalJSON(test.item) + if test.wantErr != nil { + if err == nil { + t.Errorf("UnmarshalJSON() error = nil, wantErr \"%v\"", test.wantErr) + } else if !strings.Contains(err.Error(), test.wantErr.Error()) { + t.Errorf("UnmarshalJSON() error = \"%v\", wantErr \"%v\"", err, test.wantErr) + } + return + } + remarshalledgot, _ := got.MarshalJSON() + remarshalledwant, _ := test.want.MarshalJSON() + if !reflect.DeepEqual(remarshalledgot, remarshalledwant) { + t.Errorf("UnmarshalJSON() got = %#v\nwant %#v", got, test.want) + } + }) + } +} + +func TestActivityValidationUndo(t *testing.T) { + sut := new(ForgeUndoLike) + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":{ + "type":"Like", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`)) + if res, _ := validation.IsValid(sut); !res { + t.Errorf("sut expected to be valid: %v\n", sut.Validate()) + } + + _ = sut.UnmarshalJSON([]byte(` + {"startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":{ + "type":"Like", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`)) + if err := validateAndCheckError(sut, "type should not be empty"); err != nil { + t.Error(*err) + } + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "object":{ + "type":"Like", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`)) + if err := validateAndCheckError(sut, "Actor should not be nil."); err != nil { + t.Error(*err) + } + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "actor":"string", + "object":{ + "type":"Like", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`)) + if err := validateAndCheckError(sut, "Actor should not be nil."); err != nil { + t.Error(*err) + } + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1" + }`)) + if err := validateAndCheckError(sut, "object should not be empty."); err != nil { + t.Error(*err) + } + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":{ + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":"https://codeberg.org/api/v1/activitypub/repository-id/1"}}`)) + if err := validateAndCheckError(sut, "object is not of type Activity"); err != nil { + t.Error(*err) + } + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":{ + "type":"Like", + "object":""}}`)) + if err := validateAndCheckError(sut, "Object.Actor should not be nil."); err != nil { + t.Error(*err) + } + + _ = sut.UnmarshalJSON([]byte(` + {"type":"Undo", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", + "object":{ + "type":"Like", + "startTime":"2024-03-27T00:00:00Z", + "actor":"https://repo.prod.meissa.de/api/v1/activitypub/user-id/1"}}`)) + if err := validateAndCheckError(sut, "Object.Object should not be nil."); err != nil { + t.Error(*err) + } +} diff --git a/modules/forgefed/activity_validateandcheckerror_test.go b/modules/forgefed/activity_validateandcheckerror_test.go new file mode 100644 index 0000000000..f2f1fbcccb --- /dev/null +++ b/modules/forgefed/activity_validateandcheckerror_test.go @@ -0,0 +1,23 @@ +// Copyright 2023, 2024 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package forgefed + +import ( + "fmt" + + "code.gitea.io/gitea/modules/validation" +) + +func validateAndCheckError(subject validation.Validateable, expectedError string) *string { + errors := subject.Validate() + err := errors[0] + if len(errors) < 1 { + val := "Validation error should have been returned, but was not." + return &val + } else if err != expectedError { + val := fmt.Sprintf("Validation error should be [%v] but was: %v\n", expectedError, err) + return &val + } + return nil +} diff --git a/modules/repository/license.go b/modules/repository/license.go index 07ae92ca70..dcbefc8ded 100644 --- a/modules/repository/license.go +++ b/modules/repository/license.go @@ -1,4 +1,5 @@ // Copyright 2023 The Gitea Authors. All rights reserved. +// Copyright 2025 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package repository @@ -107,6 +108,9 @@ func getLicensePlaceholder(name string) *licensePlaceholder { } // Other special placeholders can be added here. + } else if name == "BSD-4-Clause" { + ret.Owner = append(ret.Owner, "COPYRIGHT HOLDER") + ret.Owner = append(ret.Owner, "the organization") } return ret } diff --git a/modules/repository/license_test.go b/modules/repository/license_test.go index a7d77743ac..3195f15dda 100644 --- a/modules/repository/license_test.go +++ b/modules/repository/license_test.go @@ -1,4 +1,5 @@ // Copyright 2023 The Gitea Authors. All rights reserved. +// Copyright 2025 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package repository @@ -170,6 +171,31 @@ Copyright (C) 2023 by Gitea teabot@gitea.io ... ... THE AUTHOR BE LIABLE FOR ... +`, + }, + { + name: "BSD-4-Clause", + args: args{ + name: "BSD-4-Clause", + values: &LicenseValues{Year: "2025", Owner: "Forgejo", Email: "hello@forgejo.org", Repo: "forgejo"}, + origin: ` +Copyright (c) . All rights reserved. + +... includes software developed by the organization. + +... Neither the name of the copyright holder nor + +... PROVIDED BY COPYRIGHT HOLDER "AS IS" ... NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE ... +`, + }, + want: ` +Copyright (c) 2025 Forgejo. All rights reserved. + +... includes software developed by Forgejo. + +... Neither the name of the copyright holder nor + +... PROVIDED BY Forgejo "AS IS" ... NO EVENT SHALL Forgejo BE LIABLE ... `, }, } diff --git a/modules/structs/user.go b/modules/structs/user.go index f2747b1473..2dd3051c50 100644 --- a/modules/structs/user.go +++ b/modules/structs/user.go @@ -84,6 +84,7 @@ type UserSettings struct { EnableRepoUnitHints bool `json:"enable_repo_unit_hints"` // Privacy HideEmail bool `json:"hide_email"` + HidePronouns bool `json:"hide_pronouns"` HideActivity bool `json:"hide_activity"` } @@ -101,6 +102,7 @@ type UserSettingsOptions struct { EnableRepoUnitHints *bool `json:"enable_repo_unit_hints"` // Privacy HideEmail *bool `json:"hide_email"` + HidePronouns *bool `json:"hide_pronouns"` HideActivity *bool `json:"hide_activity"` } diff --git a/options/gitignore/Flutter b/options/gitignore/Flutter new file mode 100644 index 0000000000..39b8814aec --- /dev/null +++ b/options/gitignore/Flutter @@ -0,0 +1,119 @@ +# Miscellaneous +*.class +*.lock +*.log +*.pyc +*.swp +.buildlog/ +.history + + + +# Flutter repo-specific +/bin/cache/ +/bin/internal/bootstrap.bat +/bin/internal/bootstrap.sh +/bin/mingit/ +/dev/benchmarks/mega_gallery/ +/dev/bots/.recipe_deps +/dev/bots/android_tools/ +/dev/devicelab/ABresults*.json +/dev/docs/doc/ +/dev/docs/flutter.docs.zip +/dev/docs/lib/ +/dev/docs/pubspec.yaml +/dev/integration_tests/**/xcuserdata +/dev/integration_tests/**/Pods +/packages/flutter/coverage/ +version +analysis_benchmark.json + +# packages file containing multi-root paths +.packages.generated + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +**/generated_plugin_registrant.dart +.packages +.pub-preload-cache/ +.pub/ +build/ +flutter_*.png +linked_*.ds +unlinked.ds +unlinked_spec.ds + +# Android related +**/android/**/gradle-wrapper.jar +.gradle/ +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java +**/android/key.properties +*.jks + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/.last_build_id +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/ephemeral +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# macOS +**/Flutter/ephemeral/ +**/Pods/ +**/macos/Flutter/GeneratedPluginRegistrant.swift +**/macos/Flutter/ephemeral +**/xcuserdata/ + +# Windows +**/windows/flutter/generated_plugin_registrant.cc +**/windows/flutter/generated_plugin_registrant.h +**/windows/flutter/generated_plugins.cmake + +# Linux +**/linux/flutter/generated_plugin_registrant.cc +**/linux/flutter/generated_plugin_registrant.h +**/linux/flutter/generated_plugins.cmake + +# Coverage +coverage/ + +# Symbols +app.*.symbols + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/dev/ci/**/Gemfile.lock \ No newline at end of file diff --git a/options/gitignore/Nix b/options/gitignore/Nix index 1fd04ef1f6..912e6700f4 100644 --- a/options/gitignore/Nix +++ b/options/gitignore/Nix @@ -1,3 +1,6 @@ # Ignore build outputs from performing a nix-build or `nix build` command result result-* + +# Ignore automatically generated direnv output +.direnv diff --git a/options/gitignore/NotesAndCoreConfiguration b/options/gitignore/NotesAndCoreConfiguration new file mode 100644 index 0000000000..4eff01dae1 --- /dev/null +++ b/options/gitignore/NotesAndCoreConfiguration @@ -0,0 +1,16 @@ +# Excludes Obsidian workspace cache and plugins. All notes and core obsidian +# configuration files are tracked by Git. + +# The current application UI state (DOM layout, recently-opened files, etc.) is +# stored in these files (separate for desktop and mobile) so you can resume +# your session seamlessly after a restart. If you want to track UI state, use +# the Workspaces core plugin instead of relying on these files. +.obsidian/workspace.json +.obsidian/workspace-mobile.json + +# Obsidian plugins are stored under .obsidian/plugins/$plugin_name. They +# contain metadata (manifest.json), application code (main.js), stylesheets +# (styles.css), and user-configuration data (data.json). +# We want to exclude all plugin-related files, so we can exclude everything +# under this directory. +.obsidian/plugins/**/* diff --git a/options/gitignore/NotesAndExtendedConfiguration b/options/gitignore/NotesAndExtendedConfiguration new file mode 100644 index 0000000000..3e0804f299 --- /dev/null +++ b/options/gitignore/NotesAndExtendedConfiguration @@ -0,0 +1,38 @@ +# Excludes Obsidian workspace cache and plugin code, but retains plugin +# configuration. All notes and user-controlled configuration files are tracked +# by Git. +# +# !!! WARNING !!! +# +# Community plugins may store sensitive secrets in their data.json files. By +# including these files, those secrets may be tracked in your Git repository. +# +# To ignore configurations for specific plugins, add a line like this after the +# contents of this file (order is important): +# .obsidian/plugins/{{plugin_name}}/data.json +# +# Alternatively, ensure that you are treating your entire Git repository as +# sensitive data, since it may contain secrets, or may have contained them in +# past commits. Understand your threat profile, and make the decision +# appropriate for yourself. If in doubt, err on the side of not including +# plugin configuration. Use one of the alternative gitignore files instead: +# * NotesOnly.gitignore +# * NotesAndCoreConfiguration.gitignore + +# The current application UI state (DOM layout, recently-opened files, etc.) is +# stored in these files (separate for desktop and mobile) so you can resume +# your session seamlessly after a restart. If you want to track UI state, use +# the Workspaces core plugin instead of relying on these files. +.obsidian/workspace.json +.obsidian/workspace-mobile.json + +# Obsidian plugins are stored under .obsidian/plugins/$plugin_name. They +# contain metadata (manifest.json), application code (main.js), stylesheets +# (styles.css), and user-configuration data (data.json). +# We only want to track data.json, so we: +# 1. exclude everything under the plugins directory recursively, +# 2. unignore the plugin directories themselves, which then allows us to +# 3. unignore the data.json files +.obsidian/plugins/**/* +!.obsidian/plugins/*/ +!.obsidian/plugins/*/data.json diff --git a/options/gitignore/NotesOnly b/options/gitignore/NotesOnly new file mode 100644 index 0000000000..2b3b76ee0e --- /dev/null +++ b/options/gitignore/NotesOnly @@ -0,0 +1,4 @@ +# Excludes all Obsidian-related configuration. All notes are tracked by Git. + +# All Obsidian configuration and runtime state is stored here +.obsidian/**/* diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index e02c999b35..d8d90241d0 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -2873,6 +2873,8 @@ issues.reaction.alt_add = Přidat %[1]s reakci na komentář. archive.pull.noreview = Tento repozitář je archivován. Nemůžete kontrolovat žádosti o sloučení. editor.commit_email = E-mail revize commits.view_single_diff = Zobrazit změny tohoto souboru provedené v této revizi +pulls.editable = Upravitelné +pulls.editable_explanation = Tato žádost o sloučení umožňuje úpravy správci. Můžete přispět přímo do ní. [graphs] component_loading_info = Tohle může chvíli trvat… @@ -3008,8 +3010,8 @@ teams.invite.by=Pozvání od %s teams.invite.description=Pro připojení k týmu klikněte na tlačítko níže. follow_blocked_user = Tuto organizaci nemůžete sledovat, protože jste v ní zablokováni. open_dashboard = Otevřít nástěnku -settings.change_orgname_redirect_prompt.with_cooldown.one = Staré uživatelské jméno bude dostupné ostatním po %[1]d dni. Do té doby budete moci své staré uživatelské jméno znovu získat. -settings.change_orgname_redirect_prompt.with_cooldown.few = Staré uživatelské jméno bude dostupné ostatním po %[1]d dnech. Do té doby budete moci své staré uživatelské jméno znovu získat. +settings.change_orgname_redirect_prompt.with_cooldown.one = Starý název organizace bude dostupný ostatním po %[1]d dni. Do té doby budete moci staré jméno znovu získat. +settings.change_orgname_redirect_prompt.with_cooldown.few = Starý název organizace bude dostupný ostatním po %[1]d dnech. Do té doby budete moci starý název znovu získat. [admin] dashboard=Přehled @@ -3956,6 +3958,7 @@ workflow.dispatch.success = Žádost o spuštění workflow byla úspěšně ode runs.expire_log_message = Protokoly byly smazány, protože byly příliš staré. runs.no_workflows.help_no_write_access = Pro více informací o Forgejo Actions se podívejte do dokumentace. runs.no_workflows.help_write_access = Nevíte, jak začít s Forgejo Actions? Podívejte se na rychlý začátek v uživatelské dokumentaci pro vytvoření vašeho prvního workflow. Poté nastavte runner Forgejo pro provádění vašich úloh. +variables.not_found = Nepodařilo se najít proměnnou. [projects] type-1.display_name=Samostatný projekt diff --git a/options/locale/locale_da.ini b/options/locale/locale_da.ini index 0e026d69c9..04c3ee2a50 100644 --- a/options/locale/locale_da.ini +++ b/options/locale/locale_da.ini @@ -1827,6 +1827,34 @@ pulls.blocked_by_outdated_branch = Denne pull-anmodning er blokeret, fordi den e pulls.blocked_by_changed_protected_files_1 = Denne pull-anmodning er blokeret, fordi den ændrer en beskyttet fil: pulls.blocked_by_changed_protected_files_n = Denne pull-anmodning er blokeret, fordi den ændrer beskyttede filer: pulls.can_auto_merge_desc = Denne pull-anmodning kan flettes automatisk. +pulls.approve_count_1 = %d godkendelse +pulls.num_conflicting_files_n = %d modstridende filer +pulls.num_conflicting_files_1 = %d modstridende fil +pulls.approve_count_n = %d godkendelser +pulls.reject_count_1 = %d ændringsanmodning +commits.view_single_diff = Se ændringer til denne fil introduceret i denne commit +pulls.cannot_auto_merge_helper = Flet manuelt for at løse konflikterne. +pulls.cannot_auto_merge_desc = Denne pull-anmodning kan ikke flettes automatisk på grund af konflikter. +pulls.reject_count_n = %d ændringsanmodninger +pulls.no_merge_desc = Denne pull-anmodning kan ikke flettes, fordi alle depotsfletningsmuligheder er deaktiveret. +pulls.no_merge_helper = Aktiver fletteindstillinger i depotindstillingerne, eller flet pull-anmodningen manuelt. +pulls.no_merge_wip = Denne pull-anmodning kan ikke flettes, fordi den er markeret som værende et igangværende arbejde. +pulls.no_merge_not_ready = Denne pull-anmodning er ikke klar til at blive flettet, tjek gennemgangsstatus og statustjek. +pulls.squash_merge_pull_request = Opret squash-commit +pulls.fast_forward_only_merge_pull_request = Spol kun frem +pulls.merge_manually = Manuel flet +pulls.merge_commit_id = Flettes commit ID +pulls.require_signed_wont_sign = Grenen kræver underskrevne tilsagn, men denne fletning vil ikke blive underskrevet +pulls.waiting_count_n = %d venter på gennemgange +pulls.wrong_commit_id = commit id skal være et commit id på målgrenen +pulls.blocked_by_user = Du kan ikke oprette en pull-anmodning på dette depot, fordi du er blokeret af depotets ejer. +pulls.no_merge_access = Du er ikke autoriseret til at flette denne pull-anmodning. +pulls.merge_pull_request = Opret flet commit +pulls.rebase_merge_pull_request = Rebaser og spole derefter frem +pulls.rebase_merge_commit_pull_request = Rebase og opret derefter flet commit +pulls.waiting_count_1 = %d venter på gennemgang +pulls.invalid_merge_option = Du kan ikke bruge denne fletteindstilling til denne pull-anmodning. +pulls.merge_conflict = Sammenfletning mislykkedes: Der var en konflikt under sammenlægningen. Tip: Prøv en anden strategi [notification] watching = Overvåger diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 5a3ab3a2c2..465f9b9b12 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -2874,6 +2874,7 @@ summary_card_alt = Zusammenfassungskarte des Repositorys %s release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s archive.pull.noreview = Dieses Repository ist archiviert. Pull-Requests können nicht gereviewt werden. editor.commit_email = Commit-E-Mail +commits.view_single_diff = Änderungen an dieser Datei, die in diesem Commit eingeführt wurden, betrachten [graphs] component_loading_failed = Konnte %s nicht laden @@ -3959,6 +3960,7 @@ workflow.dispatch.success = Ausführung des Workflows wurde erfolgreich angefrag runs.expire_log_message = Logs wurden gelöscht, weil sie zu alt waren. runs.no_workflows.help_write_access = Keine Ahnung, wie man mit Forgejo Actions anfangen soll? Schau im Schnellstart in der Benutzerdokumentation vorbei, um deinen ersten Workflow zu schreiben, dann setze einen Forgejo-Runner auf, um deine Jobs auszuführen. runs.no_workflows.help_no_write_access = Um über Forgejo Actions zu lernen, siehe die Dokumentation. +variables.not_found = Die Variable wurde nicht gefunden. [projects] type-1.display_name=Individuelles Projekt diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini index e80b815843..c7d20e8355 100644 --- a/options/locale/locale_el-GR.ini +++ b/options/locale/locale_el-GR.ini @@ -2828,6 +2828,8 @@ milestones.filter_sort.name = Όνομα release.type_external_asset = Εξωτερικό αρχείο mirror_public_key = Δημόσιο κλειδί SSH mirror_use_ssh.helper = το Forgejo θα κατοπτρίσει το αποθετήριο μέσω Git με τη χρήση SSH και θα δημιουργήσει ένα ζεύγος κλειδιών. Πρέπει να εξασφαλίσετε πως το δημιουργημένο κλειδί είναι εξουσιοδοτημένο να ωθεί στο αποθετήριο προορισμού. Εφόσον το έχετε επιλέξει, δε μπορείτε να χρησιμοποιήσετε εξουσιοδότηση συνθηματικού. +issues.all_title = Όλα +editor.add_tmpl.filename = Όνομα αρχείου [graphs] component_loading_failed = Δεν ήταν δυνατή η φόρτωση του %s diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index f053a429f9..ae6bc53924 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -853,6 +853,8 @@ email_preference_set_success = Email preference has been set successfully. add_openid_success = The new OpenID address has been added. keep_email_private = Hide email address keep_email_private_popup = Your email address will not be shown on your profile and will not be the default for commits made via the web interface, like file uploads, edits, and merge commits. Instead, a special address %s can be used to link commits to your account. This option will not affect existing commits. +keep_pronouns_private = Only show pronouns to authenticated users +keep_pronouns_private.description = This will hide your pronouns from visitors that are not logged in. openid_desc = OpenID lets you delegate authentication to an external provider. manage_ssh_keys = Manage SSH keys @@ -1996,6 +1998,9 @@ pulls.reopen_failed.base_branch = The pull request cannot be reopened, because t pulls.made_using_agit = AGit pulls.agit_explanation = Created using the AGit workflow. AGit lets contributors propose changes using "git push" without creating a fork or a new branch. +pulls.editable = Editable +pulls.editable_explanation = This pull request allows edits from maintainers. You can contribute directly to it. + pulls.auto_merge_button_when_succeed = (When checks succeed) pulls.auto_merge_when_succeed = Auto merge when all checks succeed pulls.auto_merge_newly_scheduled = The pull request was scheduled to merge when all checks succeed. @@ -2888,8 +2893,8 @@ settings.update_settings = Update settings settings.update_setting_success = Organization settings have been updated. settings.change_orgname_prompt = Note: Changing the organization name will also change your organization's URL and free the old name. settings.change_orgname_redirect_prompt = The old name will redirect until it is claimed. -settings.change_orgname_redirect_prompt.with_cooldown.one = The old username will be available to everyone after a cooldown period of %[1]d day, you can still reclaim the old username during the cooldown period. -settings.change_orgname_redirect_prompt.with_cooldown.few = The old username will be available to everyone after a cooldown period of %[1]d days, you can still reclaim the old username during the cooldown period. +settings.change_orgname_redirect_prompt.with_cooldown.one = The old organization name will be available to everyone after a cooldown period of %[1]d day, you can still reclaim the old name during the cooldown period. +settings.change_orgname_redirect_prompt.with_cooldown.few = The old organization name will be available to everyone after a cooldown period of %[1]d days, you can still reclaim the old name during the cooldown period. settings.update_avatar_success = The organization's avatar has been updated. settings.delete = Delete organization settings.delete_account = Delete this organization @@ -3932,4 +3937,4 @@ filepreview.lines = Lines %[1]d to %[2]d in %[3]s filepreview.truncated = Preview has been truncated [translation_meta] -test = This is a test string. It is not displayed in Forgejo UI but is used for testing purposes. Feel free to enter "ok" to save time (or a fun fact of your choice) to hit that sweet 100% completion mark :) \ No newline at end of file +test = This is a test string. It is not displayed in Forgejo UI but is used for testing purposes. Feel free to enter "ok" to save time (or a fun fact of your choice) to hit that sweet 100% completion mark :) diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index e2c9dc4bdd..8f515ec424 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -134,6 +134,11 @@ new_repo.title = مخزن جدید new_migrate.title = مهاجرت جدید new_repo.link = مخزن جدید +filter = فیلتر +filter.is_archived = بایگانی شده +filter.public = عمومی +filter.private = خصوصی + [aria] [heatmap] @@ -1987,6 +1992,8 @@ error.csv.too_large=نمی توان این فایل را رندر کرد زیر error.csv.unexpected=نمی توان این فایل را رندر کرد زیرا حاوی یک کاراکتر غیرمنتظره در خط %d و ستون %d است. error.csv.invalid_field_count=نمی توان این فایل را رندر کرد زیرا تعداد فیلدهای آن در خط %d اشتباه است. +milestones.filter_sort.name = نام + [graphs] [org] @@ -2540,6 +2547,9 @@ notices.op=عملیات. notices.delete_success=گزارش سیستم حذف شده است. +config_summary = چکیده +config_settings = تنظيمات + [action] create_repo=مخزن ایجاد شده %s rename_repo=مخزن تغییر نام داد از %[1]s به %[3]s @@ -2669,3 +2679,5 @@ executable_file = فایل اجرایی normal_file = فایل معمولی changed_filemode = %[1] ها ← %[2] ها directory = پوشه + +[search] diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini index 84940f5e45..6dae1bd947 100644 --- a/options/locale/locale_fi-FI.ini +++ b/options/locale/locale_fi-FI.ini @@ -290,7 +290,7 @@ server_service_title=Palvelimen ja kolmansien osapuolten palveluiden asetukset offline_mode=Ota käyttöön lokaali tila offline_mode.description=Poista kolmannen osapuolen sisällönjakeluverkot ja tarjoa kaikki resurssit paikallisesti. disable_gravatar=Poista Gravatar käytöstä -disable_gravatar.description=Poista Gravatar ja kolmannen osapuolen avaratir käytöstä. Oletus-avatar näytetään, ellei käyttäjä ole ladannut omaansa. +disable_gravatar.description=Poista Gravatar- tai muiden kolmansien osapuolien avatar-lähteet käytöstä. Oletuskuvia käytetään käyttäjien avatareissa, elleivät he uloslataa omaa avatariaan ilmentymään. federated_avatar_lookup=Käytä federoituja profiilikuvia federated_avatar_lookup.description=Käytä Libravatar-palvelua profiilikuvien hakemiseen. disable_registration=Poista omatoiminen rekisteröityminen käytöstä @@ -953,7 +953,7 @@ repo_name=Repon nimi repo_name_helper=Hyvä repon nimi on lyhyt, mieleenpainuva ja yksilöllinen. repo_size=Repon koko template=Malli -template_select=Valitse malli. +template_select=Valitse malli template_helper=Tee reposta mallipohja visibility=Näkyvyys visibility_description=Vain omistaja tai organisaation jäsenet, jos heillä on oikeudet, voivat nähdä sen. @@ -968,7 +968,7 @@ repo_desc=Kuvaus repo_lang=Kieli repo_gitignore_helper=Valitse .gitignore-mallit issue_labels=Ongelmien tunnisteet -issue_labels_helper=Valitse pohja ongelmien nimilapuille. +issue_labels_helper=Valitse nimiöjoukko license=Lisenssi license_helper=Valitse lisenssitiedosto readme=README @@ -1507,12 +1507,12 @@ settings.protected_branch=Haaran suojaus settings.branch_protection=Haaran "%s" suojaussäännöt settings.protect_this_branch=Ota haaran suojaus käyttöön settings.protect_whitelist_deploy_keys=Lisää julkaisuavaimet sallittujen listalle mahdollistaaksesi repohin kirjoituksen. -settings.protect_whitelist_users=Lista käyttäjistä joilla työntö oikeus: +settings.protect_whitelist_users=Sallitut käyttäjät suhteessa työntämiseen settings.protect_whitelist_search_users=Etsi käyttäjiä… settings.protect_merge_whitelist_committers_desc=Salli vain listaan merkittyjen käyttäjien ja tiimien yhdistää vetopyynnöt tähän haaraan. -settings.protect_merge_whitelist_users=Lista käyttäjistä joilla yhdistämis-oikeus: +settings.protect_merge_whitelist_users=Sallitut käyttäjät suhteessa yhdistämiseen settings.protect_required_approvals=Vaadittavat hyväksynnät -settings.protect_approvals_whitelist_users=Sallittujen tarkastajien lista: +settings.protect_approvals_whitelist_users=Sallittujen tarkastajien lista settings.choose_branch=Valitse haara… settings.no_protected_branch=Suojattuja haaroja ei ole. settings.edit_protected_branch=Muokkaa @@ -1686,7 +1686,7 @@ settings.event_issue_comment = Kommentit diff.download_patch = Lataa patch-tiedosto issues.filter_milestone_none = Ei merkkipaaluja issues.filter_milestone_open = Avoimet merkkipaalut -new_repo_helper = Repositorio eli tietovarasto sisältää kaikki projektin tiedostot, mukaan lukien versiohistorian. Onko sinulla repo jo jossain muualla? Tee repomigraatio. +new_repo_helper = Tietovarasto sisältää kaikki projektitiedostot, mukaan lukien tarkistushistoria. Järjestätkö jo sellaisen muualla? Siirrä tietovarasto. use_template = Käytä tätä mallipohjaa star_guest_user = Kirjaudu sisään lisätäksesi tähden tähän repoon. watch_guest_user = Kirjaudu sisään tarkkaillaksesi tätä repoa. diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini index c0e02ede79..cde800f842 100644 --- a/options/locale/locale_fil.ini +++ b/options/locale/locale_fil.ini @@ -2730,6 +2730,9 @@ summary_card_alt = Pangkalahatang-ideyang card ng repositoryo na %s release.summary_card_alt = Pangkalahatang-ideyang card ng isang release na nakapamagat na "%s" sa repositoryo na %s editor.commit_email = Email ng commit archive.pull.noreview = Naka-archive ang repositoryong ito. Hindi ka makakasuri ng mga hiling sa paghila. +commits.view_single_diff = Tignan ang mga pagbabago sa file na ito na ipinakilala sa commit na ito +pulls.editable = Nababago +pulls.editable_explanation = Pinapayagan ng hiling sa paghila na ito ang mga pagbabago mula sa mga tagapangasiwa. Maaari kang direktang mag-ambag dito. [search] commit_kind = Maghanap ng mga commit… @@ -3400,8 +3403,8 @@ teams.owners_permission_desc = Ang mga owner ay may punong access sa lah teams.add_nonexistent_repo = Hindi pa umiiral ang repositoryo na sinusubukan mong idagdag. Mangyaring gawin iyan muna. teams.all_repositories = Lahat ng mga repositoryo teams.all_repositories_helper = Ang koponan ay may access sa lahat ng mga repositoryo. Ang pagpili nito ay idadagdag ang lahat ng mga umiiral na repositoryo sa koponan. -settings.change_orgname_redirect_prompt.with_cooldown.few = Magiging available ang lumang username sa lahat pagkatapos ng panahon ng cooldown ng %[1]d araw, maari mo pa ring ma-claim muli ang lumang username sa panahon ng panahon ng cooldown. -settings.change_orgname_redirect_prompt.with_cooldown.one = Magiging available ang lumang username sa lahat pagkatapos ng panahon ng cooldown ng %[1]d araw, maari mo pa ring ma-claim muli ang lumang username sa panahon ng panahon ng cooldown. +settings.change_orgname_redirect_prompt.with_cooldown.few = Magiging available ang lumang pangalan ng organisasyon sa lahat pagkatapos ng panahon ng cooldown ng %[1]d araw, maari mo pa ring ma-claim muli ang lumang pangalan sa panahon ng cooldown. +settings.change_orgname_redirect_prompt.with_cooldown.one = Magiging available ang lumang pangalan ng organisasyon sa lahat pagkatapos ng panahon ng cooldown ng %[1]d araw, maari mo pa ring ma-claim muli ang lumang pangalan ng panahon ng cooldown. [packages] @@ -3680,6 +3683,7 @@ variables.creation.success = Nadagdag na ang variable na "%s". runs.expire_log_message = Na-purge ang mga log dahil masyado silang luma. runs.no_workflows.help_write_access = Hindi alam kung paano magsimula sa Forgejo Actions? Tignan ang mabilisang pagsimula sa user documentation para magsimulang magsulat ng unang workflow, at mag-setup ng Forgejo runner para patakbuhin ang mga job. runs.no_workflows.help_no_write_access = Para matuto tungkol sa Forgejo Actions, tignan ang dokumentasyon. +variables.not_found = Nabigong hanapin ang variable. [action] commit_repo = itinulak sa %[3]s sa %[4]s diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 7a881829c5..6243ed45a0 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -2871,6 +2871,7 @@ issues.context.menu = Menu commentaire summary_card_alt = Carte résumé du dépôt %s archive.pull.noreview = Ce dépôt est archivé. Vous ne pouvez pas faire de revue de demandes d'ajout. editor.commit_email = Courriel de commit +commits.view_single_diff = Voir les changements dans ce fichier introduit par ce commit [graphs] component_loading = Chargement %s... @@ -3955,6 +3956,7 @@ workflow.dispatch.warn_input_limit = Affichage des %d premiers champs seulement. runs.expire_log_message = Les journaux ont été purgés car ils étaient trop anciens. runs.no_workflows.help_write_access = Vous ne savez pas par où commencer avec Forgejo Actions ? Regardez la section démarrage rapide dans la documentation utilisateur pour écrire votre premier workflow, puis mettre en place un Forgejo runner pour exécuter vos jobs. runs.no_workflows.help_no_write_access = Pour en savoir plus sur Forgejo Actions, consultez la documentation. +variables.not_found = La variable n'a pas été trouvée. [projects] type-1.display_name=Projet personnel diff --git a/options/locale/locale_ga-IE.ini b/options/locale/locale_ga-IE.ini new file mode 100644 index 0000000000..b7372e12f2 --- /dev/null +++ b/options/locale/locale_ga-IE.ini @@ -0,0 +1,2996 @@ +[common] +home = Baile +dashboard = Deais +explore = Iniúch +help = Cabhair +logo = Lógó +sign_in = Sínigh isteach +sign_in_with_provider = Sínigh isteach le %s +sign_in_or = nó +sign_out = Sínigh amach +sign_up = Cláraigh +link_account = Cuntas Nasc +register = Cláraigh +version = Leagan +powered_by = Cumhachtaithe ag %s +page = Leathanach +template = Teimpléad +language = Teanga +notifications = Fógraí +active_stopwatch = Rianaitheoir Ama Gníomhach +tracked_time_summary = Achoimre ar an am rianaithe bunaithe ar scagairí an liosta eisiúna +create_new = Cruthaigh... +user_profile_and_more = Próifíl agus Socruithe... +signed_in_as = Sínithe isteach mar +enable_javascript = Éilíonn JavaScript ar an suíomh Gréasáin seo. +toc = Tábla na nÁbhar +licenses = Ceadúnais +more_items = Tuilleadh míreanna +username = Ainm úsáideora +email = Seoladh ríomhphoist +password = Pasfhocal +access_token = Comhartha Rochtana +re_type = Deimhnigh Pasfhocal +captcha = CAPTCHA +twofa = Fíordheimhniú Dhá-Fhachtóir +twofa_scratch = Cód Scratch Dhá-Fhachtóra +passcode = Paschód +webauthn_insert_key = Cuir isteach d'eochair slándála +webauthn_sign_in = Brúigh an cnaipe ar d'eochair slándála. Mura bhfuil aon chnaipe ag d'eochair slándála, cuir isteach é arís. +webauthn_press_button = Brúigh an cnaipe ar d'eochair slándála le do thoil… +webauthn_use_twofa = Úsáid cód dhá fhachtóir ó do ghuthán +webauthn_error = Ní fhéadfaí do eochair slándála a léamh. +webauthn_unsupported_browser = Ní thacaíonn do bhrabhsálaí le WebAuthn faoi láthair. +webauthn_error_unknown = Tharla earráid anaithnid. Déan iarracht arís. +webauthn_error_insecure = Ní thacaíonn WebAuthn ach le naisc slán. Le haghaidh tástála thar HTTP, is féidir leat an bunús “localhost” nó "127.0.0.1" a úsáid +webauthn_error_unable_to_process = Ní fhéadfadh an freastalaí d'iarratas a phróiseáil. +webauthn_error_duplicated = Ní cheadaítear an eochair slándála don iarratas seo. Déan cinnte le do thoil nach bhfuil an eochair cláraithe cheana féin. +webauthn_error_empty = Ní mór duit ainm a shocrú don eochair seo. +webauthn_error_timeout = Sroicheadh an teorainn ama sula bhféadfaí d’eochair a léamh. Athlódáil an leathanach seo, le do thoil, agus déan iarracht arís. +repository = Stór +organization = Eagraíocht +mirror = Scáthán +new_mirror = Scáthán Nua +new_fork = Forc Stór Nua +new_project = Tionscadal Nua +new_project_column = Colún Nua +admin_panel = Riarachán Láithreáin +settings = Socruithe +your_profile = Próifíl +your_starred = Réaltaigh +your_settings = Socruithe +all = Gach +sources = Foinsí +mirrors = Scátháin +collaborative = Comhoibritheach +forks = Forcanna +activities = Gníomhaíochtaí +pull_requests = Iarrataí Tarraing +issues = Saincheisteanna +milestones = Clocha míle +ok = CEART GO LEOR +cancel = Cealaigh +retry = Atriail +rerun = Ath-rith +rerun_all = Ath-rith na poist go léir +save = Sábháil +add = Cuir +add_all = Cuir Gach +remove = Bain +remove_all = Bain Gach +remove_label_str = Bain mír “%s” +edit = Cuir in eagar +view = Amharc +test = Tástáil +enabled = Cumasaithe +disabled = Díchumasaithe +locked = Faoi ghlas +copy = Cóipeáil +copy_url = Cóipeáil URL +copy_hash = Cóipeáil hais +copy_path = Cóipeáil cosán +copy_content = Cóipeáil ábhair +copy_branch = Ainm brainse cóipeáil +copy_success = Cóipeáil! +copy_error = Theip ar an gcóipeáil +copy_type_unsupported = Ní féidir an cineál comhaid seo a chóipeáil +write = Scríobh +preview = Réamhamharc +loading = Á lódáil... +error = Earráid +error404 = Níl an leathanach atá tú ag iarraidh a bhaint amach annníl tú údaraithe chun é a fheiceáil. +go_back = Ar ais +invalid_data = Sonraí neamhbhailí: %v +never = Riamh +unknown = Anaithnid +rss_feed = Fothú RSS +pin = Bioráin +unpin = Díphoráil +artifacts = Déantáin +archived = Cartlann +concept_system_global = Domhanda +concept_user_individual = Duine aonair +concept_code_repository = Stóráil +concept_user_organization = Eagraíocht +show_timestamps = Taispeáin stampaí ama +show_log_seconds = Taispeáin soicindí +show_full_screen = Taispeáin scáileán iomlán +download_logs = Íoslódáil logaí +confirm_delete_selected = Deimhnigh chun gach earra roghnaithe a scriosadh? +name = Ainm +value = Luach +filter = Scagaire +filter.is_archived = Cartlannaithe +filter.not_archived = Gan Cartlannaithe +filter.public = Poiblí +filter.private = Príobháideach + +[search] +search = Cuardaigh... +type_tooltip = Cineál cuardaigh +fuzzy = Doiléir +fuzzy_tooltip = Cuir san áireamh torthaí a mheaitseálann an téarma cuardaigh go dlúth freisin +exact = Beacht +exact_tooltip = Ní chuir san áireamh ach torthaí a mheaitseálann leis an téarma +repo_kind = Cuardaigh stórtha... +user_kind = Cuardaigh úsáideoirí... +org_kind = Cuardaigh eagraíochtaí... +team_kind = Cuardaigh foirne... +code_kind = Cód cuardaigh... +code_search_unavailable = Níl cuardach cód ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin. +package_kind = Cuardaigh pacáistí... +project_kind = Cuardaigh tionscadail... +branch_kind = Cuardaigh brainsí... +commit_kind = Cuardaigh tiomáintí... +runner_kind = Cuardaigh reathaithe... +no_results = Níl aon torthaí meaitseála le fáil. +issue_kind = Saincheisteanna cuardaigh... +pull_kind = Cuardaigh iarratais tarraingthe... +keyword_search_unavailable = Níl cuardach de réir eochairfhocal ar fáil faoi láthair. Déan teagmháil le riarthóir an láithreáin. + +[aria] +navbar = Barra Nascleanúint +footer = Buntásc +footer.links = Naisc + +[heatmap] +number_of_contributions_in_the_last_12_months = %s ranníocaíochtaí le 12 mhí anuas +less = Níos lú +more = Níos mó + +[editor] +buttons.heading.tooltip = Cuir ceannteideal leis +buttons.bold.tooltip = Cuir téacs trom leis +buttons.italic.tooltip = Cuir téacs iodálach leis +buttons.quote.tooltip = Téacs luaigh +buttons.code.tooltip = Cuir cód leis +buttons.link.tooltip = Cuir nasc leis +buttons.list.unordered.tooltip = Cuir liosta piléar leis +buttons.list.ordered.tooltip = Cuir liosta uimhrithe +buttons.list.task.tooltip = Cuir liosta tascanna leis +buttons.mention.tooltip = Luaigh úsáideoir nó foireann +buttons.ref.tooltip = Déan tagairt d'eisiúint nó iarratas tarraingthe +buttons.switch_to_legacy.tooltip = Úsáid an eagarthóir oidhreachta ina ionad +buttons.enable_monospace_font = Cumasaigh cló monospace +buttons.disable_monospace_font = Díchumasaigh cló monospace + +[filter] +string.asc = A - Z +string.desc = Z - A + +[error] +occurred = Tharla earráid +not_found = Ní raibh an sprioc in ann a fháil. +network_error = Earráid líonra + +[startpage] +app_desc = Seirbhís Git gan phian, féin-óstáil +install = Éasca a shuiteáil +install_desc = Níl ort ach rith an dénártha do d'ardán, seol é le Docker, nó faigh pacáilte é. +platform = Tras-ardán +lightweight = Éadrom +license = Foinse Oscailte + +[install] +install = Suiteáil +title = Cumraíocht Tosaigh +db_title = Socruithe Bunachar Sonraí +db_type = Cineál Bunachar Sonraí +host = Óstach +user = Ainm úsáideora +password = Pasfhocal +db_name = Ainm Bunachar Sonraí +db_schema = Scéim +db_schema_helper = Fág bán le haghaidh réamhshocraithe bunachar sonraí ("poiblí"). +ssl_mode = SSL +path = Cosán +reinstall_confirm_check_1 = Féadfaidh na sonraí criptithe ag an SECRET_KEY i app.ini a chailleadh: b'fhéidir nach mbeidh úsáideoirí in ann logáil isteach le 2FA/OTP & b'fhéidir nach bhfeidhmeoidh scátháin i gceart. Trí an bhosca seo a sheiceáil deimhníonn tú go bhfuil an ceart an SECRET_KEY sa chomhad reatha app.ini. +reinstall_confirm_check_2 = B'fhéidir go gcaithfear na stórais agus na socruithe a athshioncronú. Trí an bhosca seo a sheiceáil deimhníonn tú go ndéanfaidh tú na crúcaí do na stórálacha agus an chomhad authorized_keys a athshioncronú de láimh. Deimhníonn tú go gcinnteoidh tú go bhfuil socruithe stórais agus scátháin ceart. +err_empty_db_path = Ní féidir cosán bunachar sonraí SQLite3 a bheith folamh. +no_admin_and_disable_registration = Ní féidir leat féinchlárú úsáideora a dhíchumasú gan cuntas riarthóra a chruthú. +err_empty_admin_password = Ní féidir le pasfhocal an riarthóra a bheith folamh. +err_empty_admin_email = Ní féidir le ríomhphost an riarthóra a bheith folamh. +err_admin_name_is_reserved = Riarthóir Tá an t-ainm úsáideora neamhbhailí, tá an t-ainm úsáideora curtha in áirithe +err_admin_name_pattern_not_allowed = Tá ainm úsáideora an riarthóra neamhbhailí, meaitseálann an t-ainm úsáideora patrún in áirithe +err_admin_name_is_invalid = Tá an t-ainm úsáideora Riarthóra neamhbhailí +general_title = Socruithe Ginearálta +repo_path = Cosán Fréimhe an Stór +repo_path_helper = Sábhálfar stórais iargúlta Git chuig an eolaire seo. +lfs_path = Cosán Fréamh Git LFS +lfs_path_helper = Stórálfar comhaid a rianóidh Git LFS san eolaire seo. Fág folamh le díchumasú. +domain = Fearann ​​Freastalaí +domain_helper = Seoladh fearainn nó óstach don fhreastalaí. +ssh_port = Port Freastalaí SSH +app_url_helper = Seoladh bonn le haghaidh URLanna clóin HTTP(S) agus fógraí ríomhphoist. +log_root_path = Cosán Logála +log_root_path_helper = Scríofar comhaid logála chuig an eolaire seo. +optional_title = Socruithe Roghnacha +email_title = Socruithe ríomhphoist +smtp_addr = Óstach SMTP +smtp_port = Port SMTP +smtp_from = Seol Ríomhphost Mar +smtp_from_invalid = Tá an seoladh “Seol Ríomhphost Mar” neamhbhailí +mailer_user = SMTP Ainm úsáideora +mailer_password = Pasfhocal SMTP +register_confirm = Deimhniú Ríomhphoist a cheangal le Clárú +mail_notify = Cumasaigh Fógraí Ríomhphoist +server_service_title = Socruithe Freastalaí agus Seirbhíse Tríú Páirtí +offline_mode = Cumasaigh Mód Áitiúil +disable_gravatar = Díchumasaigh Gravatar +federated_avatar_lookup = Cumasaigh Abhatáir Chónaidhme +disable_registration = Díchumasaigh Féin-Chlárú +openid_signin = Cumasaigh Síniú isteach OpenID +openid_signup = Cumasaigh Féinchlárú OpenID +enable_captcha = Cumasaigh clárú CAPTCHA +default_keep_email_private = Folaigh Seoltaí Ríomhphoist de réir Réamhshocrú +default_allow_create_organization = Ceadaigh Cruthú Eagraíochtaí de réir Réamhshocrú +default_enable_timetracking = Cumasaigh Rianú Ama de réir Réamhshocrú +admin_title = Socruithe Cuntas Riarthóra +admin_name = Ainm Úsáideora an Riarthóra +admin_password = Pasfhocal +confirm_password = Deimhnigh Pasfhocal +admin_email = Seoladh ríomhphoist +invalid_db_setting = Tá na socruithe bunachar sonraí neamhbhailí:%v +invalid_db_table = Tá an tábla bunachar sonraí "%s" neamhbhailí: %v +invalid_repo_path = Tá cosán fréimhe an stór neamhbhailí:%v +invalid_app_data_path = Tá cosán sonraí an aip neamhbhailí:%v +internal_token_failed = Theip ar chomhartha inmheánach a ghiniúint:%v +secret_key_failed = Theip ar an eochair rúnda a ghiniúint:%v +save_config_failed = Theip ar chumraíocht a shábháil:%v +invalid_admin_setting = Tá socrú cuntas riarthóra neamhbhailí: %v +invalid_log_root_path = Tá an cosán logála neamhbhailí:%v +no_reply_address = Fearann Ríomhphoist Folaite +password_algorithm = Algartam Hais Pasfhocal +invalid_password_algorithm = Algartam hais pasfhocail neamhbhailí +password_algorithm_helper = Socraigh an algartam hashing pasfhocal. Tá riachtanais agus neart éagsúla ag halgartaim. Tá an algartam argon2 sách slán ach úsáideann sé go leor cuimhne agus d'fhéadfadh sé a bheith míchuí do chórais bheaga. +enable_update_checker = Cumasaigh Seiceoir Nuashonraithe +env_config_keys = Cumraíocht Comhshaoil +env_config_keys_prompt = Cuirfear na hathróga comhshaoil seo a leanas i bhfeidhm ar do chomhad cumraíochta freisin: + +[home] +uname_holder = Ainm Úsáideora nó Seoladh Ríomhphoist +switch_dashboard_context = Athraigh Comhthéacs an Deais +my_repos = Stórais +view_home = Amharc %s +filter = Scagairí Eile +filter_by_team_repositories = Scag de réir stórais foirne +feed_of = `Fotha de "%s"` +show_archived = Cartlannaithe +show_both_archived_unarchived = Ag taispeáint idir chartlannaithe agus neamhchartlann +show_only_archived = Ag taispeáint ach na cartlannaigh +show_only_unarchived = Ag taispeáint ach na cartlannaigh neamh +show_private = Príobháideach +show_both_private_public = Ag taispeáint poiblí agus príobháideach araon +show_only_private = Ag taispeáint príobháideach amháin +show_only_public = Ag taispeáint poiblí amháin +issues.in_your_repos = I do stórais + +[explore] +repos = Stórais +users = Úsáideoirí +organizations = Eagraíochtaí +go_to = Téigh chuig +code = Cód +code_last_indexed_at = Innéacsaithe %s is déanaí +relevant_repositories_tooltip = Tá stórais atá forca iad nó nach bhfuil aon ábhar acu, gan aon deilbhín, agus gan aon tuairisc i bhfolach. +relevant_repositories = Níl ach stórtha ábhartha á dtaispeáint, taispeáin torthaí neamhscagtha. + +[auth] +create_new_account = Cláraigh Cuntas +disable_register_prompt = Tá clárú faoi dhíchumasú. Téigh i dteagmháil le do riarthóir suíomh. +disable_register_mail = Tá deimhniú ríomhphoist le haghaidh clárú faoi dhíchum +manual_activation_only = Déan teagmháil le riarthóir do tsuímh chun gníomhachtú a chur i gcrích. +remember_me = Cuimhnigh ar an nGléas seo +forgot_password_title = Dearmad ar an bPasfhocal +forgot_password = Dearmad ar an bPasfhocal? +sign_up_successful = Cruthaíodh cuntas go rathúil. Fáilte romhat! +must_change_password = Nuashonraigh do phasfhocal +allow_password_change = A cheangal ar an úsáideoir pasfhocal a athrú (molta) +active_your_account = Gníomhachtaigh do chuntas +account_activated = Cuireadh cuntas gníomhachtaithe +resent_limit_prompt = D'iarr tú ríomhphost gníomhachtaithe cheana féin le déanaí. Fan 3 nóiméad le do thoil agus bain triail as arís. +has_unconfirmed_mail = Dia duit %s, tá seoladh ríomhphoist neamhdheimhnithe agat (%s). Mura bhfuair tú ríomhphost dearbhaithe nó mura gcaithfidh tú ceann nua a athsheoladh, cliceáil ar an gcnaipe thíos le do thoil. +resend_mail = Cliceáil anseo chun do r-phost gníomhachtaithe a athshe +reset_password = Aisghabháil Cuntas +invalid_code = Tá do chód deimhnithe neamhbhailí nó tá sé in éag. +invalid_code_forgot_password = Tá do chód deimhnithe neamhbhailí nó tá sé in éag. Cliceáil anseo chun seisiún nua a thosú. +invalid_password = Ní mheaitseálann do phasfhocal leis an bhfocal faire a úsáideadh chun an cuntas a chruthú. +reset_password_helper = Gnóthaigh Cuntas +reset_password_wrong_user = Tá tú sínithe isteach mar %s, ach tá an nasc aisghabhála cuntas i gceist le haghaidh %s +password_too_short = Ní féidir fad pasfhocal a bheith níos lú ná %d carachtair. +verify = Fíoraigh +scratch_code = Cód Scratch +use_scratch_code = Úsáid cód scratch +twofa_scratch_used = D'úsáid tú do chód scratch. Tá tú atreoraithe chuig an leathanach socruithe dhá fhachtóir ionas gur féidir leat clárú do ghléas a bhaint nó cód scratch nua a ghiniúint. +twofa_passcode_incorrect = Tá do phaschód mícheart. Má chuir tú do ghléas míchuir tú, bain úsáid as do chód scratch chun síniú isteach. +twofa_scratch_token_incorrect = Tá do chód scratch mícheart. +login_userpass = Sínigh isteach +oauth_signup_tab = Cláraigh Cuntas Nua +oauth_signup_title = Comhlánaigh Cuntas Nua +oauth_signup_submit = Cuntas Comhlánaigh +oauth_signin_title = Sínigh isteach chun Cuntas Nasctha a Údarú +oauth_signin_submit = Cuntas Nasc +oauth.signin.error = Bhí earráid ann ag próiseáil an t-iarratas ar údarú. Má leanann an earráid seo, déan teagmháil le riarthóir an láithreáin. +oauth.signin.error.access_denied = Diúltaíodh an t-iarratas ar údarú. +oauth.signin.error.temporarily_unavailable = Theip ar údarú toisc nach bhfuil an fhreastalaí fíordheimhnithe ar fáil Bain triail as arís níos déanaí. +openid_connect_submit = Ceangail +openid_connect_title = Ceangail le cuntas atá ann cheana +openid_connect_desc = Níl an URI OpenID roghnaithe ar eolas. Comhcheangail é le cuntas nua anseo. +openid_register_title = Cruthaigh cuntas nua +openid_register_desc = Níl an URI OpenID roghnaithe ar eolas. Comhcheangail é le cuntas nua anseo. +openid_signin_desc = Cuir isteach do URI OpenID. Mar shampla: alice.openid.example.org nó https://openid.example.org/alice. +disable_forgot_password_mail = Tá aisghabháil cuntas díchumasaithe toisc nach bhfuil aon ríomhphost ar bun. Téigh i dteagmháil le do riarthóir suíomh. +disable_forgot_password_mail_admin = Níl aisghabháil cuntas ar fáil ach amháin nuair a bhíonn ríomhphost ar bun. Bunaigh ríomhphost le do thoil chun aisghabháil cuntas a chumasú +email_domain_blacklisted = Ní féidir leat clárú le do sheoladh ríomhphoist. +authorize_application = Údaraigh an Feidhmchlár +authorize_redirect_notice = Déanfar tú a atreorú chuig %s má údaraíonn tú an feidhmchlár seo. +authorize_application_created_by = Chruthaigh %s an feidhmchlár seo. +authorize_title = Údaraigh "%s" chun rochtain a fháil ar do chuntas? +authorization_failed = Theip ar údarú +authorization_failed_desc = Theip ar an údarú toisc gur bhraitheamar iarratas neamhbhailí. Téigh i dteagmháil le cothabhálaí an aip a rinne tú iarracht a údarú. +password_pwned = Tá an pasfhocal a roghnaigh tú ar liosta na bhfocal faire goidte a nochtadh cheana i sáruithe sonraí poiblí. Bain triail eile as le pasfhocal eile agus smaoinigh ar an bpasfhocal seo a athrú áit eile freisin. +password_pwned_err = Ní fhéadfaí iarratas a chomhlánú ar HaveIBeenPwned +last_admin = Ní féidir leat an riarachán deireanach a bhaint. Caithfidh riarachán amháin ar a laghad a bheith ann. +back_to_sign_in = Ar ais go Sínigh Isteach + +[mail] +view_it_on = Féach air ar %s +reply = nó freagra a thabhairt ar an r-phost seo go díreach +hi_user_x = Dia duit %s, +activate_account = Gníomhachtaigh do chuntas le do thoil +activate_account.text_1 = Dia duit %[1]s, go raibh maith agat as clárú ag %[2]s! +activate_account.text_2 = Cliceáil ar an nasc seo a leanas chun do chuntas a ghníomhachtú laistigh de %s: +activate_email = Fíoraigh do sheoladh ríomhphoist +activate_email.text = Cliceáil ar an nasc seo a leanas le do sheoladh ríomhphoist a fhíorú laistigh de %s: +register_notify = Fáilte go dtí %s +register_notify.text_1 = is é seo do ríomhphost deimhnithe clárúcháin do %s! +reset_password = Aisghabháil do chuntas +register_success = Clárú rathúil +issue_assigned.pull = @%[1]s shann tú don iarratas tarraingthe %[2]s i stór %[3]s. +issue_assigned.issue = @%[1]s shann tú don eisiúint %[2]s i stór %[3]s. +issue.x_mentioned_you = Luaigh @%s tú: +issue.action.force_push = Bhrúigh %[1]s an %[2]s go fórsa ó %[3]s go %[4]s. +issue.action.push_1 = Bhrúigh @%[1]s %[3]d tiomáintí go %[2]s +issue.action.push_n = @%[1]s brúite % [3]d tiomáintí chuig %[2]s +issue.action.close = @%[1]s dúnta #%[2]d. +issue.action.reopen = D'athoscail @%[1]s #%[2]d. +issue.action.merge = Chomhcheangail @%[1]s #%[2]d le %[3]s. +issue.action.approve = Cheadaigh @%[1]s an t-iarratas tarraingthe seo. +issue.action.reject = D'iarr @%[1]s athruithe ar an iarratas tarraingthe seo. +issue.action.review = Rinne @%[1]s trácht ar an iarratas tarraingthe seo. +issue.action.review_dismissed = Dhiúltaigh @%[1]s an léirmheas deiridh ó %[2]s don iarratas tarraingthe seo. +issue.action.ready_for_review = Mharcáil @%[1]s an t-iarratas tarraingthe seo réidh lena athbhreithniú. +issue.action.new = Chruthaigh @%[1]s #%[2]d. +issue.in_tree_path = I %s: +release.new.subject = Scaoileadh %s i %s +release.new.text = D'eisigh @%[1]s %[2]s i %[3]s +release.title = Teideal: %s +release.note = Nóta: +release.downloads = Íoslódálacha: +release.download.zip = Cód Foinse (ZIP) +release.download.targz = Cód Foinse (TAR.GZ) +repo.transfer.to_you = tú +repo.transfer.body = Chun glacadh leis nó a dhiúltú tabhair cuairt ar %s nó neamhaird a dhéanamh air. +team_invite.subject = Tá cuireadh tugtha agat ag %[1]s chun dul le heagraíocht %[2]s +team_invite.text_1 = Tá cuireadh tugtha ag %[1]s duit chun dul le foireann %[2]s in eagraíocht %[3]s. +team_invite.text_2 = Cliceáil ar an nasc seo a leanas le do thoil chun dul isteach san fhoireann: +team_invite.text_3 = Nóta: Bhí an cuireadh seo beartaithe do %[1]s. Mura raibh tú ag súil leis an gcuireadh seo, is féidir leat neamhaird a dhéanamh den ríomhphost seo. + +[modal] +yes = Tá +no = Níl +confirm = Deimhnigh +cancel = Cealaigh +modify = Nuashonraigh + +[form] +UserName = Ainm úsáideora +RepoName = Ainm stórais +Email = Seoladh ríomhphoist +Password = Pasfhocal +Retype = Deimhnigh Pasfhocal +PayloadUrl = URL Pálasta +TeamName = Ainm foirne +AuthName = Ainm údaraithe +AdminEmail = Ríomhphost riaracháin +NewBranchName = Ainm brainse nua +CommitSummary = Achoimre tiomáintí +CommitMessage = Tiomantas teachtaireacht +CommitChoice = Rogha tiomanta +TreeName = Cosán comhaid +Content = Ábhar +SSPISeparatorReplacement = Deighilteoir +SSPIDefaultLanguage = Teanga Réamhshocraithe +require_error = ` ní féidir a bheith folamh.` +git_ref_name_error = ` caithfidh gur ainm tagartha Git dea-chruthaithe é.` +size_error = ` ní mór méid %s.` +min_size_error = ` ní mór go mbeadh carachtar %s ar a laghad ann.` +max_size_error = caithfidh %s carachtar ar a mhéad a bheith ann. +email_error = `ní seoladh ríomhphoist bailí é.` +url_error = `ní URL bailí é "%s".` +include_error = ` ní mór fotheaghrán a bheith ann "%s".` +glob_pattern_error = ` tá patrún glob neamhbhailí: %s.` +regex_pattern_error = `tá patrún regex neamhbhailí: %s.` +invalid_group_team_map_error = ` tá mapáil neamhbhailí: %s` +unknown_error = Earráid anaithnid: +captcha_incorrect = Tá an cód CAPTCHA mícheart. +password_not_match = Ní mheaitseálann na pasfhocail. +lang_select_error = Roghnaigh teanga ón liosta. +username_been_taken = Tá an t-ainm úsáideora tógtha cheana féin. +username_change_not_local_user = Ní cheadaítear d'úsáideoirí neamháitiúla a n-ainm úsáideora a athrú. +repo_name_been_taken = Úsáidtear ainm an stór cheana féin. +repository_force_private = Tá Force Private cumasaithe: ní féidir stórais phríobháideacha a dhéanamh poiblí. +repository_files_already_exist = Tá comhaid ann cheana féin don stór seo. Déan teagmháil leis an riarthóir córais. +repository_files_already_exist.adopt = Tá comhaid ann cheana don stór seo agus ní féidir iad a ghlacadh ach amháin. +repository_files_already_exist.delete = Tá comhaid ann cheana féin don stór seo. Ní mór duit iad a scriosadh. +repository_files_already_exist.adopt_or_delete = Tá comhaid ann cheana féin don stór seo. Glac iad nó scrios iad. +visit_rate_limit = Thug cuairt chianda aghaidh ar theorannú rátaí. +2fa_auth_required = Bhí fíordheimhniú dhá thoisc ag teastáil ó chianchuairt. +org_name_been_taken = Tá ainm na heagraíochta glactha cheana féin. +team_name_been_taken = Tá ainm na foirne glactha cheana féin. +team_no_units_error = Ceadaigh rochtain ar chuid stórais amháin ar a laghad. +email_been_used = Úsáidtear an seoladh ríomhphoist cheana féin. +email_invalid = Tá an seoladh ríomhphoist neamhbhailí. +openid_been_used = Úsáidtear an seoladh OpenID "%s" cheana féin. +username_password_incorrect = Tá ainm úsáideora nó pasfhocal mícheart. +password_complexity = Ní shásaíonn pasfhocal ceanglais castachta: +password_lowercase_one = Carachtar beaga amháin ar a laghad +password_uppercase_one = Carachtar cás uachtair amháin ar a laghad +password_digit_one = Digit amháin ar a laghad +password_special_one = Carachtar speisialta amháin ar a laghad (poncaíocht, lúibíní, luachana, srl.) +enterred_invalid_repo_name = Tá ainm an stórais a chuir tú isteach mícheart. +enterred_invalid_org_name = Tá ainm na heagraíochta a chuir tú isteach mícheart. +enterred_invalid_owner_name = Níl ainm an úinéara nua bailí. +enterred_invalid_password = Tá an pasfhocal a chuir tú isteach mícheart. +unset_password = Níor shocraigh an t-úsáideoir logála isteach an pasfhocal. +unsupported_login_type = Ní thacaítear leis an gcineál logála isteach chun cuntas a scriosadh. +user_not_exist = Níl an t-úsáideoir ann. +team_not_exist = Níl an fhoireann ann. +cannot_add_org_to_team = Ní féidir eagraíocht a chur leis mar bhall foirne. +duplicate_invite_to_team = Tugadh cuireadh don úsáideoir cheana féin mar bhall foirne. +organization_leave_success = D'fhág tú an eagraíocht %s go rathúil. +invalid_ssh_key = Ní féidir d'eochair SSH a fhíorú: %s +invalid_gpg_key = Ní féidir d'eochair GPG a fhíorú: %s +invalid_ssh_principal = Príomhoide neamhbhailí: %s +must_use_public_key = Is eochair phríobháideach an eochair a sholáthraíonn tú. Ná uaslódáil d'eochair phríobháideach áit ar bith Úsáid d'eochair phoiblí ina ionad. +auth_failed = Theip ar fhíordheimhniú:%v +target_branch_not_exist = Níl spriocbhrainse ann. +admin_cannot_delete_self = Ní féidir leat tú féin a scriosadh nuair is riarachán tú. Bain do phribhléidí riaracháin ar dtús. + +[user] +change_avatar = Athraigh do abhatár… +joined_on = Cláraigh ar %s +repositories = Stórais +activity = Gníomhaíocht Phoiblí +follow = Lean +unfollow = Dílean +starred = Stórais Réaltaithe +watched = Stórais Breathnaithe +code = Cód +projects = Tionscadail +overview = Forbhreathnú +user_bio = Beathaisnéis +email_visibility.limited = Tá do sheoladh ríomhphoist le feiceáil do gach úsáideoir fíordheimhnithe +show_on_map = Taispeáin an áit seo ar léarscáil +settings = Socruithe Úsáideora +disabled_public_activity = Dhíchumasaigh an t-úsáideoir seo infheictheacht phoiblí na gníomhaíochta. +form.name_reserved = Tá an t-ainm úsáideora "%s" in áirithe. +form.name_pattern_not_allowed = Ní cheadaítear an patrún "%s" in ainm úsáideora. + +[settings] +profile = Próifíl +account = Cuntas +appearance = Dealramh +password = Pasfhocal +security = Slándáil +avatar = Abhatár +ssh_gpg_keys = Eochracha SSH/GPG +applications = Iarratais +repos = Stórais +delete = Scrios Cuntas +twofa = Fíordheimhniú Dhá Fachtóir (TOTP) +organization = Eagraíochtaí +uid = UID +webauthn = Fíordheimhniú Dhá-Fachtóir (Eochracha Slándála) +public_profile = Próifíl Phoiblí +location_placeholder = Comhroinn do shuíomh thart le daoine eile +full_name = Ainm Iomlán +website = Láithreán Gréasáin +location = Suíomh +update_profile = Nuashonraigh Próifíl +update_language_not_found = Níl teanga “%s” ar fáil. +update_language_success = Tá an teanga nuashonraithe. +update_profile_success = Nuashonraíodh do phróifíl. +change_username = Tá d'ainm úsáideora athraithe. +change_username_prompt = Nóta: Athraíonn athrú d'ainm úsáideora URL do chuntais freisin. +change_username_redirect_prompt = Athreoróidh an sean-ainm úsáideora go dtí go n-éilíonn duine é +continue = Lean ar aghaidh +cancel = Cealaigh +language = Teanga +ui = Téama +hidden_comment_types = Cineálacha tráchtaireachta ceilte +hidden_comment_types.ref_tooltip = Tuairimí ina dtagraíodh an tsaincheist seo ó shaincheiste/coiste eile... +hidden_comment_types.issue_ref_tooltip = Tuairimí ina n-athraíonn an t-úsáideoir an brainse/clib a bhaineann leis an tsaincheist +comment_type_group_reference = Tagairt +comment_type_group_label = Lipéad +comment_type_group_milestone = Cloch Mhíle +comment_type_group_assignee = Sannaitheoir +comment_type_group_title = Teideal +comment_type_group_branch = Brainse +comment_type_group_time_tracking = Rianú Ama +comment_type_group_deadline = Spriocdháta +comment_type_group_dependency = Spleáchas +comment_type_group_lock = Stádas Glas +comment_type_group_review_request = Iarratas athbhreithnithe +comment_type_group_pull_request_push = Tiomáintí curtha leis +comment_type_group_project = Tionscadal +comment_type_group_issue_ref = Tagairt eisiúna +saved_successfully = Sábháiltear do shocruithe go rathúil. +privacy = Príobháideacht +keep_activity_private = Folaigh gníomhaíocht ó leathanach próifíle +enable_custom_avatar = Úsáid Avatar Saincheaptha +choose_new_avatar = Roghnaigh avatar nua +update_avatar = Nuashonrú Avatar +delete_current_avatar = Scrios Avatar Reatha +uploaded_avatar_not_a_image = Ní íomhá é an comhad uaslódáilte. +uploaded_avatar_is_too_big = Sáraíonn méid an chomhaid uaslódáilte (%d KiB) an méid uasta (%d KiB). +update_avatar_success = Tá do avatar nuashonraithe. +update_user_avatar_success = Nuashonraíodh avatar an úsáideora. +old_password = Pasfhocal Reatha +new_password = Pasfhocal Nua +retype_new_password = Deimhnigh Pasfhocal Nua +password_incorrect = Tá an pasfhocal reatha mícheart. +manage_emails = Bainistigh Seoltaí Ríomhphoist +email_desc = Úsáidfear do phríomhsheoladh ríomhphoist le haghaidh fógraí, aisghabháil pasfhocal agus, ar choinníoll nach bhfuil sé i bhfolach, oibríochtaí Git bunaithe ar an ngréas +primary = Príomhúil +activated = Gníomhachtaithe +requires_activation = Éilíonn gníomhachtú +primary_email = Déan príomhúil +activate_email = Seol Gníomhachtaithe +activations_pending = Gníomhartha ar Feitheamh +can_not_add_email_activations_pending = Tá gníomhachtú ar feitheamh, déan iarracht arís i gceann cúpla nóiméad más mian leat ríomhphost nua a chur leis. +delete_email = Bain +email_deletion = Bain Seoladh R-phoist +email_deletion_desc = Bainfear an seoladh ríomhphoist agus an fhaisnéis ghaolmhar as do chuntas. Ní bheidh na tiomáintí Git a bhaineann leis an seoladh ríomhphoist seo athraithe. Lean ar aghaidh? +email_deletion_success = Tá an seoladh ríomhphoist bainte. +theme_update_success = Nuashonraíodh do théama. +theme_update_error = Níl an téama roghnaithe ann. +openid_deletion = Bain Seoladh OpenID +openid_deletion_desc = Cuirfidh an seoladh OpenID seo a bhaint as do chuntas cosc ort síniú isteach leis. Lean ar aghaidh? +openid_deletion_success = Tá an seoladh OpenID bainte. +add_new_openid = Cuir URI OpenID nua leis +add_email = Cuir Seoladh R-phoist leis +add_openid = Cuir OpenID URI +add_email_success = Cuireadh an seoladh ríomhphoist nua leis. +email_preference_set_success = Socraíodh rogha ríomhphoist go rathúil. +add_openid_success = Cuireadh an seoladh OpenID nua leis. +keep_email_private = Folaigh Seoladh ríomhphoist +openid_desc = Ligeann OpenID duit fíordheimhniú a tharmligean chuig soláthraí seachtrach. +manage_ssh_keys = Bainistigh Eochracha SSH +manage_ssh_principals = Bainistigh Príomhoidí Teastas SSH +manage_gpg_keys = Bainistigh Eochracha GPG +add_key = Cuir Eochair +principal_desc = Tá baint ag na príomhoidí deimhnithe SSH seo le do chuntas agus ceadaíonn siad rochtain iomlán ar do stórtha. +add_new_principal = Cuir Príomhoide +ssh_key_been_used = Cuireadh an eochair SSH seo leis an bhfreastalaí cheana féin. +ssh_key_name_used = Tá eochair SSH leis an ainm céanna ar do chuntas cheana féin. +ssh_principal_been_used = Cuireadh an príomhoide seo leis an bhfreastalaí cheana féin. +gpg_key_id_used = Tá eochair GPG poiblí leis an aitheantas céanna ann cheana féin. +gpg_no_key_email_found = Ní mheaitseálann an eochair GPG seo aon seoladh ríomhphoist gníomhachtaithe a bhaineann le do chuntas. Féadfar é a chur leis fós má shíníonn tú an comhartha a chuirtear ar fáil. +gpg_key_matched_identities = Aitheantais Meaitseáilte: +gpg_key_matched_identities_long = Meaitseálann na haitheantais leabaithe san eochair seo na seoltaí ríomhphoist gníomhachtaithe seo a leanas don úsáideoir seo. Is féidir gealltanais a mheaitseálann na seoltaí ríomhphoist seo a fhíorú leis an eochair seo. +gpg_key_verified = Eochair Fhíoraithe +gpg_key_verified_long = Fíoraíodh an eochair le heochairchomhartha agus is féidir í a úsáid chun a fhíorú go bhfuil geallta ag meaitseáil aon seoltaí ríomhphoist gníomhachtaithe don úsáideoir seo chomh maith le haon aitheantas comhoiriúnaithe don eochair seo. +gpg_key_verify = Fíoraigh +gpg_invalid_token_signature = Ní mheaitseálann an eochair, an síniú agus an comhartha GPG a sholáthraítear nó tá an comhartha as dáta. +gpg_token_required = Ní mór duit síniú a sholáthar don chomhartha thíos +gpg_token = Comhartha +gpg_token_help = Is féidir leat síniú a ghiniúint ag úsáid: +gpg_token_signature = Síniú Armúrtha GPG +verify_gpg_key_success = Tá eochair GPG “%s” fíoraithe. +ssh_key_verified = Eochair Fhíoraithe +ssh_key_verified_long = Fíoraíodh an eochair le heochairchomhartha agus is féidir í a úsáid chun a fhíorú go bhfuil geallta ag teacht le haon seoltaí ríomhphoist gníomhachtaithe don úsáideoir seo. +ssh_key_verify = Fíoraigh +ssh_invalid_token_signature = Ní mheaitseálann an eochair, an síniú nó an comhartha SSH a sholáthraítear nó tá an comhartha as dáta. +ssh_token_required = Ní mór duit síniú a sholáthar don chomhartha thíos +ssh_token = Comhartha +ssh_token_help = Is féidir leat síniú a ghiniúint ag úsáid: +ssh_token_signature = Síniú armúrtha SSH +verify_ssh_key_success = Tá eochair SSH “%s” fíoraithe. +subkeys = Fo-eochracha +key_id = Eochair ID +key_name = Ainm Eochair +key_content = Ábhar +principal_content = Ábhar +add_key_success = Cuireadh an eochair SSH “%s” leis. +add_gpg_key_success = Cuireadh an eochair GPG “%s” leis. +add_principal_success = Cuireadh príomhoide an deimhnithe SSH “%s” leis. +delete_key = Bain +ssh_key_deletion = Bain Eochair SSH +gpg_key_deletion = Bain Eochair GPG +ssh_principal_deletion = Bain Príomhoide Teastas SSH +ssh_key_deletion_desc = Ag baint eochair SSH, cuirtear a rochtain ar do chuntas a chúlghairm. Lean ar aghaidh? +gpg_key_deletion_desc = Má bhaintear eochair GPG, ní fhíoraítear gealltanais a shínigh sé. An leanfaidh tú ar aghaidh? +ssh_principal_deletion_desc = Cúlghairtear a rochtain ar do chuntas Príomhoide Teastas SSH. Lean ar aghaidh? +ssh_key_deletion_success = Tá an eochair SSH bainte. +gpg_key_deletion_success = Tá an eochair GPG bainte amach. +ssh_principal_deletion_success = Tá an príomhoide bainte. +added_on = Cuireadh leis ar %s +valid_until_date = Bailí go dtí %s +valid_forever = Bailí go deo +last_used = Úsáidtear go deireanach ar +no_activity = Gan gníomhaíocht le déanaí +can_read_info = Léigh +can_write_info = Scríobh +key_state_desc = Úsáideadh an eochair seo le 7 lá anuas +token_state_desc = Úsáideadh an comhartha seo le 7 lá anuas +principal_state_desc = Úsáideadh an príomhoide seo le 7 lá anuas +show_openid = Taispeáin ar phróifíl +hide_openid = Folaigh ón bpróifíl +ssh_signonly = Tá SSH faoi láthair faoi láthair mar sin ní úsáidtear na heochracha seo ach le haghaidh fíorú sínithe tiomanta. +ssh_externally_managed = Déantar an eochair SSH seo a bhainistiú go seachtrach don úsáideoir seo +generate_new_token = Gin Comhartha Nua +token_name = Ainm Comhartha +generate_token = Gin Comhartha +generate_token_success = Gintear do chomhartha nua. Cóipeáil é anois mar ní thaispeánfar é arís. +generate_token_name_duplicate = Úsáideadh %s mar ainm feidhmchláir cheana féin. Úsáid ceann nua le do thoil. +delete_token = Scrios +access_token_deletion = Scrios Comhartha Rochtana +access_token_deletion_desc = Cúlghairfear rochtain ar do chuntas le haghaidh feidhmchláir a úsáideann é a scriosadh comhartha. Ní féidir é seo a chur ar ais. Lean ar aghaidh? +delete_token_success = Tá an comhartha scriosta. Níl rochtain ag iarratais a úsáideann é ar do chuntas a thuilleadh. +repo_and_org_access = Rochtain Stórála agus Eagraíochta +permissions_public_only = Poiblí amháin +permissions_access_all = Gach (poiblí, príobháideach agus teoranta) +select_permissions = Roghnaigh ceadanna +permission_no_access = Gan rochtain +permission_read = Léigh +permission_write = Léigh agus Scríobh +at_least_one_permission = Ní mór duit cead amháin ar a laghad a roghnú chun comhartha a chruthú +permissions_list = Ceadanna: +manage_oauth2_applications = Bainistigh Feidhmchláir OAuth2 +edit_oauth2_application = Cuir Feidhmchlár OAuth2 in eagar +remove_oauth2_application = Bain Feidhmchlár OAuth2 +remove_oauth2_application_desc = Ag baint feidhmchlár OAuth2, cúlghairfear rochtain ar gach comhartha rochtana sínithe. Lean ar aghaidh? +remove_oauth2_application_success = Scriosadh an feidhmchlár. +create_oauth2_application = Cruthaigh Feidhmchlár OAuth2 nua +create_oauth2_application_button = Cruthaigh Feidhmchlár +create_oauth2_application_success = D'éirigh leat feidhmchlár nua OAuth2 a chruthú. +update_oauth2_application_success = D'éirigh leat an feidhmchlár OAuth2 a nuashonrú. +oauth2_application_name = Ainm Feidhmchláir +oauth2_confidential_client = Cliant Rúnda. Roghnaigh le haghaidh aipeanna a choimeádann an rún faoi rún, mar aipeanna gréasáin. Ná roghnaigh le haghaidh aipeanna dúchasacha lena n-áirítear aipeanna deisce agus soghluaiste. +oauth2_redirect_uris = URIs a atreorú. Úsáid líne nua do gach URI le do thoil. +save_application = Sábháil +oauth2_client_id = ID Cliant +oauth2_client_secret = Rúnda Cliant +oauth2_regenerate_secret = Athghin Rún +oauth2_regenerate_secret_hint = Chaill tú do rún? +oauth2_client_secret_hint = Ní thaispeánfar an rún arís tar éis duit an leathanach seo a fhágáil nó a athnuachan. Déan cinnte le do thoil gur shábháil tú é. +oauth2_application_edit = Cuir in eagar +oauth2_application_create_description = Tugann feidhmchláir OAuth2 rochtain d'iarratas tríú páirtí ar chuntais úsáideora ar an gcás seo. +oauth2_application_remove_description = Cuirfear feidhmchlár OAuth2 a bhaint cosc air rochtain a fháil ar chuntais úsáideora údaraithe ar an gcás seo. Lean ar aghaidh? +authorized_oauth2_applications = Feidhmchláir Údaraithe OAuth2 +revoke_key = Cúlghairm +revoke_oauth2_grant = Rochtain a chúlghairm +revoke_oauth2_grant_description = Cuirfidh rochtain ar an bhfeidhmchlár tríú páirtí seo a chúlghairm cosc ar an bhfeidhmchlár seo rochtain An bhfuil tú cinnte? +revoke_oauth2_grant_success = Cúlghairtear rochtain go rathúil. +twofa_desc = Chun do chuntas a chosaint ar goid pasfhocal, is féidir leat fón cliste nó gléas eile a úsáid chun pasfhocail aon-uaire bunaithe ar am (“TOTP”) a fháil. +twofa_recovery_tip = Má chailleann tú do ghléas, beidh tú in ann eochair aisghabhála aonúsáide a úsáid chun rochtain ar do chuntas a fháil ar ais. +twofa_is_enrolled = Tá do chuntas cláraithe i bhfíord heimhniú dhá fhachtóir faoi láthair. +twofa_not_enrolled = Níl do chuntas cláraithe faoi láthair i bhfíordheimhniú dhá fhachtóir. +twofa_disable = Díchumasaigh Fíordheimhniú Dhá-Fachtóir +twofa_scratch_token_regenerate = Athghin Eochair Aisghabhála Aonúsáide +twofa_scratch_token_regenerated = Is é %s d'eochair aisghabhála aonúsáide anois. Stóráil é in áit shábháilte, mar ní thaispeánfar é arís. +twofa_enroll = Cláraigh le Fíordheimhniú Dhá-Fachtóir +twofa_disable_note = Is féidir leat fíordheimhniú dhá fhachtóir a dhíchumasú más gá. +twofa_disable_desc = Má dhíchumasaítear fíordheimhniú dhá fhachtóir beidh do chuntas chomh slán. Lean ar aghaidh? +regenerate_scratch_token_desc = Má chuir tú d'eochair aisghabhála míchuir tú nó má d'úsáid tú é cheana féin chun síniú isteach, is féidir leat é a athshocrú anseo. +twofa_disabled = Tá fíordheimhniú dhá fhachtóir díchumasaithe. +scan_this_image = Scan an íomhá seo le d'fheidhmchlár fíordheimhnithe: +or_enter_secret = Nó cuir isteach an rún: %s +then_enter_passcode = Agus cuir isteach an paschód a léirítear san fheidhmchlár: +passcode_invalid = Tá an pascód mícheart. Bain triail as arís. +twofa_enrolled = Tá do chuntas cláraithe go rathúil. Stóráil d'eochair aisghabhála aonúsáide (%s) in áit shábháilte, mar ní thaispeánfar é arís. +twofa_failed_get_secret = Theip ar rún a fháil. +webauthn_desc = Is feistí crua-earraí iad eochracha slándála ina bhfuil eochracha cripte Is féidir iad a úsáid le haghaidh fíordheimhniú dhá fhachtóir. Caithfidh eochracha slándála tacú le caigh deán Fíordheimhnithe WebAuthn +webauthn_register_key = Cuir Eochair Slándála +webauthn_nickname = Leasainm +webauthn_delete_key = Bain Eochair Slándála +webauthn_delete_key_desc = Má bhaineann tú eochair slándála ní féidir leat síniú leis a thuilleadh. Lean ar aghaidh? +webauthn_key_loss_warning = Má chailleann tú d'eochracha slándála, caillfidh tú rochtain ar do chuntas. +webauthn_alternative_tip = B'fhéidir gur mhaith leat modh fíordheimhnithe breise a chumrú. +link_account = Cuntas Nasc +remove_account_link = Bain Cuntas Nasctha +remove_account_link_success = Tá an cuntas nasctha bainte amach. +hooks.desc = Cuir crúcaí gréasán leis a spreagfar do gach stór ar leatsa iad. +orgs_none = Níl tú ina bhall d'aon eagraíochtaí. +repos_none = Níl aon stórais agat. +delete_account = Scrios Do Cuntas +delete_prompt = Scriosfaidh an oibríocht seo do chuntas úsáideora go buan. NÍ FÉIDIR é a chealú. +delete_with_all_comments = Tá do chuntas níos óige ná %s. Chun tuairimí taibhse a sheachaint, scriosfar gach trácht saincheistea/PR leis. +confirm_delete_account = Deimhnigh scriosadh +delete_account_title = Scrios Cuntas Úsáide +delete_account_desc = An bhfuil tú cinnte gur mhaith leat an cuntas úsáideora seo a scriosadh go buan? +email_notifications.enable = Cumasaigh Fógraí Ríomhphoist +email_notifications.onmention = Ríomhphost amháin ar luaigh +email_notifications.disable = Díchumasaigh Fógraí Ríomhphoist +email_notifications.submit = Socraigh rogha ríomhphoist +email_notifications.andyourown = Agus Do Fógraí Féin +visibility = Infheictheacht úsáideora +visibility.public = Poiblí +visibility.public_tooltip = Infheicthe do gach duine +visibility.limited = Teoranta +visibility.private = Príobháideach +visibility.private_tooltip = Ní fheictear ach do bhaill d'eagraíochtaí a chuaigh tú isteach + +[repo] +owner = Úinéir +owner_helper = B'fhéidir nach dtaispeánfar roinnt eagraíochtaí sa anuas mar gheall ar theorainn uasta comhaireamh stórais. +repo_name = Ainm Stórais +repo_size = Méid an Stóras +template = Teimpléad +template_helper = Déan teimpléad den stóras +template_description = Ligeann stórais teimpléid d'úsáideoirí stórais nua a ghiniúint leis an struchtúr eolaire céanna, comhaid agus socruithe roghnacha. +visibility = Infheictheacht +visibility_description = Ní bheidh ach an t-úinéir nó baill na heagraíochta má tá cearta acu in ann é a fheiceáil. +visibility_helper = Déan stóras príobháideach +visibility_helper_forced = Cuireann riarthóir do shuíomh iallach ar stórais nua a bheith príobháideach. +clone_helper = Teastaíonn cabhair ó chlónáil? Tabhair cuairt ar Cabhair. +fork_repo = Stóras Forc +fork_from = Forc ó +already_forked = Tá tú tar éis %s a fhoirceann +fork_to_different_account = Forc chuig cuntas difriúil +fork_visibility_helper = Ní féidir infheictheacht stór forcailte a athrú. +fork_branch = Brainse le clónú chuig an bhforc +all_branches = Gach brainse +fork_no_valid_owners = Ní féidir an stór seo a fhorcáil toisc nach bhfuil úinéirí bailí ann. +use_template = Úsáid an teimpléad seo +open_with_editor = Oscail le %s +download_zip = Íoslódáil ZIP +download_tar = Íoslódáil TAR.GZ +download_bundle = Íoslódáil BUNDLE +generate_repo = Cruthaigh Stóras +generate_from = Gin Ó +repo_desc = Cur síos +repo_desc_helper = Cuir isteach tuairisc ghearr (roghnach) +repo_gitignore_helper_desc = Roghnaigh na comhaid nach bhfuil le rianú ó liosta teimpléid do theangacha coitianta. Cuirtear déantáin tipiciúla a ghineann uirlisí tógála gach teanga san áireamh ar.gitignore de réir réamhshocraithe. +license = Ceadúnas +object_format = Formáid Oibiacht +readme = README +readme_helper_desc = Seo an áit inar féidir leat cur síos iomlán a scríobh do thionscadal. +create_repo = Cruthaigh Stóras +default_branch = Branse Réamhshocraithe +default_branch_label = réamhshocraithe +default_branch_helper = Is é an brainse réamhshocraithe an bunbhrainse d'iarratais tarraingthe agus gealltanna cód. +mirror_prune = Prúnáil +mirror_prune_desc = Bain tagairtí cianrianaithe atá as feidhm +mirror_interval_invalid = Níl an eatramh scátháin bailí. +mirror_sync = sioncronaithe +mirror_sync_on_commit = Sioncrónaigh nuair a bhrúitear geallúintí +mirror_address = Clón Ó URL +mirror_address_desc = Cuir aon dhintiúir riachtanacha sa chuid Údaraithe. +mirror_address_url_invalid = Tá an URL curtha ar fáil neamhbhailí. Caithfidh tú gach comhpháirt den url a éalú i gceart. +mirror_address_protocol_invalid = Tá an URL curtha ar fáil neamhbhailí. Ní féidir ach suíomhanna http (s)://nó git://a úsáid le haghaidh scátháin. +mirror_lfs = Stóráil Comhad Móra (LFS) +mirror_lfs_desc = Gníomhachtaigh scáthú sonraí LFS. +mirror_lfs_endpoint = Críochphointe LFS +mirror_lfs_endpoint_desc = Déanfaidh Sync iarracht an url clónála a úsáid chun an freastalaí LFS a chinneadh. Is féidir leat críochphointe saincheaptha a shonrú freisin má tá na sonraí LFS stórtha stóráilte áit éigin eile. +mirror_last_synced = Sincronaithe Deireanach +mirror_password_placeholder = (Gan athrú) +mirror_password_blank_placeholder = (Neamhshocraithe) +mirror_password_help = Athraigh ainm úsáideora chun pasfhocal stóráilte a scriosadh. +watchers = Breathnóirí +stargazers = Réalteoirí +stars_remove_warning = Bainfidh sé seo na réaltaí go léir ón stóras seo. +forks = Forcanna +stars = Réaltaí +reactions_more = agus %d níos mó +unit_disabled = Tá an chuid stórais seo díchumasaithe ag riarthóir an láithreáin. +language_other = Eile +adopt_search = Iontráil ainm úsáideora chun stórais neamhghlactha a chuardach... (fág bán chun gach rud a fháil) +adopt_preexisting_label = Glacadh le Comhaid +adopt_preexisting = Glac le comhaid atá ann cheana +adopt_preexisting_content = Cruthaigh stór ó %s +adopt_preexisting_success = Comhaid ghlacadh agus stór cruthaithe ó %s +delete_preexisting_label = Scrios +delete_preexisting = Scrios comhaid atá ann cheana +delete_preexisting_content = Scrios comhaid i %s +delete_preexisting_success = Scriosta comhaid neamhghlactha i %s +blame_prior = Féach ar an milleán roimh an athrú seo +blame.ignore_revs = Ag déanamh neamhairde de leasuithe i .git-blame-ignore-revs. Cliceáil anseo chun seachaint agus an gnáth-amharc milleán a fheiceáil. +blame.ignore_revs.failed = Theip ar neamhaird a dhéanamh ar leasuithe i .git-blame-ignore-revs. +transfer.accept = Glac le hAistriú +transfer.accept_desc = Aistriú chuig “%s” +transfer.reject = Diúltaigh aistriú +transfer.reject_desc = `Cealaigh aistriú chuig "%s"` +transfer.no_permission_to_accept = Níl cead agat glacadh leis an aistriú seo. +transfer.no_permission_to_reject = Níl cead agat an aistriú seo a dhiúltú. +desc.private = Príobháideach +desc.public = Poiblí +desc.template = Teimpléad +desc.internal = Inmheánach +desc.archived = Cartlannaithe +desc.sha256 = SHA256 +template.items = Míreanna Teimpléad +template.git_content = Ábhar Git (Brainse Réamhshocraithe) +template.git_hooks = Crúcanna Git +template.git_hooks_tooltip = Faoi láthair ní féidir leat Git Hooks a mhodhnú nó a bhaint nuair a chuirtear leis. Roghnaigh é seo ach amháin má tá muinín agat as an stóras teimpléid. +template.webhooks = Crúcaí gréasáin +template.topics = Topaicí +template.avatar = Abhatár +template.issue_labels = Lipéid Eisiúna +template.one_item = Ní mór mír teimpléad amháin ar a laghad a roghnú +template.invalid = Ní mór stór teimpléad a roghnú +archive.title_date = Tá an stóras seo cartlannaithe ar %s. Is féidir leat comhaid a fheiceáil agus é a chlónú, ach ní féidir leat saincheisteanna a bhrú nó a oscailt ná iarratais a tharraingt. +form.reach_limit_of_creation_1 = Tá úinéir an stóras tar éis teorainn de %d stóras a bhaint amach cheana féin. +form.reach_limit_of_creation_n = Tá úinéir an stórais tar éis teorainn de %d stórtha a bhaint amach cheana féin. +form.name_reserved = Tá ainm an stór "%s" in áirithe. +form.name_pattern_not_allowed = Ní cheadaítear an patrún "%s" in ainm stór. +need_auth = Údarú +migrate_options = Roghanna Imirce +migrate_options_mirror_helper = Beidh an stóras seo ina scáthán +migrate_options_lfs = Aimirce comhaid LFS +migrate_options_lfs_endpoint.label = Críochphointe LFS +migrate_options_lfs_endpoint.description = Déanfaidh imirce iarracht do chianda Git a úsáid chun freastalaí LFS a chinneadh. Is féidir leat críochphointe saincheaptha a shonrú freisin má tá na sonraí LFS stórtha stóráilte áit éigin eile. +migrate_options_lfs_endpoint.description.local = Tacaítear le cosán freastalaí áitiúil freisin. +migrate_options_lfs_endpoint.placeholder = Má fhágtar bán, díorthófar an críochphointe ón URL clóin +migrate_items = Míreanna Imirce +migrate_items_wiki = Wiki +migrate_items_milestones = Clocha míle +migrate_items_labels = Lipéid +migrate_items_issues = Saincheisteanna +migrate_items_pullrequests = Iarrataí Tarraing +migrate_items_merge_requests = Iarrataí Cumaisc +migrate_items_releases = Eisiúintí +migrate_repo = Stóras Imirc +migrate.clone_address = Aimirce/ Clón Ó URL +migrate.github_token_desc = Is féidir leat comhartha amháin nó níos mó a chur le camóg scartha anseo chun imirce a dhéanamh níos gasta mar gheall ar theorainn ráta API GitHub. RABHADH: D'fhéadfadh mí-úsáid na ngné seo beartas an sholáthraí seirbhíse a shárú agus blocáil cuntais a bheith mar thoradh air. +migrate.clone_local_path = nó cosán freastalaí áitiúil +migrate.permission_denied = Ní cheadaítear duit stórais áitiúla a iompórtáil. +migrate.permission_denied_blocked = Ní féidir leat allmhairiú ó óstaigh neamh-cheadaithe, iarr ar an riarachán socruithe ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS a sheiceáil le do thoil. +migrate.invalid_lfs_endpoint = Níl an críochphointe LFS bailí. +migrate.failed = Theip ar an imirce:% v +migrate.migrate_items_options = Teastaíonn Comhartha Rochtana chun míreanna breise a aistriú +migrated_from = Aistríodh ó %[2]s +migrated_from_fake = Aistrithe ó %[1]s +migrate.migrate = Aistrigh Ó %s +migrate.migrating = Ag aistriú ó %s ... +migrate.migrating_failed = Theip ar aistriú ó %s. +migrate.migrating_failed.error = Theip ar aistriú: %s +migrate.migrating_failed_no_addr = Theip ar an imirce. +migrate.git.description = Aistrigh stór amháin ó aon seirbhís Git. +migrate.gitlab.description = Aistrigh sonraí ó gitlab.com nó ó chásanna GitLab eile. +migrate.gitea.description = Aistrigh sonraí ó gitea.com nó ó chásanna Gitea eile. +migrate.gogs.description = Aistrigh sonraí ó notabug.org nó ó chásanna eile de chuid Gogs. +migrate.onedev.description = Aistrigh sonraí ó code.onedev.io nó ó chásanna OneDev eile. +migrate.codebase.description = Aistrigh sonraí ó codebasehq.com. +migrate.gitbucket.description = Aistrigh sonraí ó chásanna GitBucket. +migrate.migrating_git = Sonraí Git a Aimirce +migrate.migrating_topics = Ábhair Imirce +migrate.migrating_milestones = Clocha Míle a Imirce +migrate.migrating_labels = Lipéid Imirce +migrate.migrating_releases = Eisiúintí Imirce +migrate.migrating_issues = Saincheisteanna Imirce +migrate.migrating_pulls = Iarratais Tarraingthe á n-Imirce +migrate.cancel_migrating_title = Cealaigh Imirce +migrate.cancel_migrating_confirm = Ar mhaith leat an imirce seo a chealú? +mirror_from = scáthán de +forked_from = forcailte ó +generated_from = a ghintear ó +fork_from_self = Ní féidir leat stóras atá agat a fhorcáil. +fork_guest_user = Sínigh isteach chun an stóras seo a fhorc. +watch_guest_user = Sínigh isteach chun féachaint ar an stór seo. +star_guest_user = Sínigh isteach chun an stóras seo a réalú. +watch = Fhéachaint +unwatch = Dífhéachaint +star = Réalta +unstar = Bain Réalta +fork = Forc +download_archive = Íoslódáil Stóras +more_operations = Tuilleadh oibríochtaí +quick_guide = Treoir Tapa +clone_this_repo = Clóin an stóras seo +cite_this_repo = Luaigh an stóras seo +create_new_repo_command = Stóras nua a chruthú ar an líne ordaithe +push_exist_repo = Stóras atá ann cheana a bhrú ón líne ordaithe +empty_message = Níl aon ábhar sa stóras seo. +broken_message = Ní féidir na sonraí Git atá mar bhunús leis an stóras seo a léamh. Déan teagmháil le riarthóir an chás seo nó scrios an stóras seo. +code = Cód +code.desc = Rochtain ar chód foinse, comhaid, gealltanais agus brainsí. +branch = Brainse +tree = Crann +clear_ref = `Tagairt reatha soiléir` +filter_branch_and_tag = Scagaire brainse nó clib +find_tag = Aimsigh clib +branches = Brainsí +tag = Clib +tags = Clibeanna +issues = Saincheisteanna +pulls = Iarratais Tarraingthe +packages = Pacáistí +actions = Gníomhartha +release = Scaoileadh +releases = Scaoileann +labels = Lipéid +milestones = Clocha míle +org_labels_desc = Lipéid ar leibhéal eagraíochta is féidir a úsáid le gach stóras faoin eagraíocht seo +org_labels_desc_manage = bainistigh +commits = Tiomáintí +commit = Tiomantas +released_this = scaoileadh seo +file.title = %s ag %s +file_raw = Amh +file_history = Stair +file_view_source = Féach Foinse +file_view_rendered = Amharc Rindreáilte +file_view_raw = Amharc Amh +file_permalink = Buan-nasc +file_too_large = Tá an comhad ró-mhór le taispeáint. +invisible_runes_header = `Tá carachtair Unicode dofheicthe sa chomhad seo ` +invisible_runes_description = `Tá carachtair dofheicthe Unicode sa chomhad seo nach féidir a idirdhealú do dhaoine ach d'fhéadfadh ríomhaire iad a phróiseáil ar bhealach difriúil. Má cheapann tú go bhfuil sé seo d'aon ghnó, is féidir leat neamhaird a dhéanamh go sábháilte don rabhadh seo Úsáid an cnaipe Escape chun iad a nochtadh. ` +ambiguous_runes_header = `Tá carachtair Unicode débhríoch sa chomhad seo ` +ambiguous_runes_description = `Tá carachtair Unicode sa chomhad seo a d'fhéadfadh a bheith mearbhall le carachtair eile. Má cheapann tú go bhfuil sé seo d'aon ghnó, is féidir leat neamhaird a dhéanamh go sábháilte don rabhadh seo Úsáid an cnaipe Escape chun iad a nochtadh. ` +invisible_runes_line = `Tá carachtair unicode dofheicthe ag an líne seo ` +ambiguous_runes_line = `Tá carachtair unicode débhríoch ag an líne seo ` +ambiguous_character = `Is féidir %[1]c [U+%04[1]X] a mheascadh le %[2]c [U+%04[2]X]` +escape_control_characters = Éalú +unescape_control_characters = Dí-Éalú +file_copy_permalink = Cóipeáil Buan-nasc +view_git_blame = Féach ar Git Blame +stored_lfs = Stóráilte le Git LFS +symbolic_link = Nasc siombalach +executable_file = Comhad Infheidhmithe +vendored = Díoltóra +generated = Gintear +commit_graph = Graf Tiomantas +commit_graph.select = Roghnaigh brainsí +commit_graph.hide_pr_refs = Folaigh Iarrataí Tarraing +commit_graph.monochrome = Mona +commit_graph.color = Dath +commit.contained_in = Tá an tiomantas seo le fáil i: +commit.contained_in_default_branch = Tá an tiomantas seo mar chuid den bhrainse réamhshocraithe +commit.load_referencing_branches_and_tags = Luchtaigh brainsí agus clibeanna a thagraíonn an tiomantas +blame = An milleán +download_file = Íoslódáil comhad +normal_view = Amharc Gnáth +line = líne +lines = línte +from_comment = (trácht) +editor.add_file = Cuir Comhad +editor.new_file = Comhad Nua +editor.upload_file = Uaslódáil Comhad +editor.edit_file = Cuir Comhad in eagar +editor.preview_changes = Athruithe Réamhamhar +editor.cannot_edit_lfs_files = Ní féidir comhaid LFS a chur in eagar sa chomhéadan gréasáin. +editor.cannot_edit_non_text_files = Ní féidir comhaid dhénártha a chur in eagar sa chomhéadan gréasáin. +editor.edit_this_file = Cuir Comhad in eagar +editor.this_file_locked = Tá an comhad faoi ghlas +editor.must_be_on_a_branch = Caithfidh tú a bheith ar bhrainse chun athruithe a dhéanamh nó a mholadh ar an gcomhad seo. +editor.fork_before_edit = Ní mór duit an stór seo a fhorcáil chun athruithe a dhéanamh nó a mholadh ar an gcomhad seo. +editor.delete_this_file = Scrios Comhad +editor.must_have_write_access = Caithfidh rochtain scríofa a bheith agat chun athruithe a dhéanamh nó a mholadh ar an gcomhad seo. +editor.file_delete_success = Tá an comhad "%s" scriosta. +editor.name_your_file = Ainmnigh do chomhad… +editor.or = nó +editor.cancel_lower = Cealaigh +editor.commit_signed_changes = Tiomantas Athruithe Sínithe +editor.commit_changes = Athruithe a Tiomantas +editor.add = Cuir %s leis +editor.update = Nuashonraigh %s +editor.delete = Scrios %s +editor.patch = Cuir paiste i bhfeidh +editor.patching = Paisteáil: +editor.fail_to_apply_patch = Ní féidir paiste "%s" a chur i bhfeidhm +editor.new_patch = Paiste Nua +editor.commit_message_desc = Cuir cur síos leathnaithe roghnach leis… +editor.signoff_desc = Cuir leantóir sínithe ag an gcoiteoir ag deireadh na teachtaireachta logála tiomanta. +editor.create_new_branch = Cruthaigh brainse nua don ghealltanas seo agus cuir tús le hiarratas tarraingthe. +editor.create_new_branch_np = Cruthaigh brainse nua don tiomantas seo. +editor.propose_file_change = Athrú comhad a mholadh +editor.new_branch_name = Ainmnigh an brainse nua don gealltanas seo +editor.new_branch_name_desc = Ainm brainse nua… +editor.cancel = Cealaigh +editor.filename_cannot_be_empty = Ní féidir ainm an chomhaid a bheith folamh. +editor.filename_is_invalid = Tá ainm an chomhaid neamhbhailí: "%s". +editor.branch_does_not_exist = Níl brainse "%s" ann sa stóras seo. +editor.branch_already_exists = Tá brainse "%s" ann cheana féin sa stóras seo. +editor.directory_is_a_file = Úsáidtear ainm eolaire "%s" cheana féin mar ainm comhaid sa stóras seo. +editor.file_is_a_symlink = Is nasc siombalach é "%s". Ní féidir naisc shiombalacha a chur in eagar san eagarthóir gréasáin +editor.filename_is_a_directory = Úsáidtear ainm comhaid "%s" cheana féin mar ainm eolaire sa stóras seo. +editor.file_editing_no_longer_exists = Níl an comhad atá á chur in eagar, "%s", ann sa stóras seo a thuilleadh. +editor.file_deleting_no_longer_exists = Níl an comhad atá á scriosadh, "%s", ann sa stóras seo a thuilleadh. +editor.file_changed_while_editing = Tá athrú tagtha ar ábhar an chomhad ó thosaigh tú ag eagarthóireacht Cliceáil anseo chun iad a fheiceáil nó Athru ithe a Tiomantas arís chun iad a fhorscríobh. +editor.file_already_exists = Tá comhad darb ainm "%s" ann cheana féin sa stóras seo. +editor.push_out_of_date = Is cosúil go bhfuil an brú as dáta. +editor.commit_empty_file_header = Tiomantas comhad folamh +editor.commit_empty_file_text = Tá an comhad atá tú ar tí tiomantas folamh. Ar aghaidh? +editor.no_changes_to_show = Níl aon athruithe le taispeáint. +editor.fail_to_update_file = Theip ar nuashonrú/cruthú comhad "%s". +editor.fail_to_update_file_summary = Teachtaireacht Earráide: +editor.push_rejected_no_message = Dhiúltaigh an freastalaí an t-athrú gan teachtaireacht. Seiceáil Git Hooks le do thoil. +editor.push_rejected = Dhiúltaigh an freastalaí an t-athrú. Seiceáil Git Hooks le do thoil. +editor.push_rejected_summary = Teachtaireacht Diúltaithe Iomlán: +editor.add_subdir = Cuir eolaire leis… +editor.unable_to_upload_files = Theip ar uaslódáil comhaid go "%s" le hearráid: %v +editor.upload_file_is_locked = Tá comhad "%s" faoi ghlas ag %s. +editor.upload_files_to_dir = `Uaslódáil comhaid go "%s"` +editor.cannot_commit_to_protected_branch = Ní féidir gealltanas a thabhairt don bhrainse faoi chosaint "%s". +editor.no_commit_to_branch = Ní féidir tiomantas a thabhairt go díreach don bhrainse mar: +editor.user_no_push_to_branch = Ní féidir leis an úsáideoir brúigh go dtí an brainse +editor.require_signed_commit = Éilíonn an Brainse tiomantas sínithe +editor.cherry_pick = Roghnaigh silíní %s ar: +editor.revert = Fill %s ar: +editor.commit_email = Tiomantas ríomhphost +commits.desc = Brabhsáil stair athraithe cód foinse. +commits.commits = Tiomáintí +commits.no_commits = Níl aon ghealltanas i gcoiteann. Tá stair iomlán difriúil ag "%s" agus "%s". +commits.nothing_to_compare = Tá na brainsí seo cothrom. +commits.search.tooltip = Is féidir eochairfhocail a réamhfhostú le “údar:”, “committer:”, “after:”, nó “before:”, e.g. "fill an t-údar:Alice roimh: 2019-01-13". +commits.search_branch = An Brainse seo +commits.search_all = Gach Brainse +commits.author = Údar +commits.message = Teachtaireacht +commits.date = Dáta +commits.older = Níos sine +commits.newer = Níos nuaí +commits.signed_by = Sínithe ag +commits.signed_by_untrusted_user = Sínithe ag úsáideoir neamhiontaofa +commits.signed_by_untrusted_user_unmatched = Sínithe ag úsáideoir neamhiontaofa nach bhfuil ag teacht leis an gcoiste +commits.gpg_key_id = GPG Eochair ID +commits.ssh_key_fingerprint = Méarloirg Eochair SSH +commits.view_path = Féach ag an bpointe seo sa stair +commit.operations = Oibríochtaí +commit.revert = Téigh ar ais +commit.revert-header = Téigh ar ais: %s +commit.revert-content = Roghnaigh brainse chun filleadh ar: +commit.cherry-pick = Roghnaigh silíní +commit.cherry-pick-header = Roghnaigh silíní: %s +commit.cherry-pick-content = Roghnaigh brainse chun silíní a phiocadh air: +commitstatus.error = Earráid +commitstatus.failure = Teip +commitstatus.pending = Ar feitheamh +commitstatus.success = Rath +projects = Tionscadail +projects.description = Cur síos (roghnach) +projects.description_placeholder = Cur síos +projects.create = Cruthaigh Tionscadal +projects.title = Teideal +projects.new = Tionscadal Nua +projects.new_subheader = Déan do chuid oibre a chomhordú, a rianú agus a nuashonrú in aon áit amháin, ionas go bhfanann na tionscadail trédhearcach agus de réir sceidil. +projects.create_success = Tá an tionscadal "%s" cruthaithe. +projects.deletion = Scrios tionscadal +projects.deletion_desc = Má scriostar tionscadal, bainfear de gach saincheist a bhaineann leis é. Lean ort? +projects.deletion_success = Tá an tionscadal scriosta. +projects.edit = Cuir Tionscadal in Eagar +projects.edit_subheader = Eagraíonn tionscadail saincheisteanna agus rianaíonn siad dul chun cinn. +projects.modify = Cuir Tionscadal in Eagar +projects.edit_success = Tá an tionscadal "%s" nuashonraithe. +projects.open = Oscailte +projects.close = Dún +projects.column.assigned_to = Sannta do +issues.desc = Eagraigh tuarascálacha fabht, tascanna agus cloch mhíle. +issues.filter_assignees = Scagaire Sannaitheoir +issues.filter_milestones = Cloch Mhíle Scagaire +issues.filter_projects = Tionscadal Scagaire +issues.filter_labels = Lipéad Scagaire +issues.filter_reviewers = Athbhreithneoir Scagaire +issues.new = Eagrán Nua +issues.new.title_empty = Ní féidir leis an teideal a bheith folamh +issues.new.labels = Lipéid +issues.new.clear_labels = Lipéid shoiléir +issues.new.projects = Tionscadail +issues.new.clear_projects = Tionscadail soiléire +issues.new.no_projects = Gan aon tionscadal +issues.new.open_projects = Tionscadail Oscailte +issues.new.closed_projects = Tionscadail Dúnta +issues.new.no_items = Gan aon earraí +issues.new.milestone = Cloch Mhíle +issues.new.no_milestone = Gan Chloch Mhíle +issues.new.clear_milestone = Cloch Mhíle soiléir +issues.new.assignees = Sannaitheoirí +issues.new.clear_assignees = Ceannaitheoirí soiléir +issues.new.no_assignees = Gan aon Sannaitheoirí +issues.new.no_reviewers = Gan Léirmheastóirí +issues.edit.already_changed = Ní féidir athruithe a shábháil ar an tsaincheist. Dealraíonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arís chun a gcuid athruithe a sheachaint +issues.choose.get_started = Faigh Tosaigh +issues.choose.open_external_link = Oscailte +issues.choose.blank = Réamhshocrú +issues.choose.blank_about = Cruthaigh saincheist ó theimpléad réamhshocraithe. +issues.choose.ignore_invalid_templates = Rinneadh neamhaird ar theimpléid +issues.choose.invalid_templates = %v teimpléad neamhbhail(í) aimsíodh +issues.choose.invalid_config = Tá earráidí sa chumraíocht eisiúint: +issues.no_ref = Níl aon Brainse/Clib Sonraithe +issues.create = Cruthaigh Saincheist +issues.new_label = Lipéad Nua +issues.new_label_placeholder = Ainm lipéad +issues.new_label_desc_placeholder = Cur síos +issues.create_label = Cruthaigh Lipéad +issues.label_templates.fail_to_load_file = Theip ar lódáil an chomhaid teimpléid lipéid "%s": %v +issues.add_label = cuireadh an lipéad %s %s leis +issues.add_labels = cuireadh na %s lipéid %s +issues.remove_label = bainte an %s lipéad %s +issues.remove_labels = bainte na %s lipéid %s +issues.add_remove_labels = chuir %s leis agus bhain %s lipéid %s +issues.add_milestone_at = `chuir seo leis an gcloch mhíle %s %s` +issues.add_project_at = `chuir seo leis an tionscadal %s %s` +issues.change_milestone_at = `mionathraithe an chloch mhíle ó %s go %s %s` +issues.change_project_at = `mionathraithe an tionscadal ó %s go %s %s` +issues.remove_milestone_at = ` bhain seo den %schloch mhíle %s` +issues.remove_project_at = `bhain sé seo den %san tionscadal %s` +issues.deleted_milestone = `(scriosta)` +issues.deleted_project = `(scriosta)` +issues.self_assign_at = `féin-shannta an %s seo` +issues.add_assignee_at = `a shannadh ag %s %s` +issues.remove_assignee_at = `a bhí gan shannadh ag %s %s` +issues.remove_self_assignment = `bhain siad a sannadh %s` +issues.change_title_at = `athraigh an teideal ó %s go %s %s` +issues.change_ref_at = `tagairt athraithe ó %s go %s %s` +issues.remove_ref_at = `bhaint an tagairt %s %s` +issues.add_ref_at = `Cuireadh an tagairt %s %s leis` +issues.delete_branch_at = `brainse scriosta %s %s` +issues.filter_label = Lipéad +issues.filter_label_exclude = `Úsáid alt + cliceáil/iontráil chun lipéid a eisiamh` +issues.filter_label_no_select = Gach lipéad +issues.filter_label_select_no_label = Gan lipéad +issues.filter_milestone = Cloch Mhíle +issues.filter_milestone_all = Gach cloch mhíle +issues.filter_milestone_none = Gan aon clocha mhíle +issues.filter_milestone_open = Clocha mhíle oscailte +issues.filter_milestone_closed = Clocha mhíle dúnta +issues.filter_project = Tionscadal +issues.filter_project_all = Gach tionscadal +issues.filter_project_none = Gan aon tionscadal +issues.filter_assignee = Sannaitheoir +issues.filter_assginee_no_select = Gach sannaithe +issues.filter_assginee_no_assignee = Gan sannaitheoir +issues.filter_poster = Údar +issues.filter_type = Cineál +issues.filter_type.all_issues = Gach saincheist +issues.filter_type.assigned_to_you = Sannta duit +issues.filter_type.created_by_you = Cruthaithe agat +issues.filter_type.mentioning_you = Ag tagairt duit +issues.filter_type.review_requested = Athbhreithniú iarrtha +issues.filter_type.reviewed_by_you = Athbhreithnithe agat +issues.filter_sort = Sórtáil +issues.filter_sort.latest = Is nuaí +issues.filter_sort.oldest = Is sine +issues.filter_sort.recentupdate = Nuashonraithe le déanaí +issues.filter_sort.leastupdate = Is lú a nuashonraíodh le déanaí +issues.filter_sort.mostcomment = Is mó a bhfuil tráchtanna air +issues.filter_sort.leastcomment = Is lú a bhfuil tráchtanna air +issues.filter_sort.nearduedate = An dáta dlite is gaire +issues.filter_sort.farduedate = An dáta dlite is faide +issues.filter_sort.moststars = An líon réaltaí is mó +issues.filter_sort.feweststars = An líon réaltaí is lú +issues.filter_sort.mostforks = An líon forcanna is mó +issues.filter_sort.fewestforks = An líon forcanna is lú +issues.action_open = Oscailte +issues.action_close = Dún +issues.action_label = Lipéad +issues.action_milestone = Cloch Mhíle +issues.action_milestone_no_select = Gan Chloch Mhíle +issues.action_assignee = Sannaitheoir +issues.action_assignee_no_select = Gan sannaitheoir +issues.action_check = Seiceáil/Dísheiceáil +issues.action_check_all = Seiceáil/Dísheiceáil gach mireanna +issues.opened_by = oscail %[1]s le %[3]s +pulls.merged_by = le %[3]s cumasc %[1]s +pulls.merged_by_fake = le %[2]s a chumasc %[1]s +issues.closed_by = le dúnadh %[3]s %[1]s +issues.opened_by_fake = oscail %[1]s le %[2]s +issues.closed_by_fake = faoi ​​%[2]s dúnadh %[1]s +issues.previous = Roimhe Seo +issues.next = Ar Aghaidh +issues.open_title = Oscailte +issues.closed_title = Dúnta +issues.draft_title = Dréacht +issues.num_comments_1 = %d trácht +issues.num_comments = %d tráchtanna +issues.commented_at = `trácht %s ` +issues.delete_comment_confirm = An bhfuil tú cinnte gur mhaith leat an trácht seo a scriosadh? +issues.context.copy_link = Cóipeáil Nasc +issues.context.quote_reply = Luaigh Freagra +issues.context.edit = Cuir in eagar +issues.context.delete = Scrios +issues.no_content = Níl aon tuairisc ar fáil. +issues.close = Dún Eagrán +issues.comment_pull_merged_at = cumasc tiomantas %[1]s le %[2]s %[3]s +issues.comment_manually_pull_merged_at = cumasc tiomantas %[1]s le %[2]s %[3]s +issues.close_comment_issue = Dún le trácht +issues.reopen_issue = Athoscail +issues.reopen_comment_issue = Athoscail le trácht +issues.create_comment = Trácht +issues.closed_at = `dhún an cheist seo %[2]s` +issues.reopened_at = `athoscail an t-eagrán seo %[2]s` +issues.commit_ref_at = `rinne tagairt don cheist seo ó ghealltanas %[2]s` +issues.ref_issue_from = `rinne dagairt don cheist seo %[4]s %[2]s` +issues.ref_pull_from = `rinne dagairt don iarratas tarraingthe seo %[4]s %[ 2]s` +issues.ref_closed_from = `dhún an cheist seo %[4]s %[2]s` +issues.ref_reopened_from = `d'athoscail an eagrán seo %[4]s %[2]s` +issues.ref_from = `ó %[1]s` +issues.author = Údar +issues.role.owner = Úinéir +issues.role.owner_helper = Is é an t-úsáideoir seo úinéir an stór seo. +issues.role.member = Comhalta +issues.role.member_helper = Is ball den eagraíocht é an t-úsáideoir seo a bhfuil an stór seo ina úinéireacht. +issues.role.collaborator = Comhoibritheoir +issues.role.collaborator_helper = Tugadh cuireadh don úsáideoir seo comhoibriú ar an stóras. +issues.role.first_time_contributor = Cuiditheoir den chéad uair +issues.role.first_time_contributor_helper = Seo é an chéad uair a chuir an t-úsáideoir seo leis an stóras. +issues.role.contributor = Cuiditheoir +issues.re_request_review = Athiarraigh athbhreithniú +issues.is_stale = Rinneadh athruithe ar an PR seo ón athbhreithniú seo +issues.remove_request_review = Bain iarratas athbhreithni +issues.remove_request_review_block = Ní féidir iarratas athbhreithnithe a bhaint +issues.dismiss_review = Díbhe Athbhreithnithe +issues.dismiss_review_warning = An bhfuil tú cinnte gur mhaith leat an athbhreithnithe seo a dhíbhe? +issues.sign_in_require_desc = Sínigh isteach chun dul isteach sa chomhrá seo. +issues.edit = Cuir in eagar +issues.cancel = Cealaigh +issues.save = Sábháil +issues.label_title = Ainm +issues.label_description = Cur síos +issues.label_color = Dath +issues.label_exclusive = Eisiach +issues.label_archive = Lipéad Cartlann +issues.label_archived_filter = Taispeáin lipéid cartlainne +issues.label_archive_tooltip = Eisiatar lipéid chartlainne de réir réamhshocraithe ó na moltaí nuair a dhéantar cuardach de réir lipéid. +issues.label_exclusive_desc = Ainmnigh an lipéad scope/item chun é a dhéanamh comheisiatach le lipéid scope/ eile. +issues.label_exclusive_warning = Bainfear aon lipéid scóipe contrártha le linn eagarthóireacht a dhéanamh ar lipéid iarratais eisiúna nó tarraingthe. +issues.label_count = %d lipéid +issues.label_open_issues = %d saincheisteanna oscailte/iarratais tarraing +issues.label_edit = Cuir in eagar +issues.label_delete = Scrios +issues.label_modify = Cuir Lipéad in Eagar +issues.label_deletion = Scrios Lipéad +issues.label_deletion_desc = Baineann lipéad a scriosadh é ó gach saincheist. Lean ar aghaidh? +issues.label_deletion_success = Tá an lipéad scriosta. +issues.label.filter_sort.alphabetically = Aibítreach +issues.label.filter_sort.reverse_alphabetically = Aisiompú in ord aibítre +issues.label.filter_sort.by_size = Méid is lú +issues.label.filter_sort.reverse_by_size = Méid is mó +issues.attachment.open_tab = `Cliceáil chun "%s" a fheiceáil i gcluaisín nua` +issues.attachment.download = `Cliceáil chun "%s" a íoslódáil` +issues.subscribe = Liostáil +issues.unsubscribe = Díliostáil +issues.lock = Cuir glas ar an gcomhrá +issues.unlock = Díghlasáil comhrá +issues.lock.unknown_reason = Ní féidir fadhb a ghlasáil le cúis anaithnid. +issues.lock_duplicate = Ní féidir saincheist a ghlasáil faoi dhó. +issues.unlock_error = Ní féidir saincheist nach bhfuil glasáilte a dhíghlasáil. +issues.lock_confirm = Glas +issues.unlock_confirm = Díghlasáil +issues.lock.notice_2 = - Is féidir leatsa agus le comhoibrithe eile a bhfuil rochtain acu ar an stór seo fós tuairimí a fhágáil a fheiceann daoine eile. +issues.lock.notice_3 = - Is féidir leat an tsaincheist seo a dhíghlasáil arís sa todhchaí. +issues.unlock.notice_1 = - Bheadh gach duine in ann trácht a dhéanamh ar an gceist seo arís. +issues.unlock.notice_2 = - Is féidir leat an tsaincheist seo a ghlasáil arís sa todhchaí i gcónaí. +issues.lock.reason = Cúis le glasáil +issues.lock.title = Glas comhrá ar an gceist seo. +issues.unlock.title = Díghlasáil comhrá ar an gceist seo. +issues.comment_on_locked = Ní féidir leat trácht a dhéanamh ar shaincheist faoi ghlas. +issues.delete = Scrios +issues.delete.title = Scrios an t-eagrán seo? +issues.delete.text = An bhfuil tú cinnte gur mhaith leat an cheist seo a scriosadh? (Bainfidh sé seo an t-inneachar go léir go buan. Smaoinigh ar é a dhúnadh ina ionad sin, má tá sé i gceist agat é a choinneáil i gcartlann) +issues.tracker = Rianaitheoir Ama +issues.tracker_auto_close = Stopfar ama go huathoibríoch nuair a dhúnfar an tsaincheist seo +issues.tracking_already_started = `Tá tús curtha agat cheana féin ag rianú ama ar eagrán eile!` +issues.cancel_tracking_history = `rianú ama curtha ar ceal %s` +issues.del_time = Scrios an log ama seo +issues.del_time_history = `an t-am caite scriosta %s` +issues.add_time_hours = Uaireanta +issues.add_time_minutes = Miontuairi +issues.add_time_sum_to_small = Níor iontráilíodh aon am. +issues.time_spent_total = An t-am iomlán a chaitear +issues.time_spent_from_all_authors = `Am Iomlán Caitear: %s` +issues.due_date = Dáta dlite +issues.force_push_compare = Déan comparáid +issues.dependency.title = Spleithiúlachtaí +issues.dependency.issue_no_dependencies = Níl aon spleáchais leagtha síos. +issues.dependency.pr_no_dependencies = Níl aon spleáchais leagtha síos. +issues.dependency.add = Cuir spleáchas leis… +issues.dependency.cancel = Cealaigh +issues.dependency.remove = Bain +issues.dependency.remove_info = Bain an spleáchas seo +issues.dependency.added_dependency = `cuireadh spleáchas nua %s` +issues.dependency.removed_dependency = `bainte spleáchas %s` +issues.dependency.pr_closing_blockedby = Cuireann na saincheisteanna seo a leanas bac ar an iarratas tarraingte seo a dhúnadh +issues.dependency.issue_closing_blockedby = Tá na saincheisteanna seo a leanas bac ar dhúnadh an cheist seo +issues.dependency.issue_close_blocks = Cuireann an tsaincheist seo bac ar dhúnadh na saincheisteanna +issues.dependency.pr_close_blocks = Cuireann an iarratas tarraingthe seo bac ar dhúnadh na saincheisteanna +issues.dependency.issue_close_blocked = Ní mór duit gach saincheist a chuireann bac ar an gceist seo a dhúnadh sular féidir leat é a dhúnadh. +issues.dependency.pr_close_blocked = Ní mór duit gach saincheist a bhlocálann an iarratas tarraingthe seo a dhúnadh sula féidir leat é a chumasc. +issues.dependency.blocks_short = Bloic +issues.dependency.blocked_by_short = Ag brath ar +issues.dependency.remove_header = Bain spleáchas +issues.dependency.issue_remove_text = Bainfidh sé seo an spleáchas ón gceist seo. Lean ar aghaidh? +issues.dependency.pr_remove_text = Bainfidh sé seo an spleáchas ón iarratas tarraingthe seo. Lean ar aghaidh? +issues.dependency.setting = Cumasaigh spleáchais le haghaidh Saincheisteanna agus Iarrataí Tar +issues.dependency.add_error_same_issue = Ní féidir leat ceist a dhéanamh ag brath air féin. +issues.dependency.add_error_dep_issue_not_exist = Níl saincheist spleách ann. +issues.dependency.add_error_dep_not_exist = Ní bhíonn spleáchas ann. +issues.dependency.add_error_dep_exists = Tá spleáchas ann cheana féin. +issues.dependency.add_error_cannot_create_circular = Ní féidir leat spleáchas a chruthú le dhá shaincheist a chuireann bac ar a chéile. +issues.dependency.add_error_dep_not_same_repo = Caithfidh an dá shaincheist a bheith sa stór céanna. +issues.review.self.approval = Ní féidir leat d'iarratas tarraingthe féin a cheadú. +issues.review.self.rejection = Ní féidir leat athruithe a iarraidh ar d'iarratas tarraingthe féin. +issues.review.dismissed_label = Dhiúltaigh +issues.review.left_comment = d'fhág trácht +issues.review.content.empty = Ní mór duit trácht a fhágáil a léiríonn an t-athrú (í) iarrtha. +issues.review.pending = Ar feitheamh +issues.review.pending.tooltip = Níl an nóta tráchta seo le feiceáil ag úsáideoirí eile faoi láthair. Chun do thuairimí ar feitheamh a chur isteach, roghnaigh "%s" -> "%s/%s/%s" ag barr an leathanaigh. +issues.review.reviewers = Léirmheasóirí +issues.review.outdated = As dáta +issues.review.outdated_description = Tá athrú tagtha ar ábhar ó rinneadh an trácht seo +issues.review.option.show_outdated_comments = Taispeáin tráchtanna atá as dáta +issues.review.option.hide_outdated_comments = Folaigh tráchtanna atá as dáta +issues.review.show_outdated = Taispeáin as dáta +issues.review.hide_outdated = Folaigh as dáta +issues.review.show_resolved = Taispeáin réitithe +issues.review.hide_resolved = Folaigh réitithe +issues.review.resolve_conversation = Réitigh comhrá +issues.review.un_resolve_conversation = Comhrá gan réiteach +issues.review.resolved_by = mharcáil an comhrá seo mar réitigh +issues.reference_issue.body = Comhlacht +issues.content_history.deleted = scriosta +issues.content_history.edited = curtha in eagar +issues.content_history.created = cruthaithe +issues.content_history.delete_from_history = Scrios ón stair +issues.content_history.delete_from_history_confirm = Scrios ón stair? +issues.content_history.options = Roghanna +issues.reference_link = Tagairt: %s +compare.compare_base = bonn +compare.compare_head = déan comparáid +pulls.desc = Cumasaigh iarratais tarraingthe agus athbhreithnithe cód. +pulls.new = Iarratas Tarraingthe Nua +pulls.view = Féach ar Iarratas Tarraing +pulls.edit.already_changed = Ní féidir athruithe a shábháil ar an iarratas tarraingthe. Dealraíonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arís chun a gcuid athruithe a sheachaint +pulls.compare_changes = Iarratas Tarraingthe Nua +pulls.allow_edits_from_maintainers = Ceadaigh eagarthóirí ó chothabhálaí +pulls.allow_edits_from_maintainers_desc = Is féidir le húsáideoirí a bhfuil rochtain scríofa acu ar an mbunbhrainse brú chuig an bhrainse +pulls.allow_edits_from_maintainers_err = Theip ar nuashonrú +pulls.compare_changes_desc = Roghnaigh an brainse le cumasc isteach agus an brainse le tarraingt uaidh. +pulls.has_viewed_file = Breathnaithe +pulls.has_changed_since_last_review = Athraithe ó d'athbhreithniú deire +pulls.viewed_files_label = Breathnaíodh ar %[1]d / %[2]d comhaid +pulls.expand_files = Leathnaigh gach comhaid +pulls.collapse_files = Laghdaigh gach comhaid +pulls.compare_base = cumaisc isteach +pulls.compare_compare = tarraing ó +pulls.switch_comparison_type = Athraigh cineál comparáide +pulls.switch_head_and_base = Athraigh ceann agus bonn +pulls.filter_branch = Brainse scagaire +pulls.show_all_commits = Taispeáin gach gealltanas +pulls.show_changes_since_your_last_review = Taispeáin athruithe ón léirmheas deiridh +pulls.showing_only_single_commit = Ag taispeáint athruithe tiomantais %[1]s amháin +pulls.showing_specified_commit_range = Ag taispeáint athruithe idir %[1]s..%[2]s +pulls.select_commit_hold_shift_for_range = Roghnaigh tiomantas. Coinnigh shift + cliceáil chun raon a roghnú +pulls.review_only_possible_for_full_diff = Ní féidir athbhreithniú a dhéanamh ach amháin nuair a bhreathnaítear ar an difríocht iomlán +pulls.filter_changes_by_commit = Scagaigh de réir tiomantas +pulls.nothing_to_compare = Tá na brainsí seo cothrom. Ní gá iarratas tarraingthe a chruthú. +pulls.nothing_to_compare_have_tag = Tá an brainse/clib roghnaithe cothrom. +pulls.nothing_to_compare_and_allow_empty_pr = Tá na brainsí seo cothrom. Beidh an PR seo folamh. +pulls.has_pull_request = `Tá iarratas tarraingthe idir na brainsí seo ann cheana: %[2]s#%[3]d` +pulls.create = Cruthaigh Iarratas Tarraing +pulls.change_target_branch_at = `athraigh an spriocbhrainse ó %s go %s %s` +pulls.tab_conversation = Comhrá +pulls.tab_commits = Tiomáintí +pulls.tab_files = Comhaid Athraithe +pulls.reopen_to_merge = Athoscail an t-iarratas tarraingthe seo le do thoil chun cumasc a dhéanamh. +pulls.cant_reopen_deleted_branch = Ní féidir an t-iarratas tarraingthe seo a athoscailt toisc gur scriosadh an brainse. +pulls.merged = Cumaiscthe +pulls.merged_success = D'éirigh leis an iarratas tarraingthe a chumasc agus a dhúnadh +pulls.closed = Iarratas tarraingthe dúnta +pulls.manually_merged = Cumaisc de láimh +pulls.merged_info_text = Is féidir an brainse %s a scriosadh anois. +pulls.is_closed = Tá an t-iarratas tarraingthe dúnta. +pulls.title_wip_desc = `Tosaigh an teideal le %s chun an t-iarratas tarraingthe a chosc ó chumasc de thaisme.` +pulls.cannot_merge_work_in_progress = Tá an t-iarratas tarraingthe seo marcáilte mar obair atá ar siúl. +pulls.still_in_progress = Fós ar siúl? +pulls.add_prefix = Cuir réimír %s leis +pulls.remove_prefix = Bain an réimír %s +pulls.data_broken = Tá an t-iarratas tarraingthe seo briste mar gheall ar fhaisnéis forc a bheith in easnamh. +pulls.files_conflicted = Tá athruithe ag an iarratas tarraingthe seo atá contrártha leis an spriocbhrainse. +pulls.required_status_check_failed = Níor éirigh le roinnt seiceálacha riachtanacha. +pulls.required_status_check_missing = Tá roinnt seiceanna riachtanacha ar iarraidh. +pulls.required_status_check_administrator = Mar riarthóir, féadfaidh tú an t-iarratas tarraingthe seo a chumasc fós. +pulls.can_auto_merge_desc = Is féidir an t-iarratas tarraingt seo a chumasc go huathoibríoch. +pulls.cannot_auto_merge_desc = Ní féidir an t-iarratas tarraingthe seo a chumasc go huathoibríoch mar gheall ar choinbhleachtaí. +pulls.cannot_auto_merge_helper = Cumaisc de láimh chun na coinbhleachtaí a réiteach. +pulls.no_merge_desc = Ní féidir an t-iarratas tarraingthe seo a chumasc toisc go bhfuil gach rogha cumaisc stór díchumasaithe. +pulls.no_merge_helper = Cumasaigh roghanna cumaisc i socruithe an stór nó cumasc an t-iarratas tarraingthe de láimh. +pulls.no_merge_wip = Ní féidir an t-iarratas tarraingthe seo a chumasc toisc go bhfuil sé marcáilte mar obair atá ar siúl é. +pulls.no_merge_not_ready = Níl an t-iarratas tarraingthe seo réidh le cumasc, seiceáil stádas athbhreithnithe agus seiceálacha stádais. +pulls.no_merge_access = Níl tú údaraithe chun an t-iarratas tarraingthe seo a chumasc. +pulls.merge_pull_request = Cruthaigh tiomantas cumaisc +pulls.rebase_merge_pull_request = Athbhunaigh ansin go tapa ar aghaidh +pulls.rebase_merge_commit_pull_request = Rebase ansin cruthaigh tiomantas cumaisc +pulls.squash_merge_pull_request = Cruthaigh tiomantas scuaise +pulls.fast_forward_only_merge_pull_request = Go tapa ar aghaidh amháin +pulls.merge_manually = Cumaisc de láimh +pulls.merge_commit_id = ID an tiomantis cumaisc +pulls.require_signed_wont_sign = Éilíonn an bhrainse tiomáintí shínithe, ach ní shínífear an cumasc seo +pulls.invalid_merge_option = Ní féidir leat an rogha cumaisc seo a úsáid don iarratas tarraingthe seo. +pulls.merge_conflict = Theip ar Cumaisc: Bhí coinbhleacht ann agus é ag cumasc. Leid: Bain triail as straitéis dhifriúil +pulls.merge_conflict_summary = Teachtaireacht Earráide +pulls.rebase_conflict = Theip ar Chumasc: Bhí coinbhleacht ann agus tiomantas á athbhunú: %[1]s. Leid: Bain triail as straitéis eile +pulls.rebase_conflict_summary = Teachtaireacht Earráide +pulls.unrelated_histories = Theip ar Cumaisc: Ní roinneann an ceann cumaisc agus an bonn stair choiteann. Leid: Bain triail as straitéis dhifriúil +pulls.merge_out_of_date = Theip ar Cumaisc: Agus an cumaisc á ghiniúint, nuashonraíodh an bonn. Leid: Bain triail as arís. +pulls.head_out_of_date = Theip ar Cumaisc: Agus an cumaisc á ghiniúint, nuashonraíodh an ceann. Leid: Bain triail as arís. +pulls.has_merged = Theip ar: Cumaisíodh an t-iarratas tarraingthe, ní féidir leat a chumasc arís nó an spriocbhrainse a athrú. +pulls.push_rejected = Theip ar Brúigh: Diúltaíodh don bhrú. Déan athbhreithniú ar na Git Hooks don stór seo. +pulls.push_rejected_summary = Teachtaireacht Diúltaithe Iomlán +pulls.push_rejected_no_message = Theip ar Brúigh: Diúltaíodh don bhrú ach ní raibh aon teachtaireacht iargúlta ann. Déan athbhreithniú ar Git Hooks don stór seo +pulls.open_unmerged_pull_exists = `Ní féidir leat oibríocht athoscailte a dhéanamh toisc go bhfuil iarratas tarraingthe ar feitheamh (#%d) le hairíonna comhionanna. ` +pulls.status_checking = Tá roinnt seiceála ar feitheamh +pulls.status_checks_success = D'éirigh le gach seiceáil +pulls.status_checks_warning = Thuairiscigh roinnt seiceálacha rabhaidh +pulls.status_checks_failure = Theip ar roinnt seiceálacha +pulls.status_checks_error = Thug roinnt seiceálacha earráidí +pulls.status_checks_requested = Riachtanach +pulls.status_checks_details = Sonraí +pulls.status_checks_hide_all = Folaigh gach seiceáil +pulls.status_checks_show_all = Taispeáin gach seiceáil +pulls.update_branch = Nuashonrú brainse trí chumasc +pulls.update_branch_rebase = Nuashonraigh an bhrainse trí athbhunú +pulls.update_branch_success = Bhí nuashonrú brainse rathúil +pulls.update_not_allowed = Ní cheadaítear duit brainse a nuashonrú +pulls.outdated_with_base_branch = Tá an brainse seo as dáta leis an mbunbhrainse +pulls.close = Dún Iarratas Tarraing +pulls.closed_at = `dhún an t-iarratas tarraingthe seo %[2]s` +pulls.reopened_at = `athoscail an t-iarratas tarraingthe seo %[2]s` +pulls.cmd_instruction_checkout_title = Seiceáil +pulls.cmd_instruction_checkout_desc = Ó stór tionscadail, seiceáil brainse nua agus déan tástáil ar na hathruithe. +pulls.cmd_instruction_merge_title = Cumaisc +pulls.clear_merge_message = Glan an teachtaireacht chumaisc +pulls.clear_merge_message_hint = Má imrítear an teachtaireacht chumaisc ní bhainfear ach ábhar na teachtaireachta tiomanta agus coimeádfar leantóirí git ginte ar nós "Co-Authored-By …". +pulls.auto_merge_button_when_succeed = (Nuair a éiríonn le seiceálacha) +pulls.auto_merge_when_succeed = Cumaisc uathoibríoch nuair a éiríonn +pulls.auto_merge_newly_scheduled = Bhí an t-iarratas tarraingt sceidealta le cumasc nuair a éiríonn le gach seiceáil. +pulls.auto_merge_has_pending_schedule = Bhí an t-iarratas tarraingthe seo sceidealaithe ag %[1]s chun cumasc uathoibríoch a dhéanamh nuair a éiríonn le gach seiceáil %[2]s. +pulls.auto_merge_cancel_schedule = Cealaigh cumasc uathoibríoch +pulls.auto_merge_not_scheduled = Níl an t-iarratas tarraingthe seo sceidealaithe le cumasc go huathoibríoch. +pulls.auto_merge_canceled_schedule = Cealaíodh an cumaisc uathoibríoch don iarratas tarraingthe seo. +pulls.auto_merge_newly_scheduled_comment = `sceidealta an t-iarratas tarraingthe seo le cumasc uathoibrithe nuair a éiríonn le gach seiceáil %[1]s` +pulls.auto_merge_canceled_schedule_comment = `curtha ar ceal uathchumasc leis an iarratas tarraingthe seo nuair a éiríonn le gach seiceáil %[1]s` +pulls.delete.title = Scrios an t-iarratas tarraingthe seo? +pulls.delete.text = An bhfuil tú cinnte gur mhaith leat an t-iarratas tarraingthe seo a scriosadh? (Bainfidh sé seo an t-inneachar go léir go buan. Smaoinigh ar é a dhúnadh ina ionad sin, má tá sé i gceist agat é a choinneáil i gcartlann) +pull.deleted_branch = (scriosta): %s +comments.edit.already_changed = Ní féidir athruithe a shábháil ar an trácht. Dealraíonn sé gur athraigh úsáideoir eile an t-ábhar cheana féin. Athnuachan an leathanach agus déan iarracht eagarthóireacht arís chun a gcuid athruithe a sheachaint +milestones.new = Cloch Mhíle Nua +milestones.closed = Dúnta %s +milestones.update_ago = Nuashonraithe %s +milestones.no_due_date = Gan dáta dlite +milestones.open = Oscailte +milestones.close = Dún +milestones.new_subheader = Is féidir le clocha míle cabhrú leat ceisteanna a eagrú agus a ndul chun cinn a rianú. +milestones.completeness = %d%% Críochnaithe +milestones.create = Cruthaigh Cloch Mhíle +milestones.title = Teideal +milestones.desc = Cur síos +milestones.due_date = Dáta dlite (roghnach) +milestones.clear = Glan +milestones.create_success = Cruthaíodh an chloch mhíle "%s". +milestones.edit = Cuir Cloch Mhíle in eagar +milestones.edit_subheader = Eagraíonn Garspriocanna saincheisteanna agus rianaítear dul chun cinn. +milestones.cancel = Cealaigh +milestones.modify = Nuashonraigh Cloch Mhíle +milestones.edit_success = Nuashonraíodh cloch mhíle "%s". +milestones.deletion = Scrios Cloch Mhíle +milestones.deletion_desc = Cuireann scriosadh cloch mhíle é as gach saincheist ghaolmhar. Lean ar aghaidh? +milestones.deletion_success = Tá an chloch mhíle scriosta. +milestones.filter_sort.name = Ainm +milestones.filter_sort.least_complete = Is lú críochnaithe +milestones.filter_sort.most_complete = Is mó críochnaithe +milestones.filter_sort.most_issues = Saincheisteanna is mó +milestones.filter_sort.least_issues = Saincheisteanna is lú +signing.will_sign = Síneofar an gealltanas seo le heochair "%s". +signing.wont_sign.error = Bhí earráid ann agus tú ag seiceáil an féidir an tiomantas a shíniú. +signing.wont_sign.never = Ní shínítear tiomáintí riamh. +signing.wont_sign.always = Sínítear tiomáintí i gcónaí. +signing.wont_sign.pubkey = Ní shíníofar an tiomantas toisc nach bhfuil eochair phoiblí agat a bhaineann le do chuntas. +signing.wont_sign.twofa = Caithfidh fíordheimhniú dhá-fhachtóir a bheith agat chun tiomáintí a shíniú. +signing.wont_sign.parentsigned = Ní shíníofar an tiomantas toisc nach bhfuil an tiomantas tuismitheora sínithe. +signing.wont_sign.basesigned = Ní shínífear an cumasc toisc nach bhfuil an tiomantas bunaithe sínithe. +signing.wont_sign.headsigned = Ní shínífear an cumasc toisc nach bhfuil an tiomantas ceann sínithe. +signing.wont_sign.commitssigned = Ní shínífear an cumasc toisc nach bhfuil na tiomáintí gaolmhara go léir sínithe. +signing.wont_sign.approved = Ní shíníofar an cumaisc toisc nach bhfuil an PR ceadaithe. +signing.wont_sign.not_signed_in = Níl tú sínithe isteach. +wiki = Vicí +wiki.welcome = Fáilte go dtí an Vicí. +wiki.welcome_desc = Ligeann an vicí duit cáipéisíocht a scríobh agus a roinnt le comhoibrithe. +wiki.desc = Scríobh agus roinn cáipéisíocht le comhoibrithe. +wiki.create_first_page = Cruthaigh an Chéad Leathanach +wiki.page = Leathanach +wiki.filter_page = Leathanach scagaire +wiki.new_page = Leathanach +wiki.page_title = Teideal an leathanaigh +wiki.page_content = Ábhar an leathanaigh +wiki.default_commit_message = Scríobh nóta faoin nuashonrú leathanaigh seo (roghnach). +wiki.save_page = Sábháil Leathanach +wiki.last_commit_info = Cuireadh %s an leathanach seo in eagar %s +wiki.edit_page_button = Cuir in eagar +wiki.new_page_button = Leathanach Nua +wiki.file_revision = Athbhreithniú Leathanach +wiki.back_to_wiki = Ar ais go leathanach vicí +wiki.delete_page_button = Scrios Leathanach +wiki.delete_page_notice_1 = Ní féidir leathanach vicí "%s" a scriosadh. Lean ort? +wiki.page_already_exists = Tá leathanach vicí leis an ainm céanna ann cheana féin. +wiki.reserved_page = Tá an t-ainm leathanaigh vicí "%s" in áirithe. +wiki.pages = Leathanaigh +wiki.last_updated = Nuashonraithe deireanach %s +wiki.original_git_entry_tooltip = Féach ar an gcomhad bunaidh Git in ionad nasc cairdiúil a úsáid. +activity = Gníomhaíocht +activity.navbar.pulse = Cuisle +activity.navbar.code_frequency = Minicíocht Cód +activity.navbar.contributors = Rannpháirtithe +activity.navbar.recent_commits = Tiomáintí le déanaí +activity.period.filter_label = Tréimhse: +activity.period.daily = 1 lá +activity.period.halfweekly = 3 lá +activity.period.weekly = 1 seachtain +activity.period.monthly = 1 mhí +activity.period.quarterly = 3 mhí +activity.period.semiyearly = 6 mhí +activity.period.yearly = 1 bhliain +activity.overview = Forbhreathnú +activity.active_prs_count_1 = %d Iarratas Tarraingthe Gníomhach +activity.active_prs_count_n = %d Iarratais Tharraing Ghníomhach +activity.merged_prs_count_1 = Iarratas Tarraing Cumaisc +activity.merged_prs_count_n = Iarratais Tharraing Chomhcheangail +activity.opened_prs_count_1 = Iarratas Tarraing Beartaithe +activity.opened_prs_count_n = Iarratais Tarraing Beartaithe +activity.title.user_1 = %d úsáideoir +activity.title.user_n = %d úsáideoirí +activity.title.prs_1 = Iarratas tarraing %d +activity.title.prs_n = %d Iarratais Tarraing +activity.title.prs_merged_by = %s a chumasc ag %s +activity.title.prs_opened_by = %s arna mholadh ag %s +activity.merged_prs_label = Cumaiscthe +activity.opened_prs_label = Molta +activity.active_issues_count_1 = %d Eagrán Gníomhach +activity.active_issues_count_n = %d Ceisteanna Gníomhacha +activity.closed_issues_count_1 = Saincheist Dúnta +activity.closed_issues_count_n = Saincheisteanna Dúnta +activity.title.issues_1 = Saincheist %d +activity.title.issues_n = Saincheisteanna %d +activity.title.issues_closed_from = %s dúnta ó %s +activity.title.issues_created_by = %s cruthaithe ag %s +activity.closed_issue_label = Dúnta +activity.new_issues_count_1 = Eagrán Nua +activity.new_issues_count_n = Saincheisteanna Nua +activity.new_issue_label = Osclaíodh +activity.title.unresolved_conv_1 = %d Comhrá Neamhréitithe +activity.title.unresolved_conv_n = %d Comhráite Neamhréitithe +activity.unresolved_conv_desc = Níor réitíodh na saincheisteanna agus na hiarratais tarraingthe seo le déanaí fós. +activity.unresolved_conv_label = Oscailte +activity.title.releases_1 = Scaoileadh %d +activity.title.releases_n = Eisiúintí %d +activity.title.releases_published_by = %s foilsithe ag %s +activity.no_git_activity = Níor rinneadh aon ghníomhaíocht tiomanta sa tréimhse seo. +activity.git_stats_exclude_merges = Gan cumaisc a áireamh, +activity.git_stats_author_1 = %d údar +activity.git_stats_author_n = %d údair +activity.git_stats_pushed_1 = tá sé brúite +activity.git_stats_pushed_n = tá brú orthu +activity.git_stats_commit_1 = %d tiomantas +activity.git_stats_commit_n = %d tiomáintí +activity.git_stats_push_to_branch = chuig %s agus +activity.git_stats_push_to_all_branches = chuig gach brainse. +activity.git_stats_on_default_branch = Ar %s, +activity.git_stats_file_1 = %d comhad +activity.git_stats_file_n = %d comhaid +activity.git_stats_files_changed_1 = tá athrú tagtha +activity.git_stats_files_changed_n = tá athraithe +activity.git_stats_additions = agus tá ann +activity.git_stats_addition_1 = %d breisiú +activity.git_stats_addition_n = %d breiseanna +activity.git_stats_and_deletions = agus +activity.git_stats_deletion_1 = %d scriosadh +activity.git_stats_deletion_n = %d scriosta +contributors.contribution_type.filter_label = Cineál ranníocaíochta: +contributors.contribution_type.commits = Tiomáintí +contributors.contribution_type.additions = Breiseanna +contributors.contribution_type.deletions = Scriosadh +settings = Socruithe +settings.desc = Is é socruithe an áit ar féidir leat na socruithe don stóras a bhainistiú +settings.options = Stóras +settings.collaboration = Comhoibritheoirí +settings.collaboration.admin = Riarthóir +settings.collaboration.write = Scríobh +settings.collaboration.read = Léigh +settings.collaboration.owner = Úinéir +settings.collaboration.undefined = Neamhshainithe +settings.hooks = Crúcaí Gréasán +settings.githooks = Crúcanna Git +settings.basic_settings = Socruithe Bunúsacha +settings.mirror_settings = Socruithe Scáthán +settings.mirror_settings.docs = Cuir do stóras ar bun chun tiomáintí, clibeanna agus brainsí a shioncronú go huathoibríoch le stóras eile. +settings.mirror_settings.docs.disabled_pull_mirror.instructions = Socraigh do thionscadal chun tiomáintí, clibeanna agus brainsí a bhrú go huathoibríoch chuig stóras eile. Tá scátháin tarraingthe díchumasaithe ag riarthóir do shuíomh. +settings.mirror_settings.docs.disabled_push_mirror.instructions = Socraigh do thionscadal chun tiomáintí, clibeanna agus brainsí a tharraingt go huathoibríoch ó stóras eile. +settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning = Faoi láthair, ní féidir é seo a dhéanamh ach sa roghchlár "Imirce Nua". Le haghaidh tuilleadh eolais, téigh i gcomhairle le do thoil: +settings.mirror_settings.docs.disabled_push_mirror.info = Chuir riarthóir do shuíomh faoi dhíchumasú scátháin bhrú. +settings.mirror_settings.docs.no_new_mirrors = Tá do stóras ag teacht le hathruithe chuig nó ó stóras eile. Cuimhnigh le do thoil nach féidir leat scátháin nua a chruthú faoi láthair. +settings.mirror_settings.docs.can_still_use = Cé nach féidir leat scátháin atá ann cheana a mhodhnú nó cinn nua a chruthú, féadfaidh tú do scáthán atá ann cheana a úsáid fós. +settings.mirror_settings.docs.pull_mirror_instructions = Chun scáthán tarraingthe a shocrú, téigh i gcomhairle le do thoil: +settings.mirror_settings.docs.more_information_if_disabled = Is féidir leat tuilleadh eolais a fháil faoi scátháin bhrú agus tarraingthe anseo: +settings.mirror_settings.docs.doc_link_title = Conas is féidir liom na stórtha a scáthánú? +settings.mirror_settings.docs.doc_link_pull_section = an chuid "Ag tarraingt ó stóras" den doiciméadú. +settings.mirror_settings.docs.pulling_remote_title = Ag tarraingt ó stóras cianda +settings.mirror_settings.mirrored_repository = Stóras scátháin +settings.mirror_settings.pushed_repository = Stóras brúite +settings.mirror_settings.direction = Treo +settings.mirror_settings.direction.pull = Tarraingt +settings.mirror_settings.direction.push = Brúigh +settings.mirror_settings.last_update = Nuashonrú deireanach +settings.mirror_settings.push_mirror.none = Níl aon scátháin bhrú cumraithe +settings.mirror_settings.push_mirror.remote_url = URL Stóras Cianda Git +settings.mirror_settings.push_mirror.add = Cuir Scáthán Brúigh leis +settings.mirror_settings.push_mirror.edit_sync_time = Eagar eatramh sioncronaithe scátháin +settings.sync_mirror = Sioncronaigh Anois +settings.pull_mirror_sync_in_progress = Athruithe a tharraingt ón iargúlta %s i láthair na huaire. +settings.push_mirror_sync_in_progress = Athruithe a bhrú ar an iargúlta %s i láthair na huaire. +settings.site = Láithreán Gréasáin +settings.update_mirror_settings = Nuashonraigh Socruithe Scátháin +settings.branches.switch_default_branch = Athraigh Brainse Réamhshocraithe +settings.branches.update_default_branch = An Brainse Réamhshocraithe a nuashonrú +settings.branches.add_new_rule = Cuir Riail Nua leis +settings.advanced_settings = Ardsocruithe +settings.wiki_desc = Cumasaigh Stór Vicí +settings.use_internal_wiki = Úsáid Vicí Insuite +settings.use_external_wiki = Úsáid Vicí Seachtrach +settings.external_wiki_url = URL Vicí Seachtrach +settings.external_wiki_url_error = Ní URL bailí é URL seachtrach vicí. +settings.external_wiki_url_desc = Atreoraítear cuairteoirí chuig an URL wiki seachtrach agus iad ag cliceáil ar an gcluaisín wiki. +settings.issues_desc = Cumasaigh Rianóir Saincheist Stórais +settings.use_internal_issue_tracker = Úsáid Rianóir Saincheist Ionsuite +settings.use_external_issue_tracker = Úsáid Rianaire Eisiúint Sheachtrach +settings.external_tracker_url = URL Rianaithe Saincheisteanna Seachtrach +settings.external_tracker_url_error = Ní URL bailí é an URL rianaitheora saincheisteanna seachtrach. +settings.external_tracker_url_desc = Déantar cuairteoirí a atreorú chuig an URL rianaithe eisiúintí seachtracha nuair a chliceálann siad ar an táb saincheisteanna. +settings.tracker_url_format = Formáid URL Rianaithe Saincheist Seachtrach +settings.tracker_url_format_error = Ní URL bailí é an fhormáid URL rianaitheora saincheisteanna seachtrach. +settings.tracker_issue_style = Formáid Uimhir Rianaithe Saincheisteanna +settings.tracker_issue_style.numeric = Uimhriúil +settings.tracker_issue_style.alphanumeric = Alfauméireacha +settings.tracker_issue_style.regexp = Léiriú Rialta +settings.tracker_issue_style.regexp_pattern = Patrún Léirithe Rialta +settings.tracker_issue_style.regexp_pattern_desc = Úsáidfear an chéad ghrúpa a gabhadh in ionad {index}. +settings.tracker_url_format_desc = Úsáid na sealbhóirí áite {user}, {repo} agus {index} le haghaidh an ainm úsáideora, an t-ainm stórtha agus an t-innéacs eisiúna. +settings.enable_timetracker = Cumasaigh Rianú Ama +settings.allow_only_contributors_to_track_time = Lig do Rannpháirtithe Amach Am a Rianú +settings.pulls_desc = Cumasaigh Iarratais Tarraingthe Stóras +settings.pulls.ignore_whitespace = Déan neamhaird de spás bán le haghaidh coinbhleachtaí +settings.pulls.enable_autodetect_manual_merge = Cumasaigh cumasc láimhe autodetector (Nóta: I roinnt cásanna speisialta, is féidir míbhreithiúnais tarlú) +settings.pulls.allow_rebase_update = Cumasaigh brainse iarratais tarraingthe a nuashonrú trí athbhunú +settings.pulls.default_delete_branch_after_merge = Scrios brainse an iarratais tarraingthe tar éis cumasc de réir réamhshocraithe +settings.pulls.default_allow_edits_from_maintainers = Ceadaigh eagarthóirí ó chothabhálaí de réir réamhshocraithe +settings.releases_desc = Cumasaigh Eisiúintí Stórais +settings.admin_settings = Socruithe Riarthóra +settings.admin_enable_health_check = Cumasaigh Seiceálacha Sláinte Stórais (git fsck) +settings.admin_code_indexer = Innéacsaitheoir Cód +settings.admin_stats_indexer = Innéacsóir Staitisticí Cód +settings.admin_indexer_unindexed = Neamh-innéacsaithe +settings.reindex_button = Cuir le Scuaine Reindex +settings.reindex_requested = Athinnéacsú Iarrtha +settings.admin_enable_close_issues_via_commit_in_any_branch = Saincheist a dhúnadh trí ghealltanas a rinneadh i mbrainse neamh-mhainneachtana +settings.danger_zone = Crios Contúirte +settings.new_owner_has_same_repo = Tá stóras leis an ainm céanna ag an úinéir nua cheana féin. Roghnaigh ainm eile le do thoil. +settings.convert = Tiontaigh go Stóras Rialta +settings.convert_desc = Is féidir leat an scáthán seo a thiontú ina stór rialta. Ní féidir é seo a chur ar ais. +settings.convert_notices_1 = Déanfaidh an oibríocht seo an scáthán a thiontú ina stóras rialta agus ní féidir é a chur ar ais. +settings.convert_confirm = Tiontaigh Stóras +settings.convert_succeed = Tá an scáthán tiontaithe ina stóras rialta. +settings.convert_fork = Tiontaigh go Stóras Rialta +settings.convert_fork_desc = Is féidir leat an forc seo a thiontú ina stóras rialta. Ní féidir é seo a chur ar ais. +settings.convert_fork_notices_1 = Déanfaidh an oibríocht seo an forc a thiontú ina stóras rialta agus ní féidir é a chur ar ais. +settings.convert_fork_confirm = Tiontaigh Stóras +settings.convert_fork_succeed = Tá an forc tiontaithe ina stóras rialta. +settings.transfer.rejected = Diúltaíodh d'aistriú stóras. +settings.transfer.success = D'éirigh le haistriú stóras. +settings.transfer_abort = Cealaigh aistriú +settings.transfer_abort_invalid = Ní féidir leat aistriú stóras nach bhfuil ann a chealú. +settings.transfer_abort_success = Cuireadh an t-aistriú stóras chuig %s ar ceal go rathúil. +settings.transfer_desc = Aistrigh an stóras seo chuig úsáideoir nó chuig eagraíocht a bhfuil cearta riarthóra agat ina leith. +settings.transfer_in_progress = Tá aistriú leanúnach ann faoi láthair. Cealaigh é más mian leat an stóras seo a aistriú chuig úsáideoir eile. +settings.transfer_notices_1 = - Caillfidh tú rochtain ar an stóras má aistríonn tú é chuig úsáideoir aonair. +settings.transfer_notices_2 = - Coimeádfaidh tú rochtain ar an stóras má aistríonn tú é chuig eagraíocht a bhfuil (comh)úinéir agat. +settings.transfer_notices_3 = - Má tá an stóras príobháideach agus má aistrítear é chuig úsáideoir aonair, cinnteoidh an gníomh seo go bhfuil ar a laghad cead léite ag an úsáideoir (agus athraíonn sé ceadanna más gá). +settings.transfer_owner = Úinéir nua +settings.transfer_perform = Déan Aistriú +settings.transfer_started = `Tá an stóras seo marcáilte le haistriú agus tá sé ag fanacht le deimhniú ó "%s"` +settings.transfer_succeed = Tá an stóras aistrithe. +settings.signing_settings = Socruithe Fíoraithe Sínithe +settings.trust_model = Samhail Iontaobhas Sínithe +settings.trust_model.default = Múnla Iontaobhais Réamhshocraithe +settings.trust_model.default.desc = Úsáid an tsamhail iontaobhais stórais réamhshocraithe don suiteáil +settings.trust_model.collaborator = Comhoibritheoir +settings.trust_model.collaborator.long = Comhoibritheoir: Sínithe muinín ag comhoibrithe +settings.trust_model.collaborator.desc = Déanfar sínithe bailí ó chomhoibritheoirí an stóras seo a mharcáil mar 'iontaofa' – (cibé acu a mheaitseálann siad an tiomnóir nó nach bhfuil). Seachas sin, marcálfar sínithe bailí mar 'neamhiontaofa' má mheaitseálann an síniú an tiomnóir agus mar 'neamh-mheaitseáilte' mura bhfuil. +settings.trust_model.committer = Coimisitheoir +settings.trust_model.collaboratorcommitter = Comhoibritheo+Coimiteoir +settings.trust_model.collaboratorcommitter.long = Comhoibrí+Coiste: sínithe muiníne ó chomhoibrithe a mheaitseálann an tiomnóir +settings.wiki_delete = Scrios Sonraí Vicí +settings.wiki_delete_desc = Tá sonraí wiki stóras a scriosadh buan agus ní féidir iad a chur ar ais. +settings.wiki_delete_notices_1 = - Scriosfaidh agus díchumasóidh sé seo an stóras vicí do %s go buan. +settings.confirm_wiki_delete = Scrios Sonraí Vicí +settings.wiki_deletion_success = Scriosadh sonraí vicí an stórais. +settings.delete = Scrios an Stóras seo +settings.delete_desc = Tá scriosadh stóras buan agus ní féidir é a chealú. +settings.delete_notices_1 = - NÍ FÉIDIR an oibríocht seo a chealú. +settings.delete_notices_2 = - Scriosfaidh an oibríocht seo stór %s go buan lena n-áirítear cód, ceisteanna, nótaí tráchta, sonraí vicí agus socruithe comhoibrithe. +settings.delete_notices_fork_1 = - Beidh forcanna den stóras seo neamhspleách tar éis iad a scriosadh. +settings.deletion_success = Tá an stóras scriosta. +settings.update_settings_success = Nuashonraíodh na socruithe stóras. +settings.update_settings_no_unit = Ba cheart go gceadódh an stóras idirghníomhú de chineál éigin ar a laghad. +settings.confirm_delete = Scrios Stóras +settings.add_collaborator = Cuir Comhoibritheoir leis +settings.add_collaborator_success = Cuireadh an comhoibritheoir leis. +settings.add_collaborator_inactive_user = Ní féidir úsáideoir neamhghníomhach a chur mar chomhoibritheoir. +settings.add_collaborator_owner = Ní féidir úinéir a chur leis mar chomhoibritheoir. +settings.add_collaborator_duplicate = Tá an comhoibrí curtha leis an stóras seo cheana féin. +settings.delete_collaborator = Bain +settings.collaborator_deletion = Bain Comhoibritheoir +settings.collaborator_deletion_desc = Má dhéantar comhoibrí a bhaint, déanfar a rochtain ar an stóras seo a chúlghairm. Lean ort? +settings.remove_collaborator_success = Tá an comhoibritheoir bainte. +settings.org_not_allowed_to_be_collaborator = Ní féidir eagraíochtaí a chur leis mar chomhoibritheoir. +settings.change_team_access_not_allowed = Tá rochtain foirne a athrú don stóras teoranta d'úinéir eagraíochta +settings.team_not_in_organization = Níl an fhoireann san eagraíocht chéanna leis an stóras +settings.teams = Foirne +settings.add_team = Cuir Foireann leis +settings.add_team_duplicate = Tá an stóras ag an bhfoireann cheana féin +settings.add_team_success = Tá rochtain ag an bhfoireann anois ar an stóras. +settings.change_team_permission_tip = Tá cead na foirne socraithe ar leathanach socraithe foirne agus ní féidir é a athrú in aghaidh an stóras +settings.delete_team_tip = Tá rochtain ag an bhfoireann seo ar gach stórais agus ní féidir í a bhaint +settings.remove_team_success = Tá rochtain na foirne ar an stóras bainte amach. +settings.add_webhook = Cuir Crúca Gréasán leis +settings.add_webhook.invalid_channel_name = Ní féidir ainm cainéal Crúca Gréasán a bheith folamh agus ní féidir ach carachtar # a bheith ann. +settings.webhook_deletion = Bain Crúca Gréasán +settings.webhook_deletion_desc = Scriostar a shocruithe agus a stair seachadta a bhaineann le Crúca Gréasán a bhaint. Lean ar aghaidh? +settings.webhook_deletion_success = Tá an Crúca Gréasán bainte amach. +settings.webhook.test_delivery = Seachadadh Tástála +settings.webhook.test_delivery_desc = Déan tástáil ar an Crúca Gréasán seo le himeacht bhréige. +settings.webhook.test_delivery_desc_disabled = Chun an Crúca Gréasán seo a thástáil le himeacht bhréige, gníomhachtaigh é. +settings.webhook.request = Iarratas +settings.webhook.response = Freagra +settings.webhook.headers = Ceanntásca +settings.webhook.payload = Ábhar +settings.webhook.body = Comhlacht +settings.webhook.replay.description = Seinn an Crúca Gréasán seo arís. +settings.webhook.replay.description_disabled = Chun an Crúca Gréasán seo a athsheinm, gníomhachtaigh é. +settings.webhook.delivery.success = Cuireadh imeacht leis an scuaine seachadta. D'fhéadfadh sé cúpla soicind a thógáil sula dtaispeántar sé sa stair seachadta. +settings.githook_edit_desc = Mura bhfuil an hook neamhghníomhach, cuirfear ábhar samplach i láthair. Má fhágann tú ábhar go luach folamh díchumasófar an crúca seo. +settings.githook_name = Ainm Crúca +settings.githook_content = Ábhar Crúca +settings.update_githook = Nuashonraigh Crúca +settings.payload_url = URL spriocdhírithe +settings.http_method = Modh HTTP +settings.content_type = Cineál Ábhar POST +settings.secret = Rúnda +settings.slack_username = Ainm úsáideora +settings.slack_icon_url = URL deilbhín +settings.slack_color = Dath +settings.discord_username = Ainm úsáideora +settings.discord_icon_url = URL deilbhín +settings.event_desc = Truicear Ar: +settings.event_push_only = Imeachtaí Brúigh +settings.event_send_everything = Gach Imeacht +settings.event_choose = Imeachtaí Saincheaptha… +settings.event_header_repository = Imeachtaí Stóras +settings.event_create = Cruthaigh +settings.event_create_desc = Cruthaíodh brainse nó clib. +settings.event_delete = Scrios +settings.event_delete_desc = Brainse nó clib scriosta. +settings.event_fork = Forc +settings.event_fork_desc = Forcadh stóras. +settings.event_wiki = Vicí +settings.event_wiki_desc = Leathanach Vicí cruthaithe, athainmnithe, curtha in eagar nó scriosta. +settings.event_release = Scaoileadh +settings.event_release_desc = Scaoileadh foilsithe, nuashonraithe nó scriosta i stóras. +settings.event_push = Brúigh +settings.event_push_desc = Brúigh Git chuig stóras. +settings.event_repository = Stóras +settings.event_repository_desc = Stóras a cruthaíodh nó a scriosadh. +settings.event_header_issue = Imeachtaí Eisiúint +settings.event_issues_desc = Osclaíodh, dúnadh, athosclaíodh nó cuireadh an cheist in eagar. +settings.event_issue_assign_desc = Eisiúint sannta nó neamhshannta. +settings.event_issue_comment_desc = Trácht eisiúna cruthaithe, curtha in eagar nó a scriosadh. +settings.event_header_pull_request = Tarraingt Imeachtaí Iarratas +settings.event_pull_request_desc = Iarratas tarraingthe oscailte, dúnta, athoscailte nó curtha in eagar. +settings.event_pull_request_assign_desc = Iarratas tarraingthe sannta nó neamhshannta. +settings.event_pull_request_comment_desc = Trácht ar iarratas tarraingthe cruthaithe, curtha in eagar, nó scriosta. +settings.event_pull_request_review_request_desc = Tarraing athbhreithniú iarratais iarrtha nó baineadh iarratas athbhreithnithe. +settings.event_pull_request_approvals = Ceaduithe Iarratais Tarraing +settings.event_pull_request_merge = Cumaisc Iarratas Tarraing +settings.event_package = Pacáiste +settings.event_package_desc = Pacáiste a cruthaíodh nó a scriosadh i stóras. +settings.branch_filter = Scagaire brainse +settings.branch_filter_desc = Liosta bán brainse le haghaidh brú, cruthú brainse agus imeachtaí scriosta brainse, sonraithe mar phatrún glob. Má tá sé folamh nó *, tuairiscítear imeachtaí do gach brainse. Féach %[2]s doiciméadú le haghaidh comhréire. Samplaí: máistir, {master,release*}. +settings.authorization_header = Ceanntásc Údaraithe +settings.authorization_header_desc = Cuirfear san áireamh mar cheanntásc údaraithe d'iarratais nuair a bheidh ann Samplaí: %s. +settings.active = Gníomhach +settings.active_helper = Seolfar faisnéis faoi imeachtaí spreagtha chuig an URL Crúca Gréasán seo. +settings.add_hook_success = Cuireadh an Crúca Gréasán leis. +settings.update_webhook = Nuashonraigh Crúca Gréasán +settings.update_hook_success = Nuashonraíodh an Crúca Gréasán. +settings.delete_webhook = Bain Crúca Gréasán +settings.recent_deliveries = Seachadtaí le déana +settings.hook_type = Cineál Crúca +settings.slack_token = Comhartha +settings.slack_domain = Fearann +settings.slack_channel = Cainéal +settings.add_web_hook_desc = Comhtháthaigh %s isteach i do stóras. +settings.web_hook_name_gitea = Gitea +settings.web_hook_name_gogs = Gogs +settings.web_hook_name_slack = Slack +settings.web_hook_name_discord = Discord +settings.web_hook_name_dingtalk = DingTalk +settings.web_hook_name_telegram = Teileagram +settings.web_hook_name_matrix = Maitrís +settings.web_hook_name_msteams = Microsoft Teams +settings.web_hook_name_wechatwork = WeCom (Wechat Work) +settings.web_hook_name_packagist = Packagist +settings.packagist_username = Ainm úsáideora Pacagist +settings.packagist_api_token = Comhartha API +settings.packagist_package_url = URL pacáiste Packagist +settings.deploy_keys = Eochracha a imscaradh +settings.add_deploy_key = Cuir Eochair Imscartha leis +settings.deploy_key_desc = Tá rochtain tarraingthe léite amháin ag eochracha imscartha ar an stóras. +settings.is_writable = Cumasaigh Rochtain Scríobh +settings.is_writable_info = Lig don eochair imlonnaithe seo a bhrú chuig an stóras. +settings.no_deploy_keys = Níl aon eochracha imscartha ann fós. +settings.title = Teideal +settings.deploy_key_content = Ábhar +settings.key_been_used = Tá eochair imscartha le hábhar comhionann in úsáid cheana féin. +settings.key_name_used = Tá eochair imscartha leis an ainm céanna ann cheana féin. +settings.add_key_success = Tá an eochair imlonnaithe "%s" curtha leis. +settings.deploy_key_deletion = Bain Eochair Imlonnaithe +settings.deploy_key_deletion_desc = Ag baint eochair imscartha, cuirfear a rochtain ar an stóras seo a chúlghairm. Lean ar aghaidh? +settings.deploy_key_deletion_success = Tá an eochair imscartha bainte amach. +settings.branches = Brainsí +settings.protected_branch = Cosaint Brainse +settings.protected_branch.save_rule = Sábháil Riail +settings.protected_branch.delete_rule = Scrios Riail +settings.protect_disable_push = Díchumasaigh Brúigh +settings.protect_disable_push_desc = Ní cheadfar aon bhrú chuig an mbrainse seo. +settings.protect_enable_push = Cumasaigh Brúigh +settings.protect_enable_push_desc = Beidh cead ag aon duine a bhfuil rochtain scríofa aige/aici brú chuig an mbrainse seo (ach gan brú a bhrú). +settings.protect_enable_merge = Cumasaigh Cumaisc +settings.protect_enable_merge_desc = Beidh cead ag aon duine a bhfuil rochtain scríofa aige na hiarratais tarraingte a chumasc leis an mbrainse seo. +settings.protect_check_status_contexts = Cumasaigh Seiceáil Stádas +settings.protect_status_check_patterns_desc = Iontráil patrúin chun a shonrú cé na seiceálacha stádais a chaithfidh pas a fháil sular féidir brainsí a chumasc le brainse a chomhoibríonn leis an riail seo. Sonraíonn gach líne patrún. Ní féidir patrúin a bheith folamh. +settings.protect_check_status_contexts_desc = A cheangal ar sheiceálacha stádais pas a fháil roimh chumasc. Nuair a bheidh sé cumasaithe, ní mór gealltanais a bhrú ar dtús chuig brainse eile, ansin iad a chumasc nó a bhrú go díreach chuig brainse a thagann leis an riail seo tar éis do sheiceálacha stádais a bheith caite. Mura ndéantar comhthéacs ar bith a mheaitseáil, ní mór go n-éireodh leis an ngealltanas deiridh beag beann ar an gcomhthéacs. +settings.protect_check_status_contexts_list = Seiceálacha stádais a fuarthas sa tseachtain seo caite don stóras seo +settings.protect_status_check_matched = Comhoiriúnach +settings.protect_invalid_status_check_pattern = Patrún seiceála stádais neamhbhailí: "%s". +settings.protect_no_valid_status_check_patterns = Gan aon phatrúin seiceála stádais bailí. +settings.dismiss_stale_approvals = Déan seancheaduithe a dhíbhe +settings.dismiss_stale_approvals_desc = Nuair a bhrúitear gealltanais nua a athraíonn ábhar an iarratais tarraingthe chuig an mbrainse, déanfar sean-cheaduithe a dhíchur. +settings.ignore_stale_approvals = Déan neamhaird de sheancheaduithe +settings.ignore_stale_approvals_desc = Ná cuir faomhadh a rinneadh ar ghealltanais níos sine (athbhreithnithe seanchaite) san áireamh i dtreo cé mhéad faomhadh atá ag an PR. Ní bhaineann le hábhar má dhéantar athbhreithnithe seanchaite a dhíbhe cheana féin. +settings.require_signed_commits = Ceangaltais Sínithe a cheangal +settings.require_signed_commits_desc = Diúltaigh brú chuig an mbrainse seo má tá siad neamhshínithe nó neamh-fhíoraithe. +settings.protect_branch_name_pattern = Patrún Ainm Brainse Cosanta +settings.protect_patterns = Patrúin +settings.update_protect_branch_success = Tá cosaint brainse don riail "%s" nuashonraithe. +settings.remove_protected_branch_success = Baineadh cosaint brainse don riail "%s". +settings.remove_protected_branch_failed = Theip ar riail cosanta brainse "%s" a bhaint. +settings.protected_branch_deletion = Scrios Cosaint Brainse +settings.protected_branch_deletion_desc = Ligeann cosaint brainse a dhíchumasú d'úsáideoirí a bhfuil cead scríofa acu brú chuig an mbrainse. Lean ar aghaidh? +settings.block_rejected_reviews = Cuir bac ar chumasc ar léirmheasanna diúltaithe +settings.block_rejected_reviews_desc = Ní bheidh cumasc indéanta nuair a iarrann athbhreithnithe oifigiúla athruithe, fiú má tá go leor ceadaithe ann. +settings.block_on_official_review_requests = Cuir bac ar chumasc ar iarratais ar athbhreithniú oifigiúil +settings.block_on_official_review_requests_desc = Ní bheidh sé indéanta cumasc nuair a bhíonn iarratais oifigiúla ar athbhreithniú aige, fiú má tá go leor ceadaithe ann. +settings.block_outdated_branch = Cuir bac ar chumasc má tá an t-iarratas tarraingthe as dáta +settings.block_outdated_branch_desc = Ní bheidh cumasc indéanta nuair a bhíonn ceannbhrainse taobh thiar de bhronnbhrainse. +settings.default_branch_desc = Roghnaigh brainse stóras réamhshocraithe le haghaidh iarratas tarraingte agus geallann an cód: +settings.merge_style_desc = Stíleanna Cumaisc +settings.default_merge_style_desc = Stíl Cumaisc Réamhshocraithe +settings.choose_branch = Roghnaigh brainse… +settings.no_protected_branch = Níl aon bhrainsí cosanta ann. +settings.edit_protected_branch = Cuir in eagar +settings.protected_branch_required_rule_name = Ainm riail riachtanach +settings.protected_branch_required_approvals_min = Ní féidir ceaduithe riachtanacha a bheith diúltach. +settings.tags = Clibeanna +settings.tags.protection = Cosaint Clib +settings.tags.protection.pattern = Patrún Clib +settings.tags.protection.allowed = Ceadaithe +settings.tags.protection.allowed.users = Úsáideoirí ceadaithe +settings.tags.protection.allowed.teams = Foirne ceadaithe +settings.tags.protection.allowed.noone = Níl aon duine +settings.tags.protection.none = Níl aon chlibeanna cosanta ann. +settings.tags.protection.pattern.description = Is féidir leat ainm amháin nó patrún glob nó slonn rialta a úsáid chun clibeanna iolracha a mheaitseáil. Léigh tuilleadh sa treoir na gclibeanna cosanta. +settings.bot_token = Comhartha Bota +settings.chat_id = ID Comhrá +settings.thread_id = ID Snáithe +settings.matrix.homeserver_url = URL sheirbhíse baile +settings.matrix.room_id = ID seomra +settings.matrix.message_type = Cineál teachtaireachta +settings.archive.button = Cartlann Stóras +settings.archive.header = Cartlann an Stóras seo +settings.archive.text = Má dhéantar an stóras a chartlannú, beidh sé léite go hiomlán amháin. Beidh sé i bhfolach ón bpainéal. Aon duine (ní fiú tú!) beidh siad in ann tiomantas nua a dhéanamh, nó aon saincheisteanna nó iarratais a tharraingt a oscailt. +settings.archive.success = Rinneadh an stóras a chartlannú go rathúil. +settings.archive.error = Tharla earráid agus tú ag iarraidh an stóras a chartlannú. Féach an logáil le haghaidh tuilleadh sonraí. +settings.archive.error_ismirror = Ní féidir leat stóras scátháin a chartlannú. +settings.unarchive.button = Stóras gan cartlann +settings.unarchive.header = Díchartlannaigh an stóras seo +settings.unarchive.success = Rinneadh an stóras a dhíchartlann go rathúil. +settings.unarchive.error = Tharla earráid agus tú ag iarraidh an stóras a dhíchartlannú. Féach an logáil le haghaidh tuilleadh sonraí. +settings.update_avatar_success = Nuashonraíodh avatar an stóras. +settings.lfs = LFS +settings.lfs_filelist = Comhaid LFS a stóráiltear sa stóras seo +settings.lfs_no_lfs_files = Níl aon chomhaid LFS stóráilte sa stóras seo +settings.lfs_findcommits = Aimsigh gealltanais +settings.lfs_lfs_file_no_commits = Níor aimsíodh aon ghealltanais don chomhad LFS seo +settings.lfs_noattribute = Níl an tréith inghlasáilte sa bhrainse réamhshocraithe ag an gcosán seo +settings.lfs_delete = Scrios comhad LFS le OID %s +settings.lfs_findpointerfiles = Faigh comhaid pointeora +settings.lfs_locks = Glais +settings.lfs_invalid_locking_path = Cosan neamhbhailí: %s +settings.lfs_invalid_lock_directory = Ní féidir eolaire a ghlasáil: %s +settings.lfs_lock_already_exists = Tá an glas ann cheana féin: %s +settings.lfs_lock = Glas +settings.lfs_lock_path = Cosán comhad le haghaidh glasáil... +settings.lfs_locks_no_locks = Gan Glais +settings.lfs_lock_file_no_exist = Níl an comhad faoi ghlas sa bhrainse réamhshocraithe +settings.lfs_force_unlock = Díghlasáil Fórsa +settings.lfs_pointers.found = Aimsíodh %d pointeoir(í) blob - %d bainteach, %d neamhghaolmhar (%d in easnamh ón siopa) +settings.lfs_pointers.oid = OID +settings.lfs_pointers.inRepo = I Stóras +settings.lfs_pointers.exists = Ann sa siopa +settings.lfs_pointers.accessible = Inrochtana don Úsáideoir +settings.lfs_pointers.associateAccessible = Comhlach %d OID inrochtana +settings.rename_branch_failed_exist = Ní féidir brainse a athainmniú toisc go bhfuil spriocbhrainse %s ann. +settings.rename_branch_failed_not_exist = Ní féidir brainse %s a athainmniú toisc nach bhfuil sé ann. +settings.rename_branch_success = Ainmníodh brainse %s go rathúil go %s. +settings.rename_branch = Athainmnigh brainse +diff.browse_source = Brabhsáil Foinse +diff.parent = tuismitheoir +diff.commit = tiomantas +diff.git-notes = Nótaí +diff.options_button = Roghanna Diff +diff.download_patch = Íoslódáil an comhad paiste +diff.download_diff = Íoslódáil Comhad Diff +diff.show_split_view = Amharc Scoilt +diff.show_unified_view = Amharc Aontaithe +diff.whitespace_button = Spás bán +diff.whitespace_show_everything = Taispeáin gach athrú +diff.whitespace_ignore_all_whitespace = Déan neamhaird de spás bán nuair a dhéantar comparáid idir línte +diff.whitespace_ignore_amount_changes = Déan neamhaird de athruithe ar an méid spás bán +diff.whitespace_ignore_at_eol = Déan neamhaird ar athruithe ar spás bán ag EOL +diff.stats_desc = D'athraigh %d comhad le %d breiseanna agus %d scriosta +diff.stats_desc_file = %d athruithe: %d breiseanna agus scriosadh %d +diff.bin = BRUSCAIR +diff.bin_not_shown = Ní thaispeántar comhad dénártha. +diff.view_file = Féach ar an gComhad +diff.file_before = Roimhe +diff.file_after = Tar éis +diff.file_image_width = Leithead +diff.file_image_height = Airde +diff.file_byte_size = Méid +diff.file_suppressed = Tá difríocht comhad cosc orthu toisc go bhfuil sé ró-mhór +diff.file_suppressed_line_too_long = Cuirtear difríocht comhad faoi chois toisc go bhfuil líne amháin nó níos mó rófhada +diff.too_many_files = Níor taispeánadh roinnt comhad mar go bhfuil an iomarca comhad athraithe sa difríocht seo +diff.show_more = Taispeáin Tuilleadh +diff.load = Difríocht Luchtaigh +diff.generated = a ghintear +diff.vendored = curtha ar fáil +diff.comment.add_line_comment = Cuir trácht líne leis +diff.comment.placeholder = Fág trácht +diff.comment.add_single_comment = Cuir trácht aonair leis +diff.comment.add_review_comment = Cuir trácht leis +diff.comment.start_review = Tosaigh athbhreithniú +diff.comment.reply = Freagra +diff.review.header = Cuir isteach léirmheas +diff.review.placeholder = Trácht athbhreithnithe +diff.review.comment = Trácht +diff.review.approve = Ceadú +diff.review.self_reject = Ní féidir le húdair iarratais tarraing athruithe a iarraidh ar a n-iarratas tarraingthe +diff.review.reject = Iarr athruithe +diff.review.self_approve = Ní féidir le húdair iarratais tarraing a n-iarratas tarraingthe féin a chead +diff.committed_by = tiomanta ag +diff.protected = Cosanta +diff.image.side_by_side = Taobh le Taobh +diff.image.swipe = Scaoil +diff.image.overlay = Forleagan +diff.has_escaped = Tá carachtair Unicode i bhfolach ag an líne seo +diff.show_file_tree = Taispeáin crann comhad +diff.hide_file_tree = Folaigh crann comhad +releases.desc = Rian leaganacha tionscadal agus íoslódálacha. +release.releases = Eisiúintí +release.detail = Sonraí eisithe +release.tags = Clibeanna +release.new_release = Scaoileadh Nua +release.draft = Dréacht +release.prerelease = Réamh-eisiúint +release.stable = Cobhsaí +release.compare = Déan comparáid +release.edit = cuir in eagar +release.ahead.commits = Geallann %d +release.ahead.target = go %s ón scaoileadh seo +tag.ahead.target = chuig %s ón gclib seo +release.source_code = Cód Foinse +release.new_subheader = Eagraíonn eiseachtaí leaganacha tionscadail +release.edit_subheader = Eagraíonn eisiúintí leaganacha tionscadal. +release.tag_name = Ainm chlib +release.target = Sprioc +release.tag_helper = Roghnaigh clib atá ann cheana nó cruthaigh clib nua. +release.tag_helper_new = Clib nua. Cruthófar an chlib seo ón sprioc. +release.tag_helper_existing = Clib atá ann cheana. +release.title = Teideal scaoileadh +release.title_empty = Ní féidir leis an teideal a bheith folamh. +release.message = Déan cur síos ar an eisiúint seo +release.prerelease_desc = Marcáil mar Réamh-eisiúint +release.prerelease_helper = Marcáil an scaoileadh seo mí-oiriúnach le húsáid táirgeachta. +release.cancel = Cealaigh +release.publish = Foilsigh Eisiúint +release.save_draft = Sábháil Dréacht +release.edit_release = Eisiúint Nuashonraithe +release.delete_release = Scrios Scaoilte +release.delete_tag = Scrios Clib +release.deletion = Scrios Scaoilte +release.deletion_success = Tá an scaoileadh scriosta. +release.deletion_tag_desc = Scriosfar an chlib seo ón stóras. Ní athraítear inneachar agus stair na stórtha. Lean ort? +release.deletion_tag_success = Tá an chlib scriosta. +release.tag_name_already_exist = Tá eisiúint leis an ainm clib seo ann cheana féin. +release.tag_name_invalid = Níl ainm an chlib bailí. +release.tag_name_protected = Tá ainm an chlib cosanta. +release.tag_already_exist = Tá an t-ainm clib seo ann cheana féin. +release.downloads = Íoslódálacha +release.add_tag_msg = Úsáid teideal agus ábhar an eisiúna mar theachtaireacht chlibe. +release.releases_for = Eisiúintí do %s +release.tags_for = Clibeanna do %s +branch.name = Ainm Brainse +branch.already_exists = Tá brainse leis an ainm "%s" ann cheana féin. +branch.delete_head = Scrios +branch.delete = `Scrios Brainse "%s"` +branch.delete_html = Scrios Brainse +branch.delete_desc = Tá brainse a scriosadh buan. Cé go bhféadfadh an brainse scriosta leanúint ar aghaidh ag bheith ann ar feadh tréimhse ghearr sula mbaintear í i ndáiríre, NÍ FÉIDIR é a dhíchur i bhformhór Lean ar aghaidh? +branch.deletion_success = Tá brainse "%s" scriosta. +branch.deletion_failed = Theip ar scriosadh brainse "%s". +branch.delete_branch_has_new_commits = Ní féidir brainse “%s” a scriosadh toisc go bhfuil tiomáintí nua curtha leis tar éis a chumasc. +branch.create_branch = Cruthaigh brainse %s +branch.create_from = `ó "%s"` +branch.create_success = Tá brainse "%s" cruthaithe. +branch.branch_already_exists = Tá brainse "%s" sa stóras seo cheana. +branch.branch_name_conflict = Tagann an t-ainm brainse "%s" leis an mbrainse "%s" atá ann cheana féin. +branch.tag_collision = Ní féidir brainse "%s" a chruthú mar tá clib leis an ainm céanna sa stóras cheana féin. +branch.deleted_by = Scriosta ag %s +branch.restore_success = Tá brainse "%s" curtha ar ais. +branch.restore_failed = Theip ar chur ar ais brainse "%s". +branch.protected_deletion_failed = Tá brainse "%s" cosanta. Ní féidir é a scriosadh. +branch.default_deletion_failed = Is é brainse "%s" an brainse réamhshocraithe. Ní féidir é a scriosadh. +branch.restore = `Athchóirigh Brainse "%s"` +branch.download = `Brainse Íosluchtaithe "%s"` +branch.rename = `Athainmnigh Brainse "%s"` +branch.included_desc = Tá an brainse seo mar chuid den bhrainse réamhshocraithe +branch.included = San áireamh +branch.create_new_branch = Cruthaigh brainse ón mbrainse: +branch.confirm_create_branch = Cruthaigh brainse +branch.warning_rename_default_branch = Tá tú ag athainmniú an bhrainse réamhshocraithe. +branch.rename_branch_to = Athainmnigh "%s" go: +branch.create_branch_operation = Cruthaigh brainse +branch.new_branch = Cruthaigh brainse nua +branch.new_branch_from = `Cruthaigh brainse nua ó "%s"` +branch.renamed = Ainmníodh brainse %s go %s. +tag.create_tag = Cruthaigh clib %s +tag.create_tag_operation = Cruthaigh clib +tag.confirm_create_tag = Cruthaigh clib +tag.create_tag_from = `Cruthaigh clib nua ó "%s"` +tag.create_success = Tá clib "%s" cruthaithe. +topic.manage_topics = Bainistigh topaicí +topic.done = Déanta +topic.count_prompt = Ní féidir leat níos mó ná 25 topaicí a roghnú +find_file.no_matching = Níl aon chomhad meaitseála le fáil +error.csv.too_large = Ní féidir an comhad seo a rinneadh toisc go bhfuil sé ró-mhór. +error.csv.unexpected = Ní féidir an comhad seo a rindreáil toisc go bhfuil carachtar ann gan súil leis i líne %d agus i gcolún %d. +error.csv.invalid_field_count = Ní féidir an comhad seo a rindreáil toisc go bhfuil líon mícheart réimsí i líne %d. +error.broken_git_hook = Is cosúil go bhfuil crúcaí git den stór seo briste. Lean an doiciméadúchán chun iad a cheartú, ansin brúigh roinnt gealltanas chun an stádas a athnuachan. + +[graphs] +component_loading = Á lódáil %s... +component_loading_failed = Ní fhéadfaí %s a luchtú +component_loading_info = Seans go dtógfaidh sé seo beagán… +component_failed_to_load = Tharla earráid gan choinne. +code_frequency.what = minicíocht cód +contributors.what = ranníocaíochtaí +recent_commits.what = tiomantáin le déanaí + +[org] +org_name_holder = Ainm na hEagraíochta +org_full_name_holder = Ainm iomlán na hEagraíochta +org_name_helper = Ba cheart go mbeadh ainmneacha eagraíochta gearr agus i gcuimhne. +create_org = Cruthaigh Eagraíocht +members = Comhaltaí +teams = Foirne +code = Cód +lower_members = comhaltaí +lower_repositories = stórais +create_new_team = Foireann Nua +create_team = Cruthaigh Foireann +org_desc = Cur síos +team_name = Ainm Foirne +team_desc = Cur síos +team_name_helper = Ba chóir go mbeadh ainmneacha foirne gearr agus i gcuimhne. +team_desc_helper = Déan cur síos ar chuspóir nó ról na foirne. +team_access_desc = Rochtain stórais +team_permission_desc = Cead +team_unit_desc = Ceadaigh Rochtain ar Rannóga Stóras +team_unit_disabled = (Díchumasaithe) +form.name_reserved = Tá an t-ainm eagraíochta "%s" curtha in áirithe. +form.name_pattern_not_allowed = Ní cheadaítear an patrún "%s" in ainm eagraíochta. +form.create_org_not_allowed = Níl cead agat eagraíocht a chruthú. +settings = Socruithe +settings.options = Eagraíocht +settings.full_name = Ainm Iomlán +settings.email = Ríomhphost Teagmhála +settings.website = Láithreán Gréasáin +settings.location = Suíomh +settings.permission = Ceadanna +settings.repoadminchangeteam = Is féidir le riarthóir an stórais rochtain d'fhoirne a chur leis agus a bhaint +settings.visibility = Infheictheacht +settings.visibility.public = Poiblí +settings.visibility.limited_shortname = Teoranta +settings.visibility.private = Príobháideach (Infheicthe amháin do bhaill eagraíochta) +settings.visibility.private_shortname = Príobháideach +settings.update_settings = Nuashonrú Socruithe +settings.update_setting_success = Nuashonraíodh socruithe eagraíochta. +settings.change_orgname_prompt = Nóta: Athróidh ainm na heagraíochta ag athrú URL d'eagraíochta agus saorfar an sean-ainm. +settings.change_orgname_redirect_prompt = Déanfaidh an sean-ainm a atreorú go dtí go n-éilítear é. +settings.update_avatar_success = Nuashonraíodh avatar na heagraíochta. +settings.delete = Scrios Eagraíocht +settings.delete_account = Scrios an Eagraíocht seo +settings.delete_prompt = Bainfear an eagraíocht go buan. NÍ FÉIDIR é seo a chealú! +settings.confirm_delete_account = Deimhnigh scriosadh +settings.delete_org_title = Scrios Eagraíocht +settings.delete_org_desc = Scriosfar an eagraíocht seo go buan. Lean ar aghaidh? +settings.hooks_desc = Cuir crúcaí gréasán in leis a spreagfar do gach stóras faoin eagraíocht seo. +settings.labels_desc = Cuir lipéid leis ar féidir iad a úsáid ar shaincheisteanna do gach stóras faoin eagraíocht seo. +members.membership_visibility = Infheictheacht Ballraíochta: +members.public = Infheicthe +members.public_helper = dhéanamh i bhfolach +members.private = I bhfolach +members.private_helper = a dhéanamh le feiceáil +members.member_role = Ról Comhalta: +members.owner = Úinéir +members.member = Comhalta +members.remove = Bain +members.remove.detail = Bain %[1]s de %[2]s? +members.leave = Fágáil +members.invite_desc = Cuir ball nua le %s: +members.invite_now = Tabhair cuireadh Anois +teams.join = Bígí +teams.leave = Fág +teams.can_create_org_repo = Cruthaigh stórais +teams.can_create_org_repo_helper = Is féidir le baill stóras nua a chruthú san eagraíocht. Gheobhaidh an cruthaitheoir rochtain riarthóra ar an stóras nua. +teams.none_access = Gan Rochtain +teams.general_access_helper = Déanfar ceadanna baill a chinneadh ag an tábla ceadanna thíos. +teams.read_access = Léigh +teams.write_access = Scríobh +teams.admin_access = Rochtain Riarthóra +teams.admin_access_helper = Is féidir le baill tarraingt agus brú chuig stórais foirne agus comhoibritheoirí a chur leo. +teams.no_desc = Níl aon tuairisc ag an bhfoireann seo +teams.settings = Socruithe +teams.owners_permission_desc = Tá rochtain iomlán ag úinéirí ar gach stórais agus tá rochtain ag an riarthóir ar an eagraíocht. +teams.members = Baill Foirne +teams.update_settings = Nuashonrú Socruithe +teams.delete_team = Scrios Foireann +teams.add_team_member = Cuir Comhalta Foirne leis +teams.invite_team_member = Tabhair cuireadh chuig %s +teams.invite_team_member.list = Cuirí ar Feitheamh +teams.delete_team_title = Scrios Foireann +teams.delete_team_desc = Cúlghairtear rochtain stórais óna baill a scriosadh foirne. Lean ar aghaidh? +teams.delete_team_success = Tá an fhoireann scriosta. +teams.read_permission_desc = Deonaíonn an fhoireann seo rochtain Léamh: is féidir le baill stórtha foirne a fheiceáil agus a chlónáil. +teams.write_permission_desc = Tugann an fhoireann seo rochtain do Scríobh: is féidir le baill léamh ó stórtha foirne agus iad a bhrú chucu. +teams.create_repo_permission_desc = Ina theannta sin, tugann an fhoireann seo cead Cruthaigh Stóras: is féidir le baill stórtha nua a chruthú san eagraíocht. +teams.repositories = Stórais Foirne +teams.remove_all_repos_title = Bain gach stórais foirne +teams.remove_all_repos_desc = Bainfidh sé seo gach stórais ón bhfoireann. +teams.add_all_repos_title = Cuir gach stórais leis +teams.add_all_repos_desc = Cuirfidh sé seo stórais uile na heagraíochta leis an bhfoireann. +teams.add_duplicate_users = Is ball foirne é an úsáideoir cheana féin. +teams.repos.none = Ní raibh rochtain ag an bhfoireann seo ar aon stóras. +teams.members.none = Níl aon bhaill ar an bhfoireann seo. +teams.specific_repositories = Stórais Sonrach +teams.specific_repositories_helper = Ní bheidh rochtain ag comhaltaí ach ar stórtha a cuireadh leis an bhfoireann go sainráite. Ní bhainfear na stórtha a cuireadh leis cheana le Gach stóras go huathoibríoch trí é seo a roghnú. +teams.all_repositories = Gach stórais +teams.all_repositories_helper = Tá rochtain ag an bhfoireann ar gach stórais. Má roghnaíonn sé seo, cuirfear na stórais go léir atá ann cheana leis an bhfoireann. +teams.invite.title = Tugadh cuireadh duit dul isteach i bhfoireann %s san eagraíocht %s. +teams.invite.by = Ar cuireadh ó %s +teams.invite.description = Cliceáil ar an gcnaipe thíos le do thoil chun dul isteach san fhoireann. + +[admin] +dashboard = Deais +self_check = Féin-sheiceáil +identity_access = Féiniúlacht & Rochtain +users = Cuntais Úsáideora +organizations = Eagraíochtaí +assets = Sócmhainní Cód +repositories = Stórais +hooks = Crúcaí Gréasán +integrations = Comhtháthaithe +authentication = Foinsí Fíordheimhnithe +emails = Ríomhphoist Úsáideoirí +config = Cumraíocht +notices = Fógraí Córais +config_summary = Achoimre +config_settings = Socruithe +monitor = Monatóireacht +first_page = Ar dtús +last_page = Deiridh +total = Iomlán: %d +settings = Socruithe Riaracháin +dashboard.statistic = Achoimre +dashboard.system_status = Stádas an Chórais +dashboard.operation_name = Ainm Oibríochta +dashboard.operation_switch = Athraigh +dashboard.operation_run = Rith +dashboard.clean_unbind_oauth = Glan naisc OAuth neamhcheangailte +dashboard.clean_unbind_oauth_success = Scriosadh gach nasc OAuth neamhcheangailte. +dashboard.task.started = Tasc Tosaigh: %[1]s +dashboard.task.process = Tasc: %[1]s +dashboard.task.cancelled = Tasc: %[1]s cealaithe: %[3]s +dashboard.task.error = Earráid sa Tasc: %[1]s: %[3]s +dashboard.task.finished = Tasc: Tá %[1]s tosaithe ag %[2]s críochnaithe +dashboard.task.unknown = Tasc anaithnid: %[1]s +dashboard.cron.started = Cron tosaithe: %[1]s +dashboard.cron.process = Cron: %[1]s +dashboard.cron.cancelled = Cron: %[1]s cealaithe: %[3]s +dashboard.cron.error = Earráid i gCron: %s: %[3]s +dashboard.cron.finished = Cron: %[1]s críochnaithe +dashboard.delete_inactive_accounts = Scrios gach cuntas neamhghníomhach +dashboard.delete_inactive_accounts.started = Tasc scriostha gach cuntas neamhghníomhachtaithe tosaithe. +dashboard.delete_repo_archives.started = Scrios gach tasc cartlann stórais a thosaigh. +dashboard.delete_missing_repos = Scrios gach stóras atá in easnamh ar a gcuid comhad Git +dashboard.delete_missing_repos.started = Scrios gach stóras atá in easnamh ar a dtasc comhaid Git a thosaigh. +dashboard.delete_generated_repository_avatars = Scrios abhatáranna stórtha ginte +dashboard.sync_repo_tags = Clibeanna sioncraigh ó shonraí git go bunachar sonraí +dashboard.update_mirrors = Scátháin a nuashonrú +dashboard.repo_health_check = Seiceáil sláinte gach stóras +dashboard.check_repo_stats = Seiceáil gach staitisticí stórais +dashboard.archive_cleanup = Scrios sean-chartlanna stórais +dashboard.deleted_branches_cleanup = Brainsí scriosta a ghlanadh +dashboard.update_migration_poster_id = Nuashonraigh ID póstaer imir +dashboard.git_gc_repos = Bailíonn truflais gach stórais +dashboard.reinit_missing_repos = Aththosaigh gach stórais Git atá in easnamh a bhfuil taifid ann dóibh +dashboard.sync_external_users = Sioncrónaigh sonraí úsáideoirí seachtracha +dashboard.cleanup_hook_task_table = Tábla hook_task glantacháin +dashboard.cleanup_packages = Pacáistí glanta in éag +dashboard.server_uptime = Aga fónaimh Freastalaí +dashboard.current_goroutine = Goroutines Reatha +dashboard.current_memory_usage = Úsáid Cuimhne Reatha +dashboard.total_memory_allocated = Cuimhne Iomlán Leithdháilte +dashboard.memory_obtained = Cuimhne Faighte +dashboard.pointer_lookup_times = Amanna Cuardaigh Pointeora +dashboard.memory_allocate_times = Leithdháiltí Cuimhne +dashboard.memory_free_times = Saorálann Cuimhne +dashboard.current_heap_usage = Úsáid Charn Reatha +dashboard.heap_memory_obtained = Cuimhne Charn Faighte +dashboard.heap_memory_idle = Díomhaoin Cuimhne Carn +dashboard.heap_memory_in_use = Cuimhne Carm In Úsáid +dashboard.heap_memory_released = Cuimhne Carn Eisithe +dashboard.heap_objects = Cuspóirí Carn +dashboard.bootstrap_stack_usage = Úsáid Staca Bootstrap +dashboard.stack_memory_obtained = Cuimhne Staca Faighte +dashboard.mspan_structures_usage = Úsáid Struchtúir MSpan +dashboard.mspan_structures_obtained = Struchtúir MSpan a Faightear +dashboard.mcache_structures_usage = Úsáid Struchtúir MCache +dashboard.mcache_structures_obtained = Struchtúir MCache a Faightear +dashboard.profiling_bucket_hash_table_obtained = Tábla Hash Buicéad Próifílithe a Faightear +dashboard.gc_metadata_obtained = Meiteashonraí GC faighte +dashboard.other_system_allocation_obtained = Leithdháileadh Córais Eile a Fuarthas +dashboard.next_gc_recycle = Athchúrsáil GC Eile +dashboard.total_gc_pause = Sos Iomlán GC +dashboard.last_gc_pause = Sos GC Deireanach +dashboard.gc_times = Amanna GC +dashboard.delete_old_actions = Scrios gach sean-ghníomhaíocht ón mbunachar +dashboard.delete_old_actions.started = Scrios na sean-ghníomhaíocht go léir ón mbunachar sonraí tosaithe. +dashboard.update_checker = Seiceoir nuashonraithe +dashboard.delete_old_system_notices = Scrios gach seanfhógra córais ón mbunachar sonraí +dashboard.gc_lfs = Bailigh truflais meta rudaí LFS +dashboard.rebuild_issue_indexer = Atógáil innéacsóir eisiúna +users.new_account = Cruthaigh cuntas Úsáideora +users.name = Ainm úsáideora +users.full_name = Ainm Iomlán +users.activated = Gníomhachtaithe +users.admin = Riarachán +users.restricted = Srianta +users.reserved = In áirithe +users.bot = Bota +users.remote = Iargúlta +users.2fa = 2FA +users.repos = Stórais +users.created = Cruthaithe +users.last_login = Sínigh Isteach Deiridh +users.new_success = Tá an cuntas úsáideora "%s" cruthaithe. +users.edit = Eagar +users.auth_source = Foinse Fíordheimhnithe +users.local = Áitiúil +users.auth_login_name = Ainm Síniú Isteach Fíordheimhnithe +users.password_helper = Fág an pasfhocal folamh chun é a choinneáil gan athrú. +users.update_profile_success = Nuashonraíodh an cuntas úsáideora. +users.edit_account = Cuir Cuntas Úsáideora in Eagar +users.max_repo_creation = Uasmhéid Stóras +users.max_repo_creation_desc = (Cuir isteach -1 chun an teorainn réamhshocraithe domhanda a úsáid.) +users.update_profile = Nuashonraigh Cuntas Úsáideora +users.delete_account = Scrios Cuntas Úsáide +users.still_own_repo = Tá stórais amháin nó níos mó fós ag an úsáideoir seo. Scrios nó aistrigh na stórais seo ar dtús. +users.still_has_org = Is ball d'eagraíocht é an t-úsáideoir seo. Bain an t-úsáideoir ó aon eagraíochtaí ar dtús. +users.purge = Úsáideoir a Ghlanadh +users.still_own_packages = Tá pacáiste amháin nó níos mó fós ag an úsáideoir seo, scrios na pacáistí seo ar dtús. +users.deletion_success = Scriosadh an cuntas úsáideora. +users.reset_2fa = Athshocraigh 2FA +users.list_status_filter.menu_text = Scagaire +users.list_status_filter.reset = Athshocraigh +users.list_status_filter.is_active = Gníomhach +users.list_status_filter.not_active = Neamhghníomhach +users.list_status_filter.is_admin = Riarachán +users.list_status_filter.not_admin = Ní Riarachán +users.list_status_filter.is_restricted = Srianta +users.list_status_filter.not_restricted = Gan Srian +users.list_status_filter.is_prohibit_login = Cosc ar Logáil Isteach +users.list_status_filter.not_prohibit_login = Ceadaigh Logáil isteach +users.list_status_filter.is_2fa_enabled = 2FA Cumasaithe +users.list_status_filter.not_2fa_enabled = 2FA faoi mhíchumas +users.details = Sonraí Úsáideora +emails.primary = Bunscoile +emails.activated = Gníomhachtaithe +emails.filter_sort.email = Ríomhphost +emails.filter_sort.email_reverse = Ríomhphost (droim ar ais) +emails.updated = Nuashonraíodh an ríomhphost +emails.not_updated = Theip ar an seoladh ríomhphoist iarrtha a nuashonrú: %v +emails.duplicate_active = Tá an seoladh ríomhphoist seo gníomhach cheana féin d'úsáideoir difriúil. +emails.change_email_header = Nuashonraigh Airíonna Ríomhphoist +emails.change_email_text = An bhfuil tú cinnte gur mhaith leat an seoladh ríomhphoist seo a nuashonrú? +emails.delete = Scrios Ríomhphost +emails.delete_desc = An bhfuil tú cinnte gur mhaith leat an seoladh ríomhphoist seo a scriosadh? +emails.deletion_success = Tá an seoladh ríomhphoist scriosta. +emails.delete_primary_email_error = Ní féidir leat an ríomhphost príomhúil a scriosadh. +orgs.name = Ainm +orgs.teams = Foirne +orgs.members = Comhaltaí +orgs.new_orga = Eagraíocht Nua +repos.unadopted = Stórais Neamhghlactha +repos.owner = Úinéir +repos.name = Ainm +repos.private = Príobháideach +repos.issues = Saincheisteanna +repos.size = Méid +repos.lfs_size = Méid LFS +packages.total_size = Méid Iomlán: %s +packages.unreferenced_size = Méid gan tagairt: %s +packages.cleanup = Glan suas sonraí in éag +packages.cleanup.success = Glanadh suas sonraí in éag go rathúil +packages.owner = Úinéir +packages.creator = Cruthaitheoir +packages.name = Ainm +packages.version = Leagan +packages.type = Cineál +packages.repository = Stóráil +packages.size = Méid +packages.published = Foilsithe +defaulthooks = Réamhshocraithe Crúcaí Gréasán +defaulthooks.add_webhook = Cuir Crúca Gréasán Réamhshocraithe leis +defaulthooks.update_webhook = Nuashonraigh Réamhshocrú Crúca Gréasán +systemhooks = Córas Crúcaí Gréasán +systemhooks.add_webhook = Cuir Crúca Gréasán Córas leis +systemhooks.update_webhook = Nuashonraigh Córas Crúca Gréasán +auths.new = Cuir Foinse Fíordheimhni +auths.name = Ainm +auths.type = Cineál +auths.enabled = Cumasaithe +auths.syncenabled = Cumasaigh Sioncrónú Úsáideora +auths.updated = Nuashonraithe +auths.auth_type = Cineál Fíordheimhnithe +auths.auth_name = Ainm Fíordheimhnithe +auths.security_protocol = Prótacal Slándála +auths.domain = Fearann +auths.host = Óstach +auths.port = Calafort +auths.bind_dn = Ceangail DN +auths.bind_password = Ceangail Pasfhocal +auths.user_base = Bonn Cuardaigh Úsáideora +auths.user_dn = Úsáideoir DN +auths.attribute_username = Tréith Ainm Úsáideora +auths.attribute_name = Tréith Céad Ainm +auths.attribute_surname = Tréith Sloinne +auths.attribute_mail = Tréith ríomhphoist +auths.attribute_ssh_public_key = Tréith Eochair SSH Phoiblí +auths.attribute_avatar = Tréith Avatar +auths.attributes_in_bind = Faigh tréithe i gComhthéacs Bind DN +auths.allow_deactivate_all = Lig do thoradh cuardaigh folamh gach úsáideoir a dhíghníomhachtú +auths.use_paged_search = Úsáid Cuardach Leathanaigh +auths.search_page_size = Méid an Leathanaigh +auths.filter = Scagaire Úsáideora +auths.admin_filter = Scagaire Riaracháin +auths.restricted_filter = Scagaire Srianta +auths.verify_group_membership = Fíoraigh ballraíocht ghrúpa i LDAP (fág an scagaire folamh le scipeáil) +auths.group_search_base = Bonn Cuardaigh Grúpa DN +auths.group_attribute_list_users = Tréith Grúpa ina bhfuil Liosta Úsáideoirí +auths.user_attribute_in_group = Tréith Úsáideora atá Liostaithe i nGrúpa +auths.map_group_to_team = Léarscáil grúpaí LDAP chuig foirne na hEagraíochta (fág an réimse folamh le scipeáil) +auths.map_group_to_team_removal = Bain úsáideoirí ó fhoirne sioncronaithe mura mbaineann an t-úsáideoir leis an ngrúpa comhfhreagrach LDAP +auths.enable_ldap_groups = Cumasaigh grúpaí LDAP +auths.ms_ad_sa = MS AD Tréithe Cuardaigh +auths.smtp_auth = Cineál Fíordheimhnithe SMTP +auths.smtphost = Óstach SMTP +auths.smtpport = SMTP Calafort +auths.allowed_domains = Fearainn Ceadaithe +auths.force_smtps = Fórsa SMTPS +auths.force_smtps_helper = Úsáidtear SMTPS i gcónaí ar chalafort 465. Socraigh é seo chun SMTPS a chur i bhfeidhm ar chalafoirt eile. (Seachas sin úsáidfear STARTTLS ar chalafoirt eile má thacaíonn an t-óstach leis.) +auths.helo_hostname = Ainm Óstach HELO +auths.helo_hostname_helper = Ainm óstach a sheoltar le HELO. Fág bán chun an t-ainm óstach reatha a sheoladh. +auths.disable_helo = Díchumasaigh HELO +auths.pam_service_name = Ainm Seirbhíse PAM +auths.pam_email_domain = Fearann Ríomhphoist PAM (roghnach) +auths.oauth2_provider = Soláthraí OAuth2 +auths.oauth2_icon_url = URL deilbhín +auths.oauth2_clientID = Aitheantas Cliant (Eochair) +auths.oauth2_clientSecret = Rúnda Cliant +auths.openIdConnectAutoDiscoveryURL = URL Fionnachtana Uathoibríoch OpenID Connect +auths.oauth2_use_custom_url = Úsáid URLanna Saincheaptha in ionad URLanna Réamhshocraithe +auths.oauth2_tokenURL = URL Comhartha +auths.oauth2_authURL = Údaraigh URL +auths.oauth2_profileURL = URL Próifíl +auths.oauth2_emailURL = URL ríomhphoist +auths.skip_local_two_fa = Scipeáil 2FA áitiúil +auths.skip_local_two_fa_helper = Ciallaíonn fágáil gan socrú go mbeidh ar úsáideoirí áitiúla a bhfuil tacar 2FA acu 2FA a rith fós chun logáil isteach +auths.oauth2_tenant = Tionónta +auths.oauth2_scopes = Scóipeanna Breise +auths.oauth2_required_claim_name = Ainm Éilimh Riachtanach +auths.oauth2_required_claim_name_helper = Socraigh an t-ainm seo chun logáil isteach ón bhfoinse seo a shrianadh d'úsáideoirí a bhfuil éileamh acu leis an ainm seo +auths.oauth2_required_claim_value = Luach Éilimh Riachtanach +auths.oauth2_required_claim_value_helper = Socraigh an luach seo chun logáil isteach ón bhfoinse seo a shrianadh chuig úsáideoirí a bhfuil éileamh acu leis an ainm agus an luach seo +auths.oauth2_group_claim_name = Ainm éileamh ag soláthar ainmneacha grúpa don fhoinse seo (Roghnach) +auths.oauth2_admin_group = Luach Éilimh Grúpa d'úsáideoirí riarthóra. (Roghnach - teastaíonn ainm éilimh thuas) +auths.oauth2_restricted_group = Luach Éilimh Grúpa d'úsáideoirí srianta. (Roghnach - teastaíonn ainm éilimh thuas) +auths.oauth2_map_group_to_team = Map mhaígh grúpaí chuig foirne Eagraíochta. (Roghnach - éilíonn ainm an éilimh thuas) +auths.oauth2_map_group_to_team_removal = Bain úsáideoirí ó fhoirne sioncronaithe mura mbaineann an t-úsáideoir leis an ngrúpa comhfhreagrach. +auths.sspi_auto_create_users = Cruthaigh úsáideoirí go huathoibríoch +auths.sspi_auto_create_users_helper = Lig do mhodh auth SSPI cuntais nua a chruthú go huathoibríoch d'úsáideoirí a logálann isteach den chéad uair +auths.sspi_auto_activate_users = Gníomhachtaigh úsáideoirí go huathoibríoch +auths.sspi_auto_activate_users_helper = Lig modh auth SSPI úsáideoirí nua a ghníomhachtú go huathoibríoch +auths.sspi_strip_domain_names = Bain ainmneacha fearann ó ainm úsáideora +auths.sspi_strip_domain_names_helper = Má dhéantar iad a sheiceáil, bainfear ainmneacha fearainn ó ainmneacha logála isteach (m.sh. Beidh “DOMAIN\ user” agus "user@example.org" araon ní bheidh ach “úsáideoir”). +auths.sspi_separator_replacement = Deighilteoir le húsáid in ionad\,/agus @ +auths.sspi_separator_replacement_helper = An carachtar a úsáidfear chun na deighilteoirí a chur in ionad na n-ainmneacha logála síos-leibhéil (m.sh. an \ i "DOMAIN\úsáideoir") agus ainmneacha príomhoidí úsáideora (m.sh. an @ in "user@example.org"). +auths.sspi_default_language = Teanga úsáideora réamhshocraithe +auths.sspi_default_language_helper = Teanga réamhshocraithe d'úsáideoirí cruthaithe go huathoibríoch ag modh auth SSPI. Fág folamh más fearr leat teanga a bhrath go huathoibríoch. +auths.tips = Leideanna +auths.tips.oauth2.general = OAuth2 Fíordheimhniú +auths.tips.oauth2.general.tip = Agus fíordheimhniú OAuth2 nua á chlárú agat, ba chóir go mbeadh an URL glaonna ais/atreoraithe: +auths.tip.oauth2_provider = Soláthraí OAuth2 +auths.tip.nextcloud = `Cláraigh tomhaltóir OAuth nua ar do chás ag baint úsáide as an roghchlár seo a leanas "Socruithe -> Slándáil -> cliant OAuth 2.0"` +auths.tip.dropbox = Cruthaigh feidhmchlár nua ag %s +auths.tip.facebook = Cláraigh feidhmchlár nua ag %s agus cuir an táirge "Facebook Login" leis +auths.tip.github = Cláraigh feidhmchlár OAuth nua ar %s +auths.tip.gitlab_new = Cláraigh feidhmchlár nua ar %s +auths.tip.google_plus = Faigh dintiúir chliaint OAuth2 ó chonsól API Google ag %s +auths.tip.twitter = Téigh go %s, cruthaigh feidhmchlár agus cinntigh go bhfuil an rogha "Ceadaigh úsáid a bhaint as an bhfeidhmchlár seo chun logáil isteach le Twitter" cumasaithe +auths.tip.discord = Cláraigh feidhmchlár nua ar %s +auths.tip.gitea = Cláraigh feidhmchlár OAuth2 nua. Tá treoir le fáil ag %s +auths.tip.yandex = `Cruthaigh feidhmchlár nua ag %s. Roghnaigh na ceadanna seo a leanas ón rannán "Yandex.Passport API": "Rochtain ar sheoladh ríomhphoist", "Rochtain ar avatar úsáideora" agus "Rochtain ar ainm úsáideora, céad ainm agus sloinne, inscne"` +auths.tip.mastodon = Ionchur URL sampla saincheaptha don shampla mastodon is mian leat a fhíordheimhniú leis (nó bain úsáid as an gceann réamhshocraithe) +auths.edit = Cuir Foinse Fíordheimhnithe in Eagar +auths.activated = Tá an Foinse Fíordheimhnithe seo gníomhachtaithe +auths.new_success = Tá an fíordheimhniú "%s" curtha leis. +auths.update_success = Nuashonraíodh an fhoinse fíordheimhnithe. +auths.update = Nuashonraigh Foinse Fíordheimhnithe +auths.delete = Scrios Foinse Fíordheimhnithe +auths.delete_auth_title = Scrios Foinse Fíordheimhnithe +auths.delete_auth_desc = Má scriosann tú foinse fíordheimhnithe cuirtear cosc ​​ar úsáideoirí í a úsáid chun síniú isteach. Lean ort? +auths.still_in_used = Tá an fhoinse fíordheimhnithe fós in úsáid. Tiontaigh nó scrios aon úsáideoir a úsáideann an fhoinse fíordheimhnithe seo ar dtús. +auths.deletion_success = Tá an fhoinse fíordheimhnithe scriosta. +auths.login_source_exist = Tá an fhoinse fíordheimhnithe "%s" ann cheana. +auths.login_source_of_type_exist = Tá foinse fíordheimhnithe den chineál seo ann cheana féin. +auths.unable_to_initialize_openid = Ní féidir Soláthraí Ceangail OpenID a thionscnamh: %s +auths.invalid_openIdConnectAutoDiscoveryURL = URL Neamhbhailí Fionnachtana Uathoibríoch (ní mór gur URL bailí é seo ag tosú le http:// nó https://) +config.server_config = Cumraíocht Freastalaí +config.custom_conf = Cosán Comhad Cumraíochta +config.domain = Fearann ​​Freastalaí +config.offline_mode = Mód Áitiúil +config.disable_router_log = Díchumasaigh Loga an Ródaire +config.run_mode = Mód Rith +config.git_version = Leagan Git +config.app_data_path = Cosán Sonraí Aip +config.repo_root_path = Cosán Fréimhe Stórála +config.lfs_root_path = Cosán Fréamh LFS +config.log_file_root_path = Cosán Logála +config.script_type = Cineál Script +config.ssh_config = Cumraíocht SSH +config.ssh_enabled = Cumasaithe +config.ssh_start_builtin_server = Úsáid Freastalaí Ionsuite +config.ssh_domain = Fearainn Freastalaí SSH +config.ssh_port = Calafort +config.ssh_listen_port = Éist Calafort +config.ssh_root_path = Cosán Fréimhe +config.ssh_key_test_path = Cosán Tástáil Eochair +config.ssh_minimum_key_size_check = Seiceáil Íosta Méid Eochair +config.ssh_minimum_key_sizes = Méideanna Íosta Eochrach +config.lfs_config = Cumraíocht LFS +config.lfs_enabled = Cumasaithe +config.lfs_content_path = Cosán Ábhar LFS +config.db_config = Cumraíocht Bunachar Sonraí +config.db_type = Cineál +config.db_host = Óstach +config.db_name = Ainm +config.db_user = Ainm úsáideora +config.db_schema = Scéim +config.db_ssl_mode = SSL +config.db_path = Cosán +config.service_config = Cumraíocht Seirbhíse +config.register_email_confirm = Deimhniú Ríomhphost a éileamh chun Clárú +config.disable_register = Díchumasaigh Féin-Chlárú +config.allow_only_external_registration = Ceadaigh Clárú Trí Sheirbhísí Seachtracha amháin +config.enable_openid_signup = Cumasaigh Féinchlárú OpenID +config.enable_openid_signin = Cumasaigh Síniú isteach OpenID +config.show_registration_button = Taispeáin Cnaipe Cláraithe +config.mail_notify = Cumasaigh Fógraí Ríomhphoist +config.enable_captcha = Cumasaigh CAPTCHA +config.default_keep_email_private = Folaigh Seoltaí Ríomhphoist de réir Réamhshocrú +config.default_allow_create_organization = Ceadaigh Cruthú Eagraíochtaí de réir Réamhshocrú +config.enable_timetracking = Cumasaigh Rianú Ama +config.default_enable_timetracking = Cumasaigh Rianú Ama de réir Réamhshocrú +config.default_allow_only_contributors_to_track_time = Lig do Rannpháirtithe Amháin Rianú Am +config.no_reply_address = Fearann Ríomhphoist Folaithe +config.default_enable_dependencies = Cumasaigh Spleáchais Eisithe de réir Réamhshocrú +config.webhook_config = Cumraíocht Crúca Gréasán +config.queue_length = Fad scuaine +config.deliver_timeout = Teorainn Ama Seachadta +config.skip_tls_verify = Scipeáil Fíorú TLS +config.mailer_config = Cumraíocht Seoltóra +config.mailer_enabled = Cumasaithe +config.mailer_enable_helo = Cumasaigh HELO +config.mailer_name = Ainm +config.mailer_protocol = Prótacal +config.mailer_smtp_port = Calafort SMTP +config.mailer_user = Úsáideoir +config.mailer_use_sendmail = Úsáid Sendmail +config.mailer_sendmail_path = Cosán Sendmail +config.mailer_sendmail_args = Argóintí Breise chuig Sendmail +config.mailer_sendmail_timeout = Teorainn Ama Sendmail +config.mailer_use_dummy = Caochadán +config.test_email_placeholder = Ríomhphost (m.sh. test@example.com) +config.send_test_mail_submit = Seol +config.oauth_config = Cumraíocht OAuth +config.oauth_enabled = Cumasaithe +config.cache_config = Cumraíocht taisce +config.cache_adapter = Cuibheoir taisce +config.cache_interval = Eatramh Taisce +config.cache_conn = Ceangal Taisce +config.cache_item_ttl = Mír Taisce TTL +config.cache_test = Taisce Tástáil +config.cache_test_failed = Theip ar an taisce a thaiscéaladh: %v. +config.cache_test_slow = D'éirigh leis an tástáil taisce, ach tá an freagra mall: %s. +config.cache_test_succeeded = D'éirigh leis an tástáil taisce, fuair sé freagra i %s. +config.session_config = Cumraíocht Seisiúin +config.session_provider = Soláthraí Seisiúin +config.provider_config = Cumraíocht Soláthraí +config.cookie_name = Ainm Fianán +config.gc_interval_time = Am Eatramh GC +config.https_only = HTTPS Amháin +config.picture_config = Cumraíocht Pictiúr agus Avatar +config.picture_service = Seirbhís Pictiúr +config.disable_gravatar = Díchumasaigh Gravatar +config.enable_federated_avatar = Cumasaigh Avatars Cónaidhme +config.open_with_editor_app_help = Na heagarthóirí "Oscailte le" don roghchlár Clón. Má fhágtar folamh é, úsáidfear an réamhshocrú. Leathnaigh chun an réamhshocrú a fheiceáil. +config.git_config = Cumraíocht Git +config.git_gc_args = Argóintí GC +config.git_migrate_timeout = Teorainn Ama Imirce +config.git_mirror_timeout = Teorainn Ama Nuashonraithe Scátháin +config.git_clone_timeout = Teorainn Ama Oibríochta Clón +config.git_pull_timeout = Tarraing Am Oibríochta +config.git_gc_timeout = Teorainn Ama Oibriúcháin GC +config.log_config = Cumraíocht Logáil +config.logger_name_fmt = Logálaí: %s +config.disabled_logger = Díchumasaithe +config.access_log_mode = Mód Logáil Rochtana +config.access_log_template = Teimpléad Logáil Rochtana +config.xorm_log_sql = Logáil SQL +config.set_setting_failed = Theip ar shocrú %s a shocrú +monitor.stats = Staitisticí +monitor.cron = Tascanna Cron +monitor.name = Ainm +monitor.schedule = Sceideal +monitor.next = An chéad uair eile +monitor.previous = Am Roimhe Seo +monitor.execute_times = Forghníomhaíochtaí +monitor.process = Próisis reatha +monitor.stacktrace = Rian cruachta +monitor.processes_count = Próisis %d +monitor.download_diagnosis_report = Íoslódáil tuairisc diagnóis +monitor.desc = Cur síos +monitor.start = Am Tosaigh +monitor.execute_time = Am Forghníomhaithe +monitor.last_execution_result = Toradh +monitor.process.cancel = Cealaigh próiseas +monitor.process.children = Leanaí +monitor.queues = Scuaineanna +monitor.queue = Scuaine: %s +monitor.queue.name = Ainm +monitor.queue.type = Cineál +monitor.queue.exemplar = Cineál Eiseamláire +monitor.queue.numberworkers = Líon na nOibrithe +monitor.queue.activeworkers = Oibrithe Gníomhacha +monitor.queue.maxnumberworkers = Líon Uasta na nOibrithe +monitor.queue.numberinqueue = Uimhir i scuaine +monitor.queue.review_add = Athbhreithniú / Cuir Oibrithe leis +monitor.queue.settings.title = Socruithe Linn +monitor.queue.settings.desc = Fásann linnte go dinimiciúil mar fhreagra ar a gcuid scuaine oibrithe a bhlocáil. +monitor.queue.settings.maxnumberworkers = Uaslíon na n-oibrithe +monitor.queue.settings.maxnumberworkers.placeholder = Faoi láthair %[1]d +monitor.queue.settings.maxnumberworkers.error = Caithfidh uaslíon na n-oibrithe a bheith ina uimhir +monitor.queue.settings.submit = Nuashonrú Socruithe +monitor.queue.settings.changed = Socruithe Nuashonraithe +monitor.queue.settings.remove_all_items = Bain gach +monitor.queue.settings.remove_all_items_done = Baineadh na míreanna go léir sa scuaine. +notices.system_notice_list = Fógraí Córais +notices.operations = Oibríochtaí +notices.select_all = Roghnaigh Gach +notices.deselect_all = Díroghnaigh Gach +notices.inverse_selection = Roghnú Inbhéartha +notices.delete_selected = Scrios Roghnaithe +notices.delete_all = Scrios Gach Fógra +notices.type = Cineál +notices.type_1 = Stóras +notices.type_2 = Tasc +notices.desc = Cur síos +notices.op = Oibríocht. +notices.delete_success = Scriosadh na fógraí córais. +self_check.no_problem_found = Níor aimsíodh aon fhadhb fós. +self_check.database_collation_mismatch = Bí ag súil le comhthiomsú a úsáid sa bhunachar sonraí: %s +self_check.database_inconsistent_collation_columns = Tá comhthiomsú %s in úsáid ag an mbunachar sonraí, ach tá comhthiomsuithe mímheaitseála á n-úsáid ag na colúin seo. D'fhéadfadh sé a bheith ina chúis le roinnt fadhbanna gan choinne. + +[action] +create_repo = stóras cruthaithe %s +rename_repo = stóras athainmnithe ó %[1]s go %[3]s +commit_repo = brú chuig %[3]s ag %[4]s +create_issue = `osclaíodh ceist %[3]s#%[2]s` +close_issue = `eagrán dúnta %[3]s#%[2]s` +reopen_issue = `athoscailt an cheist %[3]s#%[2]s` +create_pull_request = `iarratas tarraingthe cruthaithe %[3]s#%[2]s` +close_pull_request = `iarratas tarraingthe dúnta %[3]s#%[2]s` +reopen_pull_request = `iarratas tarraingthe athoscailte %[3]s#%[2]s` +comment_issue = `trácht ar cheist %[3]s#%[2]s` +comment_pull = `déan trácht ar iarratas tarraingthe %[3]s#%[2]s` +merge_pull_request = `iarratas tarraingthe cumaisc %[3]s#%[2]s` +auto_merge_pull_request = `iarratas tarraingthe cumasctha go huathoibríoch %[3]s#%[2]s` +transfer_repo = aistrithe stóras %s go %s +push_tag = brú %[3]s go %[4]s +delete_tag = scriosta clib %[2]s ó %[3]s +delete_branch = brainse scriosta %[2]s ó %[3]s +compare_branch = Déan comparáid +compare_commits = Déan comparáid idir tiomáintí %d +compare_commits_general = Déan comparáid idir tiomáintí +mirror_sync_push = geallann synced do %[3]s ag %[4]s ón scáthán +mirror_sync_create = sioncronaigh tagairt nua %[3]s do %[4]s ón scáthán +mirror_sync_delete = sioncronaithe agus scriosta an tagairt %[2]s ag %[3]s ón scáthán +approve_pull_request = `ceadaithe %[3]s#%[2]s` +reject_pull_request = `athruithe molta le haghaidh %[3]s#%[2]s` +publish_release = `scaoileadh %[4]s ag %[3]s` +review_dismissed = `léirmheas ó %[4]s le haghaidh %[3]s#%[2]s` +review_dismissed_reason = Cúis: +create_branch = brainse cruthaithe %[3]s i %[4]s +starred_repo = le %[2]s le réalta +watched_repo = thosaigh sé ag breathnú ar %[2]s + +[tool] +now = anois +future = todhchaí +1s = 1 soicind +1m = 1 nóiméad +1h = 1 uair an chloig +1d = 1 lá +1w = 1 seachtain +1mon = 1 mhí +1y = 1 bhliain +seconds = %d soicind +minutes = %d nóiméad +hours = %d uair an chloig +days = %d laethanta +weeks = %d seachtain +months = %d míonna +years = %d bliain +raw_seconds = soicind +raw_minutes = nóiméad + +[dropzone] +default_message = Scaoil comhaid nó cliceáil anseo chun iad a uaslódáil. +invalid_input_type = Ní féidir leat comhaid den chineál seo a uaslódáil. +file_too_big = Sáraíonn méid comhaid ({{filesize}} MB) an t-uasmhéid de ({{maxFilesize}} MB). +remove_file = Bain an comhad + +[notification] +notifications = Fógraí +unread = Gan léamh +read = Léigh +no_unread = Gan aon fhógraí neamh-léite. +no_read = Gan aon fhógraí léite. +pin = Fógra bioráin +mark_as_read = Marcáil mar léite +mark_as_unread = Marcáil mar neamh-léite +mark_all_as_read = Marcáil gach ceann mar léite +subscriptions = Síntiúis +watching = Ag féachaint +no_subscriptions = Gan síntiúis + +[gpg] +default_key = Sínithe leis an eochair réamhshocraithe +error.extract_sign = Theip ar an síniú a bhaint +error.generate_hash = Theip ar hash gealltanas a ghiniúint +error.no_committer_account = Níl aon chuntas nasctha le seoladh ríomhphoist an tiomnóra + +[units] +unit = Aonad +error.no_unit_allowed_repo = Níl cead agat rochtain a fháil ar aon chuid den tiomantas seo. +error.unit_not_allowed = Níl cead agat an rannán stóras seo a rochtain. + +[packages] +title = Pacáistí +desc = Bainistigh pacáistí stórais. +empty = Níl aon phacáistí ann fós. +empty.documentation = Le haghaidh tuilleadh eolais ar chlárlann na bpacáistí, féach ar na doiciméid. +empty.repo = An ndearna tú uaslódáil ar phacáiste, ach nach bhfuil sé léirithe anseo? Téigh go socruithe pacáiste agus nasc leis an stóras seo é. +registry.documentation = Le haghaidh tuilleadh eolais ar chlárlann %s, féach ar na doiciméid. +filter.type = Cineál +filter.type.all = Gach +filter.no_result = Níor thug do scagaire aon torthaí. +filter.container.tagged = Clibeáilte +filter.container.untagged = Gan chlib +published_by = Foilsithe %[1]s ag %[3]s +published_by_in = Foilsithe ag %[1]s ag %[3]s in %[5]s +installation = Suiteáil +about = Maidir leis an bpacáiste seo +requirements = Riachtanais +dependencies = Spleithiúlachtaí +keywords = Eochairfhocail +details = Sonraí +details.author = Údar +details.license = Ceadúnas +assets = Sócmhainní +versions = Leaganacha +versions.view_all = Féach ar gach +dependency.id = ID +dependency.version = Leagan +search_in_external_registry = Cuardaigh i %s +alpine.registry = Socraigh an chlár seo tríd an url a chur i do chomhad /etc/apk/repositories: +alpine.registry.key = Íoslódáil eochair RSA poiblí na clárlainne isteach san fhillteán /etc/apk/keys/ chun an síniú innéacs a fhíorú: +alpine.registry.info = Roghnaigh $branch agus $repository ón liosta thíos. +alpine.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +alpine.repository = Eolas Stórais +alpine.repository.branches = Brainsí +alpine.repository.repositories = Stórais +alpine.repository.architectures = Ailtireachtaí +cargo.registry = Socraigh an clárlann seo sa chomhad cumraíochta lasta (mar shampla ~/.cargo/config.toml): +cargo.install = Chun an pacáiste a shuiteáil ag baint úsáide as Cargo, reáchtáil an t-ordú seo a leanas: +chef.registry = Socraigh an clárlann seo i do chomhad ~/.chef/config.rb: +chef.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +composer.registry = Socraigh an chlár seo i do chomhad ~/.composer/config.json: +composer.install = Chun an pacáiste a shuiteáil ag baint úsáide as Cumadóir, reáchtáil an t-ordú seo a leanas: +composer.dependencies = Spleithiúlachtaí +composer.dependencies.development = Spleithiúlachtaí Forbartha +conan.details.repository = Stóras +conan.registry = Socraigh an clárlann seo ón líne ordaithe: +conan.install = Chun an pacáiste a shuiteáil ag úsáid Conan, reáchtáil an t-ordú seo a leanas: +conda.registry = Socraigh an chlár seo mar stóras Conda i do chomhad .condarc: +conda.install = Chun an pacáiste a shuiteáil ag úsáid Conda, reáchtáil an t-ordú seo a leanas: +container.details.type = Cineál Íomhá +container.details.platform = Ardán +container.pull = Tarraing an íomhá ón líne ordaithe: +container.digest = Díleáigh +container.multi_arch = Córas Oibriúcháin / Ailtireacht +container.layers = Sraitheanna Íomhá +container.labels = Lipéid +container.labels.key = Eochair +container.labels.value = Luach +cran.registry = Cumraigh an chlárlann seo i do chomhad Rprofile.site: +cran.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +debian.registry = Socraigh an clárlann seo ón líne ordaithe: +debian.registry.info = Roghnaigh $distribution agus $component ón liosta thíos. +debian.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +debian.repository = Eolas Stóras +debian.repository.distributions = Dáiltí +debian.repository.components = Comhpháirteanna +debian.repository.architectures = Ailtireachtaí +generic.download = Íoslódáil pacáiste ón líne ordaithe: +go.install = Suiteáil an pacáiste ón líne ordaithe: +helm.registry = Socraigh an clárlann seo ón líne ordaithe: +helm.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +maven.registry = Socraigh an clárlann seo i do chomhad pom.xml tionscadail: +maven.install = Chun an pacáiste a úsáid cuir na nithe seo a leanas sa bhloc spleáchais sa chomhad pom.xml: +maven.install2 = Rith tríd an líne ordaithe: +maven.download = Chun an spleáchas a íoslódáil, rith tríd an líne ordaithe: +nuget.registry = Socraigh an clárlann seo ón líne ordaithe: +nuget.install = Chun an pacáiste a shuiteáil ag úsáid NuGet, reáchtáil an t-ordú seo a leanas: +nuget.dependency.framework = Spriocchreat +npm.registry = Socraigh an chlárlann seo i do chomhad .npmrc do thionscadail: +npm.install = Chun an pacáiste a shuiteáil ag úsáid npm, reáchtáil an t-ordú seo a leanas: +npm.install2 = nó cuir leis an gcomhad package.json é: +npm.dependencies = Spleithiúlachtaí +npm.dependencies.development = Spleithiúlachtaí Forbartha +npm.dependencies.bundle = Spleáchais Chuachta +npm.dependencies.peer = Spleithiúlachtaí Piaraí +npm.dependencies.optional = Spleáchais Roghnacha +npm.details.tag = Clib +pub.install = Chun an pacáiste a shuiteáil ag úsáid Dart, reáchtáil an t-ordú seo a leanas: +pypi.requires = Teastaíonn Python +pypi.install = Chun an pacáiste a shuiteáil ag úsáid pip, reáchtáil an t-ordú seo a leanas: +rpm.registry = Socraigh an clárlann seo ón líne ordaithe: +rpm.distros.redhat = ar dháileadh bunaithe ar RedHat +rpm.distros.suse = ar dháileadh bunaithe ar SUSE +rpm.install = Chun an pacáiste a shuiteáil, rith an t-ordú seo a leanas: +rpm.repository = Eolas Stóras +rpm.repository.architectures = Ailtireachtaí +rpm.repository.multiple_groups = Tá an pacáiste seo ar fáil i ngrúpaí éagsúla. +rubygems.install = Chun an pacáiste a shuiteáil ag baint úsáide as gem, reáchtáil an t-ordú seo a leanas: +rubygems.install2 = nó cuir leis an Gemfile é: +rubygems.dependencies.runtime = Spleáchais Rith-Ama +rubygems.dependencies.development = Spleáchais Forbartha +rubygems.required.ruby = Éilíonn leagan Ruby +rubygems.required.rubygems = Éilíonn leagan RubyGem +swift.registry = Socraigh an clárlann seo ón líne ordaithe: +swift.install = Cuir an pacáiste i do chomhad Package.swift: +swift.install2 = agus reáchtáil an t-ordú seo a leanas: +vagrant.install = Chun bosca Vagrant a chur leis, reáchtáil an t-ordú seo a leanas: +settings.link = Nasc an pacáiste seo le stóras +settings.link.description = Má nascann tú pacáiste le stóras, liostaítear an pacáiste i liosta pacáistí an stórais. +settings.link.select = Roghnaigh Stóras +settings.link.button = Nuashonraigh Nasc Stórais +settings.link.success = D'éirigh le nasc an stórais a nuashonrú. +settings.link.error = Theip ar an nasc stóras a nuashonrú. +settings.delete = Scrios pacáiste +settings.delete.description = Tá pacáiste a scriosadh buan agus ní féidir é a chur ar ais. +settings.delete.notice = Tá tú ar tí %s (%s) a scriosadh. Tá an oibríocht seo dochúlaithe, an bhfuil tú cinnte? +settings.delete.success = Tá an pacáiste scriosta. +settings.delete.error = Theip ar an pacáiste a scriosadh. +owner.settings.cargo.title = Innéacs Clárlann Lasta +owner.settings.cargo.initialize = Innéacs a chur i dtosach +owner.settings.cargo.initialize.description = Tá gá le stóras innéacs speisialta Git chun an clárlann Cargo a úsáid. Tríd an rogha seo, cruthófar an stóras (nó athchruthófar é) agus cumrófar é go huathoibríoch. +owner.settings.cargo.initialize.error = Níorbh fhéidir an t-innéacs Cargo a thúsú: %v +owner.settings.cargo.initialize.success = Cruthaíodh an t-innéacs Cargo go rathúil. +owner.settings.cargo.rebuild = Innéacs Atógáil +owner.settings.cargo.rebuild.description = Is féidir atógáil a bheith úsáideach mura bhfuil an t-innéacs sioncronaithe leis na pacáistí Cargo stóráilte. +owner.settings.cargo.rebuild.error = Níorbh fhéidir an t-innéacs Cargo a atógáil: %v +owner.settings.cargo.rebuild.success = D'éirigh leis an innéacs Cargo a atógáil. +owner.settings.cleanuprules.add = Cuir Riail Glantacháin leis +owner.settings.cleanuprules.edit = Cuir Riail Glantacháin in eagar +owner.settings.cleanuprules.preview = Réamhamharc Riail Glantacháin +owner.settings.cleanuprules.preview.overview = Tá pacáistí %d beartaithe a bhaint. +owner.settings.cleanuprules.preview.none = Ní hionann riail glantacháin agus pacáistí ar bith. +owner.settings.cleanuprules.enabled = Cumasaithe +owner.settings.cleanuprules.pattern_full_match = Cuir patrún i bhfeidhm ar ainm an phacáiste iomlán +owner.settings.cleanuprules.keep.title = Coinnítear leaganacha a mheaitseálann leis na rialacha seo, fiú má mheaitseálann siad riail bhaint thíos. +owner.settings.cleanuprules.keep.count = Coinnigh an ceann is déanaí +owner.settings.cleanuprules.keep.count.1 = 1 leagan in aghaidh an phacáiste +owner.settings.cleanuprules.keep.count.n = Leaganacha %d in aghaidh an phacáiste +owner.settings.cleanuprules.keep.pattern = Coinnigh leaganacha meaitseála +owner.settings.cleanuprules.keep.pattern.container = Coinnítear an leagan is déanaí le haghaidh pacáistí Coimeádán i gcónaí. +owner.settings.cleanuprules.remove.title = Baintear leaganacha a mheaitseálann leis na rialacha seo, mura deir riail thuas iad a choinneáil. +owner.settings.cleanuprules.remove.days = Bain leaganacha níos sine ná +owner.settings.cleanuprules.remove.pattern = Bain leaganacha meaitseála +owner.settings.cleanuprules.success.update = Nuashonraíodh an riail ghlantacháin. +owner.settings.cleanuprules.success.delete = Scriosadh an riail glantacháin. +owner.settings.chef.title = Clárlann Chef +owner.settings.chef.keypair = Gin péire eochair +owner.settings.chef.keypair.description = Tá eochairphéire riachtanach le fíordheimhniú a dhéanamh ar chlárlann an Chef. Má tá péire eochrach ginte agat roimhe seo, má ghinfidh tú eochairphéire nua, scriosfar an seanphéire eochair. + +[secrets] +secrets = Rúin +description = Cuirfear rúin ar aghaidh chuig gníomhartha áirithe agus ní féidir iad a léamh ar mhalairt. +none = Níl aon rúin ann fós. +creation = Cuir Rúnda leis +creation.name_placeholder = carachtair alfanumair nó íoslaghda amháin nach féidir a thosú le GITEA_ nó GITHUB_ +creation.value_placeholder = Ionchur ábhar ar bith. Fágfar spás bán ag tús agus ag deireadh ar lár. +creation.success = Tá an rún "%s" curtha leis. +creation.failed = Theip ar an rún a chur leis. +deletion = Bain rún +deletion.description = Is buan rún a bhaint agus ní féidir é a chealú. Lean ort? +deletion.success = Tá an rún bainte. +deletion.failed = Theip ar rún a bhaint. + +[actions] +actions = Gníomhartha +runners = Reathaitheoirí +runners.new = Cruthaigh reathaí nua +runners.new_notice = Conas reathaí a thosú +runners.status = Stádas +runners.id = ID +runners.name = Ainm +runners.owner_type = Cineál +runners.description = Cur síos +runners.labels = Lipéid +runners.last_online = Am Ar Líne Deiridh +runners.runner_title = Reathaí +runners.task_list = Tascanna le déanaí ar an reathaí seo +runners.task_list.no_tasks = Níl aon tasc ann fós. +runners.task_list.run = Rith +runners.task_list.status = Stádas +runners.task_list.repository = Stóras +runners.task_list.commit = Tiomantas +runners.task_list.done_at = Déanta ag +runners.edit_runner = Cuir Reathaí in Eagar +runners.update_runner = Nuashonrú Athruithe +runners.update_runner_success = Nuashonraíodh an Reathaí +runners.update_runner_failed = Theip ar an reathaí a nuashonrú +runners.delete_runner = Scrios an reathaí seo +runners.delete_runner_success = Scriosadh an reathaí go rathúil +runners.delete_runner_failed = Theip ar an reathaí a scriosadh +runners.delete_runner_header = Deimhnigh an reathaí seo a scriosadh +runners.delete_runner_notice = Má tá tasc ar siúl ar an reathaí seo, cuirfear deireadh leis agus marcáil mar theip. Féadfaidh sé sreabhadh oibre tógála a bhriseadh. +runners.none = Níl aon reathaí ar fáil +runners.status.unspecified = Anaithnid +runners.status.idle = Díomhaoin +runners.status.active = Gníomhach +runners.status.offline = As líne +runners.version = Leagan +runners.reset_registration_token = Athshocraigh comhartha clár +runners.reset_registration_token_success = D'éirigh le hathshocrú comhartha clárúcháin an dara háit +runs.all_workflows = Gach Sreafaí Oibre +runs.commit = Tiomantas +runs.scheduled = Sceidealaithe +runs.pushed_by = bhrú ag +runs.invalid_workflow_helper = Tá comhad cumraíochta sreabhadh oibre nebhailí. Seiceáil do chomhad cumraithe le do thoil: %s +runs.no_matching_online_runner_helper = Gan aon reathaí ar líne a mheaitseáil le lipéad: %s +runs.no_job_without_needs = Caithfidh post amháin ar a laghad a bheith sa sreabhadh oibre gan spleáchas. +runs.no_job = Caithfidh post amháin ar a laghad a bheith sa sreabhadh oibre +runs.actor = Aisteoir +runs.status = Stádas +runs.actors_no_select = Gach aisteoir +runs.status_no_select = Gach stádas +runs.no_results = Níor mheaitseáil aon torthaí. +runs.no_workflows = Níl aon sreafaí oibre ann fós. +runs.no_runs = Níl aon rith ag an sreabhadh oibre fós. +runs.empty_commit_message = (teachtaireacht tiomantas folamh) +runs.expire_log_message = Glanadh logaí toisc go raibh siad ró-sean. +workflow.disable = Díchumasaigh sreabhadh oibre +workflow.enable = Cumasaigh sreabhadh oibre +workflow.disabled = Tá sreabhadh oibre díchumasaithe +need_approval_desc = Teastaíonn faomhadh chun sreafaí oibre a rith le haghaidh iarratas tarraingt forc. +variables = Athróga +variables.creation = Cuir Athróg leis +variables.none = Níl aon athróga ann fós. +variables.deletion = Bain athróg +variables.deletion.description = Tá athróg a bhaint buan agus ní féidir é a chur ar ais. Lean ar aghaidh? +variables.description = Cuirfear athróga chuig gníomhartha áirithe agus ní féidir iad a léamh ar mhalairt eile. +variables.id_not_exist = Níl athróg le ID %d ann. +variables.edit = Cuir Athróg in Eagar +variables.deletion.failed = Theip ar athróg a bhaint. +variables.deletion.success = Tá an athróg bainte. +variables.creation.failed = Theip ar athróg a chur leis. +variables.creation.success = Tá an athróg "%s" curtha leis. +variables.update.failed = Theip ar athróg a chur in eagar. +variables.update.success = Tá an t-athróg curtha in eagar. + +[projects] +deleted.display_name = Tionscadal scriosta +type-1.display_name = Tionscadal Aonair +type-2.display_name = Tionscadal Stórais +type-3.display_name = Tionscadal Eagrúcháin + +[git.filemode] +changed_filemode = %[1]s → %[2]s +directory = Eolaire +normal_file = Comhad gnáth +executable_file = Comhad infheidhmithe +symbolic_link = Nasc siombalach +submodule = Fo-mhodúl diff --git a/options/locale/locale_gl.ini b/options/locale/locale_gl.ini index 4a10ee8b61..6583eca499 100644 --- a/options/locale/locale_gl.ini +++ b/options/locale/locale_gl.ini @@ -8,15 +8,15 @@ sign_in = Iniciar sesión sign_in_with_provider = Iniciar Sesión con %s sign_in_or = ou sign_out = Pechar Sesión -sign_up = Rexístrate +sign_up = Rexistrarse link_account = Vincular conta register = Rexistro -version = Vesión -powered_by = Desenvolvido por %s +version = Versión +powered_by = Impulsado por %s page = Páxina template = Modelo notifications = Notificacións -active_stopwatch = Activar Rastrexador de Tempo +active_stopwatch = Rastreador de tempo activo create_new = Crear… user_profile_and_more = Perfil e configuración… signed_in_as = Sesión iniciada como @@ -31,8 +31,8 @@ re_type = Confirme o contrasinal captcha = CAPTCHA twofa = Autenticación de dobre factor passcode = Código de acceso -webauthn_insert_key = Insira a súa clave de seguridade -webauthn_press_button = Prema o botón da súa clave de seguridade… +webauthn_insert_key = Insira a súa chave de seguridade +webauthn_press_button = Prema o botón da súa chave de seguridade… webauthn_use_twofa = Use o Código de Dous Factores do seu Teléfono webauthn_error = Non se puido ler a súa clave de seguridade. webauthn_unsupported_browser = O seu navegador non soporta WebAuthn actualmente. @@ -102,7 +102,7 @@ copy_content = Copiar contido language = Linguaxe copy_hash = Copiar hash twofa_scratch = Código Scratch de Dous Factores -webauthn_sign_in = Prema o botón da súa clave de seguridade. Se a súa clave de seguridade non ten ningún botón, insíraa de novo. +webauthn_sign_in = Prema o botón da súa chave de seguridade. Se a súa chave de seguridade non ten ningún botón, volva inserila. issues = Incidencias disabled = Desactivado error404 = A páxina á que estás tentando acceder non existe ou non tes autorización para vela. @@ -162,6 +162,7 @@ more = Máis number_of_contributions_in_the_last_12_months = %s de contribucións nos últimos 12 meses contributions_few = contribucións contributions_one = contribución +contributions_format = {contributions} no {day} de {month} do {year} [editor] buttons.heading.tooltip = Engadir Título @@ -174,6 +175,18 @@ buttons.list.unordered.tooltip = Engadir unha lista de marcadores buttons.enable_monospace_font = Activa o tipo de letra monoespazo buttons.disable_monospace_font = Desactivar o tipo de letra monoespazo buttons.ref.tooltip = Referencia un problema ou pull request +buttons.indent.tooltip = Aniña os elementos nun nivel +buttons.unindent.tooltip = Desaniñar os elementos nun nivel +table_modal.placeholder.content = Contido +table_modal.label.rows = Filas +table_modal.label.columns = Columnas +buttons.list.ordered.tooltip = Engade unha lista numerada +buttons.list.task.tooltip = Engade unha lista de tarefas +buttons.mention.tooltip = Menciona a un usuario ou equipo +buttons.switch_to_legacy.tooltip = Utilizar o editor herdado +buttons.new_table.tooltip = Engadir táboa +table_modal.header = Engadir táboa +table_modal.placeholder.header = Cabeceira [search] @@ -195,6 +208,13 @@ union_tooltip = Incluír resultados correspondentes a calquera dal palabras clav exact = Exacta exact_tooltip = Incluír só resultados correspondentes ao termo exacto da procura issue_kind = Procurar incidencias... +project_kind = Buscar proxectos... +branch_kind = Buscar ramas... +no_results = Non se atoparon resultados coincidentes. +keyword_search_unavailable = A busca por palabra clave non está dispoñible actualmente. Póñase en contacto co administrador do sitio. +commit_kind = Buscar achegas... +runner_kind = Buscar executores... +pull_kind = Buscar pulls... [startpage] platform = Multiplataforma diff --git a/options/locale/locale_he.ini b/options/locale/locale_he.ini index 04acf07023..9b9430ea64 100644 --- a/options/locale/locale_he.ini +++ b/options/locale/locale_he.ini @@ -135,6 +135,10 @@ webauthn_sign_in = יש ללחוץ על הכפתור שעל מפתח האבטח webauthn_error_duplicated = מפתח האבטחה לא יכול לשמש לבקשה זו. נא לוודא שהמפתח לא רשום. dashboard = מבט על remove_label_str = הסרת "%s" +explore = קטלוגים +view = עוד מידע +artifacts = ארטיפקטים +confirm_delete_artifact = למחוק את הארטיפקט "%s"? [search] search = חיפוש... @@ -161,6 +165,7 @@ code_search_by_git_grep = תוצאות החיפוש יוצרו על ידי "git runner_kind = חיפוש מריצים... keyword_search_unavailable = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת. code_search_unavailable = חיפוש קוד לא זמין. נא לדווח למנהלי המערכת. +pull_kind = חיפוש בקשות מיזוג... [heatmap] number_of_contributions_in_the_last_12_months = % תרומות ב־12 החודשים האחרונים @@ -228,6 +233,7 @@ app_name = שם שרת זה navbar = סרגל הניווט footer.software = על תוכנה זו footer.links = קישורים +footer = סיומת עמוד [mail] repo.transfer.subject_to_you = %s רוצה להעביר את הקרפיף "%s" אליך @@ -240,4 +246,7 @@ repo.transfer.subject_to = %s רוצה להעביר את הקרפיף "%s" ל־% RepoName = שם קרפיף repository_force_private = פרטיות כפויה מופעלת: קרפיפים פרטיים לא יכולים להעשות ציבוריים. repo_name_been_taken = כבר יש קרפיף בשם זה. -repository_files_already_exist = כבר יש קבצים בקרפיף זה. יש לדבר עם מנהל המערכת כדי לתקן את הבעיה. \ No newline at end of file +repository_files_already_exist = כבר יש קבצים בקרפיף זה. יש לדבר עם מנהל המערכת כדי לתקן את הבעיה. + +[projects] +deleted.display_name = פרויקט נמחק \ No newline at end of file diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index 57555b90a2..411bad835a 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -1270,6 +1270,8 @@ topic.done=Kész +milestones.filter_sort.name = Név + [graphs] [org] @@ -1684,6 +1686,9 @@ config.cache_item_ttl = Gyorsítótárelem TTL értéke config.app_data_path = Alkalmazásadatok elérési útja +config_summary = Összefoglaló +config_settings = Beállítások + [action] create_repo=létrehozott tárolót: %s rename_repo=átnevezte a(z) %[1]s tárolót %[3]s-ra/re diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index 1e0044e4ce..673d1464b1 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -84,15 +84,93 @@ concept_code_repository=Repositori name=Nama +re_type = Konfirmasi Kata Sandi +webauthn_insert_key = Masukkan kunci keamanan anda +webauthn_sign_in = Tekan tombol pada kunci keamanan Anda. Jika kunci keamanan Anda tidak memiliki tombol, masukkan kembali. +webauthn_press_button = Silakan tekan tombol pada kunci keamanan Anda… +webauthn_use_twofa = Gunakan kode dua faktor dari telepon Anda +webauthn_error = Tidak dapat membaca kunci keamanan Anda. +webauthn_unsupported_browser = Browser Anda saat ini tidak mendukung WebAuthn. +webauthn_error_unknown = Terdapat kesalahan yang tidak diketahui. Mohon coba lagi. +webauthn_error_insecure = `WebAuthn hanya mendukung koneksi aman. Untuk pengujian melalui HTTP, Anda dapat menggunakan "localhost" atau "127.0.0.1"` +webauthn_error_unable_to_process = Server tidak dapat memproses permintaan Anda. +webauthn_error_duplicated = Kunci keamanan tidak diperbolehkan untuk permintaan ini. Pastikan bahwa kunci ini belum terdaftar sebelumnya. +webauthn_error_empty = Anda harus menetapkan nama untuk kunci ini. +webauthn_error_timeout = Waktu habis sebelum kunci Anda dapat dibaca. Mohon muat ulang halaman ini dan coba lagi. +new_project = Proyek Baru +new_project_column = Kolom Baru +ok = Oke +retry = Coba lagi +rerun = Jalankan ulang +rerun_all = Jalankan ulang semua job +remove_label_str = `Hapus item "%s"` +view = Tampilan +test = Pengujian +locked = Terkunci +copy = Salin +copy_url = Salin URL +copy_hash = Salin hash +copy_content = Salin konten +copy_branch = Salin nama branch +copy_success = Tersalin! +copy_error = Gagal menyalin +copy_type_unsupported = Tipe berkas ini tidak dapat disalin +error = Gangguan +error404 = Halaman yang akan kamu akses tidak dapat ditemukan atau kamu tidak memiliki akses untuk melihatnya. +go_back = Kembali +invalid_data = Data invalid: %v +never = Tidak Pernah +unknown = Tidak diketahui +rss_feed = Umpan Berita +pin = Sematkan +unpin = Lepas sematan +artifacts = Artefak +archived = Diarsipkan +concept_system_global = Global +concept_user_individual = Perorangan +show_full_screen = Tampilkan layar penuh +download_logs = Unduh Logs +confirm_delete_selected = Konfirmasi untuk menghapus semua item yang dipilih? +value = Nilai +filter = Saring +filter.is_archived = Diarsipkan +filter.not_archived = Tidak Diarsipkan +filter.public = Publik +filter.private = Pribadi + [aria] +navbar = Bar Navigasi +footer = Footer +footer.links = Tautan [heatmap] +number_of_contributions_in_the_last_12_months = %s Kontribusi pada 12 bulan terakhir +less = Lebih sedikit +more = Lebih banyak [editor] +buttons.heading.tooltip = Tambahkan heading +buttons.bold.tooltip = Tambahkan teks Tebal +buttons.italic.tooltip = Tambahkan teks Miring +buttons.quote.tooltip = Kutip teks +buttons.code.tooltip = Tambah Kode +buttons.link.tooltip = Tambahkan tautan +buttons.list.unordered.tooltip = Tambah daftar titik +buttons.list.ordered.tooltip = Tambah daftar angka +buttons.list.task.tooltip = Tambahkan daftar tugas +buttons.mention.tooltip = Tandai pengguna atau tim +buttons.ref.tooltip = Merujuk pada isu atau permintaan tarik +buttons.switch_to_legacy.tooltip = Gunakan editor versi lama +buttons.enable_monospace_font = Aktifkan font monospace +buttons.disable_monospace_font = Non-Aktifkan font monospace [filter] +string.asc = A - Z +string.desc = Z - A [error] +occurred = Terjadi kesalahan +not_found = Target tidak dapat ditemukan. [startpage] app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan @@ -124,6 +202,9 @@ require_sign_in_view=Harus Login Untuk Melihat Halaman admin_password=Kata Sandi admin_email=Alamat Email +email_title = Pengaturan email +smtp_from = Kirim Email Sebagai + [home] uname_holder=Nama Pengguna atau Alamat Surel password_holder=Kata Sandi @@ -141,6 +222,8 @@ show_private=Pribadi issues.in_your_repos=Dalam repositori anda +show_archived = Diarsipkan + [explore] repos=Repositori users=Pengguna @@ -492,6 +575,8 @@ email_notifications.submit=Pasang Pengaturan Email visibility.private=Pribadi +visibility.public = Publik + [repo] owner=Pemilik repo_name=Nama Repositori @@ -955,6 +1040,12 @@ branch.deleted_by=Dihapus oleh %s +desc.public = Publik +desc.archived = Diarsipkan +commitstatus.error = Gangguan +projects.new = Proyek Baru +milestones.filter_sort.name = Nama + [graphs] [org] @@ -1009,6 +1100,8 @@ teams.delete_team_success=Tim sudah di hapus. teams.repositories=Tim repositori teams.search_repo_placeholder=Cari repositori… +settings.visibility.public = Publik + [admin] dashboard=Dasbor organizations=Organisasi @@ -1267,6 +1360,9 @@ notices.op=Op. notices.delete_success=Laporan sistem telah dihapus. +config_settings = Pengaturan +users.list_status_filter.menu_text = Saring + [action] create_repo=repositori dibuat %s rename_repo=ganti nama gudang penyimpanan dari %[1]s ke %[3]s @@ -1342,6 +1438,56 @@ runs.commit=Memperbuat +runs.no_matching_online_runner_helper = Tidak ada runner online yang cocok dengan label: %s +runs.actor = Aktor +runs.status = Status +runs.actors_no_select = Semua aktor +runs.status_no_select = Semua status +runs.no_results = Tidak ada hasil yang cocok. +runs.no_workflows = Belum ada alur kerja. +runs.no_runs = Alur kerja belum berjalan. +runs.empty_commit_message = (pesan commit kosong) +workflow.disable = Nonaktifkan Alur Kerja +workflow.enable = Aktifkan Alur Kerja +workflow.disabled = Alur kerja dinonaktifkan. +need_approval_desc = Butuh persetujuan untuk menjalankan alur kerja untuk pull request fork. +variables = Variabel +variables.creation = Tambah Variabel +variables.none = Belum ada variabel. +variables.deletion = Hapus variabel +variables.deletion.description = Menghapus variabel bersifat permanen dan tidak dapat dibatalkan. Lanjutkan? +variables.description = Variabel akan diteruskan ke beberapa tindakan dan tidak dapat dibaca sebaliknya. +variables.id_not_exist = Variabel dengan ID %d tidak ada. +variables.edit = Edit Variabel +variables.deletion.failed = Gagal menghapus variabel. +variables.deletion.success = Variabel telah dihapus. +variables.creation.failed = Gagal menambahkan variabel. +variables.creation.success = Variabel "%s" telah ditambahkan. +variables.update.failed = Gagal mengedit variabel. +variables.update.success = Variabel telah diedit. + [projects] +type-1.display_name = Proyek Individu +type-2.display_name = Proyek Repositori +type-3.display_name = Proyek Organisasi [git.filemode] +changed_filemode = %[1]s → %[2]s +directory = Directory +normal_file = Normal file +executable_file = Executable file +symbolic_link = Symbolic link +submodule = Submodule + +[search] +search = Cari... +type_tooltip = Tipe pencarian +fuzzy_tooltip = Termasuk juga hasil yang mendekati kata pencarian +exact_tooltip = Hanya menampilkan hasil yang cocok dengan istilah pencarian +repo_kind = Cari repo... +user_kind = Telusuri pengguna... +org_kind = Cari organisasi... +team_kind = Cari tim... +code_kind = Cari kode... +code_search_unavailable = Pencarian kode saat ini tidak tersedia. Silahkan hubungi administrator. +branch_kind = Cari cabang... diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini index 3a6e844de2..9b1d56fed9 100644 --- a/options/locale/locale_is-IS.ini +++ b/options/locale/locale_is-IS.ini @@ -114,6 +114,10 @@ value=Gildi sign_in_with_provider = Skrá inn með %s enable_javascript = Þessi síða krefst JavaScript. +filter = Sía +filter.is_archived = Safnvistað +filter.public = Opinbert + [aria] [heatmap] @@ -1118,6 +1122,8 @@ topic.done=Í lagi +milestones.filter_sort.name = Heiti + [graphs] [org] @@ -1287,6 +1293,9 @@ notices.type_2=Verkefni notices.desc=Lýsing +config_summary = Yfirlit +config_settings = Stillingar + [action] create_issue=`opnaði vandamál %[3]s#%[2]s` reopen_issue=`enduropnaði vandamál %[3]s#%[2]s` @@ -1371,3 +1380,5 @@ runs.commit=Framlag [projects] [git.filemode] + +[search] diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index aa0cef08c1..30f8d7836b 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -1504,7 +1504,7 @@ issues.close_comment_issue=Commenta e chiudi issues.reopen_issue=Riapri issues.reopen_comment_issue=Commenta e riapri issues.create_comment=Commento -issues.closed_at=`chiuso questo probleam %[2]s` +issues.closed_at=`ha chiuso questa segnalazione %[2]s` issues.reopened_at=`ha riaperto questa segnalazione %[2]s` issues.commit_ref_at=`ha fatto riferimento a questa segnalazione dal commit %[2]s` issues.ref_issue_from=`ha fatto riferimento a questa segnalazione %[4]s %[2]s` diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index 890c2e857c..67e96cdc0c 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -167,6 +167,8 @@ new_org.link = 新しい組織 test = テスト error413 = 割り当て量を使い切りしました。 +copy_path = パスをコピー + [aria] navbar=ナビゲーションバー footer=フッター @@ -3515,6 +3517,8 @@ config.app_slogan = インスタンスのスローガン config.cache_test = テストキャッシュ +config.cache_test_failed = キャッシュの調査に失敗しました: %v. + [action] create_repo=がリポジトリ %s を作成しました rename_repo=がリポジトリ名を %[1]s から %[3]s へ変更しました @@ -3758,6 +3762,8 @@ rpm.repository.multiple_groups = このパッケージは複数のグループ owner.settings.cargo.rebuild.no_index = 再構築できません、インデックスが初期化されていません。 npm.dependencies.bundle = バンドルされた依存関係 +search_in_external_registry = %s で検索 + [secrets] secrets=シークレット description=シークレットは特定のActionsに渡されます。 それ以外で読み出されることはありません。 @@ -3875,11 +3881,15 @@ workflow.dispatch.invalid_input_type = 入力タイプ「%s」が無効です。 workflow.dispatch.warn_input_limit = 最初の %d 個の入力のみを表示します。 runs.no_job = ワークフローには少なくとも1つのジョブが含まれている必要があります +runs.expire_log_message = ログは古すぎるため消去されています。 + [projects] type-1.display_name=個人プロジェクト type-2.display_name=リポジトリ プロジェクト type-3.display_name=組織プロジェクト +deleted.display_name = 削除されたプロジェクト + [git.filemode] changed_filemode=%[1]s → %[2]s directory=ディレクトリ diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index 00c474a17c..d2a175d58d 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -376,7 +376,7 @@ allow_password_change=사용자에게 비밀번호 변경을 요청 (권장됨) reset_password_mail_sent_prompt=확인 메일이 %s로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오. active_your_account=계정 활성화 account_activated=계정이 활성화 되었습니다 -prohibit_login = +prohibit_login = resent_limit_prompt=활성화를 위한 이메일을 이미 전송했습니다. 3분 내로 이메일을 받지 못한 경우 재시도해주세요. has_unconfirmed_mail=안녕하세요 %s, 이메일 주소(%s)가 확인되지 않았습니다. 확인 메일을 받으시지 못하겼거나 새로운 확인 메일이 필요하다면, 아래 버튼을 클릭해 재발송하실 수 있습니다. resend_mail=여기를 눌러 확인 메일 재전송 @@ -1425,6 +1425,8 @@ archive.title_date = 이 저장소는 %s에 보관처리되었습니다. 파일 +milestones.filter_sort.name = 이름 + [graphs] [org] @@ -1797,6 +1799,9 @@ emails.filter_sort.name_reverse = 사용자명 (예약됨) config.allow_dots_in_usernames = 사용자들이 마침표를 사용자명에 사용할 수 있도록 허가합니다. 이미 존재하는 계정에는 영향을 주지 않습니다. +config_summary = 요약 +config_settings = 설정 + [action] create_repo=저장소를 만들었습니다. %s rename_repo=저장소 이름을 %[1]s에서에서 %[3]s으로 변경함 diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index 54a4bb318e..b01bcc17e0 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -38,7 +38,7 @@ twofa_scratch=Divpakāpju vienreiz izmantojamais kods passcode=Kods webauthn_insert_key=Jāievieto sava drošības atslēga -webauthn_sign_in=Jānospiež poga uz drošības. Ja drošības atslēgai nav pogas, tā ir atkārtoti jāievieto. +webauthn_sign_in=Jānospiež poga uz drošības atslēgas. Ja tai nav pogas, drošības atslēga ir atkārtoti jāievieto. webauthn_press_button=Lūgums nospiest pogu uz savas drošības atslēgas… webauthn_use_twofa=Izmantot divpakāpju kodu no sava tālruņa webauthn_error=Nevar nolasīt drošības atslēgu. @@ -2870,6 +2870,9 @@ summary_card_alt = Glabātavas %s apkopojuma kartīte release.summary_card_alt = Laidiena "%s" apkopojuma kartīte glabātavā %s archive.pull.noreview = Šī glabātava ir arhivēta. Nevar izskatīt izmaiņu pieprasījumus. editor.commit_email = Iesūtījuma e-pasta adrese +commits.view_single_diff = Apskatīt šajā datnē veiktās izmaiņas šajā iesūtījumā +pulls.editable = Labojams +pulls.editable_explanation = Šis izmaiņu pieprasījums pieļauj labojumus no uzturētājiem. Tu vari tieši līdzdarboties tajā. [graphs] component_loading=Ielādē %s... @@ -3005,8 +3008,8 @@ teams.invite.by=Uzaicināja %s teams.invite.description=Lūgums nospiest zemāk esošo pogu, lai pievienotos komandai. open_dashboard = Atvērt pārskata paneli follow_blocked_user = Tu nevari sekot šai apvienībai, jo tā ir liegusi Tevi. -settings.change_orgname_redirect_prompt.with_cooldown.one = Vecais lietotājvārds būs pieejams visiem pēc noilguma, kas ir %[1]d diena. Šajā laikā ir iespējams to atkal sākt izmantot. -settings.change_orgname_redirect_prompt.with_cooldown.few = Vecais lietotājvārds būs pieejams visiem pēc noilguma, kas ir %[1]d dienas. Šajā laikā ir iespējams to atkal sākt izmantot. +settings.change_orgname_redirect_prompt.with_cooldown.one = Vecais apvienības nosaukums būs pieejams visiem pēc noilguma, kas ir %[1]d diena. Šajā laikā ir iespējams to atkal sākt izmantot. +settings.change_orgname_redirect_prompt.with_cooldown.few = Vecais apvienības nosaukums būs pieejams visiem pēc noilguma, kas ir %[1]d dienas. Šajā laikā ir iespējams to atkal sākt izmantot. [admin] dashboard=Pārskata panelis @@ -3952,6 +3955,7 @@ runs.no_job = Darbplūsmā ir jābūt vismaz vienam darbam runs.no_workflows.help_write_access = Nav skaidrs, kā sākt izmantot Forgejo Actions? Jāieskatās ātrajā ievadā lietotāja dokumentācijā, lai uzrakstītu savu pirmo darbplūsmu, tad jāiestata Forgejo izpildītājs, lai izpildītu savus darbus. workflow.dispatch.warn_input_limit = Attēlo tikai pirmos %d ievades mainīgos. workflow.dispatch.trigger_found = Šai darbplūsmai ir workflow_dispatch notikuma izraisītājs. +variables.not_found = Neizdevās atrast mainīgo. [projects] type-1.display_name=Atsevišķs projekts diff --git a/options/locale/locale_nds.ini b/options/locale/locale_nds.ini index d595f96715..2db870ee40 100644 --- a/options/locale/locale_nds.ini +++ b/options/locale/locale_nds.ini @@ -357,8 +357,8 @@ account_security_caution.text_1 = Wenn du dat weerst, kannst du deese E-Mail sek account_security_caution.text_2 = Wenn du dat nich weerst, hett well in dien Konto inbroken. Bidde kuntakteer de Sied-Chefs. register_success = Registreren kumpleet issue_assigned.pull = @%[1]s hett di to Haalvörslag %[2]s in Repositorium %[3]s towiesen. -issue.action.reopen = @%[1]s hett #%[2]s weer opmaakt. -issue.action.merge = @%[1]s hett #%[2]s in %[3]s tosamenföhrt. +issue.action.reopen = @%[1]s hett #%[2]d weer opmaakt. +issue.action.merge = @%[1]s hett #%[2]d in %[3]s tosamenföhrt. issue.action.reject = @%[1]s hett um Änners för deesen Haalvörslag beden. issue.action.ready_for_review = @%[1]s hett deesen Haalvörslag as klaar tum Nakieken markeert. issue.action.new = @%[1]s hett #%[2]d opmaakt. @@ -375,8 +375,8 @@ activate_email.text = Bidde klick up deesen Verwies, um diene E-Mail-Adress binn reset_password.text = Wenn du dat weerst, klick bidde up deesen Verwies, um dien Konto binnen %s torüggtohalen: password_change.subject = Dien Passwoord is ännert worden issue_assigned.issue = @%[1]s hett di to Gefall %[2]s in Repositorium %[3]s towiesen. -issue.action.push_1 = @%[1]s hett %[3]Kommitteren to %[2]s schuven -issue.action.push_n = @%[1]s hett %[3]Kommitterens to %[2]s schuven +issue.action.push_1 = @%[1]s hett %[3]d Kommitteren to %[2]s schuven +issue.action.push_n = @%[1]s hett %[3]d Kommitterens to %[2]s schuven activate_account.text_1 = Moin %[1]s, wees bedankt, dat du di up %[2]s registreert hest! issue.action.review_dismissed = @%[1]s hett dat leste Nakieken vun %[2]s för deesen Haalvörslag ofseggt. issue.in_tree_path = In %s: @@ -404,7 +404,7 @@ issue.x_mentioned_you = @%s hett di nöömt: issue.action.approve = @%[1]s hett deesem Haalvörslag tostimmt. repo.transfer.subject_to_you = %s will Repositorium »%s« to di överdragen team_invite.text_3 = Wahrschau: Deese Inladen weer för %[1]s dacht. Wenn du deese Inladen nich verwacht hest, kannst du deese E-Mail minnachten. -issue.action.close = @%[1]s hett #%[2]s dichtmaakt. +issue.action.close = @%[1]s hett #%[2]d dichtmaakt. repo.transfer.body = Um dat antonehmen of oftolehnen, besöök %s, of ignoreer dat eenfach. release.download.zip = Quelltext (ZIP) team_invite.subject = %[1]s hett di inladen, in de Vereenigung %[2]s intotreden @@ -1941,7 +1941,7 @@ milestones.filter_sort.earliest_due_data = Nahst Anstahns-Datum milestones.filter_sort.least_issues = Minnst Gefallens wiki.wiki_page_revisions = Sied-Versioonen activity.period.yearly = 1 Jahr -activity.title.issues_1 = %s Gefall +activity.title.issues_1 = %d Gefall activity.git_stats_files_changed_1 = ännert worden activity.git_stats_deletion_n = %d lösket Riegen geven contributors.contribution_type.deletions = Lösket Riegen @@ -1977,7 +1977,7 @@ activity.merged_prs_count_n = Tosamenföhrt Haalvörslagen activity.title.user_1 = %d Bruker activity.title.prs_1 = %d Haalvörslag activity.active_issues_count_n = %d aktiiv Gefallens -activity.title.issues_n = %s Gefallens +activity.title.issues_n = %d Gefallens activity.title.unresolved_conv_n = %d nich lööst Snacks activity.title.releases_1 = %d Publizeren activity.git_stats_file_1 = is %d Datei @@ -2572,6 +2572,8 @@ release.summary_card_alt = Tosamenfatens-Kaart vun eenem Publizeren mit de Naam editor.commit_email = Kommitterens-E-Mail archive.pull.noreview = Deeses Repositorium is archiveert. Du kannst keene Haalvörslagens nakieken. commits.view_single_diff = Ännerns an deeser Datei in deesem Kommitteren wiesen +pulls.editable = Bewarkbaar +pulls.editable_explanation = Deeser Haalvörslag verlöövt Bewarkens vun Liddmaten. Du kannst stracks daarto bidragen. [repo.permissions] code.read = Lesen: De Quelltext vun deesem Repositorium ankieken un klonen. @@ -2715,8 +2717,8 @@ teams.read_permission_desc = Deese Klottje gifft Lesens-Togriep teams.repos.none = Deese Klottje kann up keene Repositoriums togriepen. teams.specific_repositories_helper = Liddmaten hebben blots Togriep up Repositoriums, wat besünners to de Klottje hentoföögt worden sünd. Wenn du dat utköörst, worden Repositoriums, wat du al mit All Repositoriums hentoföögt hest, nich automatisk wegdaan. teams.all_repositories = All Repositoriums -settings.change_orgname_redirect_prompt.with_cooldown.one = De olle Brukernaam word na eener Ofköhl-Düür vun %[1]d Dag för all Lüü verföögbaar wesen. In de Ofköhl-Düür kannst du de ollen Naam noch torügghalen. -settings.change_orgname_redirect_prompt.with_cooldown.few = De olle Brukernaam word na eener Ofköhl-Düür vun %[1]d Dagen för all Lüü verföögbaar wesen. In de Ofköhl-Düür kannst du de ollen Naam noch torügghalen. +settings.change_orgname_redirect_prompt.with_cooldown.one = De olle Vereenigungs-Naam word na eener Ofköhl-Düür vun %[1]d Dag för all Lüü verföögbaar wesen. In de Ofköhl-Düür kannst du de ollen Naam noch torügghalen. +settings.change_orgname_redirect_prompt.with_cooldown.few = De olle Vereenigungs-Naam word na eener Ofköhl-Düür vun %[1]d Dagen för all Lüü verföögbaar wesen. In de Ofköhl-Düür kannst du de ollen Naam noch torügghalen. [admin] dashboard = Kontor @@ -3748,6 +3750,7 @@ runs.no_workflows.quick_start = Weetst du nich, wo man mit Forgejo-Aktioonen beg runs.no_workflows.documentation = För mehr Informatioonen över Forgejo-Aktioonen, kiek de Dokumenteren an. runs.no_workflows.help_write_access = Weetst du nich, wo man mit Forgejo-Aktioonen begünnen sall? Kiek de Fixanwies in de Bruker-Dokumenteren an, um diene eerste Warkwies to schrieven, un richt dann dienen eersten Forgejo-Loper in, um diene Upgavens uttoföhren. runs.no_workflows.help_no_write_access = Um mehr över Forgejo-Aktioonen to lehren, kiek de Dokumenteren an. +variables.not_found = Kunn de Variaabel nich finnen. [projects] deleted.display_name = Lösket Projekt diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 654bcf08dd..11f0740495 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -2869,6 +2869,9 @@ issues.reaction.alt_remove = Verwijder %[1]s reactie van bericht. issues.reaction.alt_many = %[1]s en %[2]d meer gereageerd %[3]s. editor.commit_email = Commit e-mail archive.pull.noreview = Deze repository is gearchiveerd. U kunt geen pull requests beoordelen. +commits.view_single_diff = Bekijk de veranderingen aan dit bestand die in deze commit zijn geïntroduceerd +pulls.editable_explanation = Deze pull request staat bewerkingen toe van beheerders. Je kunt er direct aan bijdragen. +pulls.editable = Bewerkbaar @@ -3007,8 +3010,8 @@ settings.visibility.limited = Beperkt (alleen zichtbaar voor ingelogde gebruiker teams.add_nonexistent_repo = De repository die u probeert toe te voegen bestaat niet, maak deze eerst aan alstublieft. teams.all_repositories_write_permission_desc = Dit team verleent Schrijf permissies tot alle repositories: leden kunnen lezen en pushen naar repositories. open_dashboard = Open dashboard -settings.change_orgname_redirect_prompt.with_cooldown.one = De oude gebruikersnaam zal voor iedereen beschikbaar zijn na een afkoelperiode van %[1]d dag. U kunt de oude gebruikersnaam nog steeds opeisen tijdens de afkoelperiode. -settings.change_orgname_redirect_prompt.with_cooldown.few = De oude gebruikersnaam zal voor iedereen beschikbaar zijn na een afkoelperiode van %[1]d dagen. U kunt de oude gebruikersnaam nog steeds opeisen tijdens de afkoelperiode. +settings.change_orgname_redirect_prompt.with_cooldown.one = De oude organisatienaam zal voor iedereen beschikbaar zijn na een afkoelperiode van %[1]d dag. U kunt de oude naam nog steeds opeisen tijdens de afkoelperiode. +settings.change_orgname_redirect_prompt.with_cooldown.few = De oude organisatienaam zal voor iedereen beschikbaar zijn na een afkoelperiode van %[1]d dagen. U kunt de oude naam nog steeds opeisen tijdens de afkoelperiode. [admin] dashboard=Overzicht @@ -3950,6 +3953,7 @@ workflow.dispatch.input_required = Waarde vereist voor invoer “%s”. runs.expire_log_message = Logs zijn verwijderd omdat ze te oud waren. runs.no_workflows.help_no_write_access = Om meer te weten te komen over Forgejo Acties, zie de documentatie. runs.no_workflows.help_write_access = Weet je niet hoe je moet beginnen met Forgejo Actions? Bekijk de snelstart in de gebruikersdocumentatie om je eerste workflow te schrijven en stel vervolgens een Forgejo runner in om je jobs uit te voeren. +variables.not_found = De variabele kon niet gevonden worden. diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index c9dc92fbca..77ea75aece 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -29,8 +29,8 @@ password=Hasło access_token=Token dostępu re_type=Potwierdź hasło captcha=CAPTCHA -twofa=Autoryzacja dwuskładnikowa -twofa_scratch=Kod jednorazowy weryfikacji dwuetapowej +twofa=Uwierzytelnianie dwuskładnikowe +twofa_scratch=Kod jednorazowy uwierzytelniania dwuskładnikowego passcode=Kod dostępu webauthn_insert_key=Podłącz swój klucz bezpieczeństwa @@ -171,17 +171,17 @@ copy_path = Skopiuj ścieżkę [aria] navbar = Pasek nawigacji footer = Stopka -footer.software = O oprogramowaniu +footer.software = O tym oprogramowaniu footer.links = Linki [heatmap] -contributions_format = {contributions} w dniu {month} {day}, {year} +contributions_format = {contributions} w dniu {day} {month} {year} less = Mniej more = Więcej number_of_contributions_in_the_last_12_months = %s kontrybucji w ciągu ostatnich 12 miesięcy contributions_zero = Brak kontrybucji -contributions_one = Wkład -contributions_few = Wkłady +contributions_one = kontrybucja +contributions_few = kontrybucji [editor] buttons.heading.tooltip = Dodaj nagłówek @@ -196,8 +196,8 @@ buttons.list.task.tooltip = Dodaj listę zadań buttons.ref.tooltip = Dodaj odniesienie do zgłoszenia lub pull requestu buttons.mention.tooltip = Dodaj wzmiankę o użytkowniku lub zespole buttons.switch_to_legacy.tooltip = Zamiast tego użyj starego edytora -buttons.disable_monospace_font = Wyłącz czcionkę monospace -buttons.enable_monospace_font = Włącz czcionkę monospace +buttons.disable_monospace_font = Wyłącz czcionkę o stałej szerokości +buttons.enable_monospace_font = Włącz czcionkę o stałej szerokości buttons.indent.tooltip = Zagnieźdź elementy o jeden poziom buttons.new_table.tooltip = Dodaj tabelę table_modal.header = Dodaj tabelę @@ -256,7 +256,7 @@ err_empty_db_path=Ścieżka do bazy danych SQLite3 nie może być pusta. no_admin_and_disable_registration=Nie możesz wyłączyć możliwości samodzielnej rejestracji kont użytkowników bez stworzenia konta administratora. err_empty_admin_password=Hasło administratora nie może być puste. err_empty_admin_email=Pole adresu e-mail administratora nie może być puste. -err_admin_name_is_reserved=Nazwa użytkownika administratora jest nieprawidłowa, pseudonim jest zarezerwowany +err_admin_name_is_reserved=Nazwa użytkownika administratora jest nieprawidłowa, nazwa użytkownika jest zarezerwowana err_admin_name_pattern_not_allowed=Nazwa użytkownika administratora jest nieprawidłowa, pseudonim zawiera zastrzeżone znaki err_admin_name_is_invalid=Nazwa użytkownika administratora jest nieprawidłowa @@ -329,12 +329,12 @@ default_keep_email_private.description=Domyślnie włącz ukrywanie adresu e-mai default_allow_create_organization=Domyślne zezwolenie na tworzenie organizacji default_allow_create_organization.description=Domyślnie zezwalaj nowym użytkownikom na tworzenie organizacji. Gdy ta opcja jest wyłączona, administrator będzie musiał przyznać uprawnienia do tworzenia organizacji nowym użytkownikom. default_enable_timetracking=Domyślnie włącz śledzenie czasu -default_enable_timetracking.description=Domyślne zezwól na korzystanie z funkcji śledzenia czasu dla nowych repozytoriów. -no_reply_address=Ukryta domena e-mail +default_enable_timetracking.description=Domyślnie zezwól na korzystanie z funkcji śledzenia czasu dla nowych repozytoriów. +no_reply_address=Domena ukrytych e-maili no_reply_address_helper=Nazwa domeny dla użytkowników z ukrytym adresem e-mail. Przykładowo, użytkownik "jan" będzie zalogowany na Git'cie jako "jan@noreply.example.org", jeśli domena ukrytego adresu e-mail jest ustawiona na "noreply.example.org". password_algorithm=Algorytm hashowania haseł invalid_db_table = Tabela bazy danych "%s" jest nieprawidłowa: %v -allow_dots_in_usernames = Zezwolenie użytkownikom na używanie kropek w nazwach użytkowników. Nie ma to wpływu na istniejące konta. +allow_dots_in_usernames = Zezwól użytkownikom na używanie kropek w nazwach użytkowników. Nie ma to wpływu na istniejące konta. invalid_password_algorithm = Nieprawidłowy algorytm hashowania haseł smtp_from_invalid = Adres "Wyślij e-mail jako" jest nieprawidłowy env_config_keys_prompt = Następujące zmienne środowiskowe zostaną również zastosowane do pliku konfiguracyjnego: @@ -350,7 +350,7 @@ app_slogan = Slogan instancji app_slogan_helper = Wprowadź tutaj slogan swojej instancji. Pozostaw puste, aby wyłączyć. [home] -uname_holder=Nazwa użytkownika lub adres email +uname_holder=Nazwa użytkownika lub adres e-mail password_holder=Hasło switch_dashboard_context=Przełącz kontekst pulpitu my_repos=Repozytoria @@ -407,10 +407,10 @@ remember_me=Zapamiętaj to urządzenie forgot_password_title=Zapomniałem hasła forgot_password=Zapomniałeś hasła? sign_up_now=Potrzebujesz konta? Zarejestruj się teraz. -confirmation_mail_sent_prompt=Nowa wiadomość e-mail z potwierdzeniem została wysłana do %s. Aby zakończyć proces rejestracji, sprawdź swoją skrzynkę odbiorczą i kliknij podany link w ciągu najbliższych %s. Jeśli wiadomość email jest nieważna, możesz się zalogować i poprosić o wysłanie kolejnej wiadomości email z potwierdzeniem na inny adres. +confirmation_mail_sent_prompt=Nowa wiadomość e-mail z potwierdzeniem została wysłana do %s. Aby zakończyć proces rejestracji, sprawdź swoją skrzynkę odbiorczą i kliknij podany link w ciągu najbliższych %s. Jeśli wiadomość e-mail jest nieważna, możesz się zalogować i poprosić o wysłanie kolejnej wiadomości e-mail z potwierdzeniem na inny adres. must_change_password=Zaktualizuj swoje hasło allow_password_change=Użytkownik musi zmienić hasło (zalecane) -reset_password_mail_sent_prompt=Wiadomość email z potwierdzeniem została wysłana do %s. Aby zakończyć proces odzyskiwania konta, sprawdź swoją skrzynkę odbiorczą i kliknij podany link w ciągu najbliższych %s. +reset_password_mail_sent_prompt=Wiadomość e-mail z potwierdzeniem została wysłana do %s. Aby zakończyć proces odzyskiwania konta, sprawdź swoją skrzynkę odbiorczą i kliknij podany link w ciągu najbliższych %s. active_your_account=Aktywuj swoje konto account_activated=Konto zostało aktywowane prohibit_login=Konto jest zawieszone @@ -418,7 +418,7 @@ resent_limit_prompt=Zażądano już wiadomości aktywacyjnej. Zaczekaj 3 minuty has_unconfirmed_mail=Witaj, %s, masz niepotwierdzony adres e-mail (%s). Jeśli nie otrzymałeś wiadomości e-mail z potwierdzeniem lub potrzebujesz wysłać nową, kliknij na poniższy przycisk. resend_mail=Kliknij tutaj, aby wysłać e-mail aktywacyjny email_not_associate=Adres e-mail nie jest powiązany z żadnym kontem. -send_reset_mail=Wyślij email odzyskiwania +send_reset_mail=Wyślij e-mail odzyskiwania reset_password=Odzyskiwanie konta invalid_code=Twój kod potwierdzający jest nieprawidłowy lub wygasł. reset_password_helper=Odzyskaj konto @@ -466,7 +466,7 @@ password_pwned = Wybrane hasło znajduje się na tutaj⁣, aby rozpocząć nową sesję. invalid_password = Twoje hasło nie zgadza się z hasłem, które zostało użyte do stworzenia konta. reset_password_wrong_user = Jesteś zalogowany(-a) jako %s, ale link odzyskujący jest dla %s @@ -545,7 +545,7 @@ issue.action.reject = @%[1]s poprosił o zmiany w tym pull requeście. issue.action.review_dismissed = @%[1]s odrzucił ostatnią analizę od %[2]s dla tego pull requesta. team_invite.subject = %[1]s zaprosił cię do dołączenia do organizacji %[2]s primary_mail_change.subject = Twój główny mail został zmieniony -primary_mail_change.text_1 = Główny mail twojego konta został właśnie zmieniony na %[1]s. To oznacza ze ten adres email nie będzie już otrzymywał powiadomień dla twojego konta. +primary_mail_change.text_1 = Główny mail twojego konta został właśnie zmieniony na %[1]s. To oznacza ze ten adres e-mail nie będzie już otrzymywał powiadomień dla twojego konta. totp_disabled.subject = TOTP został wyłączony password_change.subject = Twoje hasło zostało zmienione password_change.text_1 = Hasło do twojego konta zostało właśnie zmienione. @@ -555,7 +555,7 @@ account_security_caution.text_2 = Jeśli to nie byłeś(-aś) Ty, Twoje konto pa account_security_caution.text_1 = Jeśli to byłeś(-aś) ty, możesz bezpiecznie zignorować tę wiadomość. totp_enrolled.subject = Aktywowałeś(-aś) TOTP jako metodę 2FA totp_enrolled.text_1.no_webauthn = Właśnie włączyłeś(-aś) TOTP dla swojego konta. Oznacza to, że dla wszystkich przyszłych logowań do konta musisz używać TOTP jako metody 2FA. -team_invite.text_3 = Uwaga: To zaproszenie było przeznaczone dla %[1]s. Jeśli nie spodziewałeś(-aś) się tego zaproszenia, możesz zignorować ten email. +team_invite.text_3 = Uwaga: To zaproszenie było przeznaczone dla %[1]s. Jeśli nie spodziewałeś(-aś) się tego zaproszenia, możesz zignorować ten e-mail. totp_disabled.text_1 = Jednorazowe hasło czasowe (TOTP) zostało właśnie wyłączone na twoim koncie. totp_disabled.no_2fa = Nie ma już skonfigurowanych innych metod 2FA, co oznacza, że nie jest już konieczne logowanie się do konta za pomocą 2FA. removed_security_key.subject = Klucz bezpieczeństwa został usunięty @@ -674,7 +674,8 @@ unsupported_login_type = Ta forma logowania nie wspiera możliwości usunięcia include_error = ` musi zawierać podciąg znaków "%s".` still_own_packages = Twoje konto jest właścicielem jednego lub więcej pakietów, musisz je najpierw usunąć. username_claiming_cooldown = Nazwa użytkownika nie może być uzyskana, ponieważ okres ochrony jeszcze nie minął. Może zostać uzyskana dopiero w %[1]s. -email_domain_is_not_allowed = Domena adresu email użytkownika %s konfliktuje z EMAIL_DOMAIN_ALLOWLIST lub EMAIL_DOMAIN_BLOCKLIST. Upewnij się, że ustawiony adres email jest poprawny. +email_domain_is_not_allowed = Domena adresu e-mail użytkownika %s konfliktuje z EMAIL_DOMAIN_ALLOWLIST lub EMAIL_DOMAIN_BLOCKLIST. Upewnij się, że ustawiony adres e-mail jest poprawny. +invalid_ssh_principal = Nieprawidłowy podmiot: %s [user] @@ -781,10 +782,10 @@ primary=Podstawowy activated=Aktywowany requires_activation=Wymaga aktywacji primary_email=Ustaw jako podstawowy -activate_email=Wyślij email aktywacyjny +activate_email=Wyślij e-mail aktywacyjny activations_pending=Oczekujące aktywacje delete_email=Usuń -email_deletion=Usuń adres email +email_deletion=Usuń adres e-mail email_deletion_desc=Adres e-mail i powiązane informacje zostaną usunięte z Twojego konta. Commity za pomocą tego adresu e-mail pozostaną niezmienione. Kontynuować? email_deletion_success=Adres e-mail został usunięty. theme_update_success=Twój motyw został zaktualizowany. @@ -970,12 +971,12 @@ comment_type_group_pull_request_push = Dodane commity keep_activity_private = Ukryj aktywność ze strony profilu oauth2_application_locked = Forgejo rejestruje zawczasu kilka aplikacji OAuth2 podczas rozruchu jeżeli włączono taką opcję w konfiguracji. By zapobiec nieoczekiwanym zachowaniom, nie mogą one zostać ani edytowane, ani usunięte. Proszę odnieś się do dokumentacji OAuth2 po więcej informacji. oauth2_client_secret_hint = Sekret nie będzie pokazany ponownie po opuszczeniu lub odświeżeniu tej strony. Proszę upewnij się, że został zapisany. -email_desc = Twój główny adres email będzie użyty dla powiadomień, odzyskiwania hasła i, chyba że jest ukryty, operacji Git w przeglądarce. +email_desc = Twój główny adres e-mail będzie użyty dla powiadomień, odzyskiwania hasła i, chyba że jest ukryty, operacji Git w przeglądarce. key_content_ssh_placeholder = Rozpoczyna się z "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", lub "sk-ssh-ed25519@openssh.com" repo_and_org_access = Dostęp do Repozytoriów i Organizacji revoke_oauth2_grant_success = Dostęp cofnięty pomyślnie. update_language = Zmień język -keep_email_private_popup = Twój adres email nie będzie pokazywany na twoim profilu i nie będzie używany jako domyślny dla commitów utworzonych przez interfejs przeglądarki, takich jak wgrywanie plików, edycje, commity scalające. Zamiast tego, specjalny adres %s może zostać użyty do powiązania commitów z twoim kontem. Ta opcja nie wpływa na commity już istniejące. +keep_email_private_popup = Twój adres e-mail nie będzie pokazywany na twoim profilu i nie będzie używany jako domyślny dla commitów utworzonych przez interfejs przeglądarki, takich jak wgrywanie plików, edycje, commity scalające. Zamiast tego, specjalny adres %s może zostać użyty do powiązania commitów z twoim kontem. Ta opcja nie wpływa na commity już istniejące. repos_none = Nie posiadasz żadnych repozytoriów. verify_gpg_key_success = Klucz GPG "%s" został zweryfikowany. email_notifications.andyourown = Dodaj swoje własne powiadomienia @@ -988,7 +989,7 @@ additional_repo_units_hint = Proponuj włączenie dodatkowych jednostek repozyto webauthn_desc = Klucze bezpieczeństwa to urządzenia zawierające klucze kryptograficzne. Mogą zostać użyte do uwierzytelniania dwuskładnikowego. Klucze bezpieczeństwa muszą wspierać standard WebAuthn Authenticator. uploaded_avatar_is_too_big = Rozmiar wgranego pliku (%d KiB) przekraczana rozmiar maksymalny (%d KiB). retype_new_password = Potwierdź nowe hasło -can_not_add_email_activations_pending = Aktywacja w toku, spróbuj ponownie w ciągu kolejnych kilku minut jeżeli chcesz dodać nowy email. +can_not_add_email_activations_pending = Aktywacja w toku, spróbuj ponownie w ciągu kolejnych kilku minut jeżeli chcesz dodać nowy e-mail. location_placeholder = Podziel się swoim położeniem z innymi select_permissions = Wybierz uprawnienia permissions_access_all = Wszystkie (publiczne, prywatne i ograniczone) @@ -1030,7 +1031,7 @@ pronouns = Zaimki pronouns_custom = Własne saved_successfully = Twoje ustawienia zostały zapisane pomyślnie. keep_activity_private.description = Twoja aktywność publiczna będzie widoczna tylko dla ciebie i administratorów tej instancji. -add_email_confirmation_sent = Email z potwierdzeniem został wysłany do "%s". By potwierdzić swój adres email, proszę sprawdź swoją skrzynkę odbiorczą i odwiedź dostarczony link w ciągu %s. +add_email_confirmation_sent = E-mail z potwierdzeniem został wysłany do "%s". By potwierdzić swój adres e-mail, proszę sprawdź swoją skrzynkę odbiorczą i odwiedź dostarczony link w ciągu %s. verify_ssh_key_success = Klucz SSH "%s" został zweryfikowany. twofa_recovery_tip = Jeżeli zgubisz swoje urządzenie, będziesz mógł użyć jednorazowego klucza odzyskiwania by odzyskać dostęp do swojego konta. webauthn_key_loss_warning = Jeżeli zgubisz swoje klucze bezpieczeństwa, utracisz dostęp do swojego konta. @@ -1046,6 +1047,11 @@ change_username_redirect_prompt.with_cooldown.one = Stara nazwa użytkownika bę change_username_redirect_prompt.with_cooldown.few = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochronnym wynoszącym %[1]d dni, nadal możesz uzyskać z powrotem starą nazwę użytkownika podczas okresu ochronnego. language.description = Ten język zostanie zapisany na twoim koncie i będzie używany jako domyślny po zalogowaniu. hidden_comment_types_description = Rodzaje komentarzy zaznaczone tutaj nie będą wyświetlały się na stronach zgłoszeń. Zaznaczenie "Etykieta" na przykład usunie wszystkie komentarze " dodał/usunął ". +principal_desc = Te podmioty certyfikatu SSH będą powiązane z twoim kontem i pozwolą na pełen dostęp do twoich repozytoriów. +add_new_principal = Dodaj podmiot +manage_ssh_principals = Zarządzaj podmiotami certyfikatu SSH +principal_state_desc = Ten podmiot nie był używany w ciągu ostatnich 7 dni +add_principal_success = Podmiot certyfikatu SSH "%s" został dodany. [repo] owner=Właściciel @@ -2348,7 +2354,7 @@ release.message = Opisz to wydanie release.download_count_few = %s pobrania tag.create_tag_operation = Utwórz tag tag.create_success = Tag "%s" został utworzony. -editor.commit_email = Email commitu +editor.commit_email = E-mail commitu projects.edit_success = Projekt "%s" został zaktualizowany. issues.choose.invalid_config = Konfiguracja zgłoszeń zawiera błędy: issues.add_ref_at = `dodał(a) odniesienie %s %s` @@ -2836,6 +2842,12 @@ settings.protected_branch_duplicate_rule_name = Już istnieje reguła dla tego z release.summary_card_alt = Karta podsumowania wydania zatytułowanego "%s" w repozytorium %s settings.archive.text = Zarchiwizowanie tego repo sprawi, że będzie ono w całości tylko do odczytu. Będzie ukryte z pulpitu. Nikt (nawet ty!) nie będzie mógł utworzyć nowych commitów, lub otworzyć jakichkolwiek zgłoszeń lub pull requestów. settings.unarchive.button = Odarchiwizuj repo +commits.view_single_diff = Zobacz zmiany tego pliku wprowadzone w tym commicie +tag.ahead.target = do %s od tego tagu +settings.matrix.room_id_helper = ID Pokoju może być pozyskane z klienta przeglądarkowego Element > Ustawienia pokoju > Zaawansowane > Wewnętrzne ID pokoju. Przykład: %s. +settings.matrix.access_token_helper = Zalecane jest skonfigurowanie dedykowany konta Matrix. Token dostępu może zostać pozyskany z przeglądarkowego klienta Element (w zakładce incognito/prywatnej) > Menu użytkownika (lewy górny róg) > Wszystkie ustawienia > Pomoc i O aplikacji > Zaawansowane > Token dostępu (zaraz pod URL Serwera domowego). Zamknij zakładkę incognito/prywatną (wylogowanie się unieważniłoby ten token). +pulls.editable = Edytowalne +pulls.editable_explanation = Ten pull request zezwala na edycje przez opiekunów. Możesz uczestniczyć w nim bezpośrednio. [graphs] component_loading = Wczytywanie %s... @@ -2958,15 +2970,15 @@ form.name_reserved = Nazwa organizacji "%s" jest zarezerwowana. follow_blocked_user = Nie możesz obserwować tej organizacji ponieważ ta organizacja ciebie zablokowała. settings.change_orgname_prompt = Uwaga: Zmiana nazwy organizacji zmieni również URL twojej organizacji i udostępni starą nazwę. form.name_pattern_not_allowed = Wzór "%s" nie jest dozwolony w nazwie organizacji. -settings.email = Email kontaktowy +settings.email = E-mail kontaktowy teams.general_access_helper = Uprawnienia członków będą określane na podstawie poniższej tabeli uprawnień. members.remove.detail = Usunąć %[1]s z %[2]s? teams.none_access_helper = Opcja "brak dostępu" dotyczy tylko repozytoriów prywatnych. teams.general_access = Niestandardowy dostęp teams.add_nonexistent_repo = Repozytorium które próbujesz dodać nie istnieje, proszę je najpierw utworzyć. teams.invite_team_member.list = Oczekujące zaproszenia -settings.change_orgname_redirect_prompt.with_cooldown.few = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochrony wynoszącym %[1]d dni, możesz nadal odzyskać swoją starą nazwę użytkownika podczas okresu ochrony. -settings.change_orgname_redirect_prompt.with_cooldown.one = Stara nazwa użytkownika będzie dostępna dla każdego po okresie ochrony wynoszącym %[1]d dzień, możesz nadal odzyskać swoją starą nazwę użytkownika podczas okresu ochrony. +settings.change_orgname_redirect_prompt.with_cooldown.few = Stara nazwa organizacji będzie dostępna dla każdego po okresie ochrony wynoszącym %[1]d dni, możesz nadal odzyskać starą nazwę podczas okresu ochrony. +settings.change_orgname_redirect_prompt.with_cooldown.one = Stara nazwa organizacji będzie dostępna dla każdego po okresie ochrony wynoszącym %[1]d dzień, możesz nadal odzyskać starą nazwę podczas okresu ochrony. teams.invite_team_member = Zaproś do %s settings.visibility.limited = Ograniczona (widoczne tylko dla zalogowanych użytkowników) teams.none_access = Brak dostępu @@ -2981,7 +2993,7 @@ organizations=Organizacje repositories=Repozytoria hooks=Weebhook'i authentication=Źródła uwierzytelniania -emails=Emaile użytkowników +emails=E-maile użytkowników config=Konfiguracja notices=Powiadomienia systemu monitor=Monitorowanie @@ -3020,7 +3032,7 @@ dashboard.archive_cleanup=Usuń stare archiwa repozytoriów dashboard.deleted_branches_cleanup=Wyczyść usunięte galęzie dashboard.git_gc_repos=Wykonaj zbieranie śmieci ze wszystkich repozytoriów dashboard.resync_all_sshkeys=Zaktualizuj plik '.ssh/authorized_keys' z kluczami SSH Forgejo. -dashboard.resync_all_sshprincipals=Zaktualizuj plik '.ssh/authorized_keys' z kluczami SSH Forgejo. +dashboard.resync_all_sshprincipals=Zaktualizuj plik ".ssh/authorized_principals" z podmiotami SSH Forgejo. dashboard.resync_all_hooks=Ponownie synchronizuj hooki pre-receive, update i post-receive we wszystkich repozytoriach dashboard.reinit_missing_repos=Ponownie zainicjalizuj wszystkie brakujące repozytoria Git, dla których istnieją rekordy dashboard.sync_external_users=Synchronizuj zewnętrzne dane użytkownika @@ -3097,7 +3109,7 @@ users.list_status_filter.is_active=Aktywne users.list_status_filter.is_admin=Administrator users.list_status_filter.is_restricted=Ograniczone -emails.email_manage_panel=Zarządzanie adresami email +emails.email_manage_panel=Zarządzanie adresami e-mail emails.primary=Podstawowy emails.activated=Aktywowany emails.filter_sort.email=E-mail @@ -3162,7 +3174,7 @@ auths.attribute_username=Atrybut nazwy użytkownika auths.attribute_username_placeholder=Pozostaw puste, aby użyć nazwy użytkownika wprowadzonej w Forgejo. auths.attribute_name=Atrybut imienia auths.attribute_surname=Atrybut nazwiska -auths.attribute_mail=Atrybut adresu email +auths.attribute_mail=Atrybut adresu e-mail auths.attribute_ssh_public_key=Atrybut publicznego klucza SSH auths.attributes_in_bind=Pobierz atrybuty w kontekście Bind DN auths.allow_deactivate_all=Zezwól na pusty wynik wyszukiwania, aby zdezaktywować wszystkich użytkowników @@ -3181,7 +3193,7 @@ auths.allowed_domains_helper=Pozostaw puste, aby zezwolić na wszystkie domeny. auths.skip_tls_verify=Pomiń weryfikację protokołu TLS auths.disable_helo=Wyłącz HELO auths.pam_service_name=Nazwa usługi PAM -auths.pam_email_domain=Domena email PAM (opcjonalna) +auths.pam_email_domain=Domena e-mail PAM (opcjonalna) auths.oauth2_provider=Dostawca OAuth2 auths.oauth2_icon_url=Adres URL Ikony auths.oauth2_clientID=ID klienta (klucz) @@ -3281,16 +3293,16 @@ config.enable_openid_signup=Włącz samodzielną rejestrację za pomocą OpenID config.enable_openid_signin=Włącz logowanie za pomocą OpenID config.show_registration_button=Pokazuj przycisk rejestracji config.require_sign_in_view=Wymagaj zalogowania w celu wyświetlania stron -config.mail_notify=Włącz powiadomienia email +config.mail_notify=Włącz powiadomienia e-mail config.enable_captcha=Włącz CAPTCHA config.active_code_lives=Ważność kodów aktywacyjnych config.reset_password_code_lives=Czas wygaśnięcia kodu przywracania konta -config.default_keep_email_private=Domyślne ukrywanie adresów email +config.default_keep_email_private=Domyślne ukrywanie adresów e-mail config.default_allow_create_organization=Domyślnie zezwalaj na tworzenie organizacji config.enable_timetracking=Włącz śledzenie czasu config.default_enable_timetracking=Domyślnie włącz śledzenie czasu config.default_allow_only_contributors_to_track_time=Zezwalaj wyłącznie współpracownikom na śledzenie czasu -config.no_reply_address=Ukryta domena email +config.no_reply_address=Domena ukrytych e-maili config.default_visibility_organization=Domyślna widoczność dla nowych organizacji config.default_enable_dependencies=Domyślne włączanie zależności zgłoszeń @@ -3414,8 +3426,8 @@ assets = Zasoby kodu dashboard.cleanup_packages = Wyczyść przedawnione pakiety dashboard.delete_old_system_notices = Usuń wszystkie stare powiadomienia systemowe z bazy danych users.details = Szczegóły użytkownika -emails.deletion_success = Adres email został usunięty. -emails.delete_primary_email_error = Nie możesz usunąć głównego adresu email. +emails.deletion_success = Adres e-mail został usunięty. +emails.delete_primary_email_error = Nie możesz usunąć głównego adresu e-mail. users.purge_help = Wymusza usunięcie użytkownika razem z jakimikolwiek repozytoriami, organizacjami, oraz pakietami których ten użytkownik jest właścicielem. Wszystkie komentarze i zgłoszenia przez tego użytkownika również zostaną usunięte. dashboard.sync_branch.started = Synchronizacja gałęzi rozpoczęta dashboard.cancel_abandoned_jobs = Anuluj porzucone prace akcji @@ -3440,7 +3452,7 @@ dashboard.cleanup_actions = Wyczyść przedawnione logi i artefakty z akcji dashboard.rebuild_issue_indexer = Przebuduj indekser zgłoszeń users.new_success = Konto użytkownika "%s" zostało utworzone. users.purge = Pozbądź się użytkownika -users.activated.description = Zakończenie weryfikacji email. Właściciel nieaktywowanego konta nie będzie mógł się zalogować dopóki weryfikacja email nie została zakończona. +users.activated.description = Zakończenie weryfikacji e-mail. Właściciel nieaktywowanego konta nie będzie mógł się zalogować dopóki weryfikacja e-mail nie została zakończona. users.block.description = Zablokuj użytkownikowi możliwości interakcji z tym serwisem przez jego konto i zabroń logowania się. users.admin.description = Nadaj temu użytkownikowi pełen dostęp do wszystkich funkcji administracyjnych dostępnych przez interfejs przeglądarkowy lub API. users.restricted.description = Zezwól tylko na interakcje z repozytoriami i organizacjami do których ten użytkownik został dodany jako współpracownik. To uniemożliwia dostęp do publicznych repozytoriów na tej instancji. @@ -3449,16 +3461,88 @@ users.organization_creation.description = Zezwól na tworzenie nowych organizacj users.still_own_packages = Ten użytkownik nadal jest właścicielem jednego lub więcej pakietów, usuń najpierw te pakiety. users.list_status_filter.not_admin = Nie administrator users.list_status_filter.not_2fa_enabled = 2FA wyłączone -emails.change_email_text = Czy jesteś pewien(-na), że chcesz zaktualizować ten adres email? -emails.delete = Usuń Email -emails.delete_desc = Czy jesteś pewien(-na), że chcesz usunąć ten adres email? +emails.change_email_text = Czy jesteś pewien(-na), że chcesz zaktualizować ten adres e-mail? +emails.delete = Usuń E-mail +emails.delete_desc = Czy jesteś pewien(-na), że chcesz usunąć ten adres e-mail? packages.total_size = Wielkość całkowita: %s packages.unreferenced_size = Nieodniesiona wielkość: %s packages.cleanup = Wyczyść przedawnione dane -defaulthooks.desc = Webhooki automatycznie wykonują żądania HTTP POST do serwera kiedy pewne wydarzenia Forgejo zostają wywołane. Webhooki zdefiniowane tutaj są domyślne i będą kopiowane do wszystkich nowych repozytoriów. Przeczytaj więcej w przewoniku webhooków. +defaulthooks.desc = Webhooki automatycznie wykonują żądania HTTP POST do serwera kiedy pewne wydarzenia Forgejo zostają wywołane. Webhooki zdefiniowane tutaj są domyślne i będą kopiowane do wszystkich nowych repozytoriów. Przeczytaj więcej w przewodniku webhooków. dashboard.new_version_hint = Forgejo %s jest już dostępne, w tej chwili korzystasz z %s. Sprawdź szczegóły na blogu. identity_access = Tożsamość i dostęp dashboard.cron.cancelled = Cron: %[1]s anulowany: %[3]s +config.domain = Domena serwera +monitor.queue.activeworkers = Aktywne procesy pracujące +monitor.queue.settings.remove_all_items = Usuń wszystkie +monitor.queue.settings.desc = Pule rosną dynamicznie w odpowiedzi na blokadę kolejki procesów pracujących. +config.mailer_config = Konfiguracja Mailer +auths.tip.gitea = Zarejestruj nową aplikację OAuth2. Przewodnik można znaleźć na %s +auths.unable_to_initialize_openid = Nie można zainicjalizować Dostawcy Uwierzytelniania OpenID Connect: %s +auths.force_smtps = Wymuś SMTPS +auths.helo_hostname = Nazwa hosta HELO +self_check = Autoweryfikacja +config.mailer_enable_helo = Włącz HELO +monitor.queue.settings.remove_all_items_done = Wszystkie elementy w kolejce zostały usunięte. +auths.tips.gmail_settings = Ustawienia Gmail: +auths.map_group_to_team_removal = Usuń użytkowników z synchronizowanych zespołów jeżeli użytkownik nie należy do odpowiadającej grupy LDAP +auths.enable_ldap_groups = Włącz grupy LDAP +auths.map_group_to_team = Odwzorowywuj grupy LDAP na zespoły Organizacji (pozostaw pole puste by pominąć) +config.test_mail_sent = Testowy e-mail został wysłany do "%s". +config.cache_test_slow = Test pamięci podręcznej zakończony powodzeniem, jednak odpowiedź była wolna: %s. +auths.verify_group_membership = Weryfikuj przynależność do grupy w LDAP (pozostaw filtr pusty by pominąć) +monitor.stacktrace = Stacktrace +monitor.download_diagnosis_report = Pobierz raport diagnostyczny +auths.skip_local_two_fa_helper = Pozostawienie tej opcji jako odznaczonej oznacza, że użytkownicy lokalni z aktywowanym 2FA nadal będą musieli przejść 2FA by móc się zalogować +config.app_slogan = Slogan instancji +config.test_mail_failed = Nie udało się wysłać testowego e-maila do "%s": %v +config.mailer_use_dummy = Testowa +config.cache_test_failed = Nie udało się zbadać pamięci podręcznej: %v. +config.cache_test = Przetestuj Pamięć Podręczną +monitor.processes_count = %d Procesów +monitor.queue.numberinqueue = Liczba w kolejce +monitor.queue.review_add = Sprawdź / dodaj procesy pracujące +self_check.no_problem_found = Nie znaleziono jeszcze żadnych problemów. +config.cache_test_succeeded = Test pamięci podręcznej zakończony powodzeniem, otrzymano odpowiedź w ciągu %s. +auths.login_source_exist = Źródło uwierzytelniania "%s" już istnieje. +auths.new_success = Uwierzytelnianie "%s" została dodana. +config.app_data_path = Ścieżka danych aplikacji +systemhooks.desc = Webhooki automatycznie tworzą zapytania HTTP POST do serwera, kiedy następują pewne zdarzenia w Forgejo. Zdefiniowane tutaj webhooki będą oddziaływać na wszystkie repozytoria tego systemu, zatem proszę rozważ ich możliwy wpływ na wydajność. Przeczytaj o tym więcej w przewodniku o webhookach. +auths.force_smtps_helper = SMTPS jest zawsze używane na porcie 465. Zaznacz tę opcję by wymusić SMTPS na innych portach. (W przeciwnym wypadku dla innych portów zostanie użyte STARTTLS gdy jest wspierane przez hosta.) +auths.default_domain_name = Domyślna nazwa domeny używana do adresu e-mail +config.allow_dots_in_usernames = Zezwól użytkownikom na użycie kropek w ich nazwach użytkowników. Nie wpływa na już istniejące konta. +config.open_with_editor_app_help = Edytory dostępne w menu klonowania "Otwórz przy pomocy". Jeżeli pozostawione puste, ustawienie domyślne będzie użyte. Rozwiń by zobaczyć ustawienie domyślne. +monitor.duration = Okres (s) +config.ssh_domain = Domena serwera SSH +config.mailer_smtp_addr = Host SMTP +auths.tip.gitlab_new = Zarejestruj nową aplikację na %s +auths.oauth2_scopes = Dodatkowe zakresy +auths.tips.oauth2.general.tip = Podczas rejestrowania nowego uwierzytelniania OAuth2, callback/przekierowanie URL powinno być: +auths.oauth2_group_claim_name = Nazwa oświadczenia określającego nazwy grup dla tego źródła. (Opcjonalne) +dashboard.update_migration_poster_id = Aktualizuj ID autora migracji +config.access_log_template = Szablon dziennika dostępu +dashboard.start_schedule_tasks = Uruchomienie zaplanowanych zadań akcji +config.logger_name_fmt = Dziennik: %s +self_check.database_collation_case_insensitive = Baza danych korzysta z układu sortowania %s, dla którego nie ma znaczenia wielkość liter. Mimo, że Forgejo mógłoby działać z tym ustawieniem poprawnie, mogą wydarzyć się rzadkie przypadki, które nie będą działać zgodnie z oczekiwaniami. +auths.helo_hostname_helper = Nazwa hosta wysyłana z HELO. Aby wysłać bieżącą nazwę hosta, pozostaw puste. +dashboard.update_checker = Sprawdzanie aktualizacji +auths.oauth2_required_claim_name_helper = Ustaw tę nazwę by ograniczyć logowanie z tego źródła dla użytkowników z oświadczeniem o tej nazwie +auths.group_attribute_list_users = Atrybut grupy zawierający listę użytkowników +auths.attribute_avatar = Atrybut awatara +config.set_setting_failed = Ustawienie %s nie powiodło się +auths.oauth2_tenant = Dzierżawa +auths.oauth2_map_group_to_team_removal = Usuń użytkowników z synchronizowanych zespołów jeżeli użytkownik nie należy do odpowiadającej grupy. +auths.oauth2_required_claim_value_helper = Ustaw tę nazwę by ograniczyć logowanie z tego źródła dla użytkowników z oświadczeniem o tej nazwie i wartości +auths.oauth2_restricted_group = Wartość oświadczenia grupy dla użytkowników ograniczonych. (Opcjonalne - wymaga nazwy oświadczenia powyżej) +auths.oauth2_map_group_to_team = Odwzorowywuj grupy oświadczenia na zespoły organizacji (Opcjonalne - wymaga nazwy oświadczenia powyżej) +auths.invalid_openIdConnectAutoDiscoveryURL = Niepoprawny URL Auto Discovery (musi to być poprawny URL rozpoczynający się od http:// lub https://) +self_check.database_fix_mysql = Dla użytkowników MySQL/MariaDB, możesz użyć polecenia "forgejo doctor convert" by naprawić problemy układu sortowania. Możesz też naprawić problem przez ręczne użycie kwerend SQL "ALTER ... COLLATE ...". +auths.oauth2_required_claim_name = Nazwa wymaganego oświadczenia +auths.oauth2_required_claim_value = Wymagana wartość oświadczenia +auths.oauth2_admin_group = Wartość oświadczenia grupy dla administratorów. (Opcjonalne - wymaga nazwy oświadczenia powyżej) +auths.group_search_base = Podstawowy DN do wyszukiwania grup +auths.user_attribute_in_group = Atrybut użytkownika w grupie +self_check.database_collation_mismatch = Wymagaj by baza danych korzystała z układu sortowania: %s +self_check.database_inconsistent_collation_columns = Baza danych korzysta z układu sortowania %s, ale te kolumny korzystają z niedopasowanych układów sortowania. Może to spowodować nieoczekiwane problemy. [action] @@ -3472,6 +3556,27 @@ compare_commits=Porównaj %d commitów compare_commits_general=Porównaj commity mirror_sync_delete=synchronizuje i usuwa odwołanie %[2]s w %[3]s z kopii lustrzanej review_dismissed_reason=Powód: +auto_merge_pull_request = `automatycznie scalił(a) pull request %[3]s#%[2]s` +starred_repo = dał(a) gwiazdkę %[2]s +create_pull_request = `utworzył(a) pull request %[3]s#%[2]s` +comment_issue = `skomentował(a) zgłoszenie %[3]s#%[2]s` +mirror_sync_create = zsynchronizował(a) nowe odniesienie %[3]s do %[4]s z kopii lustrzanej +reject_pull_request = `zasugerował(a) zmiany dla %[3]s#%[2]s` +publish_release = `wydał %[4]s na %[3]s` +comment_pull = `skomentował(a) pull request %[3]s#%[2]s` +review_dismissed = `odrzucił(a) recenzję od %[4]s dla %[3]s#%[2]s` +close_pull_request = `zamknął(-ęła) pull request %[3]s#%[2]s` +reopen_pull_request = `otworzył(a) ponownie pull request %[3]s#%[2]s` +merge_pull_request = `scalił(a) pull request %[3]s#%[2]s` +approve_pull_request = `zatwierdził(a) %[3]s#%[2]s` +create_branch = utworzył(a) gałąź %[3]s in %[4]s +watched_repo = zaczął(-ęła) obserwować %[2]s +push_tag = wypchnął tag %[3]s do %[4]s +mirror_sync_push = zsynchronizował commity do %[3]s na %[4]s z kopii lustrzanej +create_issue = `otworzył(a) zgłoszenie %[3]s#%[2]s` +close_issue = `zamknął(-ęła) zgłoszenie %[3]s#%[2]s` +reopen_issue = `otworzył(a) ponownie zgłoszenie %[3]s#%[2]s` +commit_repo = wypchnął(-ęła) do %[3]s na %[4]s [tool] now=teraz @@ -3510,6 +3615,8 @@ mark_as_read=Oznacz jako przeczytane mark_as_unread=Oznacz jak nieprzeczytane mark_all_as_read=Oznacz wszystkie jako przeczytane subscriptions = Subskrybcje +no_subscriptions = Brak subskrypcji +watching = Obserwowane [gpg] default_key=Podpisano domyślnym kluczem @@ -3560,6 +3667,151 @@ container.labels.value = Wartość npm.dependencies = Zależności rpm.repository.architectures = Architektury owner.settings.chef.keypair.description = Para kluczy jest konieczna do uwierzytelnienia do rejestru Chef. Jeżeli wygenerowałeś(-aś) parę kluczy wcześniej, generowanie nowej pary kluczy porzuci starą parę kluczy. +maven.install2 = Uruchom z wiersza poleceń: +settings.delete = Usuń pakiet +assets = Zasoby +helm.registry = Skonfiguruj ten rejestr z wiersza poleceń: +helm.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +alt.install = Zainstaluj pakiet +alt.repository.multiple_groups = Ten pakiet jest dostępny w wielu grupach. +settings.delete.description = Usunięcie pakietu jest operacją permanentną i nie może zostać cofnięte. +nuget.registry = Skonfiguruj ten rejestr z wiersza poleceń: +conda.registry = Skonfiguruj ten rejestr jako repozytorium Conda w twoim pliku .condarc: +search_in_external_registry = Szukaj w %s +settings.delete.notice = Za moment usuniesz %s (%s). Ta operacja jest nieodwracalna, jesteś pewien(-na)? +settings.delete.success = Pakiet został usunięty. +settings.delete.error = Nie udało się usunąć pakietu. +debian.registry = Skonfiguruj ten rejestr z wiersza poleceń: +debian.repository = Informacje o repozytorium +generic.download = Pobierz pakiet z wiersza poleceń: +go.install = Zainstaluj pakiet z wiersza poleceń: +maven.registry = Skonfiguruj ten rejestr w twoim pliku projektu pom.xml: +npm.install = By zainstalować ten pakiet przy użyciu npm, wykonaj następujące polecenie: +npm.dependencies.optional = Zależności opcjonalne +alt.setup = Dodaj repozytorium do listy połączonych repozytoriów (wybierz wymaganą architekturę zamiast '_arch_'): +alt.repository.architectures = Architektury +alpine.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +conan.install = By zainstalować ten pakiet przy użyciu Conan, wykonaj następujące polecenie: +composer.install = By zainstalować ten pakiet przy użyciu Composer, wykonaj następujące polecenie: +npm.dependencies.peer = Zależności rówieśnicze +owner.settings.chef.keypair = Wygeneruj parę kluczy +owner.settings.cleanuprules.success.update = Reguła czyszczenia została zaktualizowana. +chef.registry = Skonfiguruj ten rejestr w twoim pliku ~/.chef/config.rb: +rubygems.install2 = lub dodaj to do Gemfile: +about = O tym pakiecie +published_by_in = Opublikowano %[1]s przez %[3]s w %[5]s +published_by = Opublikowano %[1]s przez %[3]s +npm.registry = Skonfiguruj ten rejestr w pliku projektu .npmrc: +rpm.repository.multiple_groups = Ten pakiet jest dostępny w wielu grupach. +rpm.repository = Informacje o repozytorium +alpine.registry = Skonfiguruj ten rejestr dodając url do twojego pliku /etc/apk/repositories: +cargo.registry = Skonfiguruj ten rejestr w pliku konfiguracyjnym Cargo (na przykład ~/.cargo/config.toml): +nuget.install = By zainstalować ten pakiet przy użyciu NuGet, wykonaj następujące polecenie: +rpm.distros.suse = na dystrybucjach opartych o SUSE +npm.dependencies.bundle = Dołączone zależności +rubygems.required.ruby = Wymaga wersji Ruby +rubygems.required.rubygems = Wymaga wersji RubyGem +arch.version.groups = Grupa +arch.version.depends = Zależności +arch.version.optdepends = Opcjonalne zależności +composer.registry = Skonfiguruj ten rejestr w twoim pliku ~/.composer/config.json: +conda.install = By zainstalować ten pakiet przy użyciu Conda, wykonaj następujące polecenie: +container.details.type = Rodzaj obrazu +rpm.distros.redhat = na dystrybucjach opartych o RedHat +filter.no_result = Twój filtr nie dał żadnych wyników. +registry.documentation = Więcej informacji o rejestrze %s znajdziesz w dokumentacji. +empty.repo = Czy wgrałeś pakiet, ale nie jest tutaj wyświetlany? Odwiedź ustawienia pakietów i powiąż go z tym repozytorium. +empty.documentation = Więcej informacji o rejestrze przekietów znajdziesz w dokumentacji. +alpine.repository = Informacje o repozytorium +arch.pacman.helper.gpg = Dodaj certyfikat zaufania do pacmana: +alpine.registry.key = Pobierz klucz publiczny RSA rejestru do folderu /etc/apk/keys/ by zweryfikować podpis indeksu: +arch.pacman.sync = Synchronizuj pakiet przy użyciu pacman: +arch.version.checkdepends = Zależności weryfikacji +arch.version.conflicts = Konflikty +cargo.install = By zainstalować ten pakiet przy użyciu Cargo, wykonaj następujące polecenie: +chef.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +debian.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +maven.download = By pobrać zależność, wykonaj w wierszu poleceń: +npm.install2 = lub dodaj to do pliku package.json: +pub.install = By zainstalować ten pakiet przy użyciu Dart, wykonaj następujące polecenie: +maven.install = By użyć tego pakietu dołącz następującą treść w bloku dependencies w pliku pom.xml: +pypi.install = By zainstalować ten pakiet przy użyciu pip, wykonaj następujące polecenie: +rpm.registry = Skonfiguruj ten rejestr z wiersza poleceń: +rpm.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +rubygems.install = By zainstalować ten pakiet przy użyciu gem, wykonaj następujące polecenie: +settings.link.description = Jeżeli połączych pakiet z repozytorium, pakiet ten będzie widoczny na liście pakietów danego repozytorium. +settings.link.success = Połączone repozytorium zostało zaktualizowane pomyślnie. +owner.settings.cleanuprules.keep.count = Pozostaw ostatnie +owner.settings.cleanuprules.keep.count.1 = 1 wersji na pakiet +owner.settings.chef.title = Rejestr Chef +conan.registry = Skonfiguruj ten rejestr z wiersza poleceń: +container.multi_arch = OS / Architektura +container.images.title = Obrazy +owner.settings.cleanuprules.keep.pattern = Pozostaw pasujące wersje +desc = Zarządzaj pakietami repozytoriów. +settings.link.button = Zaktualizuj Połączone Repozytorium +settings.link = Połącz ten pakiet z repozytorium +swift.install2 = i wykonaj następujące polecenie: +arch.version.properties = Własności wersji +arch.pacman.repo.multi.item = Konfiguracja dla %s +arch.pacman.repo.multi = %s ma tę samą wersję co w innych dystrybucjach. +arch.pacman.conf = Dodaj serwer z powiązaną dystrybucją i architekturą do /etc/pacman.conf : +versions.view_all = Pokaż wszystkie +details.documentation_site = Strona dokumentacji +details.repository_site = Strona repozytorium +arch.version.description = Opis +arch.version.provides = Zapewnia +arch.version.makedepends = Zależności budowy +container.pull = Pobierz obraz z wiersza poleceń: +container.layers = Warstwy obrazu +pypi.requires = Wymagany Python +rubygems.dependencies.runtime = Zależności czasu wykonywania +swift.registry = Skonfiguruj ten rejestr z wiersza poleceń: +alt.registry = Skonfiguruj ten rejestr z wiersza poleceń: +alt.registry.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +owner.settings.cleanuprules.preview.overview = %d pakietów jest zaplanowanych do usunięcia. +owner.settings.cleanuprules.keep.count.n = %d wersji na pakiet +owner.settings.cleanuprules.remove.title = Wersje które nie pasują do tych reguł zostaną usunięte, chyba, że reguła wcześniej każe jest pozostawić. +owner.settings.cleanuprules.remove.days = Usuń wersje starsze niż +alt.repository = Informacje o repozytorium +owner.settings.cleanuprules.remove.pattern = Usuń wersje pasujące +owner.settings.cleanuprules.success.delete = Reguła czyszczenia została usunięta. +arch.version.replaces = Zamienia +arch.version.backup = Kopia zapasowa +details.project_site = Strona projektu +settings.link.error = Nie udało się zaktualizować połączonego repozytorium. +swift.install = Dodaj ten packiet do twojego pliku Package.swift: +settings.link.select = Wybierz Repozytorium +empty = Nie ma jeszcze żadnych pakietów. +cran.registry = Skonfiguruj ten rejestr w twoim pliku Rprofile.site: +cran.install = By zainstalować ten pakiet, wykonaj następujące polecenie: +owner.settings.cargo.rebuild.no_index = Nie można odbudować, żaden indeks nie jest zainicjowany. +owner.settings.cargo.title = Indeks rejestru Cargo +owner.settings.cargo.rebuild.error = Nie udało się odbudować indeksu Cargo: %v +owner.settings.cargo.rebuild.success = Indeks Cargo został odbudowany pomyślnie. +owner.settings.cleanuprules.none = Nie ma jeszcze żadnych reguł czyszczenia. +nuget.dependency.framework = Framework Docelowy +owner.settings.cleanuprules.preview = Podgląd reguły czyszczenia +owner.settings.cleanuprules.keep.pattern.container = Wersja latest jest zawsze pozostawiana dla pakietów kontenerów. +owner.settings.cargo.initialize.success = Indeks Cargo został utworzony pomyślnie. +owner.settings.cargo.rebuild = Odbuduj indeks +owner.settings.cargo.initialize.error = Nie udało się zainicjować indeksu Cargo: %v +composer.dependencies.development = Zależności programistyczne +owner.settings.cargo.initialize = Zainicjuj indeks +alpine.registry.info = Wybierz $branch i $repository z listy poniżej. +owner.settings.cleanuprules.pattern_full_match = Zastosuj wzór do pełnej nazwy pakietu +owner.settings.cleanuprules.keep.title = Wersje które pasują do tych reguł są pozostawiane, nawet jeżeli pasują do reguły usunięcia niżej. +vagrant.install = By dodać box Vagrant, wykonaj następujące polecenie: +npm.dependencies.development = Zależności programistyczne +rubygems.dependencies.development = Zależności programistyczne +owner.settings.cargo.rebuild.description = Odbudowanie może być przydatne gdy indeks nie jest synchronizowany z zapisanymi pakietami Cargo. +owner.settings.cleanuprules.title = Reguły czyszczenia +owner.settings.cleanuprules.add = Dodaj regułę czyszczenia +owner.settings.cleanuprules.edit = Edytuj regułę czyszczenia +owner.settings.cleanuprules.preview.none = Reguła czyszczenia nie pasuje do żadnego pakietu. +owner.settings.cargo.initialize.description = Specjalny indeks repozytorium Git jest potrzebny by użyć rejestru Cargo. Wybranie tej opcji utworzy/odtworzy repozytorium i skonfiguruje jest automatycznie. +container.digest = Digest +debian.registry.info = Wybierz $distribution i $component z listy poniżej. [secrets] secrets = Sekrety @@ -3646,6 +3898,33 @@ variables.description = Zmienne będą przekazane pewnym akcjom, nie mogą być runners.runner_manage_panel = Zarządzaj runnerami runners.new = Utwórz nowy runner runs.no_matching_online_runner_helper = Brak pasujących runnerów online z etykietą: %s +workflow.disable = Wyłącz proces pracy +unit.desc = Zarządzaj zintegrowanymi procesami CI/CD z Forgejo Actions. +runs.all_workflows = Wszystkie procesy prac +variables.not_found = Nie udało się znaleźć zmiennej. +runs.invalid_workflow_helper = Plik konfiguracyjny procesu pracy jest nieprawidłowy. Proszę sprawdź swój plik konfiguracyjny: %s +runs.no_workflows = Nie ma jeszcze żadnych procesów pracy. +runs.no_runs = Ten proces pracy nie ma jeszcze uruchomień. +workflow.dispatch.use_from = Wykorzystaj proces pracy z +workflow.disabled = Proces pracy jest wyłączony. +workflow.enable_success = Proces pracy "%s" włączony pomyślnie. +workflow.enable = Włącz proces pracy +workflow.disable_success = Proces pracy "%s" wyłączony pomyślnie. +workflow.dispatch.run = Uruchom proces pracy +runs.no_job = Proces pracy musi posiadać chociaż jedno zadanie +runs.no_job_without_needs = Proces pracy musi zawierać chociaż jedno zadanie bez zależności. +status.running = Uruchomione +runs.workflow = Proces pracy +runners.task_list.done_at = Ukończone W +need_approval_desc = Potrzebne zatwierdzenie by móc uruchamiać procesy pracy dla pull requestów forków. +runs.pushed_by = wypchnięty przez +runs.status_no_select = Wszystkie stany +runs.actors_no_select = Wszyscy aktorzy +workflow.dispatch.success = Proces pracy został pomyślnie zażądany. +workflow.dispatch.invalid_input_type = Nieprawidłowy typ danych wejścia "%s". +workflow.dispatch.input_required = Wymagaj wartości dla danych wejścia "%s". +workflow.dispatch.warn_input_limit = Wyświetlane jest tylko pierwszych %d danych wejścia. +workflow.dispatch.trigger_found = Ten proces pracy zawiera wywołanie przy wydarzeniu workflow_dispatch. @@ -3669,9 +3948,9 @@ normal_file = Zwykły plik [search] search = Wyszukaj... type_tooltip = Typ wyszukiwania -fuzzy = Fuzzy -package_kind = Wyszukaj paczki... -fuzzy_tooltip = Uwzględnij wyniki, które również pasują do wyszukiwanego hasła +fuzzy = Przybliżone +package_kind = Wyszukaj pakiety... +fuzzy_tooltip = Uwzględnij wyniki, które są bliskie wyszukiwanemu hasłu match = Dopasuj match_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła repo_kind = Wyszukaj repozytoria... @@ -3689,7 +3968,7 @@ runner_kind = Wyszukaj runnery... keyword_search_unavailable = Wyszukiwanie według słów kluczowych jest obecnie niedostępne. Skontaktuj się z administratorem strony. milestone_kind = Wyszukaj kamienie milowe... union_tooltip = Uwzględnij wyniki pasujące do dowolnego słowa kluczowego oddzielonego spacjami -exact = Dokładnie +exact = Dokładne exact_tooltip = Uwzględniaj tylko wyniki pasujące do wyszukiwanego hasła issue_kind = Wyszukaj zgłoszenia... pull_kind = Wyszukaj pull requesty... @@ -3704,7 +3983,7 @@ filepreview.truncated = Podgląd został przycięty filepreview.line = Linia %[1]d w %[2]s [translation_meta] -test = Litwo, Ojczyzno moja! ty jesteś jak zdrowie; ile cię trzeba cenić, ten tylko się dowie, kto cię stracił. Dziś piękność twą w całej ozdobie widzę i opisuję, bo tęsknię po tobie. +test = Litwo, Ojczyzno moja! ty jesteś jak zdrowie; ile cię trzeba cenić, ten tylko się dowie, kto cię stracił. Dziś piękność twą w całej ozdobie widzę i opisuję, bo tęsknię po tobie :) [repo.permissions] code.read = Odczyt: Dostęp i klonowanie kodu repozytorium. @@ -3724,4 +4003,13 @@ pulls.write = Zapis: Zamykanie pull requestów i zarządzanie metadanymi ext_issues = Dostęp do linku kierującego do zewnętrznego dziennika zgłoszeń. Uprawnienia są zarządzane zewnętrznie. ext_wiki = Dostęp do linku kierującego do zewnętrznej wiki. Uprawnienia są zarządzane zewnętrznie. actions.write = Zapis: Ręczne wywołanie, restart, anulowanie lub zatwierdzenie oczekujących procesów CI/CD. -actions.read = Odczyt: Podgląd zintegrowanych procesów CI/CD i ich logów. \ No newline at end of file +actions.read = Odczyt: Podgląd zintegrowanych procesów CI/CD i ich logów. + +[munits.data] +eib = EiB +pib = PiB +tib = TiB +gib = GiB +b = B +kib = KiB +mib = MiB \ No newline at end of file diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 67f03660df..6ba696573a 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -2870,6 +2870,9 @@ summary_card_alt = Cartão de resumo do repositório %s release.summary_card_alt = Cartão de resumo de um release intitulado "%s" no repositório %s archive.pull.noreview = Este repositório está arquivado. Não é possível revisar pull requests. editor.commit_email = Email de commit +commits.view_single_diff = Ver modificações neste arquivo introduzidas neste commit +pulls.editable = Editável +pulls.editable_explanation = Este pull request permite edições de mantenedores. Voçê pode contribuir diretamenta para ele. [graphs] component_loading = Carregando %s... @@ -3006,8 +3009,8 @@ open_dashboard = Abrir painel settings.change_orgname_prompt = Obs.: Alterar o nome de uma organização resultará na alteração do URL dela e disponibilizará o nome antigo para uso. follow_blocked_user = Não foi possível seguir esta organização porque ela bloqueou-o(a). form.name_pattern_not_allowed = O padrão "%s" não é permitido no nome de uma organização. -settings.change_orgname_redirect_prompt.with_cooldown.one = O nome de usuário antigo ficará disponível para qualquer pessoa após um período de espera de %[1]d dia, você ainda pode recuperar o nome de usuário antigo durante este período de espera. -settings.change_orgname_redirect_prompt.with_cooldown.few = O nome de usuário antigo ficará disponível para qualquer pessoa após um período de espera de %[1]d dias, você ainda pode recuperar o nome de usuário antigo durante este período de espera. +settings.change_orgname_redirect_prompt.with_cooldown.one = O nome de organização antigo ficará disponível para qualquer pessoa após um período de proteção de %[1]d dia, você ainda pode recuperar o nome antigo durante este período de proteção. +settings.change_orgname_redirect_prompt.with_cooldown.few = O nome de organização antigo ficará disponível para qualquer pessoa após um período de espera de %[1]d dia, você ainda pode recuperar o nome antigo durante este período de espera. [admin] dashboard=Painel @@ -3954,6 +3957,7 @@ variables.deletion.description = Apagar uma variável é permanente e não pode runs.expire_log_message = Os logs foram apagados pois eram antigos demais. runs.no_workflows.help_no_write_access = Para aprender sobre as Actions do Forgejo, veja a documentação. runs.no_workflows.help_write_access = Não sabe como começar a usar as Actions do Forgejo? Veja o guia de como começar na documentação do usuário para escrever seu primeiro workflow, depois configure um runner do Forgejo para executar trabalhos. +variables.not_found = Não foi possível encontrar a variável. [projects] diff --git a/options/locale/locale_ro.ini b/options/locale/locale_ro.ini new file mode 100644 index 0000000000..305c34d013 --- /dev/null +++ b/options/locale/locale_ro.ini @@ -0,0 +1,249 @@ + + + +[common] +return_to_forgejo = Înapoi la Forgejo +explore = Explorează +page = Pagină +licenses = Licențe +copy_type_unsupported = Acest tip de fișier nu poate fi copiat +sign_in = Autentificare +sign_out = Deconectare +sign_in_with_provider = Autentificare cu %s +sign_in_or = sau +toc = Cuprins +admin_panel = Administrare site +artifacts = Artefacte +concept_user_organization = Organizație +logo = Logo +help = Ajutor +sign_up = Înregistrare +link_account = Conectare cont +register = Înregistrare +template = Șablon +language = Limbă +notifications = Notificări +create_new = Creează… +user_profile_and_more = Profil și setări… +username = Nume de utilizator +email = Adresă de email +password = Parolă +access_token = Token de acces +captcha = CAPTCHA +twofa = Autentificare prin doi factori +webauthn_insert_key = Inserează cheia de securitate +webauthn_press_button = Apasă butonul de pe cheia de securitate… +webauthn_use_twofa = Folosește un cod de verificare de pe telefon +webauthn_error = Cheia de securitate nu a putut fi citită. +webauthn_unsupported_browser = Browserul tău nu are abilități WebAuthn pe moment. +webauthn_error_unable_to_process = Serverul nu a putut procesa cererea. +webauthn_error_duplicated = Cheia de securitate nu este permisă pentru această cerere. Asigură-te că cheia nu este înregistrată deja. +webauthn_error_empty = Trebuie să setezi un nume pentru această cheie. +organization = Organizație +mirror = Oglindă +settings = Setări +your_profile = Profil +your_starred = Favorite +your_settings = Setări +new_migrate.title = Migrare nouă +new_org.title = Organizație nouă +new_migrate.link = Migrare nouă +new_org.link = Organizație nouă +sources = Surse +mirrors = Oglinzi +ok = OK +cancel = Anulare +retry = Reîncearcă +add = Adaugă +edit = Editează +view = Vezi +test = Test +enabled = Activat +disabled = Dezactivat +locked = Blocat +copy = Copiază +copy_generic = Copiază în clipboard +copy_url = Copiază URL +copy_hash = Copiază hash +copy_content = Copiază conținut +copy_success = Copiat! +preview = Previzualizează +loading = Se încarcă… +error = Eroare +go_back = Înapoi +never = Niciodată +rss_feed = Flux RSS +confirm_delete_artifact = Ești sigur că vrei să ștergi artefactul "%s"? +archived = Arhivat +concept_system_global = Global +show_log_seconds = Arată secunde +name = Nume +filter = Filtru +filter.clear = Șterge filtre +filter.is_archived = Arhivat +enable_javascript = Acest site are nevoie de JavaScript. +webauthn_error_unknown = O eroare necunoscută a apărut. Te rog reîncearcă. +re_type = Confirmă parola +webauthn_sign_in = Apasă butonul de pe cheia de securitate. Dacă cheia de securitate nu are un buton, reintrodu-o. +new_mirror = Oglindă nouă +new_project = Proiect nou +remove_label_str = Șterge elementul "%s" +save = Salvează +remove = Șterge +copy_path = Copiază cale +error404 = Pagina pe care încerci să o vizitezi fie nu există sau nu ești autorizat să o vezi. +filter.not_archived = Nearhivat +activities = Activități +confirm_delete_selected = Ștergi toate elementele selectate? +webauthn_error_insecure = WebAuthn funcționează doar prin conexiuni securizate. Pentru a testa folosind HTTP, poți folosi "localhost" sau "127.0.0.1" ca origine +webauthn_error_timeout = Limita de timp a fost depășită înainte ca cheia ta să poată fi citită. Reîncarcă pagina și reîncearcă. +copy_error = Copiere eșuată +concept_user_individual = Individual +unknown = Necunoscut +home = Acasă +dashboard = Panou de Control +version = Versiune +powered_by = Susținut de %s +active_stopwatch = Monitorizor de timp activ +more_items = Mai multe elemente + +[editor] +table_modal.header = Adaugă tabel +table_modal.placeholder.content = Conținut +table_modal.label.rows = Rânduri +table_modal.label.columns = Coloane +buttons.list.ordered.tooltip = Adaugă o listă numerotată +table_modal.placeholder.header = Antet +buttons.italic.tooltip = Adaugă text cursiv +buttons.mention.tooltip = Menționează un utilizator sau o echipă +buttons.new_table.tooltip = Adaugă tabel +buttons.bold.tooltip = Adaugă text aldin +buttons.code.tooltip = Adaugă cod +buttons.quote.tooltip = Citează text +buttons.link.tooltip = Adaugă un link + +[filter] +string.asc = A - Z +string.desc = Z - A + +[error] +server_internal = Eroare internă a serverului +network_error = Eroare de rețea + +[startpage] +install = Ușor de instalat +license = Sursă deschisă + +[install] +require_db_desc = Forgejo are nevoie de MySQL, PostgreSQL, SQLite3 sau TiDB (protocol MySQL). +db_title = Setări bază de date +db_type = Tipul bazei de date +user = Nume de utilizator +ssl_mode = SSL +path = Cale +sqlite_helper = Calea fișierului pentru baza de date SQLite3.
Introdu o cale absolută dacă rulezi Forgejo ca serviciu. +reinstall_error = Încerci să instalezi într-o bază de date Forgejo care există deja +err_empty_db_path = Calea către baza de date SQLite3 nu poate fi goală. +no_admin_and_disable_registration = Nu poți dezactiva propria înregistrare a utilizatorilor fără un cont de administrator. +err_empty_admin_password = Parola administratorului nu poate fi goală. +err_empty_admin_email = Emailul administratorului nu poate fi gol. +err_admin_name_is_invalid = Numele de utilizator al administratorului este invalid +general_title = Setări generale +ssh_port = Port pentru serverul SSH +ssh_port_helper = Numărul de port care va fi folosit de serverul SSH. Lasă gol pentru a dezactiva serverul SSH. +http_port = Port de ascultare HTTP +http_port_helper = Număr de port care va fi folosit de serverul web Forgejo. +app_url = URL de bază +app_url_helper = Adresa de bază pentru URL-uri de clonare HTTP(S) și notificări prin email. +log_root_path = Cale pentru loguri +log_root_path_helper = Fișiere cu loguri vor fi scrise în acest dosar. +optional_title = Setări opționale +email_title = Setări pentru email +smtp_addr = Host SMTP +smtp_port = Port SMTP +mailer_user = Nume de utilizator SMTP +mailer_password = Parolă SMTP +mail_notify = Pornește notificări prin email +server_service_title = Setări pentru server și servicii terțe +offline_mode.description = Dezactivează rețele de livrare a conținutului (CDN) terțe și oferă toate resursele în mod local. +disable_gravatar = Dezactivează Gravatar +openid_signin = Pornește conectare folosind OpenID +openid_signin.description = Permite utilizatorilor conectarea prin OpenID. +openid_signup = Pornește înregistrarea proprie folosind OpenID +enable_captcha = Pornește CAPTCHA pentru înregistrare +enable_captcha.description = Solicită utilizatorilor să treacă de CAPTCHA pentru a crea conturi. +default_keep_email_private = Ascunde adresa de email în mod implicit +default_allow_create_organization = Permite crearea de organizații în mod implicit +default_allow_create_organization.description = Permite utilizatorilor noi să creeze organizații în mod implicit. Când această opțiune este dezactivată, un administrator va trebui să ofere permisiune pentru crearea de organizații noilor utilizatori. +admin_title = Setări pentru contul de administrator +admin_name = Numele de utilizator al administratorului +admin_password = Parola administratorului +install_btn_confirm = Instalează Forgejo +internal_token_failed = Eroare la generarea tokenului intern: %v +secret_key_failed = Eroare la generarea cheii secrete: %v +save_config_failed = Eroare la salvarea configurației: %v +invalid_admin_setting = Setările pentru contul de administrator sunt invalide: %v +allow_dots_in_usernames = Permite utilizatorilor să folosească puncte în numele de utilizator. Conturile existente nu vor fi afectate. +password_algorithm = Algoritm de hash pentru parole +invalid_password_algorithm = Algoritm de hash pentru parole invalid +title = Configurare inițială +smtp_from = Trimite email ca +openid_signup.description = Permite utilizatorilor să creeze conturi folosind OpenID dacă înregistrarea proprie este pornită. +test_git_failed = Eroare la testarea comenzii „git”: %v +sqlite3_not_available = Această versiune de Forgejo nu este compatibilă cu SQLite3. Te rog descarcă versiunea binară oficială de la %s (nu versiunea „gobuild”). +password = Parolă +reinstall_confirm_message = Reinstalarea cu o bază de date Forgejo care există deja poate cauza probleme multiple. În cele mai multe cazuri, ar trebui să îți folosești „app.ini” existent pentru a rula Forgejo. Dacă știi ce faci, confirmă următoarele: +reinstall_confirm_check_3 = Confirmi că ești absolut sigur că acest Forgejo rulează cu locația app.ini corectă și că ești sigur că trebuie să reinstalezi. Confirmi că ai luat la cunoștință riscurile de mai sus. +admin_email = Adresa de email +docker_helper = Dacă rulezi Forgejo în Docker, mai întâi citește documentația înainte de a schimba setări. +lfs_path = Cale rădăcină pentru Git LFS +domain_helper = Domeniul sau adresa host pentru acest server. +install = Instalare +db_name = Numele bazei de date +allow_only_external_registration.description = Utilizatorii își vor putea crea conturi noi doar folosind servicii externe configurate. +admin_setting.description = Crearea unui cont de administrator este opțională. Primul utilizator înregistrat va deveni administrator în mod automat. +confirm_password = Confirmă parola +enable_update_checker = Pornește verificarea pentru actualizări +db_schema_helper = Lasă gol pentru baza de date implicită („public”). +smtp_from_invalid = Adresa "Trimite email ca" este invalidă +smtp_from_helper = Adresa de email pe care Forgejo o va utiliza. Introdu o adresă de email simplă sau folosește formatul „"Nume" ”. +disable_registration = Dezactivează înregistrarea proprie +allow_only_external_registration = Permite înregistrare doar prin servicii externe +default_keep_email_private.description = Pornește ascunderea adresei de email pentru utilizatori noi în mod implicit astfel încât această informație să nu fie scursă imediat după înregistrare. +invalid_app_data_path = Calea pentru datele aplicației este invalidă: %v +no_reply_address_helper = Domeniu pentru utilizatorii cu adresă de email ascunsă. De exemplu, utilizatorul „joe” va fi conectat la Git ca „joe@noreply.example.org” dacă domeniul pentru adrese de email ascunse este „noreply.example.org”. +reinstall_confirm_check_1 = Datele criptate folosind SECRET_KEY din app.ini ar putea fi pierdute: s-ar putea ca utilizatorii să nu se mai poată conecta folosing 2FA/OTP și oglinzile ar putea să nu mai funcționeze corect. Bifând această opțiune confirmă că fișierul app.ini curent conține valoarea corectă pentru SECRET_KEY. +config_location_hint = Aceste opțiuni de configurare vor fi salvate în: +err_admin_name_is_reserved = Numele de utilizator al administratorului este invalid, numele de utilizator este rezervat +invalid_db_table = Tabelul „%s” al bazei de date este invalid: %v +err_admin_name_pattern_not_allowed = Numele de utilizator al administratorului este invalid, numele de utilizator se potrivește cu un model rezervat +domain = Domeniul serverului +require_sign_in_view.description = Limitează accesul la conținut către utilizatori conectați. Oaspeții vor putea să viziteze doar paginile de autentificare. +invalid_db_setting = Setările pentru bază de date sunt invalide: %v +no_reply_address = Domeniu pentru adrese de email ascunse + +[search] +user_kind = Caută utilizatori... +team_kind = Caută echipe... +code_kind = Caută cod... +project_kind = Caută proiecte... +package_kind = Caută pachete... +org_kind = Caută organizații... +code_search_unavailable = Căutarea de cod nu este disponibilă momentan. Te rog contactează administratorul site-ului. +keyword_search_unavailable = Căutarea după cuvânt cheie nu este disponibilă momentan. Te rog contactează administratorul site-ului. +no_results = Nu a fost găsit niciun rezultat corespunzător. + +[aria] +navbar = Bară de navigare +footer = Subsol +footer.software = Despre acest software +footer.links = Link-uri + +[heatmap] +contributions_zero = Nicio contribuție +contributions_format = {contributions} pe {day} {month} {year} +contributions_few = contribuții +less = Mai puțin +number_of_contributions_in_the_last_12_months = %s contribuții în ultimele 12 luni +more = Mai mult +contributions_one = contribuție \ No newline at end of file diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index 5bd80a6593..085b8ebeb3 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -2873,6 +2873,7 @@ issues.context.menu = Меню комментария release.summary_card_alt = Карточка со сводкой о выпуске «%s» в репозитории %s archive.pull.noreview = Этот репозиторий архивирован. Рецензирование запросов слияний невозможно. editor.commit_email = Эл. почта автора +commits.view_single_diff = Посмотреть изменения в этом файле из этого коммита [graphs] component_loading_failed = Не удалось загрузить %s @@ -3967,6 +3968,7 @@ workflow.dispatch.warn_input_limit = Отображаются только пе runs.expire_log_message = Журнал был удалён из-за старости. runs.no_workflows.help_write_access = Не знаете, как начать использовать Действия Forgejo? Ознакомьтесь с руководством по быстрому старту в документации и создайте первый рабочий поток, затем настройте исполнитель Forgejo, который будет выполнять задачи. runs.no_workflows.help_no_write_access = Ознакомьтесь с документацией, чтобы узнать про Действия Forgejo. +variables.not_found = Не удалось найти переменную. [projects] type-1.display_name=Индивидуальный проект diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini index e52e5bcaf9..d55b238b1c 100644 --- a/options/locale/locale_si-LK.ini +++ b/options/locale/locale_si-LK.ini @@ -101,6 +101,11 @@ concept_user_organization=සංවිධානය name=නම +filter = පෙරහන +filter.is_archived = සංරක්ෂිත +filter.public = ප්‍රසිද්ධ +filter.private = පෞද්ගලික + [aria] [heatmap] @@ -1913,6 +1918,8 @@ error.csv.too_large=එය ඉතා විශාල නිසා මෙම ග error.csv.unexpected=%d පේළියේ සහ %dතීරුවේ අනපේක්ෂිත චරිතයක් අඩංගු බැවින් මෙම ගොනුව විදැහුම්කරණය කළ නොහැක. error.csv.invalid_field_count=මෙම ගොනුව රේඛාවේ වැරදි ක්ෂේත්ර සංඛ්යාවක් ඇති බැවින් එය විදැහුම්කරණය කළ නොහැක %d. +milestones.filter_sort.name = නම + [graphs] [org] @@ -2462,6 +2469,9 @@ notices.op=ඔප්. notices.delete_success=පද්ධති දැන්වීම් මකා දමා ඇත. +config_summary = සාරාංශය +config_settings = සැකසුම් + [action] create_repo=නිර්මිත ගබඩාව %s rename_repo=%[1]s සිට %[3]sදක්වා නම් කරන ලද ගබඩාව @@ -2554,3 +2564,5 @@ runs.commit=කැප [git.filemode] symbolic_link=සංකේතාත්මක සබැඳිය + +[search] diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini index 3e5b4a63f6..a90ddd513b 100644 --- a/options/locale/locale_sk-SK.ini +++ b/options/locale/locale_sk-SK.ini @@ -142,6 +142,9 @@ name=Meno value=Hodnota issues = Problémy +filter.is_archived = Archivované +filter.private = Súkromný + [aria] navbar=Navigačná lišta footer=Päta @@ -1370,4 +1373,6 @@ runners.labels=Štítky [projects] [git.filemode] -symbolic_link=Symbolický odkaz \ No newline at end of file +symbolic_link=Symbolický odkaz + +[search] \ No newline at end of file diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index c23533ee7b..29acc94832 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -342,6 +342,8 @@ app_slogan_helper = Oluşum sloganınızı giriniz. Devre dışı bırakmak içi enable_update_checker_helper_forgejo = release.forgejo.org adresindeki TXT DNS kayıdı kullanılarak yeni Forgejo sürümleri düzenli olarak kontrol edilecektir. allow_dots_in_usernames = Kullanıcı isimlerinde noktaya izin ver. Var olan kullanıcıları etkilemez. +smtp_from_invalid = `"E-posta Olarak Gönder" adresi geçersiz` + [home] uname_holder=Kullanıcı adı veya e-posta adresi password_holder=Parola @@ -663,6 +665,9 @@ admin_cannot_delete_self = Yöneticiyken kullanıcınızı silemezsiniz. Lütfen username_error_no_dots = ` sadece alfanumerik karakterler ("0-9","a-z","A-Z"), tire ("-") ve alt tire ("-") içerebilir. Alfanumerik olmayan karakterlerle başlayamaz ve bitemez, ayrıca ardışık alfanumerik olmayan karakterler de kullanılamaz.` +unset_password = Oturum açma kullanıcısı parola belirlemedi. +unsupported_login_type = Oturum açma türü hesap silmeyi desteklemiyor. + [user] change_avatar=Profil resmini değiştir… joined_on=%s tarihinde katıldı @@ -2692,7 +2697,37 @@ activity.navbar.contributors = Katılımcılar contributors.contribution_type.deletions = Çıkarmalar settings.new_owner_blocked_doer = Yeni sahip sizi engelledi. +open_with_editor = %s ile aç +object_format = Nesne Biçimi +mirror_sync = eşitlendi +stars = Yıldızlar +desc.sha256 = SHA256 +vendored = Sağlanmış +generated = Üretilmiş +editor.push_out_of_date = İtme eskimiş. +commits.search_branch = Bu Dal +issues.edit.already_changed = Konuya yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın +pulls.edit.already_changed = Değişiklik isteğine yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın +pulls.nothing_to_compare_have_tag = Seçili dal/etiket aynı. +pulls.fast_forward_only_merge_pull_request = Sadece ileri sarma +comments.edit.already_changed = Yoruma yapılan değişiklikler kaydedilemiyor. İçerik başka kullanıcı tarafından değiştirilmiş gözüküyor. Diğerlerinin değişikliklerinin üzerine yazmamak için lütfen sayfayı yenileyin ve tekrar düzenlemeye çalışın +milestones.filter_sort.name = Ad +activity.navbar.pulse = Eğilim +activity.navbar.code_frequency = Kod Frekansı +activity.navbar.recent_commits = Son İşlemeler +settings.mirror_settings.pushed_repository = İtilmiş depo +settings.ignore_stale_approvals = Eskimiş onayları yoksay +settings.ignore_stale_approvals_desc = Daha eski işlemelere (eski incelemelere) yapılmış olan onayları, Dİ'nin kaç onayı olduğunu belirlerken sayma. Eskimiş incelemeler atıldıysa bu ilgisizdir. +error.broken_git_hook = Bu deponun Git İstemcileri bozuk gibi gözüküyor. Onarmak için lütfen belgelere bakın, daha sonra durumu yenilemek için bazı işlemeler itin. + [graphs] +component_loading = %s yükleniyor... +component_loading_failed = %s yüklenemedi +component_loading_info = Bu biraz sürebilir… +component_failed_to_load = Beklenmedik bir hata oluştu. +code_frequency.what = kod frekansı +contributors.what = katkılar +recent_commits.what = son işlemeler [org] org_name_holder=Organizasyon Adı @@ -3346,6 +3381,23 @@ notices.op=İşlem notices.delete_success=Sistem bildirimleri silindi. +self_check = Öz Denetim +config_summary = Özet +config_settings = Ayarlar +dashboard.sync_repo_tags = Etiketleri git verisinden veritabanına eşitle +emails.delete = E-postayı Sil +emails.delete_desc = Bu e-posta adresini silmek istediğinizden emin misiniz? +emails.deletion_success = E-posta adresi silindi. +emails.delete_primary_email_error = Ana e-posta adresini silemezsiniz. +config.cache_test = Önbelleği Sına +config.cache_test_failed = Önbelleğin incelenmesi başarısız oldu: %v. +config.cache_test_slow = Önbellek sınaması başarılı, ancak yanıt yavaş: %s. +config.cache_test_succeeded = Önbellek sınaması başarılı, %s sürede bir yanıt alındı. +config.open_with_editor_app_help = Klon menüsü için "Birlikte aç" düzenleyicileri. Boş bırakılırsa, varsayılan kullanılacaktır. Varsayılanı görmek için genişletin. +self_check.no_problem_found = Henüz bir sorun bulunmadı. +self_check.database_collation_mismatch = Veritabanının şu harmanlamayı kullanmasını bekle: %s +self_check.database_inconsistent_collation_columns = Veritabanı %s harmanlamasını kullanıyor, ancak bu sütunlar uyumsuz harmanlamalar kullanıyor. Bu beklenmedik sorunlar oluşturabilir. + [action] create_repo=depo %s oluşturuldu rename_repo=%[1]s olan depo adını %[3]s buna çevirdi @@ -3586,6 +3638,9 @@ owner.settings.chef.title=Chef Kütüğü owner.settings.chef.keypair=Anahtar çifti üret owner.settings.chef.keypair.description=Chef kütüğünde kimlik doğrulaması için bir anahtar çifti gereklidir. Eğer daha önce bir anahtar çifti ürettiyseniz, yeni bir anahtar çifti üretmek eski anahtar çiftini ıskartaya çıkartacaktır. +npm.dependencies.bundle = Paketlenmiş Bağımlılıklar +rpm.repository.multiple_groups = Bu paket birçok grupta mevcut. + [secrets] secrets=Gizlilikler description=Gizlilikler belirli işlemlere aktarılacaktır, bunun dışında okunamaz. @@ -3693,6 +3748,10 @@ runs.no_workflows.documentation = Gitea İşlem'i hakkında daha fazla bilgi iç variables.id_not_exist = %d kimlikli değişken mevcut değil. runs.no_workflows.quick_start = Gitea İşlem'i nasıl başlatacağınızı bilmiyor musunuz? Hızlı başlangıç rehberine bakabilirsiniz. +runs.no_job_without_needs = İş akışı en azından bağımlılığı olmayan bir görev içermelidir. +runs.no_job = İş akışı en azından bir görev içermelidir +runs.expire_log_message = Günlükler, çok eski oldukları için temizlendiler. + [projects] type-1.display_name=Kişisel Proje type-2.display_name=Depo Projesi @@ -3732,3 +3791,5 @@ keyword_search_unavailable = Anahtar kelime ile arama şu anda kullanıma açık fuzzy_tooltip = Arama terimine yakın olan eşleşmeleri dahil et union_tooltip = Boşlukla ayrılmış anahtar kelime eşleşmelerini dahil et exact_tooltip = Sadece arama terimiyle tam uyuşan sonuçları dahit et. +fuzzy = Bulanık +exact = Tam diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 41cdaac56e..19133587c2 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -2504,6 +2504,8 @@ activity.navbar.code_frequency = Частота кодування activity.navbar.pulse = Пульс open_with_editor = Відкрити в %s commits.view_single_diff = Переглянути зміни до цього файлу, внесені у цьому коміті +pulls.editable = Редаговане +pulls.editable_explanation = Цей запит на злиття дозволяє редагування від розробників. Ви можете зробити свій внесок безпосередньо до нього. [graphs] contributors.what = внески @@ -3373,6 +3375,7 @@ status.running = Працює status.success = Успіх status.skipped = Пропущено need_approval_desc = Потрібне схвалення для запуску робочих потоків для запиту на злиття. +variables.not_found = Не вдалося знайти змінну. diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index a53bb4bd1c..c3db2eab4f 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -369,7 +369,7 @@ show_both_archived_unarchived=显示已存档和未存档的 show_only_archived=只显示已存档的 show_only_unarchived=只显示未存档的 -show_private=私有库 +show_private=私有 show_both_private_public=同时显示公开的和私有的 show_only_private=只显示私有的 show_only_public=只显示公开的 @@ -1028,7 +1028,7 @@ delete_account_desc=确实要永久删除此用户帐户吗? email_notifications.enable=启用邮件通知 email_notifications.onmention=只在被提到时邮件通知 email_notifications.disable=停用邮件通知 -email_notifications.submit=邮件通知设置 +email_notifications.submit=设置邮件偏好 email_notifications.andyourown=和您自己的通知 visibility=用户可见性 @@ -1168,7 +1168,7 @@ transfer.reject_desc=`取消转移到 "%s"` transfer.no_permission_to_accept=您没有权限接受此转让。 transfer.no_permission_to_reject=您没有权限拒绝此转让。 -desc.private=私有库 +desc.private=私有 desc.public=公开 desc.template=模板 desc.internal=内部 @@ -2350,7 +2350,7 @@ settings.event_issue_label_desc=工单标签被添加或移除。 settings.event_issue_milestone=里程碑 settings.event_issue_milestone_desc=里程碑被添加、移除或修改。 settings.event_issue_comment=评论 -settings.event_issue_comment_desc=工单评论被创建、编辑或删除 +settings.event_issue_comment_desc=工单评论被创建、编辑或删除。 settings.event_header_pull_request=合并请求事件 settings.event_pull_request=修改 settings.event_pull_request_desc=合并请求被打开、被关闭、被重新打开或被编辑。 @@ -2367,7 +2367,7 @@ settings.event_pull_request_review_desc=合并请求被批准、拒绝或提出 settings.event_pull_request_sync=被同步 settings.event_pull_request_sync_desc=分支自动更新为目标分支。 settings.event_pull_request_review_request=评审请求 -settings.event_pull_request_review_request_desc=合并请求评审已请求或已取消 +settings.event_pull_request_review_request_desc=合并请求评审被请求或被取消。 settings.event_pull_request_approvals=合并请求批准 settings.event_pull_request_merge=合并请求合并 settings.event_package=软件包 @@ -2465,7 +2465,7 @@ settings.dismiss_stale_approvals_desc=当新的提交更改合并请求内容被 settings.ignore_stale_approvals = 忽略过时的批准 settings.ignore_stale_approvals_desc = 不将旧的提交(陈旧的评审)计入已批准的合并请求数量。注:如过期的评审已被取消,则无需设置。 settings.require_signed_commits=需要签名提交 -settings.require_signed_commits_desc=拒绝推送未签名或无法验证的提交到分支 +settings.require_signed_commits_desc=拒绝推送未签名或无法验证的提交到此分支。 settings.protect_branch_name_pattern=受保护的分支名称正则 settings.protect_branch_name_pattern_desc=受保护的分支名称正则。语法请参阅文档 。如:main, release/** settings.protect_patterns=规则 @@ -2490,7 +2490,7 @@ settings.default_branch_desc=请选择一个默认的分支用于合并请求和 settings.merge_style_desc=合并方式 settings.default_merge_style_desc=默认合并方式 settings.choose_branch=选择一个分支… -settings.no_protected_branch=没有受保护的分支 +settings.no_protected_branch=没有分支受到保护。 settings.edit_protected_branch=编辑 settings.protected_branch_required_rule_name=必须填写规则名称 settings.protected_branch_duplicate_rule_name=这些分支已设有规则 @@ -2503,7 +2503,7 @@ settings.tags.protection.allowed.users=允许的账号 settings.tags.protection.allowed.teams=允许的团队 settings.tags.protection.allowed.noone=无 settings.tags.protection.create=添加规则 -settings.tags.protection.none=没有受保护的Git标签 +settings.tags.protection.none=没有Git标签受到保护。 settings.tags.protection.pattern.description=你可以使用单个名称或 glob 模式匹配或正则表达式来匹配多个标签。了解详情请访问 受保护Git标签指南。 settings.bot_token=机器人令牌 settings.chat_id=聊天 ID @@ -2651,11 +2651,11 @@ release.deletion=删除发布 release.deletion_desc=删除版本发布只会从 Forgejo 中移除。这不会影响 Git 的标签以及您仓库的内容和历史。是否继续? release.deletion_success=Release已被删除。 release.deletion_tag_desc=将从仓库中删除此 Git标签。仓库内容和历史记录保持不变。继续吗? -release.deletion_tag_success=该 Git标签 已经被删除 +release.deletion_tag_success=该 Git 标签已被删除。 release.tag_name_already_exist=使用此标签名称的发布版本已经存在。 release.tag_name_invalid=标签名称无效。 release.tag_name_protected=Git标签名称已受保护。 -release.tag_already_exist=此 Git标签 名称已存在 +release.tag_already_exist=此 Git 标签已存在。 release.downloads=下载附件 release.download_count=下载:%s release.add_tag_msg=使用发布的标题和内容作为标签消息。 @@ -2704,7 +2704,7 @@ tag.create_tag_operation=创建标签 tag.confirm_create_tag=创建标签 tag.create_tag_from=基于"%s"创建新标签 -tag.create_success=标签"%s"已存在 +tag.create_success=已创建标签“%s”。 topic.manage_topics=管理主题 topic.done=保存 @@ -2786,7 +2786,7 @@ release.download_count_one = %s 下载 release.download_count_few = %s 下载 release.system_generated = 此附件是自动生成的。 pulls.ready_for_review = 准备好接受评审了吗? -settings.web_hook_name_sourcehut_builds = SourceHut 构建 +settings.web_hook_name_sourcehut_builds = SourceHut Builds settings.graphql_url = GraphQL URL 链接 settings.sourcehut_builds.access_token_helper = 已授予 JOBS:RW 权限的访问令牌。可在 meta.sr.ht 上生成标准的 builds.sr.ht 令牌带有密匙访问权限的 builds.sr.ht 令牌 。 settings.matrix.access_token_helper = 推荐为此设立专门的 Matrix 账户。访问令牌可从 Element Web 客户端(在隐私/无痕模式选项卡中打开)> 用户菜单(左上角)> 所有设置 > 帮助及关于 > 高级 > 访问令牌(在主服务器 URL 下方)检索。获取完成后,请直接关闭隐私/无痕选项卡(注销会使令牌失效)。 @@ -2872,6 +2872,9 @@ release.summary_card_alt = 仓库 %[2]s 中标题为 %[1]s 的版本发布的摘 summary_card_alt = 仓库 %s 的摘要卡片 editor.commit_email = 提交电子邮件 archive.pull.noreview = 此仓库已存档,您无法评审合并请求。 +commits.view_single_diff = 查看该提交对本文件的更改 +pulls.editable = 可编辑 +pulls.editable_explanation = 此合并请求允许维护者进行编辑。你可以直接向其贡献。 [graphs] component_loading=正在加载 %s… @@ -2907,7 +2910,7 @@ team_unit_disabled=(已禁用) form.name_reserved=组织名称 '%s' 是被保留的。 form.name_pattern_not_allowed=仓库名称中不允许使用 "%s"。 -form.create_org_not_allowed=此账号禁止创建组织 +form.create_org_not_allowed=您不能创建组织。 settings=组织设置 settings.options=组织 @@ -3007,8 +3010,8 @@ teams.invite.by=邀请人 %s teams.invite.description=请点击下面的按钮加入团队。 follow_blocked_user = 你无法关注此组织,因为此组织已屏蔽你。 open_dashboard = 打开仪表盘 -settings.change_orgname_redirect_prompt.with_cooldown.one = 旧的用户名将在%[1]d天的保护期后对所有人可用,您仍可以在此期间重新认领旧的用户名。 -settings.change_orgname_redirect_prompt.with_cooldown.few = 旧的用户名将在%[1]d天的保护期后对所有人可用,您仍可以在此期间重新认领旧的用户名。 +settings.change_orgname_redirect_prompt.with_cooldown.one = 旧的组织名将在%[1]d天的保护期后对所有人可用,您仍可以在此期间重新认领旧的名字。 +settings.change_orgname_redirect_prompt.with_cooldown.few = 旧的组织名将在%[1]d天的保护期后对所有人可用,您仍可以在此期间重新认领旧名字。 [admin] dashboard=管理面板 @@ -3198,7 +3201,7 @@ repos.unadopted=未收录仓库 repos.unadopted.no_more=找不到更多未被收录的仓库。 repos.owner=所有者 repos.name=名称 -repos.private=私有库 +repos.private=私有 repos.watches=关注数 repos.stars=点赞数 repos.forks=派生数 @@ -3679,7 +3682,7 @@ keywords=关键词 details=详情 details.author=作者 details.project_site=项目站点 -details.repository_site=仓库站点 +details.repository_site=仓库网站 details.documentation_site=文档站点 details.license=许可协议 assets=文件 @@ -3799,7 +3802,7 @@ owner.settings.cleanuprules.keep.count=保留最新的 owner.settings.cleanuprules.keep.count.1=每个软件包1个版本 owner.settings.cleanuprules.keep.count.n=每个软件包 %d 个版本 owner.settings.cleanuprules.keep.pattern=保持版本匹配 -owner.settings.cleanuprules.keep.pattern.container=容器包的 最新版本 总是会保留。 +owner.settings.cleanuprules.keep.pattern.container=容器的latest版本总是会被保留。 owner.settings.cleanuprules.remove.title=与这些规则相匹配的版本将被删除,除非其中存在某个保留它们的规则。 owner.settings.cleanuprules.remove.days=移除旧于天数的版本 owner.settings.cleanuprules.remove.pattern=删除匹配的版本 @@ -3955,6 +3958,7 @@ workflow.dispatch.input_required = 需要输入“%s”的值。 runs.expire_log_message = 已清除日志,因为它们太旧了。 runs.no_workflows.help_write_access = 不知道如何上手 Forgejo Actions?查看用户文档的快速上手部分来编写你的第一个工作流,然后配置一个Forgejo运行器来运行你的任务。 runs.no_workflows.help_no_write_access = 欲了解关于Forgejo Actions的更多信息,请参见文档。 +variables.not_found = 找不到变量。 [projects] type-1.display_name=个人项目 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index e5080e65bb..e2cb0d8b2c 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -119,6 +119,22 @@ concept_user_individual = 個人 new_project = 新增專案 new_project_column = 新增欄位 filter.public = 公開 +remove_all = 移除全部 +admin_panel = 網站管理 +add_all = 新增全部 +remove_label_str = 移除項目「%s」 +test = 測試 +new_repo.title = 新儲存庫 +new_migrate.title = 新遷移 +new_org.title = 新組織 +new_repo.link = 新儲存庫 +new_migrate.link = 新遷移 +new_org.link = 新組織 +copy_generic = 複製到剪貼簿 +copy_url = 複製網址 +copy_hash = 複製雜湊值 + +filter.private = 私有庫 [aria] footer = 頁尾 @@ -777,6 +793,8 @@ settings.branches.update_default_branch = 更新預設分支 +milestones.filter_sort.name = 組織名稱 + [graphs] [org] @@ -1062,6 +1080,8 @@ users = 使用者帳戶 defaulthooks = 預設 Webhook +config_settings = 組織設定 + [action] create_repo=建立了儲存庫 %s rename_repo=重新命名儲存庫 %[1]s%[3]s @@ -1132,4 +1152,6 @@ runners.labels = 標籤 [projects] -[git.filemode] \ No newline at end of file +[git.filemode] + +[search] \ No newline at end of file diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index 754188d7c5..923769bb53 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -217,7 +217,7 @@ missing_csrf=錯誤的請求:未提供 CSRF 符記 invalid_csrf=錯誤的請求:無效的 CSRF 符記 not_found=找不到目標。 network_error=網路錯誤 -report_message = 如果您相信這是一個 Forgejo 的錯誤,請在 Codeberg 上搜尋相關問題,或在必要時提出一個問題。 +report_message = 如果您相信這是一個 Forgejo 的錯誤,請在 Codeberg 上搜尋相關問題,或在必要時提出一個新問題。 server_internal = 伺服器內部錯誤 [startpage] @@ -681,6 +681,7 @@ admin_cannot_delete_self = 當您是管理員時,您不能刪除自己。請 username_error_no_dots = ` 只能包含英數字符("0-9","a-z","A-Z"),破折號("-")和底線("_")。只能以英數字元開頭或結尾,連續的非英數字元也不被允許。` required_prefix = 輸入文字必須以「%s」開頭 username_claiming_cooldown =使用者名稱無法被認領,因為其冷卻期尚未結束。可以在 %[1]s 後被認領。 +email_domain_is_not_allowed = 使用者電子郵件地址 %s 的網域與 EMAIL_DOMAIN_ALLOWLIST 或 EMAIL_DOMAIN_BLOCKLIST 衝突。確保你已正確設定電子郵件地址。 [user] @@ -1058,6 +1059,8 @@ language.description = 這個語言會被儲存至您的帳號,並被用作您 user_block_yourself = 你不能封鎖自己。 pronouns_custom_label = 自訂代名詞 change_username_redirect_prompt.with_cooldown.one = 舊的使用者名稱將在 %[1]d 天的冷卻期後對所有人開放,你仍然可以在冷卻期內重新獲得舊的使用者名稱。 +change_username_redirect_prompt.with_cooldown.few = 舊的使用者名稱將在 %[1]d 天的冷卻期後對所有人開放,你仍然可以在冷卻期內重新獲得舊的使用者名稱。 +keep_activity_private.description = 你的公開活動只有你和站點管理員可見。 [repo] owner=所有者 @@ -2269,7 +2272,7 @@ 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=分支 @@ -2279,7 +2282,7 @@ 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.branch_protection=分支「%s」的保護規則 settings.protect_this_branch=啟用分支保護 settings.protect_this_branch_desc=防止刪除分支,並限制 Git 推送與合併到分支。 settings.protect_disable_push=停用推送 @@ -2365,7 +2368,7 @@ settings.lfs_findcommits=尋找提交 settings.lfs_lfs_file_no_commits=找不到和此 LFS 檔案關聯的提交 settings.lfs_noattribute=此路徑在預設分支中沒有可鎖定的屬性 settings.lfs_delete=刪除 OID 為 %s 的 LFS 檔案 -settings.lfs_delete_warning=刪除 LFS 檔案可能會造成 Checkout 時發生「物件不存在」的錯誤,您確定嗎? +settings.lfs_delete_warning=刪除 LFS 檔案可能會導致簽出時發生「物件不存在」的錯誤。你確定嗎? settings.lfs_findpointerfiles=尋找指標檔案 settings.lfs_locks=鎖定 settings.lfs_invalid_locking_path=無效的路徑: %s @@ -2377,7 +2380,7 @@ settings.lfs_locks_no_locks=沒有鎖定 settings.lfs_lock_file_no_exist=已鎖定的檔案不存在於預設分支 settings.lfs_force_unlock=強制解鎖 settings.lfs_pointers.found=找到 %d 個 blob 指標 - %d 個已關聯, %d 個未關聯 (%d 個從存放區遺失) -settings.lfs_pointers.sha=Blob 哈希值 +settings.lfs_pointers.sha=Blob 雜湊值 settings.lfs_pointers.oid=OID settings.lfs_pointers.inRepo=在儲存庫中 settings.lfs_pointers.exists=存在於存放區 @@ -2424,7 +2427,7 @@ diff.load=載入差異 diff.generated=自動產生的 diff.vendored=vendored diff.comment.placeholder=留言 -diff.comment.markdown_info=支援 markdown 格式。 +diff.comment.markdown_info=支援 Markdown 格式。 diff.comment.add_single_comment=加入單獨的留言 diff.comment.add_review_comment=新增留言 diff.comment.start_review=開始審核 @@ -2439,7 +2442,7 @@ diff.review.reject=請求變更 diff.review.self_approve=合併請求的作者不能核可自己的合併請求 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 字元 @@ -2763,12 +2766,101 @@ release.title = 發行標題 settings.protect_patterns = 式樣 mirror_use_ssh.helper = 當你選擇此選項時,Forgejo 將透過 Git SSH 鏡像儲存庫並為你建立金鑰對。你必須確保已產生的公鑰已有授權才能推送至目標儲存庫。選擇此選項時,你不能使用基於密碼的授權。 settings.event_pull_request_review_request = 審核請求 +settings.protect_new_rule = 建立新的分支保護規則 +settings.remove_protected_branch_success = 分支保護規則「%s」已被移除。 +release.hide_archive_links_helper = 隱藏此發行自動產生的原始碼封存。例如,如果你正在自行上載。 +settings.enforce_on_admins_desc = 儲存庫管理員不能繞過此規則。 +release.message = 描述此發行 +release.deletion_desc = 刪除發行只會將其從 Forgejo 中移除。它不會影響 Git 標籤、儲存庫的內容或其歷史記錄。繼續? +settings.unarchive.error = 嘗試取消封存儲存庫時發生錯誤。請參閱日誌以了解更多詳細資訊。 +release.invalid_external_url = 無效的外部網址:%s +release.add_external_asset = 新增外部資產 +release.asset_name = 資產名稱 +release.type_external_asset = 外部資產 +branch.tag_collision = 無法建立分支「%s」,因為儲存庫中已存在同名標籤。 +settings.protect_status_check_patterns = 狀態檢查式樣 +branch.delete_desc = 刪除分支是永久性的。雖然被刪除的分支在實際被移除之前可能會繼續存在一小段時間,但是大多數情況下它是無法撤銷的。繼續? +release.system_generated = 此附件是自動產生的。 +topic.format_prompt = 主題必須以字母或數字開頭,可以包含半形破折號(-)和點(.),最長 35 個字元。字母必須是小寫。 +settings.remove_protected_branch_failed = 移除分支保護規則「%s」失敗。 +branch.warning_rename_default_branch = 你正在重新命名預設分支。 +settings.rename_branch_failed_protected = 無法重新命名分支 %s,因為它是受保護的分支。 +settings.unarchive.success = 此儲存庫已成功取消封存。 +settings.unarchive.text = 取消封存儲存庫將恢復其接收提交和推送,以及新問題和合併請求的能力。 +release.hide_archive_links = 隱藏自動產生的封存 +settings.protect_no_valid_status_check_patterns = 沒有有效的狀態檢查式樣。 +settings.enforce_on_admins = 為儲存庫管理員強制執行此規則 +settings.wiki_rename_branch_main_notices_2 = 這將永久重新命名儲存庫 %s 的 Wiki 的內部分支。現有的簽出將需要更新。 +settings.discord_icon_url.exceeds_max_length = 圖示網址長度必須小於或等於 2048 個字符 +settings.wiki_branch_rename_success = 儲存庫 Wiki 的分支名稱已成功規範化。 +commits.view_single_diff = 查看此提交中對此提交的變更 +issues.new.assign_to_me = 指派給我 +mirror_denied_combination = 不能組合使用公鑰和基於密碼的驗證。 +settings.update_settings_no_unit = 儲存庫至少應該允許某種形式的交互。 +pulls.edit.already_changed = 無法儲存對合併請求的變更。看起來內容已被另一個使用者變更。請重新整理頁面並嘗試再次編輯以避免覆蓋其變更 +settings.add_collaborator_blocked_our = 無法新增協作者,因為儲存庫擁有者已封鎖他們。 +issues.edit.already_changed = 無法儲存對問題的變更。看起來內容已被另一個使用者變更。請重新整理頁面並嘗試再次編輯以避免覆蓋其變更 +settings.federation_following_repos = 關注儲存庫的網址。以半形分號「;」分隔,沒有空格。 +settings.federation_not_enabled = 你的站點上未啟用聯邦。 +settings.federation_apapiurl = 此儲存庫的聯邦網址。將其複製並貼上至另一個儲存庫的聯邦設定中作為關注儲存庫的網址。 +settings.enter_repo_name = 準確輸入擁有者和儲存庫名稱,如下所示: +settings.wiki_rename_branch_main = 規範化 Wiki 分支名稱 +settings.wiki_branch_rename_failure = 無法規範化儲存庫 Wiki 的分支名稱。 +settings.confirm_wiki_branch_rename = 重新命名 Wiki 分支 +settings.transfer_quota_exceeded = 新擁有者(%s)已超出配額。儲存庫尚未轉移。 +settings.wiki_rename_branch_main_notices_1 = 此操作無法撤銷。 +settings.push_mirror_sync_in_progress = 目前正在將變更推送至遠端 %s。 +settings.confirmation_string = 確認字串 +issues.review.pending.tooltip = 其他使用者目前看不到此留言。要提交你的待處理留言,請選擇頁面頂部的「%s」->「%s/%s/%s」。 +pulls.delete_after_merge.head_branch.is_default = 你要刪除的頭分支是預設分支,無法刪除。 +pulls.delete_after_merge.head_branch.is_protected = 你要刪除的頭分支是受保護的分支,無法刪除。 +pulls.delete_after_merge.head_branch.insufficient_branch = 你沒有權限刪除頭分支。 +settings.pull_mirror_sync_in_progress = 目前正在從遠端 %s 拉取變更。 +settings.pull_mirror_sync_quota_exceeded = 配額已超出,不拉取變更。 +settings.wiki_globally_editable = 允許任何人編輯 Wiki +settings.transfer_abort_success = 轉移儲存庫至 %s 已成功取消。 +settings.add_collaborator_blocked_them = 無法新增協作者,因為他們已封鎖儲存庫擁有者。 +settings.add_webhook.invalid_path = 路徑不能包含「.」、「..」或空字串。它不能以斜線開頭或結尾。 +settings.webhook.test_delivery_desc_disabled = 要使用虛假事件測試此 Webhook,請啟動它。 +settings.webhook.replay.description_disabled = 要重播此 Webhook,請啟動它。 +settings.wiki_rename_branch_main_desc = 將 Wiki 內部使用的分支重新命名為「%s」。此變更是永久性的,無法撤消。 +settings.mirror_settings.push_mirror.copy_public_key = 複製公鑰 +settings.default_update_style_desc = 用於更新落後於基礎分支的合併請求的預設更新模式。 +summary_card_alt = 儲存庫 %s 的摘要卡 +pulls.recently_pushed_new_branches = 你已於 %[2]s 推送分支 %[1]s +pulls.sign_in_require = 登入以建立新的合併請求。 +issues.num_reviews_one = %d 則審閱 +issues.num_reviews_few = %d 則審閱 +new_from_template_description = 你可以選擇此站點上現有的儲存庫範本並套用其設定。 +auto_init_description = 使用 README 開始 Git 歷史記錄並可選擇新增 License 和 .gitignore 檔案。 +issues.reaction.add = 新增反應 +issues.reaction.alt_few = %[1]s 對 %[2]s 做出了反應。 +issues.reaction.alt_many = %[1]s 和另外 %[2]d 人對 %[3]s 做出了反應。 +issues.context.menu = 留言選單 +issues.summary_card_alt = 儲存庫 %[2]s 中標題為「%[1]s」的問題摘要卡 +release.summary_card_alt = 儲存庫 %[2]s 中名為「%[1]s」的發行摘要卡 +error.broken_git_hook = 此儲存庫的 Git 鉤子似乎已損壞。請按照文件修復它們,然後推送一些提交以重新整理狀態。 +issues.reaction.alt_remove = 從留言中移除 %[1]s 的反應。 + +vendored = 已供應 +settings.mirror_settings.docs.doc_link_pull_section = 文件中的「從遠端儲存庫拉取」部分。 +settings.event_pull_request_review_request_desc = 合併請求審核請求或審核請求已移除。 +settings.protect_status_check_patterns_desc = 輸入模式以指定其他分支在合併到受此規則保護的分支前必須通過的狀態檢查。每行指定一個模式,模式不得為空白。 +settings.protect_invalid_status_check_pattern = 狀態檢查模式無效: 「%s」。 +settings.ignore_stale_approvals_desc = 不計算在較舊提交上進行的核可(過時的審核)作為合併請求的核可數量。如果過時的審核已經被捨棄,則無關緊要。 +settings.tags.protection.pattern.description = 您可以使用單一名稱或 glob 模式或正則表達式來匹配多個標籤。詳情請參閱 受保護標籤指南。 +settings.thread_id = 線程 ID +settings.archive.text = 封存儲存庫將使其完全變為唯讀。它將從儀表板中隱藏。沒有人(甚至包括您!)將能夠進行新的提交,或打開任何問題或合併請求。 +diff.comment.add_line_comment = 新增行評論 [graphs] component_loading = 載入中 %s… code_frequency.what = 寫程式頻率 recent_commits.what = 最近的提交 contributors.what = 貢獻 +component_loading_info = 這可能需要一點時間… +component_loading_failed = 無法載入 %s +component_failed_to_load = 發生了意外錯誤。 [org] org_name_holder=組織名稱 @@ -2835,17 +2927,17 @@ members.member=普通成員 members.remove=移除 members.remove.detail=確定要從 %[2]s 中刪除 %[1]s 嗎? members.leave=離開 -members.leave.detail=確定要離開 %s 嗎? +members.leave.detail=你確定你要離開組織「%s」嗎? members.invite_desc=邀請新的用戶加入 %s: members.invite_now=立即邀請 teams.join=加入 teams.leave=離開 -teams.leave.detail=確定要離開 %s 嗎? +teams.leave.detail=你確定你要離開團隊「%s」嗎? teams.can_create_org_repo=建立儲存庫 teams.can_create_org_repo_helper=成員可以在組織中新增儲存庫。建立者將自動取得新儲存庫的管理員權限。 -teams.none_access=沒有權限 -teams.none_access_helper=成員無法檢視此單元或對其執行其他動作,這對公開儲存庫沒有影響。 +teams.none_access=無權存取 +teams.none_access_helper=「無權存取」選項僅對私人儲存庫有效。 teams.general_access=自訂存取 teams.general_access_helper=成員權限將由下列權限表決定。 teams.read_access=讀取 @@ -2893,6 +2985,10 @@ open_dashboard = 開啟儀錶板 settings.email = 聯絡電子郵件 form.name_pattern_not_allowed = 組織名稱中不允許使用式樣「%s」。 follow_blocked_user = 你無法關注此組織,因為此組織已封鎖你。 +teams.invite.title = 你已被邀請加入組織 %[2]s 中的團隊 %[1]s。 +settings.change_orgname_prompt = 注意:變更組織名稱也會變更你組織的網址並釋放舊名稱。 +settings.change_orgname_redirect_prompt.with_cooldown.few = 舊的組織名稱將在 %[1]d 天的冷卻期後對所有人可用,你仍然可以在冷卻期內重新使用舊名稱。 +settings.change_orgname_redirect_prompt.with_cooldown.one = 舊的組織名稱將在 %[1]d 天的冷卻期後對所有人可用,您仍然可以在冷卻期內重新使用舊名稱。 [admin] dashboard=資訊主頁 @@ -2982,9 +3078,9 @@ dashboard.delete_old_actions.started=從資料庫刪除所有舊行為的任務 dashboard.update_checker=更新檢查器 dashboard.delete_old_system_notices=從資料庫刪除所有舊系統提示 dashboard.gc_lfs=對 LFS meta objects 進行垃圾回收 -dashboard.stop_zombie_tasks=停止殭屍任務 -dashboard.stop_endless_tasks=停止永不停止的任務 -dashboard.cancel_abandoned_jobs=取消已放棄的作業 +dashboard.stop_zombie_tasks=停止殭屍 Actions 任務 +dashboard.stop_endless_tasks=停止永不停止的 Actions 任務 +dashboard.cancel_abandoned_jobs=取消已放棄的 Actions 作業 users.user_manage_panel=使用者帳號管理 users.new_account=建立使用者帳號 @@ -3121,7 +3217,7 @@ auths.search_page_size=頁面大小 auths.filter=使用者篩選器 auths.admin_filter=管理者篩選器 auths.restricted_filter=受限制的篩選器 -auths.restricted_filter_helper=留白則不限制任何使用者。使用米字「*」將所有不符合管理員篩選條件的使用者設定為受限。 +auths.restricted_filter_helper=留白以不限制任何使用者。使用半形星號「*」以將所有不符合管理員篩選條件的使用者設定為受限。 auths.verify_group_membership=驗證 LDAP 群組成員資格 (篩選器留空以跳過) auths.group_search_base=群組搜尋的 Base DN auths.group_attribute_list_users=包含使用者清單的群組屬性 @@ -3134,15 +3230,15 @@ auths.smtp_auth=SMTP 驗證類型 auths.smtphost=SMTP 主機地址 auths.smtpport=SMTP 連接埠 auths.allowed_domains=允許的域名 -auths.allowed_domains_helper=留白以允許所有域名。以半形逗號「,」分隔多個域名。 -auths.skip_tls_verify=忽略 TLS 驗證 +auths.allowed_domains_helper=留白以允許所有域名。以半形逗號(,)分隔多個域名。 +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 電子信箱域名 (選用) +auths.pam_email_domain=PAM 電子信箱域名(選用) auths.oauth2_provider=OAuth2 提供者 auths.oauth2_icon_url=圖示 URL auths.oauth2_clientID=客戶端 ID (金鑰) @@ -3188,11 +3284,11 @@ auths.tip.github=註冊新的 OAuth 應用程式。網址:%s auths.tip.gitlab=註冊新的應用程式。網址:https://gitlab.com/profile/applications auths.tip.google_plus=從 Google API 控制台取得 OAuth2 使用者端憑證。網址:%s auths.tip.openid_connect=使用 OpenID 連接探索 URL (/.well-known/openid-configuration) 來指定節點 -auths.tip.twitter=建立應用程式並確保有啟用「Allow this application to be used to Sign in with Twitter」。網址:%s -auths.tip.discord=註冊新的應用程式。網址:%s +auths.tip.twitter=前往 %s,建立應用程式並確保啟用了「允許此應用程式用於使用 Twitter 登入」選項 +auths.tip.discord=在 %s 上註冊新應用程式 auths.tip.yandex=在 %s 建立新的應用程式。請在「Yandex.Passport API」區塊選擇選擇下列權限:「Access to email address」、「Access to user avatar」和「Access to username, first name and surname, gender」 auths.tip.mastodon=輸入您想用來認證的 Mastodon 站點的自訂網址(或使用預設值) -auths.edit=修改認證來源 +auths.edit=編輯認證來源 auths.activated=該認證來源已啟用 auths.new_success=已新增認證「%s」。 auths.update_success=已更新認證來源。 @@ -3212,10 +3308,10 @@ config.app_name=站點標題 config.app_ver=Forgejo 版本 config.app_url=Forgejo 基底 URL config.custom_conf=設定檔路徑 -config.custom_file_root_path=自訂檔案根目錄 +config.custom_file_root_path=自訂檔案根路徑 config.domain=伺服器域名 config.offline_mode=本地模式 -config.disable_router_log=關閉路由日誌 +config.disable_router_log=停用路由日誌 config.run_user=以使用者名稱執行 config.run_mode=執行模式 config.git_version=Git 版本 @@ -3223,7 +3319,7 @@ config.repo_root_path=儲存庫根路徑 config.lfs_root_path=LFS 根路徑 config.log_file_root_path=日誌路徑 config.script_type=腳本類型 -config.reverse_auth_user=反向代理認證 +config.reverse_auth_user=反向代理認證使用者 config.ssh_config=SSH 設定 config.ssh_enabled=已啟用 @@ -3233,7 +3329,7 @@ config.ssh_port=連接埠 config.ssh_listen_port=監聽埠 config.ssh_root_path=根路徑 config.ssh_key_test_path=金鑰測試路徑 -config.ssh_keygen_path=金鑰產生 (' ssh-keygen ') 路徑 +config.ssh_keygen_path=金鑰產生(ssh-keygen)路徑 config.ssh_minimum_key_size_check=金鑰最小大小檢查 config.ssh_minimum_key_sizes=金鑰最小大小 @@ -3259,13 +3355,13 @@ config.allow_only_external_registration=只允許從外部服務註冊 config.enable_openid_signup=啟用 OpenID 自助註冊 config.enable_openid_signin=啟用 OpenID 登入 config.show_registration_button=顯示註冊按鈕 -config.require_sign_in_view=需要登入才能瀏覽頁面 +config.require_sign_in_view=需要登入才能瀏覽內容 config.mail_notify=啟用電子郵件通知 config.enable_captcha=啟用驗證碼 -config.active_code_lives=啟用使用者連結有效期 +config.active_code_lives=啟動碼過期時間 config.reset_password_code_lives=帳號復原碼有效時間 config.default_keep_email_private=預設隱藏電子信箱 -config.default_allow_create_organization=預設允許新增組織 +config.default_allow_create_organization=預設允許建立組織 config.enable_timetracking=啟用時間追蹤 config.default_enable_timetracking=預設啟用時間追蹤 config.default_allow_only_contributors_to_track_time=只讓貢獻者追蹤時間 @@ -3372,7 +3468,7 @@ monitor.queue.settings.submit=更新設定 monitor.queue.settings.changed=已更新設定 notices.system_notice_list=系統提示 -notices.view_detail_header=查看提示細節 +notices.view_detail_header=提示詳情 notices.operations=操作 notices.select_all=全部選取 notices.deselect_all=取消所有選取 @@ -3400,7 +3496,7 @@ self_check.no_problem_found = 未發現任何問題。 config.send_test_mail_submit = 寄送 users.details = 使用者詳細資訊 assets = 程式碼資料 -dashboard.sync_branch.started = 已開始同步分支 +dashboard.sync_branch.started = 分支同步已開始 dashboard.rebuild_issue_indexer = 重建問題索引 repos.lfs_size = LFS 大小 packages.cleanup = 清除過期的資料 @@ -3429,8 +3525,31 @@ config.logger_name_fmt = 日誌:%s monitor.queue.review_add = 審閱/增加 Worker self_check.database_fix_mysql = 對於 MySQL/MariaDB 的使用者,你可以使用命令「forgejo doctor convert」來修復排序規則問題,或者你也可以手動透過「ALTER ... COLLATE ...」SQL 修復問題。 monitor.duration = 持續時間(秒) +systemhooks.desc = 當某些 Forgejo 事件觸發時,Webhook 會自動向伺服器發出 HTTP POST 請求。此處定義的 Webhook 將作用於系統上的所有儲存庫,因此請考慮這可能產生的任何效能影響。更多資訊請參考Webhook 指南。 +self_check.database_inconsistent_collation_columns = 資料庫正在使用排序規則 %s,但是這些欄使用的排序規則不相符。這可能會引起一些意想不到的問題。 +users.block.description = 阻止此使用者透過其帳號與此服務互動並禁止登入。 +auths.tip.gitlab_new = 在 %s 上註冊新應用程式 +config.cache_test_succeeded = 快取測試成功,在 %s 內收到回應。 +config.cache_test_failed = 無法探測快取:%v。 +self_check.database_collation_case_insensitive = 資料庫正在使用排序規則 %s,這是一種不敏感的排序規則。雖然 Forgejo 可以與其配合使用,但是在一些罕見情況下可能會出現無法如預期運作的情況。 +config.open_with_editor_app_help = 拓製選單中的「開啟方式」編輯器。如果留空則將使用預設值。展開以查看預設值。 +dashboard.sync_repo_tags = 將標籤從 Git 資料同步至資料庫 +self_check.database_collation_mismatch = 期望資料庫使用的排序規則:%s +config.allow_dots_in_usernames = 允許使用者在使用者名稱中使用點。不會影響現有帳號。 +dashboard.sync_repo_branches = 將缺少的分支從 Git 資料同步至資料庫 +defaulthooks.desc = 當某些 Forgejo 事件觸發時,Webhook 會自動向伺服器發出 HTTP POST 請求。此處定義的 Webhook 是預設的,將複製至所有新的儲存庫中。更多資訊請參考Webhook 指南。 +users.local_import.description = 允許從伺服器的本機檔案系統匯入儲存庫。這可能是個安全問題。 +config.cache_test_slow = 快取測試成功,但是回應很慢:%s。 +users.activated.description = 完成電子郵件驗證。未啟動帳號的擁有者將無法登入,直至電子郵件驗證完成。 +auths.tips.oauth2.general.tip = 當註冊新的 OAuth2 驗證時,回呼/重新導向網址應該是: +users.restricted.description = 僅允許與將此使用者新增為合作者的儲存庫和組織進行互動。這會阻止存取此站點上的公共儲存庫。 +users.admin.description = 授予此使用者透過網頁介面和 API 提供的所有管理功能的完全存取權。 +auths.tip.gitea = 註冊一個新的 OAuth2 應用程式。指南可在 %s 找到 +monitor.queue.activeworkers = 活躍工作者 +monitor.queue.settings.desc = 集區會根據工作者佇列的阻塞情況動態增長。 + [action] create_repo=建立了儲存庫 %s rename_repo=重新命名儲存庫 %[1]s%[3]s @@ -3454,7 +3573,7 @@ compare_commits=比較 %d 個提交 compare_commits_general=比較提交 mirror_sync_push=從鏡像同步了提交到 %[4]s%[3]s mirror_sync_create=從鏡像同步了新參考 %[3]s%[4]s -mirror_sync_delete=從鏡像同步並從 %[3]s 刪除了參考 %[2]s +mirror_sync_delete=已從鏡像同步並從 %[3]s 刪除了參考 %[2]s approve_pull_request=`核可了 %[3]s#%[2]s` reject_pull_request=`提出了修改建議 %[3]s#%[2]s` publish_release=`發布了 %[3]s "%[4]s" ` @@ -3524,7 +3643,7 @@ error.unit_not_allowed=您未被允許存取此儲存庫區域。 title=軟體包 desc=管理儲存庫軟體包。 empty=目前還沒有軟體包。 -empty.documentation=關於軟體包註冊中心的詳情請參閱說明文件。 +empty.documentation=關於軟體包註冊中心的詳情請參閱文件。 empty.repo=已經上傳了一個軟體包,但是它不在這裡嗎?造訪軟體包設定並將其連結到這個儲存庫。 filter.type=類型 filter.type.all=所有 @@ -3599,7 +3718,7 @@ npm.install=執行下列命令以使用 npm 安裝此軟體包: npm.install2=或將它加到 package.json 檔: npm.dependencies=相依性 npm.dependencies.development=開發相依性 -npm.dependencies.peer=Peer 相依性 +npm.dependencies.peer=同行相依性 npm.dependencies.optional=選用相依性 npm.details.tag=標籤 pub.install=執行下列命令以使用 Dart 安裝此軟體包: @@ -3665,7 +3784,7 @@ arch.version.description = 描述 arch.version.properties = 版本屬性 arch.version.backup = 備份 arch.version.conflicts = 衝突 -npm.dependencies.bundle = 已捆綁的依賴項 +npm.dependencies.bundle = 已捆綁相依性 arch.version.provides = 提供 arch.pacman.repo.multi.item = %s 的組態 arch.version.replaces = 取代 @@ -3786,7 +3905,7 @@ variables.creation = 新增變數 variables.none = 目前沒有變數。 variables.deletion = 刪除變數 variables.deletion.description = 刪除變數是永久且不可取消的。要繼續嗎? -variables.creation.success = 變數 「%s」已成功被新增。 +variables.creation.success = 已新增變數 「%s」。 variables.update.failed = 編輯變數失敗。 runs.no_results = 沒有相符的結果。 runs.no_workflows = 目前沒有任何工作流程。 @@ -3808,13 +3927,14 @@ workflow.dispatch.warn_input_limit = 僅顯示前 %d 個輸入。 runs.no_job = 工作流程必須包含至少一項作業 runs.expire_log_message = 日誌已被清除,因為它們太舊了。 runs.no_job_without_needs = 工作流程必須包含至少一項沒有依賴性的作業。 -runs.no_matching_online_runner_helper = 沒有在線執行器匹配標籤:%s +runs.no_matching_online_runner_helper = 沒有在線的執行器且匹配標籤:%s workflow.dispatch.success = 已成功請求工作流程運行。 runs.no_workflows.documentation = 有關 Forgejo Actions 的更多資訊,請參閱文件。 runners.reset_registration_token = 重置註冊符記 workflow.dispatch.use_from = 使用工作流程自 runs.no_workflows.help_no_write_access = 要了解 Forgejo Actions,請參閱文件。 runs.no_workflows.help_write_access = 不知道如何開始使用 Forgejo Actions?查看使用者文件中的快速入門來編寫你的第一個工作流程,然後設定 Forgejo Runner來執行你的工作。 +variables.not_found = 找不到變數。 [projects] @@ -3861,6 +3981,8 @@ exact_tooltip = 只包含與搜尋詞完全相符的結合 pull_kind = 搜尋拉取… regexp = 正規表示式 regexp_tooltip = 將搜尋詞解釋為正規表示式 +union = 關鍵字 +union_tooltip = 包含與任何空格分隔的關鍵字相符的結果 [munits.data] eib = EiB @@ -3878,3 +4000,8 @@ filepreview.line = %[2]s 中的第 %[1]d 行 [translation_meta] test = 好的 + + +[repo.permissions] +ext_issues = 存取外部問題追蹤器的連結。權限由外部管理。 +ext_wiki = 存取外部 Wiki 的連結。權限由外部管理。 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b151d042ff..cf540e47e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "dayjs": "1.11.12", "dropzone": "6.0.0-beta.2", "easymde": "2.18.0", - "esbuild-loader": "4.2.2", + "esbuild-loader": "4.3.0", "escape-goat": "4.0.0", "fast-glob": "3.3.3", "htmx.org": "1.9.12", @@ -37,7 +37,7 @@ "monaco-editor": "0.52.2", "monaco-editor-webpack-plugin": "7.1.0", "pdfobject": "2.3.0", - "postcss": "8.5.1", + "postcss": "8.5.2", "postcss-loader": "8.1.1", "postcss-nesting": "13.0.1", "pretty-ms": "9.0.0", @@ -55,7 +55,7 @@ "vue-chartjs": "5.3.1", "vue-loader": "17.4.2", "vue3-calendar-heatmap": "2.0.5", - "webpack": "5.97.1", + "webpack": "5.98.0", "webpack-cli": "6.0.1", "wrap-ansi": "9.0.0" }, @@ -85,8 +85,8 @@ "eslint-plugin-vue": "9.32.0", "eslint-plugin-vue-scoped-css": "2.9.0", "eslint-plugin-wc": "2.2.0", - "globals": "15.14.0", - "happy-dom": "16.8.1", + "globals": "15.15.0", + "happy-dom": "17.1.0", "license-checker-rseidelsohn": "4.4.2", "markdownlint-cli": "0.44.0", "postcss-html": "1.8.0", @@ -131,22 +131,22 @@ } }, "node_modules/@antfu/install-pkg": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", - "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", + "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", "license": "MIT", "dependencies": { - "package-manager-detector": "^0.2.0", - "tinyexec": "^0.3.0" + "package-manager-detector": "^0.2.8", + "tinyexec": "^0.3.2" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -190,9 +190,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, "license": "MIT", "engines": { @@ -280,14 +280,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", - "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.5", - "@babel/types": "^7.26.5", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -337,18 +337,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/traverse": "^7.26.9", "semver": "^6.3.1" }, "engines": { @@ -576,26 +576,26 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.7" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -833,15 +833,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -1114,13 +1114,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1651,13 +1651,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1898,9 +1898,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1910,32 +1910,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", - "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1954,9 +1954,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -2239,9 +2239,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], @@ -2251,13 +2251,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", "cpu": [ "arm" ], @@ -2267,13 +2267,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], @@ -2283,13 +2283,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", "cpu": [ "x64" ], @@ -2299,13 +2299,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], @@ -2315,13 +2315,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], @@ -2331,13 +2331,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], @@ -2347,13 +2347,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], @@ -2363,13 +2363,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], @@ -2379,13 +2379,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], @@ -2395,13 +2395,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], @@ -2411,13 +2411,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], @@ -2427,13 +2427,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], @@ -2443,13 +2443,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", "cpu": [ "ppc64" ], @@ -2459,13 +2459,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", "cpu": [ "riscv64" ], @@ -2475,13 +2475,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], @@ -2491,13 +2491,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", "cpu": [ "x64" ], @@ -2507,13 +2507,29 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], @@ -2523,13 +2539,29 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], @@ -2539,13 +2571,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], @@ -2555,13 +2587,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], @@ -2571,13 +2603,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", "cpu": [ "ia32" ], @@ -2587,13 +2619,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], @@ -2603,7 +2635,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-plugin-eslint-comments": { @@ -2959,19 +2991,19 @@ "license": "MIT" }, "node_modules/@iconify/utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.2.1.tgz", - "integrity": "sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", "license": "MIT", "dependencies": { - "@antfu/install-pkg": "^0.4.1", - "@antfu/utils": "^0.7.10", + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", "@iconify/types": "^2.0.0", "debug": "^4.4.0", - "globals": "^15.13.0", + "globals": "^15.14.0", "kolorist": "^1.8.0", - "local-pkg": "^0.5.1", - "mlly": "^1.7.3" + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" } }, "node_modules/@isaacs/cliui": { @@ -3435,9 +3467,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.0.tgz", - "integrity": "sha512-Eeao7ewDq79jVEsrtWIj5RNqB8p2knlm9fhR6uJ2gqP7UfbLrTrxevudVrEPDM7Wkpn/HpRC2QfazH7MXLz3vQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", + "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", "cpu": [ "arm" ], @@ -3449,9 +3481,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.0.tgz", - "integrity": "sha512-yVh0Kf1f0Fq4tWNf6mWcbQBCLDpDrDEl88lzPgKhrgTcDrTtlmun92ywEF9dCjmYO3EFiSuJeeo9cYRxl2FswA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", + "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", "cpu": [ "arm64" ], @@ -3463,9 +3495,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.0.tgz", - "integrity": "sha512-gCs0ErAZ9s0Osejpc3qahTsqIPUDjSKIyxK/0BGKvL+Tn0n3Kwvj8BrCv7Y5sR1Ypz1K2qz9Ny0VvkVyoXBVUQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", + "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", "cpu": [ "arm64" ], @@ -3477,9 +3509,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.0.tgz", - "integrity": "sha512-aIB5Anc8hngk15t3GUkiO4pv42ykXHfmpXGS+CzM9CTyiWyT8HIS5ygRAy7KcFb/wiw4Br+vh1byqcHRTfq2tQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", + "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", "cpu": [ "x64" ], @@ -3491,9 +3523,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.0.tgz", - "integrity": "sha512-kpdsUdMlVJMRMaOf/tIvxk8TQdzHhY47imwmASOuMajg/GXpw8GKNd8LNwIHE5Yd1onehNpcUB9jHY6wgw9nHQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", + "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", "cpu": [ "arm64" ], @@ -3505,9 +3537,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.0.tgz", - "integrity": "sha512-D0RDyHygOBCQiqookcPevrvgEarN0CttBecG4chOeIYCNtlKHmf5oi5kAVpXV7qs0Xh/WO2RnxeicZPtT50V0g==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", + "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", "cpu": [ "x64" ], @@ -3519,9 +3551,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.0.tgz", - "integrity": "sha512-mCIw8j5LPDXmCOW8mfMZwT6F/Kza03EnSr4wGYEswrEfjTfVsFOxvgYfuRMxTuUF/XmRb9WSMD5GhCWDe2iNrg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", + "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", "cpu": [ "arm" ], @@ -3533,9 +3565,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.0.tgz", - "integrity": "sha512-AwwldAu4aCJPob7zmjuDUMvvuatgs8B/QiVB0KwkUarAcPB3W+ToOT+18TQwY4z09Al7G0BvCcmLRop5zBLTag==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", + "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", "cpu": [ "arm" ], @@ -3547,9 +3579,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.0.tgz", - "integrity": "sha512-e7kDUGVP+xw05pV65ZKb0zulRploU3gTu6qH1qL58PrULDGxULIS0OSDQJLH7WiFnpd3ZKUU4VM3u/Z7Zw+e7Q==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", + "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", "cpu": [ "arm64" ], @@ -3561,9 +3593,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.0.tgz", - "integrity": "sha512-SXYJw3zpwHgaBqTXeAZ31qfW/v50wq4HhNVvKFhRr5MnptRX2Af4KebLWR1wpxGJtLgfS2hEPuALRIY3LPAAcA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", + "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", "cpu": [ "arm64" ], @@ -3575,9 +3607,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.0.tgz", - "integrity": "sha512-e5XiCinINCI4RdyU3sFyBH4zzz7LiQRvHqDtRe9Dt8o/8hTBaYpdPimayF00eY2qy5j4PaaWK0azRgUench6WQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", + "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", "cpu": [ "loong64" ], @@ -3589,9 +3621,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.0.tgz", - "integrity": "sha512-3SWN3e0bAsm9ToprLFBSro8nJe6YN+5xmB11N4FfNf92wvLye/+Rh5JGQtKOpwLKt6e61R1RBc9g+luLJsc23A==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", + "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", "cpu": [ "ppc64" ], @@ -3603,9 +3635,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.0.tgz", - "integrity": "sha512-B1Oqt3GLh7qmhvfnc2WQla4NuHlcxAD5LyueUi5WtMc76ZWY+6qDtQYqnxARx9r+7mDGfamD+8kTJO0pKUJeJA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", + "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", "cpu": [ "riscv64" ], @@ -3617,9 +3649,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.0.tgz", - "integrity": "sha512-UfUCo0h/uj48Jq2lnhX0AOhZPSTAq3Eostas+XZ+GGk22pI+Op1Y6cxQ1JkUuKYu2iU+mXj1QjPrZm9nNWV9rg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", + "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", "cpu": [ "s390x" ], @@ -3631,9 +3663,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.0.tgz", - "integrity": "sha512-chZLTUIPbgcpm+Z7ALmomXW8Zh+wE2icrG+K6nt/HenPLmtwCajhQC5flNSk1Xy5EDMt/QAOz2MhzfOfJOLSiA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", + "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", "cpu": [ "x64" ], @@ -3645,9 +3677,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.0.tgz", - "integrity": "sha512-jo0UolK70O28BifvEsFD/8r25shFezl0aUk2t0VJzREWHkq19e+pcLu4kX5HiVXNz5qqkD+aAq04Ct8rkxgbyQ==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", + "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", "cpu": [ "x64" ], @@ -3659,9 +3691,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.0.tgz", - "integrity": "sha512-Vmg0NhAap2S54JojJchiu5An54qa6t/oKT7LmDaWggpIcaiL8WcWHEN6OQrfTdL6mQ2GFyH7j2T5/3YPEDOOGA==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", + "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", "cpu": [ "arm64" ], @@ -3673,9 +3705,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.0.tgz", - "integrity": "sha512-CV2aqhDDOsABKHKhNcs1SZFryffQf8vK2XrxP6lxC99ELZAdvsDgPklIBfd65R8R+qvOm1SmLaZ/Fdq961+m7A==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", + "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", "cpu": [ "ia32" ], @@ -3687,9 +3719,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.0.tgz", - "integrity": "sha512-g2ASy1QwHP88y5KWvblUolJz9rN+i4ZOsYzkEwcNfaNooxNUXG+ON6F5xFo0NIItpHqxcdAyls05VXpBnludGw==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", + "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", "cpu": [ "x64" ], @@ -4446,9 +4478,9 @@ } }, "node_modules/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", "license": "MIT" }, "node_modules/@types/d3-polygon": { @@ -4470,9 +4502,9 @@ "license": "MIT" }, "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", "dependencies": { "@types/d3-time": "*" @@ -4635,9 +4667,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", - "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -5434,13 +5466,13 @@ "license": "Apache-2.0" }, "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz", + "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/abort-controller": { @@ -6072,9 +6104,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6121,9 +6153,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001696", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", - "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "funding": [ { "type": "opencollective", @@ -6141,9 +6173,9 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { @@ -7659,9 +7691,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.90", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", - "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", + "version": "1.5.101", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", + "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -7680,9 +7712,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -7879,13 +7911,16 @@ } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -7907,50 +7942,52 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "hasInstallScript": true, "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, "node_modules/esbuild-loader": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.2.2.tgz", - "integrity": "sha512-Mdq/A1L8p37hkibp8jGFwuQTDSWhDmlueAefsrCPRwNWThEOlQmIglV7Gd6GE2mO5bt7ksfxKOMwkuY7jjVTXg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.3.0.tgz", + "integrity": "sha512-D7HeJNdkDKKMarPQO/3dlJT6RwN2YJO7ENU6RPlpOz5YxSHnUNi2yvW41Bckvi1EVwctIaLzlb0ni5ag2GINYA==", "license": "MIT", "dependencies": { - "esbuild": "^0.21.0", + "esbuild": "^0.25.0", "get-tsconfig": "^4.7.0", "loader-utils": "^2.0.4", "webpack-sources": "^1.4.3" @@ -8703,6 +8740,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -8835,9 +8873,9 @@ "license": "ISC" }, "node_modules/for-each": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", - "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { @@ -9177,9 +9215,9 @@ } }, "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "license": "MIT", "engines": { "node": ">=18" @@ -9275,9 +9313,9 @@ } }, "node_modules/happy-dom": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-16.8.1.tgz", - "integrity": "sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-17.1.0.tgz", + "integrity": "sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9746,13 +9784,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -10182,13 +10220,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -10350,17 +10388,17 @@ "license": "MIT" }, "node_modules/js-beautify": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", - "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.3.tgz", + "integrity": "sha512-rKKGuyTxGNlyN4EQKWzNndzXpi0bOl8Gl8YQAW1as/oMz0XhD6sHJO1hTvoBDOSzKuJb9WkwoAb34FfdkKMv2A==", "dev": true, "license": "MIT", "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", - "glob": "^10.3.3", + "glob": "^10.4.2", "js-cookie": "^3.0.5", - "nopt": "^7.2.0" + "nopt": "^8.0.0" }, "bin": { "css-beautify": "js/bin/css-beautify.js", @@ -10733,6 +10771,32 @@ "npm": ">=8" } }, + "node_modules/license-checker-rseidelsohn/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/license-checker-rseidelsohn/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -10785,13 +10849,13 @@ } }, "node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz", + "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==", "license": "MIT", "dependencies": { "mlly": "^1.7.3", - "pkg-types": "^1.2.1" + "pkg-types": "^1.3.0" }, "engines": { "node": ">=14" @@ -11985,19 +12049,19 @@ } }, "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", "dev": true, "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/normalize-package-data": { @@ -12077,9 +12141,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -12373,9 +12437,9 @@ } }, "node_modules/pathe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", - "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "license": "MIT" }, "node_modules/pathval": { @@ -12574,9 +12638,9 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { @@ -12584,9 +12648,9 @@ } }, "node_modules/postcss": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", - "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", "funding": [ { "type": "opencollective", @@ -12766,9 +12830,9 @@ } }, "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -12794,9 +12858,9 @@ } }, "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -12918,9 +12982,9 @@ } }, "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -13076,6 +13140,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -13860,9 +13925,9 @@ } }, "node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14683,9 +14748,9 @@ } }, "node_modules/stylelint/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", "dependencies": { @@ -14707,9 +14772,9 @@ } }, "node_modules/stylis": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.5.tgz", - "integrity": "sha512-K7npNOKGRYuhAFFzkzMGfxFDpN6gDwf8hcMiE+uveTVbBgm93HrNP3ZDUpKqzZ4pG7TP6fmb+EMAQPjq9FqqvA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", "license": "MIT" }, "node_modules/stylus": { @@ -14996,9 +15061,9 @@ } }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -15551,6 +15616,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -15709,6 +15775,397 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/vite/node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -15716,6 +16173,45 @@ "dev": true, "license": "MIT" }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -15732,9 +16228,9 @@ } }, "node_modules/vite/node_modules/rollup": { - "version": "4.34.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.0.tgz", - "integrity": "sha512-+4C/cgJ9w6sudisA0nZz0+O7lTP9a3CzNLsoDwaRumM8QHwghUsu6tqHXiTmNUp/rqNiM14++7dkzHDyCRs0Jg==", + "version": "4.34.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", + "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15748,25 +16244,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.0", - "@rollup/rollup-android-arm64": "4.34.0", - "@rollup/rollup-darwin-arm64": "4.34.0", - "@rollup/rollup-darwin-x64": "4.34.0", - "@rollup/rollup-freebsd-arm64": "4.34.0", - "@rollup/rollup-freebsd-x64": "4.34.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.0", - "@rollup/rollup-linux-arm-musleabihf": "4.34.0", - "@rollup/rollup-linux-arm64-gnu": "4.34.0", - "@rollup/rollup-linux-arm64-musl": "4.34.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.0", - "@rollup/rollup-linux-riscv64-gnu": "4.34.0", - "@rollup/rollup-linux-s390x-gnu": "4.34.0", - "@rollup/rollup-linux-x64-gnu": "4.34.0", - "@rollup/rollup-linux-x64-musl": "4.34.0", - "@rollup/rollup-win32-arm64-msvc": "4.34.0", - "@rollup/rollup-win32-ia32-msvc": "4.34.0", - "@rollup/rollup-win32-x64-msvc": "4.34.0", + "@rollup/rollup-android-arm-eabi": "4.34.7", + "@rollup/rollup-android-arm64": "4.34.7", + "@rollup/rollup-darwin-arm64": "4.34.7", + "@rollup/rollup-darwin-x64": "4.34.7", + "@rollup/rollup-freebsd-arm64": "4.34.7", + "@rollup/rollup-freebsd-x64": "4.34.7", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", + "@rollup/rollup-linux-arm-musleabihf": "4.34.7", + "@rollup/rollup-linux-arm64-gnu": "4.34.7", + "@rollup/rollup-linux-arm64-musl": "4.34.7", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", + "@rollup/rollup-linux-riscv64-gnu": "4.34.7", + "@rollup/rollup-linux-s390x-gnu": "4.34.7", + "@rollup/rollup-linux-x64-gnu": "4.34.7", + "@rollup/rollup-linux-x64-musl": "4.34.7", + "@rollup/rollup-win32-arm64-msvc": "4.34.7", + "@rollup/rollup-win32-ia32-msvc": "4.34.7", + "@rollup/rollup-win32-x64-msvc": "4.34.7", "fsevents": "~2.3.2" } }, @@ -15931,9 +16427,9 @@ } }, "node_modules/vue-component-type-helpers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.0.tgz", - "integrity": "sha512-cYrAnv2me7bPDcg9kIcGwjJiSB6Qyi08+jLDo9yuvoFQjzHiPTzML7RnkJB1+3P6KMsX/KbCD4QE3Tv/knEllw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.2.tgz", + "integrity": "sha512-6lLY+n2xz2kCYshl59mL6gy8OUUTmkscmDFMO8i7Lj+QKwgnIFUZmM1i/iTYObtrczZVdw7UakPqDTGwVSGaRg==", "dev": true, "license": "MIT" }, @@ -16069,9 +16565,9 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -16092,9 +16588,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -16195,31 +16691,6 @@ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "license": "MIT" }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -16242,30 +16713,6 @@ "node": ">=4.0" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack/node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", diff --git a/package.json b/package.json index ead8b90f2a..6f285f6686 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "dayjs": "1.11.12", "dropzone": "6.0.0-beta.2", "easymde": "2.18.0", - "esbuild-loader": "4.2.2", + "esbuild-loader": "4.3.0", "escape-goat": "4.0.0", "fast-glob": "3.3.3", "htmx.org": "1.9.12", @@ -36,7 +36,7 @@ "monaco-editor": "0.52.2", "monaco-editor-webpack-plugin": "7.1.0", "pdfobject": "2.3.0", - "postcss": "8.5.1", + "postcss": "8.5.2", "postcss-loader": "8.1.1", "postcss-nesting": "13.0.1", "pretty-ms": "9.0.0", @@ -54,7 +54,7 @@ "vue-chartjs": "5.3.1", "vue-loader": "17.4.2", "vue3-calendar-heatmap": "2.0.5", - "webpack": "5.97.1", + "webpack": "5.98.0", "webpack-cli": "6.0.1", "wrap-ansi": "9.0.0" }, @@ -84,8 +84,8 @@ "eslint-plugin-vue": "9.32.0", "eslint-plugin-vue-scoped-css": "2.9.0", "eslint-plugin-wc": "2.2.0", - "globals": "15.14.0", - "happy-dom": "16.8.1", + "globals": "15.15.0", + "happy-dom": "17.1.0", "license-checker-rseidelsohn": "4.4.2", "markdownlint-cli": "0.44.0", "postcss-html": "1.8.0", diff --git a/poetry.lock b/poetry.lock index 3cafe976e0..72118b2a01 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,12 +44,13 @@ files = [ [[package]] name = "cssbeautifier" -version = "1.15.1" +version = "1.15.3" description = "CSS unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "cssbeautifier-1.15.1.tar.gz", hash = "sha256:9f7064362aedd559c55eeecf6b6bed65e05f33488dcbe39044f0403c26e1c006"}, + {file = "cssbeautifier-1.15.3-py3-none-any.whl", hash = "sha256:0dcaf5ce197743a79b3a160b84ea58fcbd9e3e767c96df1171e428125b16d410"}, + {file = "cssbeautifier-1.15.3.tar.gz", hash = "sha256:406b04d09e7d62c0be084fbfa2cba5126fe37359ea0d8d9f7b963a6354fc8303"}, ] [package.dependencies] @@ -114,12 +115,13 @@ files = [ [[package]] name = "jsbeautifier" -version = "1.15.1" +version = "1.15.3" description = "JavaScript unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "jsbeautifier-1.15.1.tar.gz", hash = "sha256:ebd733b560704c602d744eafc839db60a1ee9326e30a2a80c4adb8718adc1b24"}, + {file = "jsbeautifier-1.15.3-py3-none-any.whl", hash = "sha256:b207a15ab7529eee4a35ae7790e9ec4e32a2b5026d51e2d0386c3a65e6ecfc91"}, + {file = "jsbeautifier-1.15.3.tar.gz", hash = "sha256:5f1baf3d4ca6a615bb5417ee861b34b77609eeb12875555f8bbfabd9bf2f3457"}, ] [package.dependencies] diff --git a/routers/api/v1/activitypub/repository.go b/routers/api/v1/activitypub/repository.go index bc6e7905a6..14381664d4 100644 --- a/routers/api/v1/activitypub/repository.go +++ b/routers/api/v1/activitypub/repository.go @@ -70,8 +70,8 @@ func RepositoryInbox(ctx *context.APIContext) { repository := ctx.Repo.Repository log.Info("RepositoryInbox: repo: %v", repository) - form := web.GetForm(ctx) + // TODO: Decide between like/undo{like} activity httpStatus, title, err := federation.ProcessLikeActivity(ctx, form, repository.ID) if err != nil { ctx.Error(httpStatus, title, err) diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index 1ff755c058..2fe7aaacb4 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -62,6 +62,10 @@ func ListIssueComments(ctx *context.APIContext) { // "$ref": "#/responses/CommentList" // "404": // "$ref": "#/responses/notFound" + // "422": + // "$ref": "#/responses/validationError" + // "500": + // "$ref": "#/responses/internalServerError" before, since, err := context.GetQueryBeforeSince(ctx.Base) if err != nil { @@ -70,6 +74,10 @@ func ListIssueComments(ctx *context.APIContext) { } issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.ParamsInt64(":index")) if err != nil { + if issues_model.IsErrIssueNotExist(err) { + ctx.NotFound("IsErrIssueNotExist", err) + return + } ctx.Error(http.StatusInternalServerError, "GetRawIssueByIndex", err) return } @@ -166,6 +174,10 @@ func ListIssueCommentsAndTimeline(ctx *context.APIContext) { // "$ref": "#/responses/TimelineList" // "404": // "$ref": "#/responses/notFound" + // "422": + // "$ref": "#/responses/validationError" + // "500": + // "$ref": "#/responses/internalServerError" before, since, err := context.GetQueryBeforeSince(ctx.Base) if err != nil { @@ -174,6 +186,10 @@ func ListIssueCommentsAndTimeline(ctx *context.APIContext) { } issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.ParamsInt64(":index")) if err != nil { + if issues_model.IsErrIssueNotExist(err) { + ctx.NotFound("IsErrIssueNotExist", err) + return + } ctx.Error(http.StatusInternalServerError, "GetRawIssueByIndex", err) return } @@ -271,6 +287,10 @@ func ListRepoIssueComments(ctx *context.APIContext) { // "$ref": "#/responses/CommentList" // "404": // "$ref": "#/responses/notFound" + // "422": + // "$ref": "#/responses/validationError" + // "500": + // "$ref": "#/responses/internalServerError" before, since, err := context.GetQueryBeforeSince(ctx.Base) if err != nil { @@ -378,9 +398,16 @@ func CreateIssueComment(ctx *context.APIContext) { // "$ref": "#/responses/notFound" // "423": // "$ref": "#/responses/repoArchivedError" + // "500": + // "$ref": "#/responses/internalServerError" + form := web.GetForm(ctx).(*api.CreateIssueCommentOption) issue, err := issues_model.GetIssueByIndex(ctx, ctx.Repo.Repository.ID, ctx.ParamsInt64(":index")) if err != nil { + if issues_model.IsErrIssueNotExist(err) { + ctx.NotFound("IsErrIssueNotExist", err) + return + } ctx.Error(http.StatusInternalServerError, "GetIssueByIndex", err) return } @@ -449,6 +476,8 @@ func GetIssueComment(ctx *context.APIContext) { // "$ref": "#/responses/forbidden" // "404": // "$ref": "#/responses/notFound" + // "500": + // "$ref": "#/responses/internalServerError" comment := ctx.Comment @@ -511,6 +540,9 @@ func EditIssueComment(ctx *context.APIContext) { // "$ref": "#/responses/notFound" // "423": // "$ref": "#/responses/repoArchivedError" + // "500": + // "$ref": "#/responses/internalServerError" + form := web.GetForm(ctx).(*api.EditIssueCommentOption) editIssueComment(ctx, *form) } @@ -560,6 +592,8 @@ func EditIssueCommentDeprecated(ctx *context.APIContext) { // "$ref": "#/responses/forbidden" // "404": // "$ref": "#/responses/notFound" + // "500": + // "$ref": "#/responses/internalServerError" form := web.GetForm(ctx).(*api.EditIssueCommentOption) editIssueComment(ctx, *form) @@ -626,8 +660,8 @@ func DeleteIssueComment(ctx *context.APIContext) { // "$ref": "#/responses/empty" // "403": // "$ref": "#/responses/forbidden" - // "404": - // "$ref": "#/responses/notFound" + // "500": + // "$ref": "#/responses/internalServerError" deleteIssueComment(ctx, issues_model.CommentTypeComment) } @@ -665,8 +699,8 @@ func DeleteIssueCommentDeprecated(ctx *context.APIContext) { // "$ref": "#/responses/empty" // "403": // "$ref": "#/responses/forbidden" - // "404": - // "$ref": "#/responses/notFound" + // "500": + // "$ref": "#/responses/internalServerError" deleteIssueComment(ctx, issues_model.CommentTypeComment) } diff --git a/routers/api/v1/user/settings.go b/routers/api/v1/user/settings.go index 173f06e474..67ab0dd964 100644 --- a/routers/api/v1/user/settings.go +++ b/routers/api/v1/user/settings.go @@ -63,6 +63,7 @@ func UpdateUserSettings(ctx *context.APIContext) { Theme: optional.FromPtr(form.Theme), DiffViewStyle: optional.FromPtr(form.DiffViewStyle), KeepEmailPrivate: optional.FromPtr(form.HideEmail), + KeepPronounsPrivate: optional.FromPtr(form.HidePronouns), KeepActivityPrivate: optional.FromPtr(form.HideActivity), EnableRepoUnitHints: optional.FromPtr(form.EnableRepoUnitHints), } diff --git a/routers/common/auth.go b/routers/common/auth.go index 115d65ed10..722c625e7b 100644 --- a/routers/common/auth.go +++ b/routers/common/auth.go @@ -31,6 +31,7 @@ func AuthShared(ctx *context.Base, sessionStore auth_service.SessionStore, authM ctx.Data["SignedUserID"] = ar.Doer.ID ctx.Data["IsAdmin"] = ar.Doer.IsAdmin } else { + ctx.Data["IsSigned"] = false ctx.Data["SignedUserID"] = int64(0) } return ar, nil diff --git a/routers/common/middleware.go b/routers/common/middleware.go index ebc4d62d03..8d136ef2c7 100644 --- a/routers/common/middleware.go +++ b/routers/common/middleware.go @@ -95,10 +95,9 @@ func stripSlashesMiddleware(next http.Handler) http.Handler { prevWasSlash = chr == '/' } - if rctx == nil { - req.URL.Path = sanitizedPath.String() - } else { - rctx.RoutePath = sanitizedPath.String() + req.URL.Path = sanitizedPath.String() + if rctx != nil { + rctx.RoutePath = req.URL.Path } next.ServeHTTP(resp, req) }) diff --git a/routers/common/middleware_test.go b/routers/common/middleware_test.go index f16b9374ec..0e111e1261 100644 --- a/routers/common/middleware_test.go +++ b/routers/common/middleware_test.go @@ -7,6 +7,9 @@ import ( "net/http/httptest" "testing" + "code.gitea.io/gitea/modules/web" + + chi "github.com/go-chi/chi/v5" "github.com/stretchr/testify/assert" ) @@ -43,6 +46,11 @@ func TestStripSlashesMiddleware(t *testing.T) { inputPath: "/user2//repo1/", expectedPath: "/user2/repo1", }, + { + name: "path with slashes in the beginning", + inputPath: "https://codeberg.org//user2/repo1/", + expectedPath: "/user2/repo1", + }, { name: "path with slashes and query params", inputPath: "/repo//migrate?service_type=3", @@ -56,15 +64,22 @@ func TestStripSlashesMiddleware(t *testing.T) { } for _, tt := range tests { - testMiddleware := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + r := web.NewRoute() + r.Use(stripSlashesMiddleware) + + called := false + r.Get("*", func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, tt.expectedPath, r.URL.Path) + + rctx := chi.RouteContext(r.Context()) + assert.Equal(t, tt.expectedPath, rctx.RoutePath) + + called = true }) - // pass the test middleware to validate the changes - handlerToTest := stripSlashesMiddleware(testMiddleware) // create a mock request to use req := httptest.NewRequest("GET", tt.inputPath, nil) - // call the handler using a mock response recorder - handlerToTest.ServeHTTP(httptest.NewRecorder(), req) + r.ServeHTTP(httptest.NewRecorder(), req) + assert.True(t, called) } } diff --git a/routers/web/auth/auth.go b/routers/web/auth/auth.go index ca8f06bdb1..d592dff077 100644 --- a/routers/web/auth/auth.go +++ b/routers/web/auth/auth.go @@ -62,7 +62,7 @@ func autoSignIn(ctx *context.Context) (bool, error) { return false, nil } - u, err := user_model.VerifyUserAuthorizationToken(ctx, authCookie, auth.LongTermAuthorization, false) + u, _, err := user_model.VerifyUserAuthorizationToken(ctx, authCookie, auth.LongTermAuthorization) if err != nil { return false, fmt.Errorf("VerifyUserAuthorizationToken: %w", err) } @@ -171,6 +171,8 @@ func SignIn(ctx *context.Context) { context.SetCaptchaData(ctx) } + ctx.Data["DisablePassword"] = !setting.Service.EnableInternalSignIn + ctx.HTML(http.StatusOK, tplSignIn) } @@ -190,6 +192,7 @@ func SignInPost(ctx *context.Context) { ctx.Data["PageIsLogin"] = true ctx.Data["EnableSSPI"] = auth.IsSSPIEnabled(ctx) ctx.Data["EnableInternalSignIn"] = setting.Service.EnableInternalSignIn + ctx.Data["DisablePassword"] = !setting.Service.EnableInternalSignIn // Permission denied if EnableInternalSignIn is false if !setting.Service.EnableInternalSignIn { @@ -669,7 +672,7 @@ func Activate(ctx *context.Context) { return } - user, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation, false) + user, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return @@ -690,6 +693,11 @@ func Activate(ctx *context.Context) { return } + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return + } + handleAccountActivation(ctx, user) } @@ -738,7 +746,7 @@ func ActivatePost(ctx *context.Context) { return } - user, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation, true) + user, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.UserActivation) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return @@ -767,6 +775,11 @@ func ActivatePost(ctx *context.Context) { } } + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return + } + handleAccountActivation(ctx, user) } @@ -827,7 +840,7 @@ func ActivateEmail(ctx *context.Context) { code := ctx.FormString("code") emailStr := ctx.FormString("email") - u, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.EmailActivation(emailStr), true) + u, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.EmailActivation(emailStr)) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return @@ -837,6 +850,11 @@ func ActivateEmail(ctx *context.Context) { return } + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return + } + email, err := user_model.GetEmailAddressOfUser(ctx, emailStr, u.ID) if err != nil { ctx.ServerError("GetEmailAddressOfUser", err) diff --git a/routers/web/auth/linkaccount.go b/routers/web/auth/linkaccount.go index 8dce0a30a4..e6c9089380 100644 --- a/routers/web/auth/linkaccount.go +++ b/routers/web/auth/linkaccount.go @@ -44,6 +44,7 @@ func LinkAccount(ctx *context.Context) { ctx.Data["DisableRegistration"] = setting.Service.DisableRegistration ctx.Data["AllowOnlyInternalRegistration"] = setting.Service.AllowOnlyInternalRegistration ctx.Data["ShowRegistrationButton"] = false + ctx.Data["EnableInternalSignIn"] = true // use this to set the right link into the signIn and signUp templates in the link_account template ctx.Data["SignInLink"] = setting.AppSubURL + "/user/link_account_signin" @@ -122,6 +123,7 @@ func LinkAccountPostSignIn(ctx *context.Context) { ctx.Data["CfTurnstileSitekey"] = setting.Service.CfTurnstileSitekey ctx.Data["DisableRegistration"] = setting.Service.DisableRegistration ctx.Data["ShowRegistrationButton"] = false + ctx.Data["EnableInternalSignIn"] = true // use this to set the right link into the signIn and signUp templates in the link_account template ctx.Data["SignInLink"] = setting.AppSubURL + "/user/link_account_signin" diff --git a/routers/web/auth/password.go b/routers/web/auth/password.go index 363c01c6a8..84f343bfca 100644 --- a/routers/web/auth/password.go +++ b/routers/web/auth/password.go @@ -116,7 +116,7 @@ func commonResetPassword(ctx *context.Context, shouldDeleteToken bool) (*user_mo } // Fail early, don't frustrate the user - u, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.PasswordReset, shouldDeleteToken) + u, deleteToken, err := user_model.VerifyUserAuthorizationToken(ctx, code, auth.PasswordReset) if err != nil { ctx.ServerError("VerifyUserAuthorizationToken", err) return nil, nil @@ -127,6 +127,13 @@ func commonResetPassword(ctx *context.Context, shouldDeleteToken bool) (*user_mo return nil, nil } + if shouldDeleteToken { + if err := deleteToken(); err != nil { + ctx.ServerError("deleteToken", err) + return nil, nil + } + } + twofa, err := auth.GetTwoFactorByUID(ctx, u.ID) if err != nil { if !auth.IsErrTwoFactorNotEnrolled(err) { diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 2feb898224..c2436a1c59 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -21,7 +21,6 @@ import ( "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/gitgraph" "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/markup" @@ -32,6 +31,7 @@ import ( "code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/gitdiff" git_service "code.gitea.io/gitea/services/repository" + "code.gitea.io/gitea/services/repository/gitgraph" ) const ( diff --git a/routers/web/user/setting/profile.go b/routers/web/user/setting/profile.go index 818da9e3fa..33b2919d69 100644 --- a/routers/web/user/setting/profile.go +++ b/routers/web/user/setting/profile.go @@ -106,6 +106,7 @@ func ProfilePost(ctx *context.Context) { Location: optional.Some(form.Location), Visibility: optional.Some(form.Visibility), KeepActivityPrivate: optional.Some(form.KeepActivityPrivate), + KeepPronounsPrivate: optional.Some(form.KeepPronounsPrivate), } if err := user_service.UpdateUser(ctx, ctx.Doer, opts); err != nil { ctx.ServerError("UpdateUser", err) diff --git a/services/context/api.go b/services/context/api.go index 396ceb520f..238313c62c 100644 --- a/services/context/api.go +++ b/services/context/api.go @@ -157,6 +157,17 @@ type swaggerAPIRepoArchivedError struct { Body APIRepoArchivedError `json:"body"` } +type APIInternalServerError struct { + APIError +} + +// APIInternalServerError is an error that is raised when an internal server error occurs +// swagger:response internalServerError +type swaggerAPIInternalServerError struct { + // in:body + Body APIInternalServerError `json:"body"` +} + // ServerError responds with error message, status is 500 func (ctx *APIContext) ServerError(title string, err error) { ctx.Error(http.StatusInternalServerError, title, err) diff --git a/services/context/repo.go b/services/context/repo.go index ff03844c03..8b8359fb70 100644 --- a/services/context/repo.go +++ b/services/context/repo.go @@ -1058,7 +1058,7 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context if refType == RepoRefLegacy { // redirect from old URL scheme to new URL scheme - prefix := strings.TrimPrefix(setting.AppSubURL+strings.ToLower(strings.TrimSuffix(ctx.Req.URL.Path, ctx.Params("*"))), strings.ToLower(ctx.Repo.RepoLink)) + prefix := strings.TrimPrefix(setting.AppSubURL+strings.ToLower(strings.TrimSuffix(ctx.Req.URL.Path, ctx.PathParamRaw("*"))), strings.ToLower(ctx.Repo.RepoLink)) ctx.Redirect(path.Join( ctx.Repo.RepoLink, diff --git a/services/convert/user.go b/services/convert/user.go index 94a400de5d..7b6775dfb4 100644 --- a/services/convert/user.go +++ b/services/convert/user.go @@ -57,7 +57,7 @@ func toUser(ctx context.Context, user *user_model.User, signed, authed bool) *ap Created: user.CreatedUnix.AsTime(), Restricted: user.IsRestricted, Location: user.Location, - Pronouns: user.Pronouns, + Pronouns: user.GetPronouns(signed), Website: user.Website, Description: user.Description, // counter's @@ -97,6 +97,7 @@ func User2UserSettings(user *user_model.User) api.UserSettings { Description: user.Description, Theme: user.Theme, HideEmail: user.KeepEmailPrivate, + HidePronouns: user.KeepPronounsPrivate, HideActivity: user.KeepActivityPrivate, DiffViewStyle: user.DiffViewStyle, EnableRepoUnitHints: user.EnableRepoUnitHints, diff --git a/services/forms/user_form.go b/services/forms/user_form.go index 0d06f4b417..d76e97ceb1 100644 --- a/services/forms/user_form.go +++ b/services/forms/user_form.go @@ -224,6 +224,7 @@ type UpdateProfileForm struct { Biography string `binding:"MaxSize(255)"` Visibility structs.VisibleType KeepActivityPrivate bool + KeepPronounsPrivate bool } // Validate validates the fields diff --git a/modules/gitgraph/graph.go b/services/repository/gitgraph/graph.go similarity index 100% rename from modules/gitgraph/graph.go rename to services/repository/gitgraph/graph.go diff --git a/modules/gitgraph/graph_models.go b/services/repository/gitgraph/graph_models.go similarity index 100% rename from modules/gitgraph/graph_models.go rename to services/repository/gitgraph/graph_models.go diff --git a/modules/gitgraph/graph_test.go b/services/repository/gitgraph/graph_test.go similarity index 100% rename from modules/gitgraph/graph_test.go rename to services/repository/gitgraph/graph_test.go diff --git a/modules/gitgraph/parser.go b/services/repository/gitgraph/parser.go similarity index 100% rename from modules/gitgraph/parser.go rename to services/repository/gitgraph/parser.go diff --git a/services/user/update.go b/services/user/update.go index 26c90505c8..62c30ac05f 100644 --- a/services/user/update.go +++ b/services/user/update.go @@ -40,6 +40,7 @@ type UpdateOptions struct { SetLastLogin bool RepoAdminChangeTeamAccess optional.Option[bool] EnableRepoUnitHints optional.Option[bool] + KeepPronounsPrivate optional.Option[bool] } func UpdateUser(ctx context.Context, u *user_model.User, opts *UpdateOptions) error { @@ -97,6 +98,12 @@ func UpdateUser(ctx context.Context, u *user_model.User, opts *UpdateOptions) er cols = append(cols, "enable_repo_unit_hints") } + if opts.KeepPronounsPrivate.Has() { + u.KeepPronounsPrivate = opts.KeepPronounsPrivate.Value() + + cols = append(cols, "keep_pronouns_private") + } + if opts.AllowGitHook.Has() { u.AllowGitHook = opts.AllowGitHook.Value() diff --git a/templates/admin/auth/list.tmpl b/templates/admin/auth/list.tmpl index c162b7b74d..9c283fe3d8 100644 --- a/templates/admin/auth/list.tmpl +++ b/templates/admin/auth/list.tmpl @@ -30,6 +30,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-pencil"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/emails/list.tmpl b/templates/admin/emails/list.tmpl index b07c6fcc01..8796794aee 100644 --- a/templates/admin/emails/list.tmpl +++ b/templates/admin/emails/list.tmpl @@ -66,6 +66,8 @@ + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/notice.tmpl b/templates/admin/notice.tmpl index 04a0b64432..4f8783dd42 100644 --- a/templates/admin/notice.tmpl +++ b/templates/admin/notice.tmpl @@ -24,6 +24,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-note" 16}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} {{if .Notices}} diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl index d0805c85bc..b719d259e0 100644 --- a/templates/admin/org/list.tmpl +++ b/templates/admin/org/list.tmpl @@ -66,6 +66,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-pencil"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/packages/list.tmpl b/templates/admin/packages/list.tmpl index aa38731d4f..f22600a449 100644 --- a/templates/admin/packages/list.tmpl +++ b/templates/admin/packages/list.tmpl @@ -74,6 +74,8 @@ {{DateUtils.AbsoluteShort .Version.CreatedUnix}} {{svg "octicon-trash"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl index c4924c3fac..0422705ea9 100644 --- a/templates/admin/repo/list.tmpl +++ b/templates/admin/repo/list.tmpl @@ -86,6 +86,8 @@ {{DateUtils.AbsoluteShort .CreatedUnix}} {{svg "octicon-trash"}} + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/admin/user/list.tmpl b/templates/admin/user/list.tmpl index 9b3447f44a..f4609edbbf 100644 --- a/templates/admin/user/list.tmpl +++ b/templates/admin/user/list.tmpl @@ -109,6 +109,8 @@ + {{else}} + {{ctx.Locale.Tr "no_results_found"}} {{end}} diff --git a/templates/repo/issue/view_title.tmpl b/templates/repo/issue/view_title.tmpl index 936df9d3d2..6f65807b88 100644 --- a/templates/repo/issue/view_title.tmpl +++ b/templates/repo/issue/view_title.tmpl @@ -95,6 +95,11 @@ {{end}} + {{if and .Issue.PullRequest.AllowMaintainerEdit .CanWriteCode}} + + {{ctx.Locale.Tr "repo.pulls.editable"}} + + {{end}} +{{end}} + diff --git a/templates/user/settings/profile.tmpl b/templates/user/settings/profile.tmpl index 4cc30d66cf..503a977158 100644 --- a/templates/user/settings/profile.tmpl +++ b/templates/user/settings/profile.tmpl @@ -120,6 +120,12 @@ {{ctx.Locale.Tr "settings.keep_activity_private"}} {{ctx.Locale.Tr "settings.keep_activity_private.description" (printf "/%s?tab=activity" .SignedUser.Name)}} + + diff --git a/tests/e2e/pr-title.test.e2e.ts b/tests/e2e/pr-title.test.e2e.ts new file mode 100644 index 0000000000..390cc81298 --- /dev/null +++ b/tests/e2e/pr-title.test.e2e.ts @@ -0,0 +1,25 @@ +// Copyright 2025 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: GPL-3.0-or-later + +// @watch start +// templates/repo/issue/view_title.tmpl +// web_src/js/features/repo-issue.js +// @watch end + +import {expect} from '@playwright/test'; +import {save_visual, test} from './utils_e2e.ts'; + +test.use({user: 'user2'}); + +test('PR: title edit', async ({page}) => { + const response = await page.goto('/user2/repo1/pulls/5'); + expect(response?.status()).toBe(200); + + await expect(page.locator('#editable-label')).toBeVisible(); + await save_visual(page); + + // Labels AGit and Editable are hidden when title is in edit mode + await page.locator('#issue-title-edit-show').click(); + await expect(page.locator('#editable-label')).toBeHidden(); + await save_visual(page); +}); diff --git a/tests/e2e/release.test.e2e.ts b/tests/e2e/release.test.e2e.ts index 6d1fff2102..4d916f717e 100644 --- a/tests/e2e/release.test.e2e.ts +++ b/tests/e2e/release.test.e2e.ts @@ -43,10 +43,17 @@ test('External Release Attachments', async ({page, isMobile}) => { // Validate release page and click edit await expect(page).toHaveURL('/user2/repo2/releases'); await expect(page.locator('.download[open] li')).toHaveCount(3); + await expect(page.locator('.download[open] li:nth-of-type(1)')).toContainText('Source code (ZIP)'); + await expect(page.locator('.download[open] li:nth-of-type(1) span[data-tooltip-content]')).toHaveAttribute('data-tooltip-content', 'This attachment is automatically generated.'); await expect(page.locator('.download[open] li:nth-of-type(1) a')).toHaveAttribute('href', '/user2/repo2/archive/2.0.zip'); + await expect(page.locator('.download[open] li:nth-of-type(1) a')).toHaveAttribute('type', 'application/zip'); + await expect(page.locator('.download[open] li:nth-of-type(2)')).toContainText('Source code (TAR.GZ)'); + await expect(page.locator('.download[open] li:nth-of-type(2) span[data-tooltip-content]')).toHaveAttribute('data-tooltip-content', 'This attachment is automatically generated.'); await expect(page.locator('.download[open] li:nth-of-type(2) a')).toHaveAttribute('href', '/user2/repo2/archive/2.0.tar.gz'); + await expect(page.locator('.download[open] li:nth-of-type(2) a')).toHaveAttribute('type', 'application/gzip'); + await expect(page.locator('.download[open] li:nth-of-type(3)')).toContainText('Test'); await expect(page.locator('.download[open] li:nth-of-type(3) a')).toHaveAttribute('href', 'https://forgejo.org/'); await save_visual(page); diff --git a/tests/integration/api_comment_test.go b/tests/integration/api_comment_test.go index a53b56d783..c6905293d0 100644 --- a/tests/integration/api_comment_test.go +++ b/tests/integration/api_comment_test.go @@ -25,6 +25,8 @@ import ( "github.com/stretchr/testify/require" ) +const IssueIDNotExist = 10000 + func TestAPIListRepoComments(t *testing.T) { defer tests.PrepareTestEnv(t)() @@ -89,6 +91,10 @@ func TestAPIListIssueComments(t *testing.T) { expectedCount := unittest.GetCount(t, &issues_model.Comment{IssueID: issue.ID}, unittest.Cond("type = ?", issues_model.CommentTypeComment)) assert.Len(t, comments, expectedCount) + + req = NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/%d/comments", repoOwner.Name, repo.Name, IssueIDNotExist). + AddTokenAuth(token) + MakeRequest(t, req, http.StatusNotFound) } func TestAPICreateComment(t *testing.T) { @@ -111,6 +117,13 @@ func TestAPICreateComment(t *testing.T) { DecodeJSON(t, resp, &updatedComment) assert.EqualValues(t, commentBody, updatedComment.Body) unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{ID: updatedComment.ID, IssueID: issue.ID, Content: commentBody}) + + urlStr = fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/comments", + repoOwner.Name, repo.Name, IssueIDNotExist) + req = NewRequestWithValues(t, "POST", urlStr, map[string]string{ + "body": commentBody, + }).AddTokenAuth(token) + MakeRequest(t, req, http.StatusNotFound) } func TestAPICreateCommentAutoDate(t *testing.T) { @@ -464,4 +477,7 @@ func TestAPIListIssueTimeline(t *testing.T) { DecodeJSON(t, resp, &comments) expectedCount := unittest.GetCount(t, &issues_model.Comment{IssueID: issue.ID}) assert.Len(t, comments, expectedCount) + + req = NewRequestf(t, "GET", "/api/v1/repos/%s/%s/issues/%d/timeline", repoOwner.Name, repo.Name, IssueIDNotExist) + MakeRequest(t, req, http.StatusNotFound) } diff --git a/tests/integration/auth_ldap_test.go b/tests/integration/auth_ldap_test.go index 62a7d18904..e8b38afeb1 100644 --- a/tests/integration/auth_ldap_test.go +++ b/tests/integration/auth_ldap_test.go @@ -283,7 +283,7 @@ func TestLDAPUserSyncWithEmptyUsernameAttribute(t *testing.T) { htmlDoc := NewHTMLParser(t, resp.Body) - tr := htmlDoc.doc.Find("table.table tbody tr") + tr := htmlDoc.doc.Find("table.table tbody tr:not(.no-results-row)") assert.Equal(t, 0, tr.Length()) } diff --git a/tests/integration/disable_forgotten_password_test.go b/tests/integration/disable_forgotten_password_test.go new file mode 100644 index 0000000000..8a50c8d409 --- /dev/null +++ b/tests/integration/disable_forgotten_password_test.go @@ -0,0 +1,39 @@ +package integration + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/test" + "code.gitea.io/gitea/tests" +) + +func TestDisableForgottenPasswordFalse(t *testing.T) { + defer tests.PrepareTestEnv(t)() + defer test.MockVariableValue(&setting.Service.EnableInternalSignIn, true)() + + req := NewRequest(t, "GET", "/user/login/") + resp := MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "a[href='/user/forgot_password']", true) +} + +func TestDisableForgottenPasswordTrue(t *testing.T) { + defer tests.PrepareTestEnv(t)() + defer test.MockVariableValue(&setting.Service.EnableInternalSignIn, false)() + + req := NewRequest(t, "GET", "/user/login/") + resp := MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "a[href='/user/forgot_password']", false) +} + +func TestDisableForgottenPasswordDefault(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + req := NewRequest(t, "GET", "/user/login/") + resp := MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "a[href='/user/forgot_password']", true) +} diff --git a/tests/integration/pull_editable_test.go b/tests/integration/pull_editable_test.go new file mode 100644 index 0000000000..dfd634f0b5 --- /dev/null +++ b/tests/integration/pull_editable_test.go @@ -0,0 +1,54 @@ +// Copyright 2025 The Forgejo Authors. All rights reserved. +// SPDX-License-Identifier: GPL-3.0-or-later + +package integration + +import ( + "net/http" + "net/url" + "testing" + + auth_model "code.gitea.io/gitea/models/auth" + api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/gitea/tests" +) + +func TestPullEditable_ShowEditableLabel(t *testing.T) { + onGiteaRun(t, func(t *testing.T, forgejoURL *url.URL) { + t.Run("Show editable label if PR is editable", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + editable := true + + setPREditable(t, editable) + testEditableLabelShown(t, editable) + }) + + t.Run("Don't show editable label if PR is not editable", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + editable := false + + setPREditable(t, editable) + testEditableLabelShown(t, editable) + }) + }) +} + +func setPREditable(t *testing.T, editable bool) { + t.Helper() + session := loginUser(t, "user1") + token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository) + + req := NewRequestWithJSON(t, "PATCH", "/api/v1/repos/user2/repo1/pulls/3", &api.EditPullRequestOption{ + AllowMaintainerEdit: &editable, + }).AddTokenAuth(token) + session.MakeRequest(t, req, http.StatusCreated) +} + +func testEditableLabelShown(t *testing.T, expectLabel bool) { + t.Helper() + session := loginUser(t, "user2") + req := NewRequest(t, "GET", "/user2/repo1/pulls/3") + resp := session.MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "#editable-label", expectLabel) +} diff --git a/tests/integration/user_redirect_test.go b/tests/integration/user_redirect_test.go index fef0c7cb67..2235876859 100644 --- a/tests/integration/user_redirect_test.go +++ b/tests/integration/user_redirect_test.go @@ -167,7 +167,7 @@ func TestUserRedirect(t *testing.T) { defer test.MockVariableValue(&setting.Service.UsernameCooldownPeriod, 8)() defer tests.PrintCurrentTest(t)() - assert.Contains(t, getPrompt(t), "The old username will be available to everyone after a cooldown period of 8 days, you can still reclaim the old username during the cooldown period.") + assert.Contains(t, getPrompt(t), "The old organization name will be available to everyone after a cooldown period of 8 days, you can still reclaim the old name during the cooldown period.") }) }) } diff --git a/tests/integration/user_test.go b/tests/integration/user_test.go index d2b5f112a3..04ba690886 100644 --- a/tests/integration/user_test.go +++ b/tests/integration/user_test.go @@ -438,8 +438,16 @@ func TestUserHints(t *testing.T) { func TestUserPronouns(t *testing.T) { defer tests.PrepareTestEnv(t)() - session := loginUser(t, "user2") - token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser) + // user1 is admin, using user2 and user10 respectively instead. + // This is explicitly mentioned here because of the unconventional + // variable naming scheme. + firstUserSession := loginUser(t, "user2") + firstUserToken := getTokenForLoggedInUser(t, firstUserSession, auth_model.AccessTokenScopeWriteUser) + + // This user has the HidePronouns setting enabled. + // Check the fixture! + secondUserSession := loginUser(t, "user10") + secondUserToken := getTokenForLoggedInUser(t, secondUserSession, auth_model.AccessTokenScopeWriteUser) adminUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{IsAdmin: true}) adminSession := loginUser(t, adminUser.Name) @@ -449,8 +457,10 @@ func TestUserPronouns(t *testing.T) { t.Run("user", func(t *testing.T) { defer tests.PrintCurrentTest(t)() - req := NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(token) - resp := MakeRequest(t, req, http.StatusOK) + // secondUserToken was chosen arbitrarily and should have no impact. + // See next comment. + req := NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(secondUserToken) + resp := firstUserSession.MakeRequest(t, req, http.StatusOK) // We check the raw JSON, because we want to test the response, not // what it decodes into. Contents doesn't matter, we're testing the @@ -468,16 +478,22 @@ func TestUserPronouns(t *testing.T) { // what it decodes into. Contents doesn't matter, we're testing the // presence only. assert.Contains(t, resp.Body.String(), `"pronouns":`) + + req = NewRequest(t, "GET", "/api/v1/users/user10") + resp = MakeRequest(t, req, http.StatusOK) + + // Same deal here. + assert.Contains(t, resp.Body.String(), `"pronouns":`) }) t.Run("user/settings", func(t *testing.T) { defer tests.PrintCurrentTest(t)() - // Set pronouns first + // Set pronouns first for user2 pronouns := "they/them" req := NewRequestWithJSON(t, "PATCH", "/api/v1/user/settings", &api.UserSettingsOptions{ Pronouns: &pronouns, - }).AddTokenAuth(token) + }).AddTokenAuth(firstUserToken) resp := MakeRequest(t, req, http.StatusOK) // Verify the response @@ -486,7 +502,7 @@ func TestUserPronouns(t *testing.T) { assert.Equal(t, pronouns, user.Pronouns) // Verify retrieving the settings again - req = NewRequest(t, "GET", "/api/v1/user/settings").AddTokenAuth(token) + req = NewRequest(t, "GET", "/api/v1/user/settings").AddTokenAuth(firstUserToken) resp = MakeRequest(t, req, http.StatusOK) DecodeJSON(t, resp, &user) @@ -497,22 +513,40 @@ func TestUserPronouns(t *testing.T) { defer tests.PrintCurrentTest(t)() // Set the pronouns for user2 - pronouns := "she/her" + pronouns := "he/him" req := NewRequestWithJSON(t, "PATCH", "/api/v1/admin/users/user2", &api.EditUserOption{ Pronouns: &pronouns, }).AddTokenAuth(adminToken) resp := MakeRequest(t, req, http.StatusOK) // Verify the API response - var user *api.User - DecodeJSON(t, resp, &user) - assert.Equal(t, pronouns, user.Pronouns) + var user2 *api.User + DecodeJSON(t, resp, &user2) + assert.Equal(t, pronouns, user2.Pronouns) - // Verify via user2 too - req = NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(token) + // Verify via user2 + req = NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(firstUserToken) resp = MakeRequest(t, req, http.StatusOK) - DecodeJSON(t, resp, &user) - assert.Equal(t, pronouns, user.Pronouns) + DecodeJSON(t, resp, &user2) + assert.Equal(t, pronouns, user2.Pronouns) // TODO: This fails for some reason + + // Set the pronouns for user10 + pronouns = "he/him" + req = NewRequestWithJSON(t, "PATCH", "/api/v1/admin/users/user10", &api.EditUserOption{ + Pronouns: &pronouns, + }).AddTokenAuth(adminToken) + resp = MakeRequest(t, req, http.StatusOK) + + // Verify the API response + var user10 *api.User + DecodeJSON(t, resp, &user10) + assert.Equal(t, pronouns, user10.Pronouns) + + // Verify via user10 + req = NewRequest(t, "GET", "/api/v1/user").AddTokenAuth(secondUserToken) + resp = MakeRequest(t, req, http.StatusOK) + DecodeJSON(t, resp, &user10) + assert.Equal(t, pronouns, user10.Pronouns) }) }) @@ -520,10 +554,10 @@ func TestUserPronouns(t *testing.T) { defer tests.PrintCurrentTest(t)() // Set the pronouns to a known state via the API - pronouns := "she/her" + pronouns := "they/them" req := NewRequestWithJSON(t, "PATCH", "/api/v1/user/settings", &api.UserSettingsOptions{ Pronouns: &pronouns, - }).AddTokenAuth(token) + }).AddTokenAuth(firstUserToken) MakeRequest(t, req, http.StatusOK) t.Run("profile view", func(t *testing.T) { @@ -534,14 +568,14 @@ func TestUserPronouns(t *testing.T) { htmlDoc := NewHTMLParser(t, resp.Body) userNameAndPronouns := strings.TrimSpace(htmlDoc.Find(".profile-avatar-name .username").Text()) - assert.Contains(t, userNameAndPronouns, pronouns) + assert.NotContains(t, userNameAndPronouns, pronouns) }) t.Run("settings", func(t *testing.T) { defer tests.PrintCurrentTest(t)() req := NewRequest(t, "GET", "/user/settings") - resp := session.MakeRequest(t, req, http.StatusOK) + resp := firstUserSession.MakeRequest(t, req, http.StatusOK) htmlDoc := NewHTMLParser(t, resp.Body) // Check that the field is present @@ -550,12 +584,12 @@ func TestUserPronouns(t *testing.T) { assert.Equal(t, pronouns, pronounField) // Check that updating the field works - newPronouns := "they/them" + newPronouns := "she/her" req = NewRequestWithValues(t, "POST", "/user/settings", map[string]string{ - "_csrf": GetCSRF(t, session, "/user/settings"), + "_csrf": GetCSRF(t, firstUserSession, "/user/settings"), "pronouns": newPronouns, }) - session.MakeRequest(t, req, http.StatusSeeOther) + firstUserSession.MakeRequest(t, req, http.StatusSeeOther) user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "user2"}) assert.Equal(t, newPronouns, user2.Pronouns) @@ -886,11 +920,27 @@ func TestUserActivate(t *testing.T) { assert.False(t, authToken.IsExpired()) assert.EqualValues(t, authToken.HashedValidator, auth_model.HashValidator(rawValidator)) - req = NewRequest(t, "POST", "/user/activate?code="+code) - session.MakeRequest(t, req, http.StatusOK) + t.Run("No password", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() - unittest.AssertNotExistsBean(t, &auth_model.AuthorizationToken{ID: authToken.ID}) - unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "doesnotexist", IsActive: true}) + req = NewRequest(t, "POST", "/user/activate?code="+code) + session.MakeRequest(t, req, http.StatusOK) + + unittest.AssertExistsIf(t, true, &auth_model.AuthorizationToken{ID: authToken.ID}) + unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "doesnotexist"}, "is_active = false") + }) + + t.Run("With password", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + req = NewRequestWithValues(t, "POST", "/user/activate?code="+code, map[string]string{ + "password": "examplePassword!1", + }) + session.MakeRequest(t, req, http.StatusSeeOther) + + unittest.AssertExistsIf(t, false, &auth_model.AuthorizationToken{ID: authToken.ID}) + unittest.AssertExistsAndLoadBean(t, &user_model.User{Name: "doesnotexist"}, "is_active = true") + }) } func TestUserPasswordReset(t *testing.T) { diff --git a/web_src/fomantic/package-lock.json b/web_src/fomantic/package-lock.json index 379181e2db..1f39fad1c0 100644 --- a/web_src/fomantic/package-lock.json +++ b/web_src/fomantic/package-lock.json @@ -132,16 +132,16 @@ } }, "node_modules/@octokit/core": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.3.tgz", - "integrity": "sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz", + "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==", "license": "MIT", "peer": true, "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.1.2", - "@octokit/request": "^9.1.4", - "@octokit/request-error": "^6.1.6", + "@octokit/request": "^9.2.1", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" @@ -161,9 +161,9 @@ } }, "node_modules/@octokit/core/node_modules/@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "license": "MIT", "peer": true, "dependencies": { @@ -182,14 +182,14 @@ "peer": true }, "node_modules/@octokit/core/node_modules/@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "license": "MIT", "peer": true, "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" @@ -199,9 +199,9 @@ } }, "node_modules/@octokit/core/node_modules/@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "license": "MIT", "peer": true, "dependencies": { @@ -253,13 +253,13 @@ "license": "ISC" }, "node_modules/@octokit/graphql": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.0.tgz", - "integrity": "sha512-gejfDywEml/45SqbWTWrhfwvLBrcGYhOn50sPOjIeVvH6i7D16/9xcFA8dAJNp2HMcd+g4vru41g4E2RBiZvfQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz", + "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==", "license": "MIT", "peer": true, "dependencies": { - "@octokit/request": "^9.1.4", + "@octokit/request": "^9.2.2", "@octokit/types": "^13.8.0", "universal-user-agent": "^7.0.0" }, @@ -268,9 +268,9 @@ } }, "node_modules/@octokit/graphql/node_modules/@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "license": "MIT", "peer": true, "dependencies": { @@ -289,14 +289,14 @@ "peer": true }, "node_modules/@octokit/graphql/node_modules/@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "license": "MIT", "peer": true, "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" @@ -306,9 +306,9 @@ } }, "node_modules/@octokit/graphql/node_modules/@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "license": "MIT", "peer": true, "dependencies": { @@ -494,9 +494,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", - "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -513,12 +513,12 @@ } }, "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz", + "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==", "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/accord": { @@ -1211,9 +1211,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -1249,9 +1249,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001696", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", - "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "funding": [ { "type": "opencollective", @@ -1993,9 +1993,9 @@ } }, "node_modules/editorconfig/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -2005,9 +2005,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.90", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", - "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", + "version": "1.5.101", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", + "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -4998,16 +4998,16 @@ "license": "MIT" }, "node_modules/js-beautify": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", - "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.3.tgz", + "integrity": "sha512-rKKGuyTxGNlyN4EQKWzNndzXpi0bOl8Gl8YQAW1as/oMz0XhD6sHJO1hTvoBDOSzKuJb9WkwoAb34FfdkKMv2A==", "license": "MIT", "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", - "glob": "^10.3.3", + "glob": "^10.4.2", "js-cookie": "^3.0.5", - "nopt": "^7.2.0" + "nopt": "^8.0.0" }, "bin": { "css-beautify": "js/bin/css-beautify.js", @@ -5996,18 +5996,18 @@ } }, "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/normalize-package-data": { diff --git a/web_src/js/components/RepoActionView.vue b/web_src/js/components/RepoActionView.vue index 136ad3693d..a324b522d5 100644 --- a/web_src/js/components/RepoActionView.vue +++ b/web_src/js/components/RepoActionView.vue @@ -30,7 +30,6 @@ const sfc = { intervalID: null, currentJobStepsStates: [], artifacts: [], - onHoverRerunIndex: -1, menuVisible: false, isFullScreen: false, timeVisible: { @@ -457,13 +456,13 @@ export function initRepositoryActionView() {
- +
{{ job.name }}
- + {{ job.duration }}
diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 00154eaf4c..c28bf08442 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -631,9 +631,11 @@ export function initRepoIssueTitleEdit() { const issueTitleInput = issueTitleEditor.querySelector('input'); const oldTitle = issueTitleInput.getAttribute('data-old-title'); + const normalModeElements = [issueTitleDisplay, '#pull-desc-display', '#agit-label', '#editable-label']; issueTitleDisplay.querySelector('#issue-title-edit-show').addEventListener('click', () => { - hideElem(issueTitleDisplay); - hideElem('#pull-desc-display'); + for (const element of normalModeElements) { + hideElem(element); + } showElem(issueTitleEditor); showElem('#pull-desc-editor'); if (!issueTitleInput.value.trim()) { @@ -644,8 +646,9 @@ export function initRepoIssueTitleEdit() { issueTitleEditor.querySelector('.ui.cancel.button').addEventListener('click', () => { hideElem(issueTitleEditor); hideElem('#pull-desc-editor'); - showElem(issueTitleDisplay); - showElem('#pull-desc-display'); + for (const element of normalModeElements) { + showElem(element); + } }); const pullDescEditor = document.querySelector('#pull-desc-editor'); // it may not exist for a merged PR