diff --git a/.forgejo/workflows/e2e.yml b/.forgejo/workflows/e2e.yml index c1321b0a8e..cda9991027 100644 --- a/.forgejo/workflows/e2e.yml +++ b/.forgejo/workflows/e2e.yml @@ -4,8 +4,10 @@ on: pull_request: paths: - Makefile + - playwright.config.js - .forgejo/workflows/e2e.yml - tests/e2e/** + - web_src/js/** jobs: test-e2e: diff --git a/.forgejo/workflows/testing.yml b/.forgejo/workflows/testing.yml index 7eb40fec8c..a0736434d2 100644 --- a/.forgejo/workflows/testing.yml +++ b/.forgejo/workflows/testing.yml @@ -25,7 +25,7 @@ jobs: go-version: "1.22" check-latest: true - run: make deps-backend deps-tools - - run: make --always-make -j$(nproc) lint-backend checks-backend # ensure the "go-licenses" make target runs + - run: make --always-make -j$(nproc) lint-backend tidy-check swagger-check fmt-check swagger-validate # ensure the "go-licenses" make target runs frontend-checks: if: ${{ !startsWith(vars.ROLE, 'forgejo-') }} runs-on: docker @@ -49,6 +49,7 @@ jobs: image: elasticsearch:7.17.22 env: discovery.type: single-node + ES_JAVA_OPTS: "-Xms512m -Xmx512m" minio: image: bitnami/minio:2024.3.30 options: >- @@ -168,6 +169,10 @@ jobs: apt-get install --no-install-recommends -qq -y git git-lfs rm /etc/apt/sources.list.d/testing.list apt-get update -qq + wget -O- http://neuro.debian.net/lists/bookworm.de-fzj.libre | tee /etc/apt/sources.list.d/neurodebian.sources.list + apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9 + apt-get update -qq + apt-get install --no-install-recommends -qq -y git-annex-standalone - name: setup user and permissions run: | git config --add safe.directory '*' @@ -217,6 +222,10 @@ jobs: apt-get install --no-install-recommends -qq -y git git-lfs rm /etc/apt/sources.list.d/testing.list apt-get update -qq + wget -O- http://neuro.debian.net/lists/bookworm.de-fzj.libre | tee /etc/apt/sources.list.d/neurodebian.sources.list + apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9 + apt-get update -qq + apt-get install --no-install-recommends -qq -y git-annex-standalone - name: setup user and permissions run: | git config --add safe.directory '*' @@ -255,6 +264,10 @@ jobs: apt-get install --no-install-recommends -qq -y git git-lfs rm /etc/apt/sources.list.d/testing.list apt-get update -qq + wget -O- http://neuro.debian.net/lists/bookworm.de-fzj.libre | tee /etc/apt/sources.list.d/neurodebian.sources.list + apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9 + apt-get update -qq + apt-get install --no-install-recommends -qq -y git-annex-standalone - name: setup user and permissions run: | git config --add safe.directory '*' @@ -274,3 +287,22 @@ jobs: RACE_ENABLED: true TEST_TAGS: sqlite sqlite_unlock_notify USE_REPO_TEST_DIR: 1 + security-check: + if: ${{ !startsWith(vars.ROLE, 'forgejo-') }} + runs-on: docker + needs: + - test-sqlite + - test-pgsql + - test-mysql + - test-remote-cacher + - test-unit + container: + image: 'docker.io/node:20-bookworm' + steps: + - uses: https://code.forgejo.org/actions/checkout@v3 + - uses: https://code.forgejo.org/actions/setup-go@v4 + with: + go-version: "1.22" + check-latest: true + - run: make deps-backend deps-tools + - run: make security-check diff --git a/Dockerfile b/Dockerfile index eba2fb97d3..b97ee4b6ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -78,6 +78,7 @@ RUN apk --no-cache add \ sqlite \ su-exec \ gnupg \ + git-annex \ && rm -rf /var/cache/apk/* RUN addgroup \ diff --git a/Dockerfile.rootless b/Dockerfile.rootless index e255328052..4e0ce11270 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -71,6 +71,7 @@ RUN apk --no-cache add \ git \ curl \ gnupg \ + git-annex \ && rm -rf /var/cache/apk/* RUN addgroup \ diff --git a/Makefile b/Makefile index 464c86e3b9..0819c914fa 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ self := $(location) @tmpdir=`mktemp --tmpdir -d` ; \ echo Using temporary directory $$tmpdir for test repositories ; \ USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \ - STATUS=$$? ; rm -r "$$tmpdir" ; exit $$STATUS + STATUS=$$? ; chmod -R +w "$$tmpdir" && rm -r "$$tmpdir" ; exit $$STATUS else @@ -581,7 +581,7 @@ tidy-check: tidy go-licenses: $(GO_LICENSE_FILE) $(GO_LICENSE_FILE): go.mod go.sum - -$(GO) run $(GO_LICENSES_PACKAGE) save . --force --save_path=$(GO_LICENSE_TMP_DIR) 2>/dev/null + -$(shell $(GO) env GOROOT)/bin/go run $(GO_LICENSES_PACKAGE) save . --force --save_path=$(GO_LICENSE_TMP_DIR) 2>/dev/null $(GO) run build/generate-go-licenses.go $(GO_LICENSE_TMP_DIR) $(GO_LICENSE_FILE) @rm -rf $(GO_LICENSE_TMP_DIR) diff --git a/cmd/hook.go b/cmd/hook.go index f8184f9697..eec93aece7 100644 --- a/cmd/hook.go +++ b/cmd/hook.go @@ -15,6 +15,7 @@ import ( "time" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/git/pushoptions" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/private" repo_module "code.gitea.io/gitea/modules/repository" @@ -192,7 +193,7 @@ Forgejo or set your environment appropriately.`, "") GitAlternativeObjectDirectories: os.Getenv(private.GitAlternativeObjectDirectories), GitObjectDirectory: os.Getenv(private.GitObjectDirectory), GitQuarantinePath: os.Getenv(private.GitQuarantinePath), - GitPushOptions: pushOptions(), + GitPushOptions: pushoptions.New().ReadEnv().Map(), PullRequestID: prID, DeployKeyID: deployKeyID, ActionPerm: int(actionPerm), @@ -375,7 +376,7 @@ Forgejo or set your environment appropriately.`, "") GitAlternativeObjectDirectories: os.Getenv(private.GitAlternativeObjectDirectories), GitObjectDirectory: os.Getenv(private.GitObjectDirectory), GitQuarantinePath: os.Getenv(private.GitQuarantinePath), - GitPushOptions: pushOptions(), + GitPushOptions: pushoptions.New().ReadEnv().Map(), PullRequestID: prID, PushTrigger: repo_module.PushTrigger(os.Getenv(repo_module.EnvPushTrigger)), } @@ -488,21 +489,6 @@ func hookPrintResults(results []private.HookPostReceiveBranchResult) { } } -func pushOptions() map[string]string { - opts := make(map[string]string) - if pushCount, err := strconv.Atoi(os.Getenv(private.GitPushOptionCount)); err == nil { - for idx := 0; idx < pushCount; idx++ { - opt := os.Getenv(fmt.Sprintf("GIT_PUSH_OPTION_%d", idx)) - key, value, found := strings.Cut(opt, "=") - if !found { - value = "true" - } - opts[key] = value - } - } - return opts -} - func runHookProcReceive(c *cli.Context) error { ctx, cancel := installSignals() defer cancel() @@ -627,6 +613,7 @@ Forgejo or set your environment appropriately.`, "") hookOptions.GitPushOptions = make(map[string]string) if hasPushOptions { + pushOptions := pushoptions.NewFromMap(&hookOptions.GitPushOptions) for { rs, err = readPktLine(ctx, reader, pktLineTypeUnknown) if err != nil { @@ -636,12 +623,7 @@ Forgejo or set your environment appropriately.`, "") if rs.Type == pktLineTypeFlush { break } - - key, value, found := strings.Cut(string(rs.Data), "=") - if !found { - value = "true" - } - hookOptions.GitPushOptions[key] = value + pushOptions.Parse(string(rs.Data)) } } diff --git a/cmd/hook_test.go b/cmd/hook_test.go index 91731f77c0..36149eb91f 100644 --- a/cmd/hook_test.go +++ b/cmd/hook_test.go @@ -15,7 +15,6 @@ import ( "testing" "time" - "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/test" @@ -164,20 +163,6 @@ func TestDelayWriter(t *testing.T) { }) } -func TestPushOptions(t *testing.T) { - require.NoError(t, os.Setenv(private.GitPushOptionCount, "3")) - require.NoError(t, os.Setenv("GIT_PUSH_OPTION_0", "force-push")) - require.NoError(t, os.Setenv("GIT_PUSH_OPTION_1", "option=value")) - require.NoError(t, os.Setenv("GIT_PUSH_OPTION_2", "option-double=another=value")) - require.NoError(t, os.Setenv("GIT_PUSH_OPTION_3", "not=valid")) - - assert.Equal(t, map[string]string{ - "force-push": "true", - "option": "value", - "option-double": "another=value", - }, pushOptions()) -} - func TestRunHookUpdate(t *testing.T) { app := cli.NewApp() app.Commands = []*cli.Command{subcmdHookUpdate} diff --git a/cmd/serv.go b/cmd/serv.go index 0e3006b36b..2aa720bebc 100644 --- a/cmd/serv.go +++ b/cmd/serv.go @@ -38,6 +38,7 @@ import ( const ( lfsAuthenticateVerb = "git-lfs-authenticate" + gitAnnexShellVerb = "git-annex-shell" ) // CmdServ represents the available serv sub-command. @@ -79,6 +80,7 @@ var ( "git-upload-archive": perm.AccessModeRead, "git-receive-pack": perm.AccessModeWrite, lfsAuthenticateVerb: perm.AccessModeNone, + gitAnnexShellVerb: perm.AccessModeNone, // annex permissions are enforced by GIT_ANNEX_SHELL_READONLY, rather than the Gitea API } alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`) ) @@ -194,6 +196,7 @@ func runServ(c *cli.Context) error { verb := words[0] repoPath := words[1] + if repoPath[0] == '/' { repoPath = repoPath[1:] } @@ -209,6 +212,28 @@ func runServ(c *cli.Context) error { } } + if verb == gitAnnexShellVerb { + if !setting.Annex.Enabled { + return fail(ctx, "Unknown git command", "git-annex request over SSH denied, git-annex support is disabled") + } + + if len(words) < 3 { + return fail(ctx, "Too few arguments", "Too few arguments in cmd: %s", cmd) + } + + // git-annex always puts the repo in words[2], unlike most other + // git subcommands; and it sometimes names repos like /~/, as if + // $HOME should get expanded while also being rooted. e.g.: + // git-annex-shell 'configlist' '/~/user/repo' + // git-annex-shell 'sendkey' '/user/repo 'key' + repoPath = words[2] + repoPath = strings.TrimPrefix(repoPath, "/") + repoPath = strings.TrimPrefix(repoPath, "~/") + } + + // prevent directory traversal attacks + repoPath = filepath.Clean("/" + repoPath)[1:] + rr := strings.SplitN(repoPath, "/", 2) if len(rr) != 2 { return fail(ctx, "Invalid repository path", "Invalid repository path: %v", repoPath) @@ -222,6 +247,18 @@ func runServ(c *cli.Context) error { // so that username and reponame are not affected. repoPath = strings.ToLower(strings.TrimSpace(repoPath)) + // put the sanitized repoPath back into the argument list for later + if verb == gitAnnexShellVerb { + // git-annex-shell demands an absolute path + absRepoPath, err := filepath.Abs(filepath.Join(setting.RepoRootPath, repoPath)) + if err != nil { + return fail(ctx, "Error locating repoPath", "%v", err) + } + words[2] = absRepoPath + } else { + words[1] = repoPath + } + if alphaDashDotPattern.MatchString(reponame) { return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame) } @@ -300,21 +337,46 @@ func runServ(c *cli.Context) error { return nil } - var gitcmd *exec.Cmd gitBinPath := filepath.Dir(git.GitExecutable) // e.g. /usr/bin gitBinVerb := filepath.Join(gitBinPath, verb) // e.g. /usr/bin/git-upload-pack if _, err := os.Stat(gitBinVerb); err != nil { // if the command "git-upload-pack" doesn't exist, try to split "git-upload-pack" to use the sub-command with git // ps: Windows only has "git.exe" in the bin path, so Windows always uses this way + // ps: git-annex-shell and other extensions may not necessarily be in gitBinPath, + // but '{gitBinPath}/git annex-shell' should be able to find them on $PATH. verbFields := strings.SplitN(verb, "-", 2) if len(verbFields) == 2 { // use git binary with the sub-command part: "C:\...\bin\git.exe", "upload-pack", ... - gitcmd = exec.CommandContext(ctx, git.GitExecutable, verbFields[1], repoPath) + gitBinVerb = git.GitExecutable + words = append([]string{verbFields[1]}, words...) } } - if gitcmd == nil { - // by default, use the verb (it has been checked above by allowedCommands) - gitcmd = exec.CommandContext(ctx, gitBinVerb, repoPath) + + // by default, use the verb (it has been checked above by allowedCommands) + gitcmd := exec.CommandContext(ctx, gitBinVerb, words[1:]...) + + if verb == gitAnnexShellVerb { + // This doesn't get its own isolated section like LFS does, because LFS + // is handled by internal Gitea routines, but git-annex has to be shelled out + // to like other git subcommands, so we need to build up gitcmd. + + // TODO: does this work on Windows? + gitcmd.Env = append(gitcmd.Env, + // "If set, disallows running git-shell to handle unknown commands." + // - git-annex-shell(1) + "GIT_ANNEX_SHELL_LIMITED=True", + // "If set, git-annex-shell will refuse to run commands + // that do not operate on the specified directory." + // - git-annex-shell(1) + fmt.Sprintf("GIT_ANNEX_SHELL_DIRECTORY=%s", words[2]), + ) + if results.UserMode < perm.AccessModeWrite { + // "If set, disallows any action that could modify the git-annex repository." + // - git-annex-shell(1) + // We set this when the backend API has told us that we don't have write permission to this repo. + log.Debug("Setting GIT_ANNEX_SHELL_READONLY=True") + gitcmd.Env = append(gitcmd.Env, "GIT_ANNEX_SHELL_READONLY=True") + } } process.SetSysProcAttribute(gitcmd) diff --git a/cmd/web.go b/cmd/web.go index 44babd51c5..661e6d158e 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -9,6 +9,7 @@ import ( "net" "net/http" "os" + "os/exec" "path/filepath" "strconv" "strings" @@ -247,6 +248,12 @@ func runWeb(ctx *cli.Context) error { createPIDFile(ctx.String("pid")) } + if setting.Annex.Enabled { + if _, err := exec.LookPath("git-annex"); err != nil { + log.Fatal("You have enabled git-annex support but git-annex is not installed. Please make sure that Forgejo's PATH contains the git-annex executable.") + } + } + if !setting.InstallLock { if err := serveInstall(ctx); err != nil { return err @@ -311,6 +318,10 @@ func listen(m http.Handler, handleRedirector bool) error { log.Info("LFS server enabled") } + if setting.Annex.Enabled { + log.Info("git-annex enabled") + } + var err error switch setting.Protocol { case setting.HTTP: diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index cdb7629887..cdd0f4d007 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -2646,6 +2646,15 @@ LEVEL = Info ;; override the minio base path if storage type is minio ;MINIO_BASE_PATH = lfs/ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;[annex] +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Whether git-annex is enabled; defaults to false +;ENABLED = false + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; settings for packages, will override storage setting diff --git a/go.mod b/go.mod index 2791a7f5a4..32d8b9b4d7 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module code.gitea.io/gitea go 1.22.0 -toolchain go1.22.4 +toolchain go1.22.5 require ( code.forgejo.org/f3/gof3/v3 v3.4.0 diff --git a/models/actions/schedule_spec_list.go b/models/actions/schedule_spec_list.go index f7dac72f8b..4dc43f975b 100644 --- a/models/actions/schedule_spec_list.go +++ b/models/actions/schedule_spec_list.go @@ -22,6 +22,10 @@ func (specs SpecList) GetScheduleIDs() []int64 { } func (specs SpecList) LoadSchedules(ctx context.Context) error { + if len(specs) == 0 { + return nil + } + scheduleIDs := specs.GetScheduleIDs() schedules, err := GetSchedulesMapByIDs(ctx, scheduleIDs) if err != nil { @@ -50,6 +54,10 @@ func (specs SpecList) GetRepoIDs() []int64 { } func (specs SpecList) LoadRepos(ctx context.Context) error { + if len(specs) == 0 { + return nil + } + repoIDs := specs.GetRepoIDs() repos, err := repo_model.GetRepositoriesMapByIDs(ctx, repoIDs) if err != nil { diff --git a/models/activities/notification.go b/models/activities/notification.go index 8e2b6d6937..09cc640224 100644 --- a/models/activities/notification.go +++ b/models/activities/notification.go @@ -287,13 +287,14 @@ type UserIDCount struct { Count int64 } -// GetUIDsAndNotificationCounts between the two provided times +// GetUIDsAndNotificationCounts returns the unread counts for every user between the two provided times. +// It must return all user IDs which appear during the period, including count=0 for users who have read all. func GetUIDsAndNotificationCounts(ctx context.Context, since, until timeutil.TimeStamp) ([]UserIDCount, error) { - sql := `SELECT user_id, count(*) AS count FROM notification ` + + sql := `SELECT user_id, sum(case when status= ? then 1 else 0 end) AS count FROM notification ` + `WHERE user_id IN (SELECT user_id FROM notification WHERE updated_unix >= ? AND ` + - `updated_unix < ?) AND status = ? GROUP BY user_id` + `updated_unix < ?) GROUP BY user_id` var res []UserIDCount - return res, db.GetEngine(ctx).SQL(sql, since, until, NotificationStatusUnread).Find(&res) + return res, db.GetEngine(ctx).SQL(sql, NotificationStatusUnread, since, until).Find(&res) } // SetIssueReadBy sets issue to be read by given user. diff --git a/models/fixtures/commit_status.yml b/models/fixtures/commit_status.yml index 6b82e3fd67..0ba6caafe9 100644 --- a/models/fixtures/commit_status.yml +++ b/models/fixtures/commit_status.yml @@ -52,3 +52,14 @@ description: My awesome deploy service context: deploy/awesomeness creator_id: 2 + +- + id: 6 + index: 6 + repo_id: 62 + state: "failure" + sha: "774f93df12d14931ea93259ae93418da4482fcc1" + target_url: "/user2/test_workflows/actions" + description: My awesome deploy service + context: deploy/awesomeness + creator_id: 2 diff --git a/models/issues/comment_list.go b/models/issues/comment_list.go index 61ac1c8f56..7a133d1c16 100644 --- a/models/issues/comment_list.go +++ b/models/issues/comment_list.go @@ -23,7 +23,7 @@ func (comments CommentList) LoadPosters(ctx context.Context) error { } posterIDs := container.FilterSlice(comments, func(c *Comment) (int64, bool) { - return c.PosterID, c.Poster == nil && c.PosterID > 0 + return c.PosterID, c.Poster == nil && user_model.IsValidUserID(c.PosterID) }) posterMaps, err := getPostersByIDs(ctx, posterIDs) @@ -33,7 +33,7 @@ func (comments CommentList) LoadPosters(ctx context.Context) error { for _, comment := range comments { if comment.Poster == nil { - comment.Poster = getPoster(comment.PosterID, posterMaps) + comment.PosterID, comment.Poster = user_model.GetUserFromMap(comment.PosterID, posterMaps) } } return nil @@ -165,7 +165,7 @@ func (comments CommentList) loadOldMilestones(ctx context.Context) error { func (comments CommentList) getAssigneeIDs() []int64 { return container.FilterSlice(comments, func(comment *Comment) (int64, bool) { - return comment.AssigneeID, comment.AssigneeID > 0 + return comment.AssigneeID, user_model.IsValidUserID(comment.AssigneeID) }) } @@ -206,11 +206,7 @@ func (comments CommentList) loadAssignees(ctx context.Context) error { } for _, comment := range comments { - comment.Assignee = assignees[comment.AssigneeID] - if comment.Assignee == nil { - comment.AssigneeID = user_model.GhostUserID - comment.Assignee = user_model.NewGhostUser() - } + comment.AssigneeID, comment.Assignee = user_model.GetUserFromMap(comment.AssigneeID, assignees) } return nil } diff --git a/models/issues/comment_list_test.go b/models/issues/comment_list_test.go new file mode 100644 index 0000000000..66037d7358 --- /dev/null +++ b/models/issues/comment_list_test.go @@ -0,0 +1,86 @@ +// Copyright 2024 The Forgejo Authors +// SPDX-License-Identifier: MIT + +package issues + +import ( + "testing" + + "code.gitea.io/gitea/models/db" + repo_model "code.gitea.io/gitea/models/repo" + "code.gitea.io/gitea/models/unittest" + user_model "code.gitea.io/gitea/models/user" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestCommentListLoadUser(t *testing.T) { + assert.NoError(t, unittest.PrepareTestDatabase()) + + issue := unittest.AssertExistsAndLoadBean(t, &Issue{}) + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: issue.RepoID}) + doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) + + for _, testCase := range []struct { + poster int64 + assignee int64 + user *user_model.User + }{ + { + poster: user_model.ActionsUserID, + assignee: user_model.ActionsUserID, + user: user_model.NewActionsUser(), + }, + { + poster: user_model.GhostUserID, + assignee: user_model.GhostUserID, + user: user_model.NewGhostUser(), + }, + { + poster: doer.ID, + assignee: doer.ID, + user: doer, + }, + { + poster: 0, + assignee: 0, + user: user_model.NewGhostUser(), + }, + { + poster: -200, + assignee: -200, + user: user_model.NewGhostUser(), + }, + { + poster: 200, + assignee: 200, + user: user_model.NewGhostUser(), + }, + } { + t.Run(testCase.user.Name, func(t *testing.T) { + comment, err := CreateComment(db.DefaultContext, &CreateCommentOptions{ + Type: CommentTypeComment, + Doer: testCase.user, + Repo: repo, + Issue: issue, + Content: "Hello", + }) + assert.NoError(t, err) + + list := CommentList{comment} + + comment.PosterID = testCase.poster + comment.Poster = nil + assert.NoError(t, list.LoadPosters(db.DefaultContext)) + require.NotNil(t, comment.Poster) + assert.Equal(t, testCase.user.ID, comment.Poster.ID) + + comment.AssigneeID = testCase.assignee + comment.Assignee = nil + assert.NoError(t, list.loadAssignees(db.DefaultContext)) + require.NotNil(t, comment.Assignee) + assert.Equal(t, testCase.user.ID, comment.Assignee.ID) + }) + } +} diff --git a/models/issues/issue_list.go b/models/issues/issue_list.go index fbfa7584a0..fe6c630a31 100644 --- a/models/issues/issue_list.go +++ b/models/issues/issue_list.go @@ -79,7 +79,7 @@ func (issues IssueList) LoadPosters(ctx context.Context) error { } posterIDs := container.FilterSlice(issues, func(issue *Issue) (int64, bool) { - return issue.PosterID, issue.Poster == nil && issue.PosterID > 0 + return issue.PosterID, issue.Poster == nil && user_model.IsValidUserID(issue.PosterID) }) posterMaps, err := getPostersByIDs(ctx, posterIDs) @@ -89,7 +89,7 @@ func (issues IssueList) LoadPosters(ctx context.Context) error { for _, issue := range issues { if issue.Poster == nil { - issue.Poster = getPoster(issue.PosterID, posterMaps) + issue.PosterID, issue.Poster = user_model.GetUserFromMap(issue.PosterID, posterMaps) } } return nil @@ -115,20 +115,6 @@ func getPostersByIDs(ctx context.Context, posterIDs []int64) (map[int64]*user_mo return posterMaps, nil } -func getPoster(posterID int64, posterMaps map[int64]*user_model.User) *user_model.User { - if posterID == user_model.ActionsUserID { - return user_model.NewActionsUser() - } - if posterID <= 0 { - return nil - } - poster, ok := posterMaps[posterID] - if !ok { - return user_model.NewGhostUser() - } - return poster -} - func (issues IssueList) getIssueIDs() []int64 { ids := make([]int64, 0, len(issues)) for _, issue := range issues { diff --git a/models/issues/issue_list_test.go b/models/issues/issue_list_test.go index 10ba38a64b..50bbd5c667 100644 --- a/models/issues/issue_list_test.go +++ b/models/issues/issue_list_test.go @@ -9,9 +9,11 @@ import ( "code.gitea.io/gitea/models/db" issues_model "code.gitea.io/gitea/models/issues" "code.gitea.io/gitea/models/unittest" + user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/setting" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestIssueList_LoadRepositories(t *testing.T) { @@ -78,3 +80,50 @@ func TestIssueList_LoadAttributes(t *testing.T) { assert.Equal(t, issue.ID == 1, issue.IsRead, "unexpected is_read value for issue[%d]", issue.ID) } } + +func TestIssueListLoadUser(t *testing.T) { + assert.NoError(t, unittest.PrepareTestDatabase()) + + issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{}) + doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + + for _, testCase := range []struct { + poster int64 + user *user_model.User + }{ + { + poster: user_model.ActionsUserID, + user: user_model.NewActionsUser(), + }, + { + poster: user_model.GhostUserID, + user: user_model.NewGhostUser(), + }, + { + poster: doer.ID, + user: doer, + }, + { + poster: 0, + user: user_model.NewGhostUser(), + }, + { + poster: -200, + user: user_model.NewGhostUser(), + }, + { + poster: 200, + user: user_model.NewGhostUser(), + }, + } { + t.Run(testCase.user.Name, func(t *testing.T) { + list := issues_model.IssueList{issue} + + issue.PosterID = testCase.poster + issue.Poster = nil + assert.NoError(t, list.LoadPosters(db.DefaultContext)) + require.NotNil(t, issue.Poster) + assert.Equal(t, testCase.user.ID, issue.Poster.ID) + }) + } +} diff --git a/models/user/user.go b/models/user/user.go index 6d8c5fa2b5..56a2bc38ae 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -558,6 +558,7 @@ var ( "captcha", "commits", "debug", + "devtest", "error", "explore", "favicon.ico", @@ -905,6 +906,20 @@ func GetUserByIDs(ctx context.Context, ids []int64) ([]*User, error) { return users, err } +func IsValidUserID(id int64) bool { + return id > 0 || id == GhostUserID || id == ActionsUserID +} + +func GetUserFromMap(id int64, idMap map[int64]*User) (int64, *User) { + if user, ok := idMap[id]; ok { + return id, user + } + if id == ActionsUserID { + return ActionsUserID, NewActionsUser() + } + return GhostUserID, NewGhostUser() +} + // GetPossibleUserByID returns the user if id > 0 or return system usrs if id < 0 func GetPossibleUserByID(ctx context.Context, id int64) (*User, error) { switch id { diff --git a/models/user/user_test.go b/models/user/user_test.go index 7457256017..6d688a694b 100644 --- a/models/user/user_test.go +++ b/models/user/user_test.go @@ -35,6 +35,39 @@ func TestOAuth2Application_LoadUser(t *testing.T) { assert.NotNil(t, user) } +func TestIsValidUserID(t *testing.T) { + assert.False(t, user_model.IsValidUserID(-30)) + assert.False(t, user_model.IsValidUserID(0)) + assert.True(t, user_model.IsValidUserID(user_model.GhostUserID)) + assert.True(t, user_model.IsValidUserID(user_model.ActionsUserID)) + assert.True(t, user_model.IsValidUserID(200)) +} + +func TestGetUserFromMap(t *testing.T) { + id := int64(200) + idMap := map[int64]*user_model.User{ + id: {ID: id}, + } + + ghostID := int64(user_model.GhostUserID) + actionsID := int64(user_model.ActionsUserID) + actualID, actualUser := user_model.GetUserFromMap(-20, idMap) + assert.Equal(t, ghostID, actualID) + assert.Equal(t, ghostID, actualUser.ID) + + actualID, actualUser = user_model.GetUserFromMap(0, idMap) + assert.Equal(t, ghostID, actualID) + assert.Equal(t, ghostID, actualUser.ID) + + actualID, actualUser = user_model.GetUserFromMap(ghostID, idMap) + assert.Equal(t, ghostID, actualID) + assert.Equal(t, ghostID, actualUser.ID) + + actualID, actualUser = user_model.GetUserFromMap(actionsID, idMap) + assert.Equal(t, actionsID, actualID) + assert.Equal(t, actionsID, actualUser.ID) +} + func TestGetUserByName(t *testing.T) { defer tests.AddFixtures("models/user/fixtures/")() assert.NoError(t, unittest.PrepareTestDatabase()) diff --git a/modules/annex/annex.go b/modules/annex/annex.go new file mode 100644 index 0000000000..bab5a7e0b2 --- /dev/null +++ b/modules/annex/annex.go @@ -0,0 +1,160 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +// Unlike modules/lfs, which operates mainly on git.Blobs, this operates on git.TreeEntrys. +// The motivation for this is that TreeEntrys have an easy pointer to the on-disk repo path, +// while blobs do not (in fact, if building with TAGS=gogit, blobs might exist only in a mock +// filesystem, living only in process RAM). We must have the on-disk path to do anything +// useful with git-annex because all of its interesting data is on-disk under .git/annex/. + +package annex + +import ( + "errors" + "fmt" + "os" + "path" + "strings" + + "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" +) + +const ( + // > The maximum size of a pointer file is 32 kb. + // - https://git-annex.branchable.com/internals/pointer_file/ + // It's unclear if that's kilobytes or kibibytes; assuming kibibytes: + blobSizeCutoff = 32 * 1024 +) + +// ErrInvalidPointer occurs if the pointer's value doesn't parse +var ErrInvalidPointer = errors.New("Not a git-annex pointer") + +// Gets the content of the blob as raw text, up to n bytes. +// (the pre-existing blob.GetBlobContent() has a hardcoded 1024-byte limit) +func getBlobContent(b *git.Blob, n int) (string, error) { + dataRc, err := b.DataAsync() + if err != nil { + return "", err + } + defer dataRc.Close() + buf := make([]byte, n) + n, _ = util.ReadAtMost(dataRc, buf) + buf = buf[:n] + return string(buf), nil +} + +func Pointer(blob *git.Blob) (string, error) { + // git-annex doesn't seem fully spec what its pointer are, but + // the fullest description is here: + // https://git-annex.branchable.com/internals/pointer_file/ + + // a pointer can be: + // the original format, generated by `git annex add`: a symlink to '.git/annex/objects/$HASHDIR/$HASHDIR2/$KEY/$KEY' + // the newer, git-lfs influenced, format, generated by `git annex smudge`: a text file containing '/annex/objects/$KEY' + // + // in either case we can extract the $KEY the same way, and we need not actually know if it's a symlink or not because + // git.Blob.DataAsync() works like open() + readlink(), handling both cases in one. + + if blob.Size() > blobSizeCutoff { + // > The maximum size of a pointer file is 32 kb. If it is any longer, it is not considered to be a valid pointer file. + // https://git-annex.branchable.com/internals/pointer_file/ + + // It's unclear to me whether the same size limit applies to symlink-pointers, but it seems sensible to limit them too. + return "", ErrInvalidPointer + } + + pointer, err := getBlobContent(blob, blobSizeCutoff) + if err != nil { + return "", fmt.Errorf("error reading %s: %w", blob.Name(), err) + } + + // the spec says a pointer file can contain multiple lines each with a pointer in them + // but that makes no sense to me, so I'm just ignoring all but the first + lines := strings.Split(pointer, "\n") + if len(lines) < 1 { + return "", ErrInvalidPointer + } + pointer = lines[0] + + // in both the symlink and pointer-file formats, the pointer must have "/annex/" somewhere in it + if !strings.Contains(pointer, "/annex/") { + return "", ErrInvalidPointer + } + + // extract $KEY + pointer = path.Base(strings.TrimSpace(pointer)) + + // ask git-annex's opinion on $KEY + // XXX: this is probably a bit slow, especially if this operation gets run often + // and examinekey is not that strict: + // - it doesn't enforce that the "BACKEND" tag is one it knows, + // - it doesn't enforce that the fields and their format fit the "BACKEND" tag + // so maybe this is a wasteful step + _, examineStderr, err := git.NewCommandContextNoGlobals(git.DefaultContext, "annex", "examinekey").AddDynamicArguments(pointer).RunStdString(&git.RunOpts{Dir: blob.Repo().Path}) + if err != nil { + // TODO: make ErrInvalidPointer into a type capable of wrapping err + if strings.TrimSpace(examineStderr) == "git-annex: bad key" { + return "", ErrInvalidPointer + } + return "", err + } + + return pointer, nil +} + +// return the absolute path of the content pointed to by the annex pointer stored in the git object +// errors if the content is not found in this repo +func ContentLocation(blob *git.Blob) (string, error) { + pointer, err := Pointer(blob) + if err != nil { + return "", err + } + + contentLocation, _, err := git.NewCommandContextNoGlobals(git.DefaultContext, "annex", "contentlocation").AddDynamicArguments(pointer).RunStdString(&git.RunOpts{Dir: blob.Repo().Path}) + if err != nil { + return "", fmt.Errorf("in %s: %s does not seem to be a valid annexed file: %w", blob.Repo().Path, pointer, err) + } + contentLocation = strings.TrimSpace(contentLocation) + contentLocation = path.Clean("/" + contentLocation)[1:] // prevent directory traversals + contentLocation = path.Join(blob.Repo().Path, contentLocation) + + return contentLocation, nil +} + +// returns a stream open to the annex content +func Content(blob *git.Blob) (*os.File, error) { + contentLocation, err := ContentLocation(blob) + if err != nil { + return nil, err + } + + return os.Open(contentLocation) +} + +// whether the object appears to be a valid annex pointer +// does *not* verify if the content is actually in this repo; +// for that, use ContentLocation() +func IsAnnexed(blob *git.Blob) (bool, error) { + if !setting.Annex.Enabled { + return false, nil + } + + // Pointer() is written to only return well-formed pointers + // so the test is just to see if it errors + _, err := Pointer(blob) + if err != nil { + if errors.Is(err, ErrInvalidPointer) { + return false, nil + } + return false, err + } + return true, nil +} + +// IsAnnexRepo determines if repo is a git-annex enabled repository +func IsAnnexRepo(repo *git.Repository) bool { + _, _, err := git.NewCommand(repo.Ctx, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repo.Path}) + return err == nil +} diff --git a/modules/base/tool.go b/modules/base/tool.go index c4c0ec2dfc..35bd880ee5 100644 --- a/modules/base/tool.go +++ b/modules/base/tool.go @@ -21,6 +21,7 @@ import ( "time" "unicode/utf8" + "code.gitea.io/gitea/modules/annex" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" @@ -170,6 +171,12 @@ func Int64sToStrings(ints []int64) []string { // EntryIcon returns the octicon class for displaying files/directories func EntryIcon(entry *git.TreeEntry) string { + isAnnexed, _ := annex.IsAnnexed(entry.Blob()) + if isAnnexed { + // Show git-annex files as binary files to differentiate them from non-annexed files + // TODO: find a more suitable icon, maybe something related to git-annex + return "file-binary" + } switch { case entry.IsLink(): te, _, err := entry.FollowLink() diff --git a/modules/git/blob.go b/modules/git/blob.go index bcecb42e16..34224f6c08 100644 --- a/modules/git/blob.go +++ b/modules/git/blob.go @@ -15,6 +15,10 @@ import ( // This file contains common functions between the gogit and !gogit variants for git Blobs +func (b *Blob) Repo() *Repository { + return b.repo +} + // Name returns name of the tree entry this blob object was created from (or empty string) func (b *Blob) Name() string { return b.name diff --git a/modules/git/blob_gogit.go b/modules/git/blob_gogit.go index 8c79c067c1..7d0f1a950b 100644 --- a/modules/git/blob_gogit.go +++ b/modules/git/blob_gogit.go @@ -14,7 +14,8 @@ import ( // Blob represents a Git object. type Blob struct { - ID ObjectID + ID ObjectID + repo *Repository gogitEncodedObj plumbing.EncodedObject name string diff --git a/modules/git/command.go b/modules/git/command.go index 22cb275ab2..df17c0bc42 100644 --- a/modules/git/command.go +++ b/modules/git/command.go @@ -445,12 +445,13 @@ func (c *Command) RunStdBytes(opts *RunOpts) (stdout, stderr []byte, runErr RunS } // AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests +// It also re-enables git-credential(1), which is used to test git-annex's HTTP support func AllowLFSFiltersArgs() TrustedCmdArgs { // Now here we should explicitly allow lfs filters to run filteredLFSGlobalArgs := make(TrustedCmdArgs, len(globalCommandArgs)) j := 0 for _, arg := range globalCommandArgs { - if strings.Contains(string(arg), "lfs") { + if strings.Contains(string(arg), "lfs") || strings.Contains(string(arg), "credential") { j-- } else { filteredLFSGlobalArgs[j] = arg diff --git a/modules/git/pushoptions/pushoptions.go b/modules/git/pushoptions/pushoptions.go new file mode 100644 index 0000000000..9709a8be79 --- /dev/null +++ b/modules/git/pushoptions/pushoptions.go @@ -0,0 +1,113 @@ +// Copyright twenty-panda +// SPDX-License-Identifier: MIT + +package pushoptions + +import ( + "fmt" + "os" + "strconv" + "strings" +) + +type Key string + +const ( + RepoPrivate = Key("repo.private") + RepoTemplate = Key("repo.template") + AgitTopic = Key("topic") + AgitForcePush = Key("force-push") + AgitTitle = Key("title") + AgitDescription = Key("description") + + envPrefix = "GIT_PUSH_OPTION" + EnvCount = envPrefix + "_COUNT" + EnvFormat = envPrefix + "_%d" +) + +type Interface interface { + ReadEnv() Interface + Parse(string) bool + Map() map[string]string + + ChangeRepoSettings() bool + + Empty() bool + + GetBool(key Key, def bool) bool + GetString(key Key) (val string, ok bool) +} + +type gitPushOptions map[string]string + +func New() Interface { + pushOptions := gitPushOptions(make(map[string]string)) + return &pushOptions +} + +func NewFromMap(o *map[string]string) Interface { + return (*gitPushOptions)(o) +} + +func (o *gitPushOptions) ReadEnv() Interface { + if pushCount, err := strconv.Atoi(os.Getenv(EnvCount)); err == nil { + for idx := 0; idx < pushCount; idx++ { + _ = o.Parse(os.Getenv(fmt.Sprintf(EnvFormat, idx))) + } + } + return o +} + +func (o *gitPushOptions) Parse(data string) bool { + key, value, found := strings.Cut(data, "=") + if !found { + value = "true" + } + switch Key(key) { + case RepoPrivate: + case RepoTemplate: + case AgitTopic: + case AgitForcePush: + case AgitTitle: + case AgitDescription: + default: + return false + } + (*o)[key] = value + return true +} + +func (o gitPushOptions) Map() map[string]string { + return o +} + +func (o gitPushOptions) ChangeRepoSettings() bool { + if o.Empty() { + return false + } + for _, key := range []Key{RepoPrivate, RepoTemplate} { + _, ok := o[string(key)] + if ok { + return true + } + } + return false +} + +func (o gitPushOptions) Empty() bool { + return len(o) == 0 +} + +func (o gitPushOptions) GetBool(key Key, def bool) bool { + if val, ok := o[string(key)]; ok { + if b, err := strconv.ParseBool(val); err == nil { + return b + } + } + return def +} + +func (o gitPushOptions) GetString(key Key) (string, bool) { + val, ok := o[string(key)] + return val, ok +} diff --git a/modules/git/pushoptions/pushoptions_test.go b/modules/git/pushoptions/pushoptions_test.go new file mode 100644 index 0000000000..49bf2d275b --- /dev/null +++ b/modules/git/pushoptions/pushoptions_test.go @@ -0,0 +1,125 @@ +// Copyright twenty-panda +// SPDX-License-Identifier: MIT + +package pushoptions + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEmpty(t *testing.T) { + options := New() + assert.True(t, options.Empty()) + options.Parse(fmt.Sprintf("%v", RepoPrivate)) + assert.False(t, options.Empty()) +} + +func TestToAndFromMap(t *testing.T) { + options := New() + options.Parse(fmt.Sprintf("%v", RepoPrivate)) + actual := options.Map() + expected := map[string]string{string(RepoPrivate): "true"} + assert.EqualValues(t, expected, actual) + assert.EqualValues(t, expected, NewFromMap(&actual).Map()) +} + +func TestChangeRepositorySettings(t *testing.T) { + options := New() + assert.False(t, options.ChangeRepoSettings()) + assert.True(t, options.Parse(fmt.Sprintf("%v=description", AgitDescription))) + assert.False(t, options.ChangeRepoSettings()) + + options.Parse(fmt.Sprintf("%v", RepoPrivate)) + assert.True(t, options.ChangeRepoSettings()) + + options = New() + options.Parse(fmt.Sprintf("%v", RepoTemplate)) + assert.True(t, options.ChangeRepoSettings()) +} + +func TestParse(t *testing.T) { + t.Run("no key", func(t *testing.T) { + options := New() + + val, ok := options.GetString(RepoPrivate) + assert.False(t, ok) + assert.Equal(t, "", val) + + assert.True(t, options.GetBool(RepoPrivate, true)) + assert.False(t, options.GetBool(RepoPrivate, false)) + }) + + t.Run("key=value", func(t *testing.T) { + options := New() + + topic := "TOPIC" + assert.True(t, options.Parse(fmt.Sprintf("%v=%s", AgitTopic, topic))) + val, ok := options.GetString(AgitTopic) + assert.True(t, ok) + assert.Equal(t, topic, val) + }) + + t.Run("key=true", func(t *testing.T) { + options := New() + + assert.True(t, options.Parse(fmt.Sprintf("%v=true", RepoPrivate))) + assert.True(t, options.GetBool(RepoPrivate, false)) + assert.True(t, options.Parse(fmt.Sprintf("%v=TRUE", RepoTemplate))) + assert.True(t, options.GetBool(RepoTemplate, false)) + }) + + t.Run("key=false", func(t *testing.T) { + options := New() + + assert.True(t, options.Parse(fmt.Sprintf("%v=false", RepoPrivate))) + assert.False(t, options.GetBool(RepoPrivate, true)) + }) + + t.Run("key", func(t *testing.T) { + options := New() + + assert.True(t, options.Parse(fmt.Sprintf("%v", RepoPrivate))) + assert.True(t, options.GetBool(RepoPrivate, false)) + }) + + t.Run("unknown keys are ignored", func(t *testing.T) { + options := New() + + assert.True(t, options.Empty()) + assert.False(t, options.Parse("unknown=value")) + assert.True(t, options.Empty()) + }) +} + +func TestReadEnv(t *testing.T) { + t.Setenv(envPrefix+"_0", fmt.Sprintf("%v=true", AgitForcePush)) + t.Setenv(envPrefix+"_1", fmt.Sprintf("%v", RepoPrivate)) + t.Setenv(envPrefix+"_2", fmt.Sprintf("%v=equal=in string", AgitTitle)) + t.Setenv(envPrefix+"_3", "not=valid") + t.Setenv(envPrefix+"_4", fmt.Sprintf("%v=description", AgitDescription)) + t.Setenv(EnvCount, "5") + + options := New().ReadEnv() + + assert.True(t, options.GetBool(AgitForcePush, false)) + assert.True(t, options.GetBool(RepoPrivate, false)) + assert.False(t, options.GetBool(RepoTemplate, false)) + + { + val, ok := options.GetString(AgitTitle) + assert.True(t, ok) + assert.Equal(t, "equal=in string", val) + } + { + val, ok := options.GetString(AgitDescription) + assert.True(t, ok) + assert.Equal(t, "description", val) + } + { + _, ok := options.GetString(AgitTopic) + assert.False(t, ok) + } +} diff --git a/modules/git/repo_blob_gogit.go b/modules/git/repo_blob_gogit.go index 66c8c2775c..4f41c63fbd 100644 --- a/modules/git/repo_blob_gogit.go +++ b/modules/git/repo_blob_gogit.go @@ -17,6 +17,7 @@ func (repo *Repository) getBlob(id ObjectID) (*Blob, error) { return &Blob{ ID: id, + repo: repo, gogitEncodedObj: encodedObj, }, nil } diff --git a/modules/git/tree_entry_gogit.go b/modules/git/tree_entry_gogit.go index eb9b012681..694f806787 100644 --- a/modules/git/tree_entry_gogit.go +++ b/modules/git/tree_entry_gogit.go @@ -89,6 +89,7 @@ func (te *TreeEntry) Blob() *Blob { return &Blob{ ID: ParseGogitHash(te.gogitTreeEntry.Hash), + repo: te.ptree.repo, gogitEncodedObj: encodedObj, name: te.Name(), } diff --git a/modules/lfs/http_client.go b/modules/lfs/http_client.go index f5ddd38b09..7ee2449b0e 100644 --- a/modules/lfs/http_client.go +++ b/modules/lfs/http_client.go @@ -180,6 +180,10 @@ func (c *HTTPClient) performOperation(ctx context.Context, objects []Pointer, dc } } else { link, ok := object.Actions["download"] + if !ok { + // no actions block in response, try legacy response schema + link, ok = object.Links["download"] + } if !ok { log.Debug("%+v", object) return errors.New("missing action 'download'") diff --git a/modules/lfs/http_client_test.go b/modules/lfs/http_client_test.go index 7431132f76..ec90f5375d 100644 --- a/modules/lfs/http_client_test.go +++ b/modules/lfs/http_client_test.go @@ -59,6 +59,17 @@ func lfsTestRoundtripHandler(req *http.Request) *http.Response { }, }, } + } else if strings.Contains(url, "legacy-batch-request-download") { + batchResponse = &BatchResponse{ + Transfer: "dummy", + Objects: []*ObjectResponse{ + { + Links: map[string]*Link{ + "download": {}, + }, + }, + }, + } } else if strings.Contains(url, "valid-batch-request-upload") { batchResponse = &BatchResponse{ Transfer: "dummy", @@ -229,6 +240,11 @@ func TestHTTPClientDownload(t *testing.T) { endpoint: "https://unknown-actions-map.io", expectederror: "missing action 'download'", }, + // case 11 + { + endpoint: "https://legacy-batch-request-download.io", + expectederror: "", + }, } for n, c := range cases { diff --git a/modules/lfs/shared.go b/modules/lfs/shared.go index 80f4fed00d..675d2328b7 100644 --- a/modules/lfs/shared.go +++ b/modules/lfs/shared.go @@ -47,6 +47,7 @@ type BatchResponse struct { type ObjectResponse struct { Pointer Actions map[string]*Link `json:"actions,omitempty"` + Links map[string]*Link `json:"_links,omitempty"` Error *ObjectError `json:"error,omitempty"` } diff --git a/modules/markup/markdown/callout/github.go b/modules/markup/markdown/callout/github.go index 443f6fe2a3..debad42b83 100644 --- a/modules/markup/markdown/callout/github.go +++ b/modules/markup/markdown/callout/github.go @@ -36,6 +36,10 @@ func (g *GitHubCalloutTransformer) Transform(node *ast.Document, reader text.Rea switch v := n.(type) { case *ast.Blockquote: + if v.ChildCount() == 0 { + return ast.WalkContinue, nil + } + // We only want attention blockquotes when the AST looks like: // Text: "[" // Text: "!TYPE" diff --git a/modules/markup/markdown/callout/github_legacy.go b/modules/markup/markdown/callout/github_legacy.go index e9aaecccfb..eb15e1e64c 100644 --- a/modules/markup/markdown/callout/github_legacy.go +++ b/modules/markup/markdown/callout/github_legacy.go @@ -25,6 +25,10 @@ func (g *GitHubLegacyCalloutTransformer) Transform(node *ast.Document, reader te switch v := n.(type) { case *ast.Blockquote: + if v.ChildCount() == 0 { + return ast.WalkContinue, nil + } + // The first paragraph contains the callout type. firstParagraph := v.FirstChild() if firstParagraph.ChildCount() < 1 { diff --git a/modules/markup/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go index 68428552c4..d366d288fa 100644 --- a/modules/markup/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -1210,3 +1210,17 @@ func TestCustomMarkdownURL(t *testing.T) { test("[test](abp)", `

test

`) } + +func TestCallout(t *testing.T) { + setting.AppURL = AppURL + + test := func(input, expected string) { + buffer, err := markdown.RenderString(&markup.RenderContext{ + Ctx: git.DefaultContext, + }, input) + assert.NoError(t, err) + assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(string(buffer))) + } + + test(">\n0", "
\n
\n

0

") +} diff --git a/modules/private/hook.go b/modules/private/hook.go index 1d0ef4e3a9..93cbcd469d 100644 --- a/modules/private/hook.go +++ b/modules/private/hook.go @@ -7,10 +7,10 @@ import ( "context" "fmt" "net/url" - "strconv" "time" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/git/pushoptions" "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" ) @@ -20,28 +20,8 @@ const ( GitAlternativeObjectDirectories = "GIT_ALTERNATE_OBJECT_DIRECTORIES" GitObjectDirectory = "GIT_OBJECT_DIRECTORY" GitQuarantinePath = "GIT_QUARANTINE_PATH" - GitPushOptionCount = "GIT_PUSH_OPTION_COUNT" ) -// GitPushOptions is a wrapper around a map[string]string -type GitPushOptions map[string]string - -// GitPushOptions keys -const ( - GitPushOptionRepoPrivate = "repo.private" - GitPushOptionRepoTemplate = "repo.template" -) - -// Bool checks for a key in the map and parses as a boolean -func (g GitPushOptions) Bool(key string, def bool) bool { - if val, ok := g[key]; ok { - if b, err := strconv.ParseBool(val); err == nil { - return b - } - } - return def -} - // HookOptions represents the options for the Hook calls type HookOptions struct { OldCommitIDs []string @@ -52,7 +32,7 @@ type HookOptions struct { GitObjectDirectory string GitAlternativeObjectDirectories string GitQuarantinePath string - GitPushOptions GitPushOptions + GitPushOptions map[string]string PullRequestID int64 PushTrigger repository.PushTrigger DeployKeyID int64 // if the pusher is a DeployKey, then UserID is the repo's org user. @@ -60,6 +40,10 @@ type HookOptions struct { ActionPerm int } +func (o *HookOptions) GetGitPushOptions() pushoptions.Interface { + return pushoptions.NewFromMap(&o.GitPushOptions) +} + // SSHLogOption ssh log options type SSHLogOption struct { IsError bool diff --git a/modules/private/serv.go b/modules/private/serv.go index 480a446954..6c7c753cf0 100644 --- a/modules/private/serv.go +++ b/modules/private/serv.go @@ -40,6 +40,7 @@ type ServCommandResults struct { UserName string UserEmail string UserID int64 + UserMode perm.AccessMode OwnerName string RepoName string RepoID int64 diff --git a/modules/setting/annex.go b/modules/setting/annex.go new file mode 100644 index 0000000000..a0eeac9bb8 --- /dev/null +++ b/modules/setting/annex.go @@ -0,0 +1,20 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package setting + +import ( + "code.gitea.io/gitea/modules/log" +) + +// Annex represents the configuration for git-annex +var Annex = struct { + Enabled bool `ini:"ENABLED"` +}{} + +func loadAnnexFrom(rootCfg ConfigProvider) { + sec := rootCfg.Section("annex") + if err := sec.MapTo(&Annex); err != nil { + log.Fatal("Failed to map Annex settings: %v", err) + } +} diff --git a/modules/setting/i18n.go b/modules/setting/i18n.go index 1639f3ae5b..889e52beb6 100644 --- a/modules/setting/i18n.go +++ b/modules/setting/i18n.go @@ -34,7 +34,6 @@ var defaultI18nLangNames = []string{ "fa-IR", "فارسی", "hu-HU", "Magyar nyelv", "id-ID", "Bahasa Indonesia", - "ml-IN", "മലയാളം", } func defaultI18nLangs() (res []string) { diff --git a/modules/setting/setting.go b/modules/setting/setting.go index a873b92cdf..97fb05403f 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -153,6 +153,7 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error { loadCamoFrom(cfg) loadI18nFrom(cfg) loadGitFrom(cfg) + loadAnnexFrom(cfg) loadMirrorFrom(cfg) loadMarkupFrom(cfg) loadOtherFrom(cfg) diff --git a/modules/util/remove.go b/modules/util/remove.go index d1e38faf5f..265891b307 100644 --- a/modules/util/remove.go +++ b/modules/util/remove.go @@ -4,7 +4,9 @@ package util import ( + "io/fs" "os" + "path/filepath" "runtime" "syscall" "time" @@ -41,10 +43,43 @@ func Remove(name string) error { return err } -// RemoveAll removes the named file or (empty) directory with at most 5 attempts. +// RemoveAll removes the named file or directory with at most 5 attempts. func RemoveAll(name string) error { var err error + for i := 0; i < 5; i++ { + // Do chmod -R +w to help ensure the removal succeeds. + // In particular, in the git-annex case, this handles + // https://git-annex.branchable.com/internals/lockdown/ : + // + // > (The only bad consequence of this is that rm -rf .git + // > doesn't work unless you first run chmod -R +w .git) + + err = filepath.WalkDir(name, func(path string, d fs.DirEntry, err error) error { + // NB: this is called WalkDir but it works on a single file too + if err == nil { + info, err := d.Info() + if err != nil { + return err + } + + // Don't try chmod'ing symlinks (will fail with broken symlinks) + if info.Mode()&os.ModeSymlink != os.ModeSymlink { + // 0200 == u+w, in octal unix permission notation + err = os.Chmod(path, info.Mode()|0o200) + if err != nil { + return err + } + } + } + return nil + }) + if err != nil { + // try again + <-time.After(100 * time.Millisecond) + continue + } + err = os.RemoveAll(name) if err == nil { break diff --git a/options/locale/locale_ar.ini b/options/locale/locale_ar.ini index 7387bca2a4..3056bd5dd5 100644 --- a/options/locale/locale_ar.ini +++ b/options/locale/locale_ar.ini @@ -1165,7 +1165,7 @@ pulls.status_checks_failure = بعض الفحوص فشلت pulls.status_checks_success = جميع الفحوص ناجحة pulls.status_checks_warning = بعض الفحوص تعطي تحذيرات pulls.commit_ref_at = `أشار إلى طلب الدمج من إيداع %[2]s` -pulls.cmd_instruction_hint = `أظهر شرح استخدام سطر الأوامر.` +pulls.cmd_instruction_hint = `أظهر شرح استخدام سطر الأوامر.` pulls.cmd_instruction_checkout_title = اسحب pulls.cmd_instruction_checkout_desc = من مستودع مشروعك، اسحب (check out) فرعا جديدا واختبر التغييرات. pulls.cmd_instruction_merge_title = ادمج @@ -1331,7 +1331,7 @@ admin.new_user.text = من فضلك اضغط هنا لإدار admin.new_user.subject = مستخدم جديد: %s سجل حالاً admin.new_user.user_info = معلومات المستخدم activate_account.text_1 = أهلا يا %[1]s، شكرا لك للتسجيل في %[2]s! -register_notify = أهلا بك في فورجيو +register_notify_prev9 = أهلا بك في فورجيو activate_account = نرجو تفعيل حسابك activate_account.title = يا %s، نرجو منك تفعيل حسابك issue.x_mentioned_you = ذكرك @%s: diff --git a/options/locale/locale_bg.ini b/options/locale/locale_bg.ini index 4e03808c38..4ee716c037 100644 --- a/options/locale/locale_bg.ini +++ b/options/locale/locale_bg.ini @@ -193,7 +193,7 @@ disabled = Изключено licenses = Лицензи sign_in = Вход copy_content = Копиране на съдържанието -user_profile_and_more = Профил и Настройки… +user_profile_and_more = Профил и настройки… view = Преглед your_settings = Настройки mirrors = Огледала @@ -227,7 +227,7 @@ copy = Копиране enabled = Включено new_org = Нова организация milestones = Етапи -rss_feed = RSS Емисия +rss_feed = RSS емисия never = Никога new_project = Нов проект your_starred = Отбелязани @@ -283,6 +283,8 @@ filter.not_mirror = Не огледала copy_hash = Копиране на контролната сума artifacts = Артефакти show_log_seconds = Показване на секундите +remove_all = Премахване на всичко +test = Проба [repo] issues.context.edit = Редактиране @@ -973,7 +975,7 @@ search.results = Резултати от търсенето на "%s" в инструкциите за командния ред.` +pulls.cmd_instruction_hint = `Вижте инструкциите за командния ред.` pulls.showing_only_single_commit = Показани са само промените в подаване %[1]s issues.lock_no_reason = заключи и ограничи обсъждането до сътрудници %s pulls.expand_files = Разгъване на всички файлове @@ -1064,7 +1066,7 @@ diff.review.reject = Поискване на промени diff.bin_not_shown = Двоичният файл не е показан. settings.units.units = Елементи на хранилището settings.delete_notices_fork_1 = - Разклоненията на това хранилище ще станат независими след изтриване. -settings.actions_desc = Включване на интегрираните CI/CD pipelines с Forgejo Действия +settings.actions_desc = Включване на интегрираните CI/CD pipelines с Forgejo Actions settings.packages_desc = Включване на регистъра на пакетите за хранилището settings.units.add_more = Добавяне... settings.use_external_issue_tracker = Използване на външен тракер за задачи @@ -1134,6 +1136,16 @@ pulls.status_checks_failure = Някои проверки са неуспешн issues.review.add_review_request = поиска рецензия от %s %s wiki.no_search_results = Няма резултати wiki.search = Търсене в уикито +issues.author.tooltip.pr = Този потребител е авторът на тази заявка за сливане. +issues.author.tooltip.issue = Този потребител е авторът на тази задача. +issues.review.option.hide_outdated_comments = Скриване на остарели коментари +file.title = %s в %s +issues.review.option.show_outdated_comments = Показване на остарели коментари +issues.content_history.delete_from_history_confirm = Да се изтрие ли от историята? +project = Проекти +issues.content_history.delete_from_history = Изтриване от историята +n_release_few = %s издания +n_release_one = %s издание [modal] confirm = Потвърждаване @@ -1259,7 +1271,7 @@ mailer_password = SMTP парола disable_gravatar = Изключване на Gravatar smtp_addr = SMTP хост smtp_port = SMTP порт -app_name_helper = Можете да въведете името на компанията си тук. +app_name_helper = Въведете името на инстанцията си тук. Ще се показва на всяка страница. admin_title = Настройки на администраторския акаунт err_empty_admin_password = Администраторската парола не може да бъде празна. docker_helper = Ако стартирате Forgejo в Docker, моля, прочетете документацията преди да промените настройки. @@ -1285,7 +1297,7 @@ issue.in_tree_path = В %s: release.note = Бележка: hi_user_x = Здравейте %s, admin.new_user.user_info = Информация за потребителя -register_notify = Добре дошли във Forgejo +register_notify_prev9 = Добре дошли във Forgejo issue.action.new = @%[1]s създаде #%[2]d. issue.action.review = @%[1]s коментира в тази заявка за сливане. issue.action.reopen = @%[1]s отвори наново #%[2]d. @@ -1318,13 +1330,17 @@ email_visibility.private = Вашият адрес на ел. поща е вид show_on_map = Показване на това място на картата followers_one = %d последовател following_one = %d следван +followers.title.few = Последователи +followers.title.one = Последовател +following.title.one = Следван +following.title.few = Следвани [home] filter = Други филтри show_archived = Архивирани search_repos = Намиране на хранилище… my_orgs = Организации -uname_holder = Потреб. име или Адрес на ел. поща +uname_holder = Потребителско име или ел. поща my_repos = Хранилища show_both_archived_unarchived = Показване на и архивирани и неархивирани feed_of = Емисия на "%s" @@ -1414,6 +1430,7 @@ orgs.teams = Екипи orgs.members = Участници config_settings = Настройки users.details = Потребителски данни +packages.total_size = Общ размер: %s [error] not_found = Целта не може да бъде намерена. @@ -1509,7 +1526,7 @@ tab_signin = Влизане tab_signup = Регистриране [aria] -footer.software = Относно софтуера +footer.software = Относно този софтуер footer.links = Връзки footer = Долен колонтитул @@ -1622,6 +1639,10 @@ project_kind = Търсене на проекти... package_kind = Търсене на пакети... search = Търсене... branch_kind = Търсене на клонове... +pull_kind = Търсене на заявки за сливане... +issue_kind = Търсене на задачи... +fuzzy = Приблизително +exact = Прецизно [markup] filepreview.lines = Редове от %[1]d до %[2]d в %[3]s diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini index fbfde28fcd..236de83d4d 100644 --- a/options/locale/locale_cs-CZ.ini +++ b/options/locale/locale_cs-CZ.ini @@ -160,6 +160,7 @@ filter.clear = Vymazat filtry more_items = Další položky invalid_data = Neplatná data: %v copy_generic = Kopírovat do schránky +test = Test [aria] navbar=Navigační lišta @@ -191,6 +192,8 @@ buttons.ref.tooltip=Odkázat na problém nebo žádost o sloučení buttons.switch_to_legacy.tooltip=Použít starší editor buttons.enable_monospace_font=Zapnout neproporcionální písmo buttons.disable_monospace_font=Vypnout neproporcionální písmo +buttons.unindent.tooltip = Zrušit vnoření položek pod jednu úroveň +buttons.indent.tooltip = Vnořit položky pod jednu úroveň [filter] string.asc=A – Z @@ -463,6 +466,11 @@ change_unconfirmed_email_summary = Změna e-mailové adresy, na kterou bude odes last_admin=Nelze odstranit posledního správce. Musí existovat alespoň jeden správce. tab_signup = Registrace tab_signin = Přihlášení +hint_login = Již máte účet? Přihlaste se! +hint_register = Nemáte účet? Zaregistrujte se nyní. +sign_up_button = Zaregistrujte se nyní. +back_to_sign_in = Zpět na přihlášení +sign_in_openid = Pokračovat s OpenID [mail] view_it_on=Zobrazit na %s @@ -479,7 +487,7 @@ activate_email=Ověřte vaši e-mailovou adresu activate_email.title=%s, prosím ověřte vaši e-mailovou adresu activate_email.text=Pro aktivaci vašeho účtu do %s klikněte na následující odkaz: -register_notify=Vítejte v Forgejo +register_notify_prev9=Vítejte v Forgejo register_notify.title=%[1]s vítejte v %[2]s register_notify.text_1=toto je váš potvrzovací e-mail pro %s! register_notify.text_2=Do svého účtu se můžete přihlásit svým uživatelským jménem: %s @@ -802,7 +810,7 @@ add_email_success=Nová e-mailová adresa byla přidána. email_preference_set_success=Nastavení e-mailu bylo úspěšně nastaveno. add_openid_success=Nová OpenID adresa byla přidána. keep_email_private=Skrýt e-mailovou adresu -keep_email_private_popup=Toto skryje vaši e-mailovou adresu z vašeho profilu, stejně jako při vytvoření pull requestu nebo úpravě souboru pomocí webového rozhraní. Odeslané commity nebudou změněny. Použijte %s v commitech pro jejich přiřazení k vašemu účtu. +keep_email_private_popup=Tímto skryjete svou e-mailovou adresu ze svého profilu. Nebude již výchozí adresou pro commity provedené skrze webové rozhraní, jako nahrávání a úpravy souborů, a nebude použita pro slučovací commity. Místo toho můžete použít speciální adresu %s pro spojení commitů s vaším účtem. Změna této funkce nebude mít vliv na stávající commity. openid_desc=OpenID vám umožní delegovat ověřování na externího poskytovatele. manage_ssh_keys=Správa klíčů SSH @@ -1015,6 +1023,9 @@ pronouns = Zájmena pronouns_custom = Vlastní pronouns_unspecified = Neurčená language.title = Výchozí jazyk +keep_activity_private.description = Vaše veřejná aktivita bude viditelná pouze vám a správcům instance. +language.description = Tento jazyk bude uložen do vašeho účtu a po přihlášení bude použit jako výchozí. +language.localization_project = Pomozte nám s překladem Forgejo do vašeho jazyka! Více informací. [repo] new_repo_helper=Repozitář obsahuje všechny projektové soubory, včetně historie revizí. Už jej hostujete jinde? Migrovat repozitář. @@ -1275,6 +1286,7 @@ view_git_blame=Zobrazit git blame video_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „video“. audio_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „audio“. stored_lfs=Uloženo pomocí Git LFS +stored_annex=Uloženo pomocí Git Annex symbolic_link=Symbolický odkaz executable_file=Spustitelný soubor vendored=Vendorováno @@ -1300,6 +1312,7 @@ editor.upload_file=Nahrát soubor editor.edit_file=Upravit soubor editor.preview_changes=Náhled změn editor.cannot_edit_lfs_files=LFS soubory nemohou být upravovány přes webové rozhraní. +editor.cannot_edit_annex_files=Annex soubory nemohou být upravovány přes webové rozhraní. editor.cannot_edit_non_text_files=Binární soubory nemohou být upravovány přes webové rozhraní. editor.edit_this_file=Upravit soubor editor.this_file_locked=Soubor je uzamčen @@ -1584,8 +1597,8 @@ issues.reopened_at=`znovu otevřel/a tento problém issues.commit_ref_at=`odkázal/a na tento problém z commitu %[2]s` issues.ref_issue_from=`odkázal/a na tento problém %[4]s %[2]s` issues.ref_pull_from=`odkázal/a na tuto žádost o sloučení %[4]s %[2]s` -issues.ref_closing_from=`odkazoval/a na žádost o sloučení %[4]s, která uzavře tento problém %[2]s` -issues.ref_reopening_from=`odkazoval/a na žádost o sloučení %[4]s, která znovu otevře tento problém %[2]s` +issues.ref_closing_from=`odkazoval/a na tento problém ze žádosti o sloučení %[4]s, která jej uzavře, %[2]s` +issues.ref_reopening_from=`odkazoval/a na tento problém ze žádosti o sloučení %[4]s, která jej znovu otevře, %[2]s` issues.ref_closed_from=`uzavřel/a tento problém %[4]s %[2]s` issues.ref_reopened_from=`znovu otevřel/a tento problém %[4]s %[2]s` issues.ref_from=`z %[1]s` @@ -1894,7 +1907,7 @@ pulls.outdated_with_base_branch=Tato větev je zastaralá oproti základní vět pulls.close=Zavřít žádost o sloučení pulls.closed_at=`uzavřel/a tento požadavek na natažení %[2]s` pulls.reopened_at=`znovuotevřel/a tento požadavek na natažení %[2]s` -pulls.cmd_instruction_hint=`Zobrazit instrukce příkazové řádky.` +pulls.cmd_instruction_hint=Zobrazit instrukce příkazové řádky pulls.cmd_instruction_checkout_desc=Z vašeho repositáře projektu se podívejte na novou větev a vyzkoušejte změny. pulls.cmd_instruction_merge_title=Sloučit pulls.cmd_instruction_merge_desc=Slučte změny a aktualizujte je na Gitea. @@ -2643,7 +2656,7 @@ topic.done=Hotovo topic.count_prompt=Nelze vybrat více než 25 témat topic.format_prompt=Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a tečky („.“) a může být dlouhé až 35 znaků. Písmena musí být malá. -find_file.go_to_file=Přejít na soubor +find_file.go_to_file=Najít soubor find_file.no_matching=Nebyl nalezen žádný odpovídající soubor error.csv.too_large=Tento soubor nelze vykreslit, protože je příliš velký. @@ -2783,6 +2796,9 @@ pulls.edit.already_changed = Nepodařilo se uložit změny v žádosti o slouče comments.edit.already_changed = Nepodařilo se uložit změny v komentáři. Obsah byl nejspíše již změněn jiným uživatelem. Obnovte prosím stránku a zkuste jej znovu upravit, abyste zabránili přepsání změn uživatele subscribe.issue.guest.tooltip = Přihlaste se pro odebírání tohoto problému. subscribe.pull.guest.tooltip = Přihlaste se pro odebírání této žádosti o sloučení. +issues.author.tooltip.pr = Tento uživatel je autorem této žádosti o sloučení. +issues.author.tooltip.issue = Tento uživatel je autorem tohoto problému. +activity.commit = Aktivita commitů [graphs] component_loading_info = Tohle může chvíli trvat… @@ -3047,10 +3063,10 @@ users.update_profile_success=Uživatelský účet byl aktualizován. users.edit_account=Upravit uživatelský účet users.max_repo_creation=Maximální počet repozitářů users.max_repo_creation_desc=(Nastavte na -1 pro použití výchozího systémového limitu.) -users.is_activated=Uživatelský účet je aktivován -users.prohibit_login=Zakázat přihlášení -users.is_admin=Je správce -users.is_restricted=Je omezený +users.is_activated=Aktivovaný účet +users.prohibit_login=Pozastavený účet +users.is_admin=Účet správce +users.is_restricted=Omezený účet users.allow_git_hook=Může vytvářet Git hooks users.allow_git_hook_tooltip=Git hooks jsou spouštěny jako uživatel operačního systému, pod kterým je spuštěno Forgejo, a mají stejnou úroveň přístupu k hostiteli. Výsledkem je, že uživatelé s tímto speciálním oprávněním Git hooks mohou přistupovat ke všem repozitářům Forgejo a upravovat je, stejně jako databázi používanou systémem Forgejo. V důsledku toho mohou také získat oprávnění správce systému Forgejo. users.allow_import_local=Může importovat lokální repozitáře @@ -3100,7 +3116,7 @@ orgs.new_orga=Nová organizace repos.repo_manage_panel=Správa repozitářů repos.unadopted=Nepřijaté repozitáře -repos.unadopted.no_more=Nebyly nalezeny žádné další nepřijaté repositáře +repos.unadopted.no_more=Nebyly nalezeny žádné nepřijaté repositáře. repos.owner=Vlastník repos.name=Název repos.private=Soukromý @@ -3471,6 +3487,16 @@ config_settings = Nastavení auths.tip.gitlab_new = Zaregistrujte si novou aplikaci na https://gitlab.com/-/profile/applications auths.default_domain_name = Výchozí doménové jméno použité pro e-mailovou adresu config.app_slogan = Slogan instance +config.cache_test_succeeded = Test mezipaměti byl úspěšný, odpověď byla obdržena za %s. +config.cache_test = Otestovat mezipaměť +config.cache_test_failed = Nepodařilo se prověřit mezipaměť: %v. +config.cache_test_slow = Test mezipaměti byl úspěšný, ale odpověď byla pomalá: %s. +users.activated.description = Dokončení ověření e-mailu. Majitel neaktivovaného účtu se nebude moci přihlásit, dokud nedokončí ověření e-mailu. +users.block.description = Zablokovat tomuto uživateli interakci s touto službou prostřednictvím jeho účtu a zakázat mu přihlášení. +users.restricted.description = Povolit interakci pouze s repozitáři a organizacemi, kde je uživatel přidán jako spolupracovník. Toto zamezí přístup k veřejným repozitářům na této instanci. +users.organization_creation.description = Povolit vytváření nových organizací. +users.local_import.description = Povolit importování repozitářů z lokálního souborového systému serveru. Toto může být bezpečnostní problém. +users.admin.description = Udělit tomuto uživateli plný přístup ke všem administrativním funkcem dostupným ve webovém rozhraní a v rozhraní API. [action] create_repo=vytvořil/a repozitář %s @@ -3828,6 +3854,13 @@ need_approval_desc = Potřebovat schválení pro spouštění workflowů pro ž runners.runner_manage_panel = Správa runnerů runs.no_job_without_needs = Workflow musí obsahovat alespoň jednu práci bez závislostí. runs.no_job = Workflow musí obsahovat alespoň jednu úlohu +workflow.dispatch.use_from = Použít workflow z +workflow.dispatch.run = Spustit workflow +workflow.dispatch.input_required = Vyžadovaná hodnota pro vstup „%s“. +workflow.dispatch.invalid_input_type = Neplatný typ vstupu „%s“. +workflow.dispatch.warn_input_limit = Zobrazování prvních %d vstupů. +workflow.dispatch.trigger_found = Tento workflow má spouštěč událostí workflow_dispatch. +workflow.dispatch.success = Žádost o spuštění workflow byla úspěšně odeslána. [projects] type-1.display_name=Samostatný projekt @@ -3870,6 +3903,8 @@ exact = Přesné exact_tooltip = Zahrnout pouze výsledky, které přesně odpovídají hledanému výrazu issue_kind = Hledat problémy... pull_kind = Hledat pully... +union = Sdružené +union_tooltip = Zahrnout výsledky, které odpovídají jakýmkoli slovům odděleným mezerami [markup] filepreview.lines = Řádky %[1]d až %[2]d v souboru %[3]s @@ -3884,3 +3919,7 @@ gib = GiB tib = TiB pib = PiB eib = EiB + + +[translation_meta] +test = ok \ No newline at end of file diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini index 2fdca4f1f1..40121e4ff4 100644 --- a/options/locale/locale_de-DE.ini +++ b/options/locale/locale_de-DE.ini @@ -18,8 +18,8 @@ template=Vorlage language=Sprache notifications=Benachrichtigungen active_stopwatch=Aktive Zeiterfassung -create_new=Erstellen… -user_profile_and_more=Profil und Einstellungen… +create_new=Erstellen … +user_profile_and_more=Profil und Einstellungen … signed_in_as=Angemeldet als enable_javascript=Diese Website benötigt JavaScript. toc=Inhaltsverzeichnis @@ -158,6 +158,7 @@ filter.private = Privat more_items = Mehr Einträge invalid_data = Ungültige Daten: %v copy_generic = In die Zwischenablage kopieren +test = Test [aria] navbar=Navigationsleiste @@ -189,6 +190,8 @@ buttons.ref.tooltip=Issue oder Pull-Request referenzieren buttons.switch_to_legacy.tooltip=Legacy-Editor verwenden buttons.enable_monospace_font=Festbreitenschrift aktivieren buttons.disable_monospace_font=Festbreitenschrift deaktivieren +buttons.indent.tooltip = Einträge um eine Ebene verschachteln +buttons.unindent.tooltip = Einträge um eine Ebene entschachteln [filter] string.asc=A–Z @@ -208,11 +211,11 @@ app_desc=Ein einfacher, selbst gehosteter Git-Service install=Einfach zu installieren install_desc=Starte einfach die Anwendung für deine Plattform oder nutze Docker. Es existieren auch paketierte Versionen. platform=Plattformübergreifend -platform_desc=Forgejo läuft überall, wo Go kompiliert: Windows, macOS, Linux, ARM, etc. Wähle das System, das dir am meisten gefällt! +platform_desc=Forgejo läuft auf freien Betriebssystemen wie Linux und FreeBSD, sowie auf verschiedenen CPU-Architekturen. Wähle das System, das du magst! lightweight=Leichtgewichtig lightweight_desc=Forgejo hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden! license=Quelloffen -license_desc=Hole dir Forgejo! Tritt uns bei, indem du uns hilfst, dieses Projekt noch besser zu gestalten. Scheue dich nicht davor, bei uns mitzuwirken! +license_desc=Hole dir Forgejo! Schließ dich uns an, indem du uns hilfst, dieses Projekt noch besser zu gestalten. Scheue dich nicht davor, bei uns mitzuwirken! [install] install=Installation @@ -233,7 +236,7 @@ sqlite_helper=Dateipfad zur SQLite3-Datenbank.
Gib einen absoluten Pfad an, w reinstall_error=Du versuchst, in eine bereits existierende Forgejo Datenbank zu installieren reinstall_confirm_message=Eine Neuinstallation mit einer bestehenden Forgejo-Datenbank kann mehrere Probleme verursachen. In den meisten Fällen solltest du deine vorhandene „app.ini“ verwenden, um Forgejo auszuführen. Wenn du weißt, was du tust, bestätige die folgenden Angaben: reinstall_confirm_check_1=Die von der SECRET_KEY in app.ini verschlüsselten Daten können verloren gehen: Benutzer können sich unter Umständen nicht mit 2FA/OTP einloggen und Spiegel könnten nicht mehr richtig funktionieren. Mit der Ankreuzung dieses Kästchens bestätigst du, dass die aktuelle app.ini-Datei den korrekten SECRET_KEY enthält. -reinstall_confirm_check_2=Die Repositorys und Einstellungen müssen eventuell neu synchronisiert werden. Durch das Ankreuzen dieses Kästchens bestätigst du, dass du die Hooks für die Repositories und die authorized_keys-Datei manuell neu synchronisierst. Du bestätigst, dass du sicherstellst, dass die Repository- und Spiegeleinstellungen korrekt sind. +reinstall_confirm_check_2=Die Repositorys und Einstellungen müssen eventuell neu synchronisiert werden. Durch das Ankreuzen dieses Kästchens bestätigst du, dass du die Hooks für die Repositorys und die authorized_keys-Datei manuell neu synchronisierst. Du bestätigst, dass du sicherstellst, dass die Repository- und Spiegeleinstellungen korrekt sind. reinstall_confirm_check_3=Du bestätigst, dass du absolut sicher bist, dass diese Forgejo mit der richtigen app.ini läuft, und du sicher bist, dass du neu installieren musst. Du bestätigst, dass du die oben genannten Risiken anerkennst. err_empty_db_path=Der SQLite3 Datenbankpfad darf nicht leer sein. no_admin_and_disable_registration=Du kannst Selbst-Registrierungen nicht deaktivieren, ohne ein Administratorkonto zu erstellen. @@ -291,8 +294,8 @@ enable_captcha=Registrierungs-Captcha aktivieren enable_captcha.description=Eine Captcha-Eingabe bei der Benutzerselbstregistrierung verlangen. require_sign_in_view=Ansehen erfordert Anmeldung require_sign_in_view.description=Seitenzugriff auf angemeldete Benutzer beschränken. Besucher sehen nur die Anmelde- und Registrierungsseite. -admin_setting.description=Das Erstellen eines Administrator-Kontos ist optional. Der erste registrierte Benutzer wird automatisch Administrator. -admin_title=Administratoreinstellungen +admin_setting.description=Das Erstellen eines Administratorkontos ist optional. Der erste registrierte Benutzer wird automatisch Administrator. +admin_title=Administratorkonto-Einstellungen admin_name=Administrator-Benutzername admin_password=Passwort confirm_password=Passwort bestätigen @@ -403,8 +406,8 @@ allow_password_change=Verlange vom Benutzer das Passwort zu ändern (empfohlen) reset_password_mail_sent_prompt=Eine Bestätigungs-E-Mail wurde an %s gesendet. Bitte überprüfe dein Postfach innerhalb von %s, um den Wiederherstellungsprozess abzuschließen. active_your_account=Aktiviere dein Konto account_activated=Konto wurde aktiviert -prohibit_login=Anmelden verboten -prohibit_login_desc=Die Anmeldung mit diesem Konto ist nicht gestattet. Bitte kontaktiere den Administrator. +prohibit_login=Der Account ist gesperrt +prohibit_login_desc=Dein Account ist auf dieser Instanz gesperrt worden. Bitte kontaktiere den Instanz-Administrator. resent_limit_prompt=Du hast bereits eine Aktivierungs-E-Mail angefordert. Bitte warte 3 Minuten und probiere es dann nochmal. has_unconfirmed_mail=Hallo %s, du hast eine unbestätigte E-Mail-Adresse (%s). Wenn du keine Bestätigungs-E-Mail erhalten hast oder eine neue senden möchtest, klicke bitte auf den folgenden Button. resend_mail=Aktivierungs-E-Mail erneut verschicken @@ -461,6 +464,11 @@ change_unconfirmed_email = Wenn du bei der Anmeldung eine falsche E-Mail-Adresse remember_me.compromised = Der Anmeldetoken ist nicht mehr gültig, dies könnte auf ein kompromittiertes Konto hindeuten. Bitte prüfe dein Konto auf ungewöhnliche Aktivitäten. tab_signin = Anmelden tab_signup = Registrieren +sign_up_button = Jetzt registrieren. +back_to_sign_in = Zurück zur Anmeldung +sign_in_openid = Mit OpenID fortfahren +hint_login = Hast du bereits ein Konto? Jetzt anmelden! +hint_register = Brauchst du ein Konto? Jetzt registrieren. [mail] view_it_on=Auf %s ansehen @@ -477,10 +485,10 @@ activate_email=Bestätige deine E-Mail-Adresse activate_email.title=%s, bitte verifiziere deine E-Mail-Adresse activate_email.text=Bitte klicke innerhalb von %s auf folgenden Link, um dein Konto zu aktivieren: -register_notify=Willkommen bei Forgejo +register_notify_prev9=Willkommen bei Forgejo register_notify.title=%[1]s, willkommen bei %[2]s register_notify.text_1=dies ist deine Bestätigungs-E-Mail für %s! -register_notify.text_2=Du kannst dich mit dem Benutzernamen „%s“ anmelden. +register_notify.text_2=Du kannst dich mit dem Benutzernamen „%s“ anmelden register_notify.text_3=Wenn jemand anderes diesen Account für dich erstellt hat, musst du zuerst dein Passwort setzen. reset_password=Stelle dein Konto wieder her @@ -668,12 +676,12 @@ form.name_reserved=Der Benutzername „%s“ ist reserviert. form.name_pattern_not_allowed=Das Muster „%s“ ist nicht in einem Benutzernamen erlaubt. form.name_chars_not_allowed=Benutzername „%s“ enthält ungültige Zeichen. block_user = Benutzer blockieren -block_user.detail = Bitte beachte, dass andere Maßnahmen ergriffen werden, wenn du diesen Benutzer blockierst, wie: -block_user.detail_2 = Dieser Benutzer kann nicht mit deinem Repository, erstellten Issues und Kommentaren interagieren. -block_user.detail_1 = Dieser Benutzer folgt dir nicht mehr. +block_user.detail = Bitte beachte, dass die Blockierung eines Benutzers auch andere Auswirkungen hat, so wie: +block_user.detail_2 = Dieser Benutzer wird nicht mehr nicht mit deinen Repositorys oder von dir erstellten Issues und Kommentaren interagieren können. +block_user.detail_1 = Ihr werdet euch nicht mehr gegenseitig folgen und könnt euch auch nicht mehr gegenseitig folgen. block = Blockieren follow_blocked_user = Du kannst diesen Benutzer nicht folgen, weil du ihn blockiert hast, oder er dich blockiert hat. -block_user.detail_3 = Dieser Benutzer kann dich nicht als einen Mitarbeiter hinzufügen, und du kannst ihn nicht als Mitarbeiter hinzufügen. +block_user.detail_3 = Ihr werdet nicht mehr in der Lage sein, euch gegenseitig als Repository-Mitarbeiter hinzuzufügen. unblock = Nicht mehr blockieren followers_one = %d Follower following_one = %d Folge ich @@ -681,6 +689,10 @@ followers.title.few = Follower following.title.one = Folgt following.title.few = Folgt followers.title.one = Follower +public_activity.visibility_hint.self_public = Deine Aktivität ist sichtbar für alle, außer für Interaktionen in privaten Räumen. Konfigurieren. +public_activity.visibility_hint.admin_public = Diese Aktivität ist sichtbar für alle, aber als Administrator kannst du außerdem Interaktionen in privaten Räumen sehen. +public_activity.visibility_hint.self_private = Deine Aktivität ist nur sichtbar für dich und den Instanzadministratoren. Konfigurieren. +public_activity.visibility_hint.admin_private = Diese Aktivität ist sichtbar für dich, weil du ein Administrator bist, aber der Benutzer will sie privat halten. [settings] profile=Profil @@ -795,7 +807,7 @@ add_email_success=Die neue E-Mail-Addresse wurde hinzugefügt. email_preference_set_success=E-Mail-Einstellungen wurden erfolgreich aktualisiert. add_openid_success=Die neue OpenID-Adresse wurde hinzugefügt. keep_email_private=E-Mail-Adresse verbergen -keep_email_private_popup=Dies wird deine E-Mail-Adresse nicht nur in deinem Profil ausblenden, sondern auch, wenn du einen Pull Request erstellst oder eine Datei über das Web-Interface bearbeitest. Gepushte Commits werden nicht geändert. Benutze %s in Commits, um sie mit deinem Konto zu assoziieren. +keep_email_private_popup=Dies wird deine E-Mail-Adresse in deinem Profil ausblenden. Sie wird nicht mehr der Standardwert für die Commits, die vom Web-Interface gemacht wurden, sein, z.B. Dateiuploads und -bearbeitungen, und sie wird nicht für Merge-Commits benutzt werden. Stattdessen kann eine besondere Adresse %s benutzt werden, um Commits mit deinem Konto zu assoziieren. Beachte, dass diese Option für existierende Commits keine Wirkung hat. openid_desc=Mit OpenID kannst du dich über einen Drittanbieter authentifizieren. manage_ssh_keys=SSH-Schlüssel verwalten @@ -1008,6 +1020,9 @@ pronouns = Pronomen pronouns_custom = Eigene pronouns_unspecified = Nicht spezifiziert language.title = Standardsprache +keep_activity_private.description = Deine öffentliche Aktivität wird nur für dich selbst und die Instanzadminstratoren sichtbar sein. +language.localization_project = Hilf uns, Forgejo in deine Sprache zu übersetzen! Mehr erfahren. +language.description = Diese Sprache wird in deinem Konto gespeichert und standardmäßig nach dem Anmelden benutzt. [repo] owner=Besitzer @@ -1049,7 +1064,7 @@ issue_labels=Issue-Labels issue_labels_helper=Wähle eine Issue-Label-Sammlung. license=Lizenz license_helper=Wähle eine Lizenz aus. -license_helper_desc=Eine Lizenz regelt, was andere mit deinem Code tun (oder nicht tun) können. Unsicher, welches für dein Projekt die Richtige ist? Siehe Choose a license.. +license_helper_desc=Eine Lizenz regelt, was andere mit deinem Code tun (oder nicht tun) können. Unsicher, welches für dein Projekt die Richtige ist? Siehe Choose a license. readme=README readme_helper=Wähle eine README-Vorlage aus. readme_helper_desc=Hier kannst du eine komplette Beschreibung für dein Projekt schreiben. @@ -1126,7 +1141,7 @@ template.webhooks=Webhooks template.topics=Themen template.avatar=Profilbild template.issue_labels=Issue-Labels -template.one_item=Es muss mindestens eine Vorlage ausgewählt werden +template.one_item=Es muss mindestens eine Vorlagenelement ausgewählt werden template.invalid=Es muss ein Vorlagen-Repository ausgewählt werden archive.title=Dieses Repository ist archiviert. Du kannst Dateien ansehen und es klonen, kannst aber nicht pushen oder Issues/Pull-Requests öffnen. @@ -1265,6 +1280,8 @@ view_git_blame=Git Blame ansehen video_not_supported_in_browser=Dein Browser unterstützt das HTML5-„video“-Tag nicht. audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht. stored_lfs=Gespeichert mit Git LFS +stored_annex=Gespeichert mit Git Annex +stored_annex_not_present = hier nicht vorhanden, versuche git annex whereis symbolic_link=Softlink executable_file=Ausführbare Datei commit_graph=Commit-Graph @@ -1288,6 +1305,7 @@ editor.upload_file=Datei hochladen editor.edit_file=Datei bearbeiten editor.preview_changes=Vorschau der Änderungen editor.cannot_edit_lfs_files=LFS-Dateien können im Webinterface nicht bearbeitet werden. +editor.cannot_edit_annex_files=Annex-Dateien können im Webinterface nicht bearbeitet werden. editor.cannot_edit_non_text_files=Binärdateien können nicht im Webinterface bearbeitet werden. editor.edit_this_file=Datei bearbeiten editor.this_file_locked=Datei ist gesperrt @@ -1572,8 +1590,8 @@ issues.reopened_at=`hat dieses Issue %[2]s wiede issues.commit_ref_at=`hat dieses Issue %[2]s aus einem Commit referenziert` issues.ref_issue_from=`hat %[2]s auf dieses Issue verwiesen %[4]s` issues.ref_pull_from=`hat %[2]s auf diesen Pull-Request verwiesen %[4]s` -issues.ref_closing_from=`hat %[2]s auf einen Pull-Request %[4]s verwiesen, welcher das Issue schließen wird` -issues.ref_reopening_from=`hat auf einen Pull-Request %[4]s verwiesen, welcher das Issue %[2]s erneut öffnen wird` +issues.ref_closing_from=`hat %[2]s in einem Pull-Request %[4]s auf dieses Issue verwiesen, welcher es schließen wird` +issues.ref_reopening_from=`hat %[2]s in einem Pull-Request %[4]s auf dieses Issue verwiesen, welcher es erneut öffnen wird` issues.ref_closed_from=`hat dieses Issue %[4]s geschlossen %[2]s` issues.ref_reopened_from=`hat dieses Issue %[4]s %[2]s wieder geöffnet` issues.ref_from=`von %[1]s` @@ -2371,8 +2389,8 @@ settings.protect_whitelist_users=Nutzer, die pushen dürfen: settings.protect_whitelist_search_users=Benutzer suchen … settings.protect_whitelist_teams=Teams, die pushen dürfen: settings.protect_whitelist_search_teams=Teams suchen … -settings.protect_merge_whitelist_committers=Merge-Whitelist aktivieren -settings.protect_merge_whitelist_committers_desc=Erlaube Nutzern oder Teams auf der Whitelist, Pull-Requests in diesen Branch zusammenzuführen. +settings.protect_merge_whitelist_committers=Merge-Positivliste aktivieren +settings.protect_merge_whitelist_committers_desc=Erlaube Nutzern oder Teams auf der Positivliste, Pull-Requests in diesen Branch zusammenzuführen. settings.protect_merge_whitelist_users=Nutzer, die zusammenführen dürfen: settings.protect_merge_whitelist_teams=Teams, die zusammenführen dürfen: settings.protect_check_status_contexts=Statusprüfung aktivieren @@ -2385,10 +2403,10 @@ settings.protect_invalid_status_check_pattern=Ungültiges Statusprüfungspattern settings.protect_no_valid_status_check_patterns=Keine gültigen Statuscheck-Muster. settings.protect_required_approvals=Erforderliche Genehmigungen: settings.protect_required_approvals_desc=Erlaube das Zusammenführen des Pull-Requests nur mit genügend positiven Reviews. -settings.protect_approvals_whitelist_enabled=Genehmigungen auf Benutzer oder Teams auf der Whitelist beschränken -settings.protect_approvals_whitelist_enabled_desc=Nur Reviews von Benutzern auf der Whitelist oder Teams zählen zu den erforderlichen Genehmigungen. Existiert keine Whitelist, so zählen Reviews von jedem mit Schreibzugriff zu den erforderlichen Genehmigungen. -settings.protect_approvals_whitelist_users=Reviewer auf der Whitelist: -settings.protect_approvals_whitelist_teams=Für Reviews gewhitelistete Teams: +settings.protect_approvals_whitelist_enabled=Genehmigungen auf Benutzer oder Teams auf der Positivliste beschränken +settings.protect_approvals_whitelist_enabled_desc=Nur Reviews von Benutzern oder Teams auf der Positivliste zählen zu den erforderlichen Genehmigungen. Existiert keine Positivliste, so zählen Reviews von jedem mit Schreibzugriff zu den erforderlichen Genehmigungen. +settings.protect_approvals_whitelist_users=Nutzer, die reviewen dürfen: +settings.protect_approvals_whitelist_teams=Teams, die reviewen dürfen: settings.dismiss_stale_approvals=Entferne alte Genehmigungen settings.dismiss_stale_approvals_desc=Wenn neue Commits gepusht werden, die den Inhalt des Pull-Requests ändern, werden alte Genehmigungen entfernt. settings.require_signed_commits=Signierte Commits erforderlich @@ -2677,7 +2695,7 @@ commits.browse_further = Weiter browsen pulls.nothing_to_compare_have_tag = Der gewählte Branch/Tag ist gleich. pulls.status_checks_hide_all = Alle Prüfungen verbergen pulls.status_checks_show_all = Alle Prüfungen anzeigen -pulls.cmd_instruction_hint = `Anweisungen für die Kommandozeile betrachten.` +pulls.cmd_instruction_hint = Anweisungen für die Kommandozeile betrachten pulls.cmd_instruction_checkout_title = Auschecken wiki.cancel = Abbrechen settings.wiki_globally_editable = Allen erlauben, das Wiki zu bearbeiten @@ -2750,7 +2768,7 @@ settings.transfer.button = Besitz übertragen settings.transfer.modal.title = Besitz übertragen wiki.no_search_results = Keine Ergebnisse wiki.search = Wiki durchsuchen -n_release_one = %s freigegebn +n_release_one = %s freigegeben n_release_few = %s Veröffentlichungen form.string_too_long = Die Zeichenkette ist länger als %d Zeichen. settings.federation_settings = Föderationseinstellungen @@ -2763,6 +2781,9 @@ issues.edit.already_changed = Die Änderungen an diesem Issue können nicht gesp pulls.edit.already_changed = Die Änderungen an diesem Pull-Request können nicht gespeichert werden. Es scheint, als seien die Inhalte bereits durch einen anderen Benutzer verändert worden. Bitte die Seite neu laden und das Bearbeiten erneut versuchen, um deren Änderungen nicht zu überschreiben subscribe.pull.guest.tooltip = Einloggen, um diesen Pull-Request zu abbonieren. subscribe.issue.guest.tooltip = Einloggen, um dieses Issue zu abbonieren. +issues.author.tooltip.pr = Dieser Benutzer ist der Autor dieses Pull-Requests. +issues.author.tooltip.issue = Dieser Benutzer ist der Autor dieses Issues. +activity.commit = Commit-Aktivität [graphs] @@ -2834,13 +2855,13 @@ members.member=Mitglied members.remove=Entfernen members.remove.detail=%[1]s aus %[2]s entfernen? members.leave=Verlassen -members.leave.detail=%s verlassen? +members.leave.detail=Bist du dir sicher, dass du die Organisation „%s“ verlassen willst? members.invite_desc=Neues Mitglied zu %s hinzufügen: members.invite_now=Jetzt einladen teams.join=Beitreten teams.leave=Verlassen -teams.leave.detail=%s verlassen? +teams.leave.detail=Bist du dir sicher, dass du das Team „%s“ verlassen willst? teams.can_create_org_repo=Repositorys erstellen teams.can_create_org_repo_helper=Mitglieder können neue Repositorys in der Organisation erstellen. Der Ersteller erhält Administrator-Zugriff auf das neue Repository. teams.none_access=Kein Zugriff @@ -2948,7 +2969,7 @@ dashboard.update_migration_poster_id=Migration Poster-IDs updaten dashboard.git_gc_repos=Garbage-Collection für alle Repositorys ausführen dashboard.resync_all_sshkeys=Die Datei „.ssh/authorized_keys“ mit Forgejo-SSH-Schlüsseln aktualisieren. dashboard.resync_all_sshprincipals=Aktualisiere die Datei „.ssh/authorized_principals“ mit Forgejo-SSH-Principals. -dashboard.resync_all_hooks=Die „pre-receive“-, „update“- und „post-receive“-Hooks für alle Repositorys erneut synchronisieren. +dashboard.resync_all_hooks=Die „pre-receive“-, „update“- und „post-receive“-Hooks für alle Repositorys erneut synchronisieren dashboard.reinit_missing_repos=Alle Git-Repositorys neu einlesen, für die Einträge existieren dashboard.sync_external_users=Externe Benutzerdaten synchronisieren dashboard.cleanup_hook_task_table=Hook-Task-Tabelle bereinigen @@ -3021,10 +3042,10 @@ users.update_profile_success=Das Benutzerkonto wurde aktualisiert. users.edit_account=Benutzerkonto bearbeiten users.max_repo_creation=Maximale Anzahl an Repositorys users.max_repo_creation_desc=(Gib -1 ein, um das globale Standardlimit zu verwenden.) -users.is_activated=Account ist aktiviert -users.prohibit_login=Anmelden deaktivieren -users.is_admin=Ist Administrator -users.is_restricted=Ist eingeschränkt +users.is_activated=Aktivierter Account +users.prohibit_login=Gesperrter Account +users.is_admin=Administrator-Account +users.is_restricted=Eingeschränkter Account users.allow_git_hook=Kann Git-Hooks erstellen users.allow_git_hook_tooltip=Git-Hooks werden mit denselben Benutzer-Rechten ausgeführt, mit denen Forgejo läuft, und haben die gleiche Ebene von Host-Zugriff. Dadurch können Benutzer mit diesen speziellen Git-Hook-Rechten auf alle Forgejo-Repositorys sowie auf die von Forgejo verwendete Datenbank zugreifen und diese ändern. Auch das Erhalten von Administratorrechten für Forgejo ist möglich. users.allow_import_local=Kann lokale Repositorys importieren @@ -3073,7 +3094,7 @@ orgs.new_orga=Neue Organisation repos.repo_manage_panel=Repositorys verwalten repos.unadopted=Nicht übernommene Repositorys -repos.unadopted.no_more=Keine weiteren nicht übernommenen Repositorys gefunden +repos.unadopted.no_more=Keine nicht übernommenen Repositorys gefunden. repos.owner=Besitzer repos.name=Name repos.private=Privat @@ -3434,6 +3455,16 @@ config_summary = Zusammenfassung auths.tip.gitlab_new = Registriere eine neue Anwendung auf https://gitlab.com/-/profile/applications auths.default_domain_name = Standarddomainname, der für die E-Mail-Adresse benutzt wird config.app_slogan = Instanz-Slogan +config.cache_test_failed = Konnte den Cache nicht untersuchen: %v. +config.cache_test_succeeded = Cache-Test erfolgreich, eine Antwort erhalten in %s. +config.cache_test = Cache testen +config.cache_test_slow = Cache-Test erfolgreich, aber die Antwort ist langsam: %s. +users.block.description = Interaktionen mit diesen Dienst für diesen Benutzer mit seinem Account blockierten und Einloggen verhindern. +users.restricted.description = Nur Interaktionen mit den Repositorys und Organisationen erlauben, wo der Benutzer als Mitarbeiter hinzugefügt wurde. Dies verhindert Zugriff auf öffentliche Repositorys in dieser Instanz. +users.local_import.description = Import von Repositorys aus dem lokalen Dateisystem des Servers erlauben. Dies kann ein Sicherheitsproblem sein. +users.organization_creation.description = Erstellung neuer Organisationen erlauben. +users.activated.description = Abschluss der E-Mail-Verifizierung. Der Besitzer eines nicht aktivierten Accounts wird nicht in der Lage sein, sich einzuloggen, bis die E-Mail-Verifikation abgeschlossen wurde. +users.admin.description = Diesen Benutzer vollständigen Zugriff zu allen administrativen Features gewähren mittels der Web-UI und der API. [action] @@ -3516,7 +3547,7 @@ error.generate_hash=Es konnte kein Hash vom Commit generiert werden error.no_committer_account=Es ist kein Account mit der E-Mail-Adresse des Committers verbunden error.no_gpg_keys_found=Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden error.not_signed_commit=Kein signierter Commit -error.failed_retrieval_gpg_keys=Fehler beim Abrufen eines Keys des Commiter-Kontos +error.failed_retrieval_gpg_keys=Fehler beim Abrufen eines Schlüssels des Committer-Kontos error.probable_bad_signature=WARNHINWEIS! Obwohl ein Schlüssel mit dieser ID in der Datenbank existiert, verifiziert er nicht diesen Commit! Dieser Commit ist VERDÄCHTIG. error.probable_bad_default_signature=WARNHINWEIS! Obwohl der Standardschlüssel diese ID hat, verifiziert er nicht diesen Commit! Dieser Commit ist VERDÄCHTIG. @@ -3790,6 +3821,13 @@ variables.id_not_exist = Variable mit ID %d existiert nicht. runs.workflow = Workflow runs.no_job_without_needs = Der Workflow muss mindestens einen Job ohne Abhängigkeiten enthalten. runs.no_job = Der Workflow muss mindestens einen Job enthalten +workflow.dispatch.use_from = Workflow benutzen von +workflow.dispatch.run = Workflow ausführen +workflow.dispatch.input_required = Wert für Eingabe „%s“ erfordern. +workflow.dispatch.invalid_input_type = Ungültiger Eingabetyp „%s“. +workflow.dispatch.warn_input_limit = Es werden nur die ersten %d Eingaben angezeigt. +workflow.dispatch.trigger_found = Dieser Workflow hat einen workflow_dispatch-Event-Trigger. +workflow.dispatch.success = Ausführung des Workflows wurde erfolgreich angefragt. [projects] type-1.display_name=Individuelles Projekt @@ -3836,12 +3874,14 @@ commit_kind = Commits suchen … runner_kind = Runners suchen … no_results = Keine passenden Ergebnisse gefunden. code_search_unavailable = Die Code-Suche ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator. -keyword_search_unavailable = Suche nach Schlüsselwörtern ist momentan nicht unterstüzt. Bitte kontaktiere den Webseitenadministrator. +keyword_search_unavailable = Die Suche mittels Schlüsselwort ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator. code_search_by_git_grep = Die derzeitigen Codesuchergebnisse werden durch „git grep“ bereitgestellt. Es könnten bessere Ergebnisse erzielt werden, wenn der Administrator die Repository-Indizierung aktiviert. exact = Exakt exact_tooltip = Nur Ergebnisse einbinden, die auf den exakten Suchbegriff passen issue_kind = Issues durchsuchen … pull_kind = Pulls durchsuchen … +union = Vereinigungsmenge +union_tooltip = Ergebnisse, die auf ein beliebiges von den Whitespace getrennten Schlüsselwörtern passen, einbinden [markup] filepreview.line = Zeile %[1]d in %[2]s @@ -3856,3 +3896,7 @@ tib = TiB pib = PiB mib = MiB eib = EiB + + +[translation_meta] +test = ok \ No newline at end of file diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini index fb15b5b453..4e685f3cf6 100644 --- a/options/locale/locale_el-GR.ini +++ b/options/locale/locale_el-GR.ini @@ -87,7 +87,7 @@ rerun=Επανεκτέλεση rerun_all=Επανεκτέλεση όλων save=Αποθήκευση add=Προσθήκη -add_all=Προσθήκη Όλων +add_all=Προσθήκη όλων remove=Αφαίρεση remove_all=Αφαίρεση όλων remove_label_str=Αφαίρεση αντικειμένου «%s» @@ -154,12 +154,14 @@ filter.not_fork = Εξαίρεση fork filter.is_mirror = Είδωλα filter.not_mirror = Εξαίρεση ειδώλων filter.not_template = Εξαίρεση προτύπων -filter.is_fork = Forked +filter.is_fork = Forks more_items = Περισσότερα αντικείμενα invalid_data = Τα δεδομένα δεν είναι έγκυρα: %v +test = Τεστ +copy_generic = Αντιγραφή στο πρόχειρο [aria] -navbar=Γραμμή Πλοήγησης +navbar=Μπάρα πλοήγησης footer=Υποσέλιδο footer.software=Σχετικά με το Λογισμικό footer.links=Συνδέσεις @@ -244,7 +246,7 @@ err_admin_name_is_invalid=Το Όνομα Χρήστη του Διαχειρισ general_title=Γενικές ρυθμίσεις app_name=Τίτλος διακομιστή -app_name_helper=Μπορείτε να εισάγετε το όνομα της εταιρείας σας εδώ. +app_name_helper=Γράψτε το όνομα του διακομιστή σας εδώ. Θα εμφανίζεται σε κάθε σελίδα. repo_path=Τοποθεσία αρχείων αποθετηρίων repo_path_helper=Τα απομακρυσμένα αποθετήρια Git θα αποθηκεύονται σε αυτόν τον κατάλογο. lfs_path=Τοποθεσία αρχείων Git LFS @@ -274,22 +276,22 @@ register_confirm=Να απαιτείται η επιβεβαίωση της δι mail_notify=Ενεργοποίηση ειδοποιήσεων email server_service_title=Ρυθμίσεις διακομιστή και υπηρεσιών τρίτων offline_mode=Ενεργοποίηση τοπικής λειτουργίας -offline_mode.description=Απενεργοποιήση των δικτύων διανομής περιεχομένου τρίτων και σερβίρετε όλων των πόρων τοπικά. +offline_mode.description=Τα CDN τρίτων θα απενεργοποιηθούν, και όλα τα αρχεία θα παρέχονται αποκλειστικά από τον διακομιστή. disable_gravatar=Απενεργοποίηση Gravatar disable_gravatar.description=Το Gravatar και άλλες εξωτερικές πηγές εικόνων προφίλ θα απενεργοποιηθούν. Θα χρησιμοποιηθεί μία προεπιλεγμένη εικόνα προφίλ, εκτός αν ο χρήστης ανεβάσει από μόνος του ένα avatar. federated_avatar_lookup=Ενεργοποίηση αποκεντρωμένων εικόνων προφίλ federated_avatar_lookup.description=Ενεργοποίηση αποκεντρωμένης αναζήτησης εικόνων προφίλ μέσω Libravatar. disable_registration=Απενεργοποίηση αυτοεγγραφής -disable_registration.description=Απενεργοποίηση αυτοεγγραφής χρήστη. Μόνο οι διαχειριστές θα μπορούν να δημιουργήσουν νέους λογαριασμούς χρηστών. -allow_only_external_registration.description=Να επιτρέπεται η εγγραφή μόνο μέσω εξωτερικών υπηρεσιών +disable_registration.description=Μόνο οι διαχειριστές θα μπορούν να δημιουργήσουν νέους λογαριασμούς χρηστών. Σας συνιστούμε να απενεργοποιήσετε τις εγγραφές, εκτός αν θέλετε να προσφέρετε τον διακομιστή σας σε ένα ευρύ κοινό και είστε έτοιμος να αφαιρέσετε λογαριασμούς που θα χρησιμοποιηθούν για spam. +allow_only_external_registration.description=Οι χρήστες θα μπορούν να δημιουργήσουν λογαριασμούς μόνο μέσω εξωτερικών υπηρεσιών. openid_signin=Ενεργοποίηση σύνδεσης μέσω OpenID openid_signin.description=Ενεργοποίηση σύνδεσης χρήστη μέσω OpenID. openid_signup=Ενεργοποίηση εγγραφών μέσω OpenID openid_signup.description=Ενεργοποίηση ιδιοεγγραφής χρηστών με βάση το OpenID. enable_captcha=Ενεργοποίηση CAPTCHA στην εγγραφή -enable_captcha.description=Να απαιτείται CAPTCHA για την δημιουργία λογαριασμού. +enable_captcha.description=Να απαιτείται CAPTCHA για την δημιουργία λογαριασμών. require_sign_in_view=Να απαιτείται είσοδος για την προβολή περιεχομένων -require_sign_in_view.description=Περιορισμός της πρόσβασης σε συνδεδεμένους χρήστες. Οι επισκέπτες θα μπορούν μόνο να δουν τις σελίδες εισόδου και εγγραφής. +require_sign_in_view.description=Το περιεχόμενο του διακομιστή σας θα μπορούν να το βλέπουν μόνο συνδεδεμένοι χρήστες. Οι επισκέπτες θα μπορούν μόνο να δουν τις σελίδες εισόδου και εγγραφής. admin_setting.description=Η δημιουργία ενός λογαριασμού διαχειριστή είναι προαιρετική. Ο πρώτος εγγεγραμμένος χρήστης θα γίνει αυτόματα διαχειριστής. admin_title=Ρυθμίσεις λογαριασμού διαχειριστή admin_name=Όνομα χρήστη διαχειριστή @@ -312,9 +314,9 @@ invalid_log_root_path=Η τοποθεσία αρχείων καταγραφής default_keep_email_private=Απόκρυψη διευθύνσεων email από προεπιλογή default_keep_email_private.description=Απόκρυψη διευθύνσεων email των νέων λογαριασμών χρήστη σαν προεπιλογή. default_allow_create_organization=Να επιτρέπεται η δημιουργία οργανισμών από προεπιλογή -default_allow_create_organization.description=Επιτρέψτε σε νέους λογαριασμούς χρηστών να δημιουργούν οργανισμούς σαν προεπιλογή. +default_allow_create_organization.description=Να επιτρέπεται στους χρήστες να δημιουργούν οργανισμούς από προεπιλογή. Αν απενεργοποιήσετε αυτήν την ρύθμιση, τότε ο χρήστης θα μπορεί να δημιουργήσει οργανισμούς μόνο με την έγκριση ενός διαχειριστή. default_enable_timetracking=Ενεργοποίηση καταγραφής χρόνου από προεπιλογή -default_enable_timetracking.description=Ενεργοποίηση καταγραφής χρόνου για νέα αποθετήρια σαν προεπιλογή. +default_enable_timetracking.description=Να ενεργοποιείται η λειτουργία καταγραφής χρόνου σε νέα αποθετήρια από προεπιλογή. no_reply_address=Domain κρυφών email no_reply_address_helper=Όνομα τομέα (domain) για χρήστες με μια κρυφή διεύθυνση email. Για παράδειγμα, το όνομα χρήστη 'nikos' θα συνδεθεί στο Git ως 'nikos@noreply.example.org' αν ο κρυφός τομέας email έχει οριστεί ως 'noreply.example.org'. password_algorithm=Αλγόριθμος hash για κωδικούς @@ -327,19 +329,22 @@ allow_dots_in_usernames = Επιτρέπει την χρήση τελείων σ enable_update_checker_helper_forgejo = Θα γίνεται τακτικά έλεγχος για νέες εκδόσεις του Forgejo ελέγχοντας μία εγγραφή DNS TXT στο release.forgejo.org. smtp_from_invalid = Η διεύθυνση του πεδίου «Αποστολή email ως» δεν είναι έγκυρη config_location_hint = Αυτές οι ρυθμίσεις θα αποθηκευτούν στην ακόλουθη τοποθεσία: +allow_only_external_registration = Να επιτρέπονται οι εγγραφές μόνο μέσω εξωτερικών υπηρεσιών +app_slogan = Slogan διακομιστή +app_slogan_helper = Γράψτε το slogan του διακομιστή σας εδώ. Αφήστε κενό για να το απενεργοποιήσετε. [home] uname_holder=Όνομα χρήστη ή διεύθυνση email password_holder=Κωδικός Πρόσβασης -switch_dashboard_context=Εναλλαγή Περιεχομένων Αρχικού Πίνακα +switch_dashboard_context=Εναλλαγή περιεχομένων αρχικού πίνακα my_repos=Αποθετήρια show_more_repos=Περισσότερα αποθετήρια… -collaborative_repos=Συνεργατικά Αποθετήρια +collaborative_repos=Συνεργατικά αποθετήρια my_orgs=Οργανισμοί my_mirrors=Τα Αντίγραφα Μου view_home=Προβολή %s search_repos=Βρείτε ένα αποθετήριο… -filter=Άλλα Φίλτρα +filter=Άλλα φίλτρα filter_by_team_repositories=Φιλτράρισμα ανά αποθετήρια ομάδας feed_of=Ροή (feed) του «%s» @@ -382,7 +387,7 @@ forks_one = %d fork forks_few = %d forks [auth] -create_new_account=Δημιουργία Λογαριασμού +create_new_account=Δημιουργία λογαριασμού register_helper_msg=Έχετε ήδη λογαριασμό; Συνδεθείτε τώρα! social_register_helper_msg=Έχετε ήδη λογαριασμό; Συνδέστε το τώρα! disable_register_prompt=Οι εγγραφές είναι απενεργοποιημένες. Παρακαλούμε να επικοινωνήσετε με το διαχειριστή του ιστοτόπου. @@ -398,7 +403,7 @@ confirmation_mail_sent_prompt=Ένα νέο email επιβεβαίωσης έχ must_change_password=Ενημερώστε τον κωδικό πρόσβασης σας allow_password_change=Απαιτείται από το χρήστη να αλλάξει τον κωδικό πρόσβασης (συνιστόμενο) reset_password_mail_sent_prompt=Ένα email επιβεβαίωσης έχει σταλεί στο %s. Για την ολοκλήρωση της διαδικασίας ανάκτησης του λογαριασμού σας, παρακαλώ ελέγξτε τα εισερχόμενα σας στις επόμενες %s. -active_your_account=Ενεργοποιήστε Το Λογαριασμό Σας +active_your_account=Ενεργοποίηση λογαριασμού account_activated=Ο λογαριασμός έχει ενεργοποιηθεί prohibit_login=Δεν επιτρέπεται η σύνδεση prohibit_login_desc=Δεν επιτρέπεται η σύνδεση στον λογαριασμό σας, παρακαλούμε επικοινωνήστε με το διαχειριστή σας. @@ -406,8 +411,8 @@ resent_limit_prompt=Έχετε ήδη ζητήσει ένα email ενεργοπ has_unconfirmed_mail=Γειά %s, η διεύθυνση ηλεκτρονικού ταχυδρομείου σας (%s) δεν έχει επιβεβαιωθεί ακόμα. Εάν δεν έχετε λάβει κάποιο email επιβεβαίωσης ή αν χρειάζεστε ένα νέο email επιβεβαίωσης, παρακαλώ πατήστε το παρακάτω κουμπί. resend_mail=Κάντε κλικ εδώ για να στείλετε ξανά το email ενεργοποίησης email_not_associate=Η διεύθυνση ηλεκτρονικού ταχυδρομείου δεν είναι συσχετισμένη με κάποιο λογαριασμό. -send_reset_mail=Αποστολή Email Ανάκτησης Λογαριασμού -reset_password=Ανάκτηση Λογαριασμού +send_reset_mail=Αποστολή email ανάκτησης λογαριασμού +reset_password=Ανάκτηση λογαριασμού invalid_code=Ο κωδικός επιβεβαίωσης δεν είναι έγκυρος ή έχει λήξει. invalid_code_forgot_password=Ο κωδικός επιβεβαίωσης έχει λήξει ή δεν είναι έγκυρος. Πατήστε εδώ για να ξαναξεκινήσετε την διαδικασία. invalid_password=Ο κωδικός πρόσβασης σας δεν ταιριάζει με τον κωδικό που χρησιμοποιήθηκε για τη δημιουργία του λογαριασμού. @@ -424,11 +429,11 @@ twofa_scratch_token_incorrect=Ο κωδικός μιας χρήσης είναι login_userpass=Είσοδος tab_openid=OpenID oauth_signup_tab=Δημιουργία νέου λογαριασμού -oauth_signup_title=Ολοκλήρωση Νέου Λογαριασμού -oauth_signup_submit=Ολοκληρωμένος Λογαριασμός +oauth_signup_title=Ολοκλήρωση νέου λογαριασμού +oauth_signup_submit=Ολοκλήρωση λογαριασμού oauth_signin_tab=Σύνδεση με υπάρχων λογαριασμό -oauth_signin_title=Συνδεθείτε για να εγκρίνετε τον Συνδεδεμένο Λογαριασμό -oauth_signin_submit=Σύνδεση Λογαριασμού +oauth_signin_title=Συνδεθείτε για να εγκρίνετε τον συνδεδεμένο λογαριασμό +oauth_signin_submit=Σύνδεση λογαριασμού oauth.signin.error=Παρουσιάστηκε σφάλμα κατά την επεξεργασία του αιτήματος εξουσιοδότησης. Εάν αυτό το σφάλμα επιμένει, παρακαλούμε επικοινωνήστε με το διαχειριστή του ιστοτόπου. oauth.signin.error.access_denied=Η αίτηση εξουσιοδότησης απορρίφθηκε. oauth.signin.error.temporarily_unavailable=Η εξουσιοδότηση απέτυχε επειδή ο διακομιστής ταυτοποίησης δεν είναι διαθέσιμος προσωρινά. Παρακαλώ προσπαθήστε ξανά αργότερα. @@ -444,7 +449,7 @@ email_domain_blacklisted=Δεν μπορείτε να εγγραφείτε με authorize_application=Εξουσιοδότηση Εφαρμογής authorize_redirect_notice=Θα μεταφερθείτε στο %s εάν εξουσιοδοτήσετε αυτήν την εφαρμογή. authorize_application_created_by=Αυτή η εφαρμογή δημιουργήθηκε από %s. -authorize_application_description=Εάν παραχωρήσετε την πρόσβαση, θα μπορεί να έχει πρόσβαση και να γράφει σε όλες τις πληροφορίες του λογαριασμού σας, συμπεριλαμβανομένων των ιδιωτικών αποθετηρίων και οργανισμών. +authorize_application_description=Αν παραχωρήσετε την πρόσβαση, θα μπορεί να διαβάσει και να επεξεργαστεί όλες τις πληροφορίες του λογαριασμού σας, συμπεριλαμβανομένων των ιδιωτικών αποθετηρίων και οργανισμών. authorize_title=Είστε βέβαιοι πως θέλετε να δώσετε πρόσβαση στον λογαριασμό σας στην εφαρμογή «%s»; authorization_failed=Αποτυχία εξουσιοδότησης authorization_failed_desc=Η εξουσιοδότηση απέτυχε επειδή εντοπίστηκε μια μη έγκυρη αίτηση. Παρακαλούμε επικοινωνήστε με το συντηρητή της εφαρμογής που προσπαθήσατε να εξουσιοδοτήσετε. @@ -473,7 +478,7 @@ activate_email=Επιβεβαιώστε τη διεύθυνση email σας activate_email.title=%s, επαληθεύστε τη διεύθυνση email σας activate_email.text=Για να επαληθεύσετε τη διεύθυνση email σας, παρακαλώ πατήστε τον ακόλουθο σύνδεσμο μέσα σε %s: -register_notify=Καλώς ήλθατε στο Forgejo +register_notify_prev9=Καλώς ήλθατε στο Forgejo register_notify.title=%[1]s, καλώς ήλθατε στο %[2]s register_notify.text_1=αυτό είναι το email επιβεβαίωσης εγγραφής σας για το %s! register_notify.text_2=Μπορείτε να συνδεθείτε χρησιμοποιώντας το όνομα χρήστη σας: %s @@ -555,7 +560,7 @@ TreeName=Διαδρομή αρχείου Content=Περιεχόμενο SSPISeparatorReplacement=Διαχωριστικό -SSPIDefaultLanguage=Προεπιλεγμένη Γλώσσα +SSPIDefaultLanguage=Προεπιλεγμένη γλώσσα require_error=` δεν μπορεί να είναι κενό.` alpha_dash_error=`: Πρέπει να περιέχει μόνο αλφαριθμητικά, παύλες ('-') και κάτω παύλες ('_').` @@ -629,6 +634,14 @@ admin_cannot_delete_self = Δεν μπορείτε να διαγράψετε τ unset_password = Ο χρήστης δεν έχει ορίσει κάποιον κωδικό. unsupported_login_type = Η μέθοδος με την οποίο γίνεται η σύνδεση δεν υποστηρίζει την διαγραφή λογαριασμών. required_prefix = Το εισαγώμενο κείμενο πρέπει να ξεκινά με «%s» +To = Όνομα κλάδου +AccessToken = Διακριτικό πρόσβασης (token) +FullName = Πλήρες όνομα +Description = Περιγραφή +Pronouns = Αντωνυμίες +Biography = Βιογραφία +Website = Ιστοσελίδα +Location = Τοποθεσία [user] @@ -659,12 +672,20 @@ follow_blocked_user = Δεν μπορείτε να ακολουθήσετε το unblock = Άρση αποκλεισμού block = Αποκλεισμός block_user = Αποκλεισμός χρήστη -block_user.detail_1 = Ο χρήστης δεν θα ακολουθεί πια τον λογαριασμό σας. -block_user.detail_2 = Ο χρήστης δεν θα μπορεί να αλληλεπιδράσει με τα αποθετήριά σας, να δημιουργήσει ζητήματα ή να αφήσει σχόλια. -block_user.detail_3 = Ο χρήστης δεν θα μπορέσει να σας προσθέσει στα αποθετήριά του ως συνεργάτη και αντίστοιχα δεν θα μπορείτε να τον προσθέσετε στα δικά σας αποθετήρια. -block_user.detail = Επισημαίνεται πως αν αποκλείσετε αυτόν τον χρήστη, θα προκύψουν ταυτόχρονα και άλλες ενέργειες. Μερικές από αυτές: +block_user.detail_1 = Ο χρήστης θα πάψει να ακολουθεί τον λογαριασμό σας. +block_user.detail_2 = Ο χρήστης δεν θα μπορεί να αλληλεπιδράσει με τα αποθετήριά, τα ζητήματα και τα σχόλια σας. +block_user.detail_3 = Δεν θα μπορείτε να προσθέσετε ο ένας τον άλλον στα αποθετήριά σας ως συνεργάτη. +block_user.detail = Επισημαίνεται πως αν αποκλείσετε αυτόν τον χρήστη, θα προκύψουν ταυτόχρονα και άλλες ενέργειες, όπως: followers_one = %d ακόλουθος following_one = ακολουθεί %d +public_activity.visibility_hint.admin_private = Αν και ο χρήστης προτιμά να κρατά την δραστηριότητά του ιδιωτική, είναι ορατή σε εσάς επειδή είστε ένας διαχειριστής. +followers.title.one = ακόλουθος +followers.title.few = ακόλουθοι +following.title.few = ακολουθεί +following.title.one = ακολουθεί +public_activity.visibility_hint.admin_public = Η δραστηριότητα είναι ορατή σε όλους, αλλά ως διαχειριστής μπορείτε να δείτε και τις αλληλεπιδράσεις σε ιδιωτικούς χώρους. +public_activity.visibility_hint.self_public = Η δραστηριότητά σου είναι ορατή σε όλους, πλην τις αλληλεπιδράσεις σας σε ιδιωτικούς χώρους. Αλλαγή ορατότητας. +public_activity.visibility_hint.self_private = Η δραστηριότητά σας είναι ορατή μόνο σε εσάς και στους διαχειριστές. Αλλαγή ορατότητας. [settings] profile=Προφίλ @@ -680,7 +701,7 @@ orgs=Διαχείριση οργανισμών repos=Αποθετήρια delete=Διαγραφή λογαριασμού twofa=Πιστοποίηση δύο παραγόντων (TOTP) -account_link=Συνδεδεμένοι Λογαριασμοί +account_link=Συνδεδεμένοι λογαριασμοί organization=Οργανισμοί uid=UID webauthn=Πιστοποίηση δύο παραγόντων (Κλειδιά Ασφαλείας) @@ -750,19 +771,19 @@ password_change_disabled=Οι μη τοπικοί χρήστες δεν μπορ emails=Διευθύνσεις Email manage_emails=Διαχείριση διευθύνσεων email -manage_themes=Επιλέξτε προεπιλεγμένο θέμα διεπαφής -manage_openid=Διαχείριση διευθύνσεων OpenID +manage_themes=Προεπιλεγμένο θέμα +manage_openid=Διευθύνσεις OpenID email_desc=Η κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση του κωδικού πρόσβασης και, εφόσον δεν είναι κρυμμένη, λειτουργίες Git στον ιστότοπο. theme_desc=Αυτό θα είναι το προεπιλεγμένο θέμα διεπαφής σας σε όλη την ιστοσελίδα. primary=Κύριο activated=Ενεργό requires_activation=Απαιτείται ενεργοποίηση -primary_email=Αλλαγή κυριότητας -activate_email=Αποστολή Ενεργοποίησης -activations_pending=Εκκρεμούν Ενεργοποιήσεις +primary_email=Προεπιλογή +activate_email=Αποστολή ενεργοποίησης +activations_pending=Εκκρεμεί ενεργοποίηση can_not_add_email_activations_pending=Εκκρεμεί μια ενεργοποίηση, δοκιμάστε ξανά σε λίγα λεπτά αν θέλετε να προσθέσετε ένα νέο email. delete_email=Αφαίρεση -email_deletion=Αφαίρεση Διεύθυνσης Email +email_deletion=Αφαίρεση διεύθυνσης email email_deletion_desc=Η διεύθυνση ηλεκτρονικού ταχυδρομείου και οι σχετικές πληροφορίες θα αφαιρεθούν από τον λογαριασμό σας. Οι υποβολές Git από αυτή τη διεύθυνση email θα παραμείνουν αμετάβλητες. Συνέχεια; email_deletion_success=Η διεύθυνση email σας έχει καταργηθεί. theme_update_success=Το θέμα διεπαφής σας ενημερώθηκε. @@ -771,7 +792,7 @@ openid_deletion=Αφαίρεση Διεύθυνσης OpenID openid_deletion_desc=Η κατάργηση αυτής της διεύθυνσης OpenID από τον λογαριασμό σας θα σας εμποδίσει να συνδέεστε με αυτό. Συνέχεια; openid_deletion_success=Η διεύθυνση OpenID αφαιρέθηκε. add_new_email=Προσθήκη νέας διεύθυνσης email -add_new_openid=Προσθήκη Νέου OpenID URI +add_new_openid=Προσθήκη νέου OpenID URI add_email=Προσθήκη διεύθυνσης email add_openid=Προσθήκη OpenID URI add_email_confirmation_sent=Ένα email επιβεβαίωσης έχει σταλεί στην διεύθυνση «%s». Για να επιβεβαιώσετε τη διεύθυνση email σας, παρακαλώ ελέγξτε τα εισερχόμενα σας μέσα σε %s. @@ -795,7 +816,7 @@ add_new_key=Προσθήκη κλειδιού SSH add_new_gpg_key=Προσθήκη κλειδιού GPG key_content_ssh_placeholder=Αρχίζει με «ssh-ed25519», «ssh-rsa», «ecdsa-sha2-nistp256», «ecdsa-sha2-nistp384», «ecdsa-sha2-nistp521», «sk-ecdsa-sha2-nistp256@openssh.com», ή «sk-ssh-ed25519@openssh.com» key_content_gpg_placeholder=Αρχίζει με «-----BEGIN PGP PUBLIC KEY BLOCK-----» -add_new_principal=Προσθήκη Αρχής (Principal) +add_new_principal=Προσθήκη αρχής (Principal) ssh_key_been_used=Αυτό το κλειδί SSH έχει ήδη προστεθεί στο διακομιστή. ssh_key_name_used=Υπάρχει ήδη ένα SSH κλειδί με το ίδιο όνομα στο λογαριασμό σας. ssh_principal_been_used=Αυτή η αρχή πιστοποίησης (principal) έχει ήδη προστεθεί στο διακομιστή. @@ -854,7 +875,7 @@ token_state_desc=Αυτό το διακριτικό έχει χρησιμοπο principal_state_desc=Αυτή η αρχή πιστοποιητικού έχει χρησιμοποιηθεί τις τελευταίες 7 ημέρες show_openid=Εμφάνιση στο προφίλ hide_openid=Απόκρυψη από το προφίλ -ssh_disabled=SSH Απενεργοποιημένο +ssh_disabled=Το SSH είναι απενεργοποιημένο ssh_signonly=Το SSH είναι απενεργοποιημένο αυτή τη στιγμή, έτσι αυτά τα κλειδιά είναι μόνο για την επαλήθευση υπογραφής των υποβολών. ssh_externally_managed=Αυτό το κλειδί SSH διαχειρίζεται εξωτερικά για αυτόν το χρήστη manage_social=Διαχείριση Συσχετιζόμενων Λογαριασμών Κοινωνικών Δικτύων @@ -897,7 +918,7 @@ create_oauth2_application_button=Δημιουργία εφαρμογής create_oauth2_application_success=Δημιουργήσατε επιτυχώς μια νέα εφαρμογή OAuth2. update_oauth2_application_success=Ενημερώσατε την εφαρμογή OAuth2 επιτυχώς. oauth2_application_name=Όνομα εφαρμογής -oauth2_confidential_client=Εμπιστευτικός Πελάτης. Επιλέξτε το για εφαρμογές που διατηρούν το μυστικό κωδικό κρυφό, όπως πχ οι εφαρμογές ιστού. Μην επιλέγετε για εγγενείς εφαρμογές, συμπεριλαμβανομένων εφαρμογών επιφάνειας εργασίας και εφαρμογών για κινητά. +oauth2_confidential_client=Εμπιστευτικός πελάτης (client). Επιλέξτε το για εφαρμογές που διατηρούν το μυστικό κωδικό κρυφό, όπως π.χ. εφαρμογές ιστού. Μην επιλέγετε για εγγενείς εφαρμογές, συμπεριλαμβανομένων εφαρμογών επιφάνειας εργασίας και εφαρμογών για κινητά. oauth2_redirect_uris=URI Ανακατεύθυνσης. Χρησιμοποιήστε μια νέα γραμμή για κάθε URI. save_application=Αποθήκευση oauth2_client_id=Ταυτότητα Πελάτη @@ -944,10 +965,10 @@ webauthn_delete_key_desc=Αν αφαιρέσετε ένα κλειδί ασφα webauthn_key_loss_warning=Αν χάσετε τα κλειδιά ασφαλείας σας, θα χάσετε την πρόσβαση στο λογαριασμό σας. webauthn_alternative_tip=Μπορεί να θέλετε να ρυθμίσετε μια πρόσθετη μέθοδο ταυτοποίησης. -manage_account_links=Διαχείριση Συνδεδεμένων Λογαριασμών +manage_account_links=Διαχείριση συνδεδεμένων λογαριασμών manage_account_links_desc=Αυτοί οι εξωτερικοί λογαριασμοί είναι συνδεδεμένοι στον λογαριασμό Forgejo σας. account_links_not_available=Προς το παρόν δεν υπάρχουν εξωτερικοί λογαριασμοί συνδεδεμένοι με τον λογαριασμό σας στο Forgejo. -link_account=Σύνδεση Λογαριασμού +link_account=Σύνδεση λογαριασμού remove_account_link=Αφαίρεση συνδεδεμένου λογαριασμού remove_account_link_desc=Η κατάργηση ενός συνδεδεμένου λογαριασμού θα ανακαλέσει την πρόσβασή του στο λογαριασμό σας στο Forgejo. Συνέχεια; remove_account_link_success=Ο συνδεδεμένος λογαριασμός έχει αφαιρεθεί. @@ -983,7 +1004,7 @@ user_unblock_success = Η άρση αποκλεισμού του χρήστη ή change_password = Αλλαγή κωδικού blocked_users = Αποκλεισμένοι χρήστες user_block_success = Ο αποκλεισμός του χρήστη ήταν επιτυχής. -additional_repo_units_hint = Να γίνεται ενθάρρυνση προσθήκης μονάδων σε αποθετήρια +additional_repo_units_hint = Να συνιστάται η προσθήκη μονάδων αποθετηρίων pronouns = Αντωνυμίες pronouns_custom = κάτι άλλο pronouns_unspecified = Απροσδιόριστες @@ -991,6 +1012,7 @@ hints = Συμβουλές additional_repo_units_hint_description = Εμφάνιση κουμπιού «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες. update_hints = Ενημέρωση συμβουλών update_hints_success = Οι συμβουλές ενημερώθηκαν. +language.title = Προεπιλεγμένη γλώσσα [repo] new_repo_helper=Ένα αποθετήριο περιέχει όλα τα αρχεία έργου, συμπεριλαμβανομένου του ιστορικού εκδόσεων. Ήδη φιλοξενείται αλλού; Μετεγκατάσταση αποθετηρίου. @@ -1153,7 +1175,7 @@ migrate.failed=Η μεταφορά απέτυχε: %v migrate.migrate_items_options=Το διακριτικό πρόσβασης (token) είναι απαραίτητο για τη μεταφορά πρόσθετων στοιχείων migrated_from=Μεταφέρθηκε από %[2]s migrated_from_fake=Μεταφέρθηκε από %[1]s -migrate.migrate=Μεταφορά από το %s +migrate.migrate=Μεταφορά από %s migrate.migrating=Γίνεται μεταφορά από το %s... migrate.migrating_failed=Η μεταφορά από το %s απέτυχε. migrate.migrating_failed.error=Αποτυχία μεταφοράς: %s @@ -1238,8 +1260,8 @@ invisible_runes_header=`Αυτό το αρχείο περιέχει αόρατο invisible_runes_description=`Αυτό το αρχείο περιέχει αόρατους χαρακτήρες Unicode που δεν διακρίνονται από ανθρώπους, αλλά μπορεί να επεξεργάζονται διαφορετικά από έναν υπολογιστή. Αν νομίζετε ότι αυτό είναι σκόπιμο, μπορείτε να αγνοήσετε με ασφάλεια αυτή την προειδοποίηση. Χρησιμοποιήστε το κουμπί Escape για να τους αποκαλύψετε.` ambiguous_runes_header=`Αυτό το αρχείο περιέχει ασαφείς χαρακτήρες Unicode ` ambiguous_runes_description=`Αυτό το αρχείο περιέχει χαρακτήρες Unicode που μπορεί να συγχέονται με άλλους χαρακτήρες. Αν νομίζετε ότι αυτό είναι σκόπιμο, μπορείτε να αγνοήσετε με ασφάλεια αυτή την προειδοποίηση. Χρησιμοποιήστε το κουμπί Escape για να τους αποκαλύψετε.` -invisible_runes_line=`Αυτή η γραμμή έχει αόρατους χαρακτήρες unicode ` -ambiguous_runes_line=`Αυτή η γραμμή έχει ασαφείς χαρακτήρες unicode ` +invisible_runes_line=`Αυτή η γραμμή έχει αόρατους χαρακτήρες Unicode` +ambiguous_runes_line=`Αυτή η γραμμή έχει ασαφείς χαρακτήρες Unicode` ambiguous_character=`ο %[1]c [U+%04[1]X] μπορεί να μπερδευτεί με τον %[2]c [U+%04[2]X]` escape_control_characters=Escape @@ -1249,6 +1271,7 @@ view_git_blame=Προβολή git blame video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video». audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio». stored_lfs=Αποθηκεύτηκε με το Git LFS +stored_annex=Αποθηκεύτηκε με το Git Annex symbolic_link=Symbolic link executable_file=Εκτελέσιμο αρχείο commit_graph=Γράφημα υποβολών @@ -1272,6 +1295,7 @@ editor.upload_file=Ανέβασμα αρχείου editor.edit_file=Επεξεργασία αρχείου editor.preview_changes=Προεπισκόπηση αλλαγών editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web. +editor.cannot_edit_annex_files=Τα αρχεία Annex δεν μπορούν να επεξεργαστούν στη διεπαφή web. editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web. editor.edit_this_file=Επεξεργασία αρχείου editor.this_file_locked=Το αρχείο είναι κλειδωμένο @@ -1290,10 +1314,10 @@ editor.add_tmpl=Προσθήκη «» editor.add=Προσθήκη %s editor.update=Ενημέρωση %s editor.delete=Διαγραφή %s -editor.patch=Εφαρμογή Διόρθωσης +editor.patch=Εφαρμογή patch editor.patching=Επιδιόρθωση: editor.fail_to_apply_patch=`Αδυναμία εφαρμογής της επιδιόρθωσης "%s"` -editor.new_patch=Νέα Διόρθωση +editor.new_patch=Νέο patch editor.commit_message_desc=Προσθήκη προαιρετικής εκτενούς περιγραφής… editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής της υποβολής. editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο %s. @@ -1318,10 +1342,10 @@ editor.commit_empty_file_header=Υποβολή ενός κενού αρχείο editor.commit_empty_file_text=Το αρχείο που πρόκειται να υποβληθεί είναι κενό. Συνέχεια; editor.no_changes_to_show=Δεν υπάρχουν αλλαγές για εμφάνιση. editor.fail_to_update_file=Αποτυχία ενημέρωσης/δημιουργίας του αρχείου «%s». -editor.fail_to_update_file_summary=Μήνυμα Σφάλματος: +editor.fail_to_update_file_summary=Μήνυμα σφάλματος: editor.push_rejected_no_message=Η αλλαγή απορρίφθηκε από τον διακομιστή και δεν γνωρίζουμε τον λόγο. Παρακαλώ ελέγξτε τα Git hooks σας. editor.push_rejected=Η αλλαγή απορρίφθηκε από τον διακομιστή. Παρακαλώ ελέγξτε τα Git hook σας. -editor.push_rejected_summary=Μήνυμα Πλήρους Απόρριψης: +editor.push_rejected_summary=Μήνυμα πλήρους απόρριψης: editor.add_subdir=Προσθήκη φακέλου… editor.unable_to_upload_files=Αποτυχία αποστολής αρχείων στο «%s» με το σφάλμα: %v editor.upload_file_is_locked=Το αρχείο «%s» είναι κλειδωμένο από %s. @@ -1419,7 +1443,7 @@ issues.filter_reviewers=Φιλτράρισμα Εξεταστή issues.new=Νέο ζήτημα issues.new.title_empty=Ο τίτλος δεν μπορεί να είναι κενός issues.new.labels=Σήματα -issues.new.no_label=Χωρίς Σήμα +issues.new.no_label=Χωρίς σήμανση issues.new.clear_labels=Καθαρισμός σημάτων issues.new.projects=Έργα issues.new.clear_projects=Εκκαθάριση έργων @@ -1449,8 +1473,8 @@ issues.new_label=Νέο σήμα issues.new_label_placeholder=Όνομα σήματος issues.new_label_desc_placeholder=Περιγραφή issues.create_label=Δημιουργία σήματος -issues.label_templates.title=Χρήση ενός προκαθορισμένου συνόλου σημάτων -issues.label_templates.info=Δεν υπάρχουν σήματα ακόμα. Δημιουργήστε ένα σήμα με το κουμπί «Νέο Σήμα» ή χρησιμοποιήστε ένα σετ προκαθορισμένων σημάτων: +issues.label_templates.title=Χρήση προκαθορισμένου συνόλου σημάνσεων +issues.label_templates.info=Δεν υπάρχουν σημάνσεις ακόμα. Δημιουργήστε ένα σήμα με το κουμπί «Νέα σήμανση» ή χρησιμοποιήστε ένα σετ προκαθορισμένων σημάνσεων: issues.label_templates.helper=Επιλέξτε ένα σύνολο προεπιλεγμένων σημάτων issues.label_templates.use=Χρήση συνόλου προεπιλεγμένων σημάτων issues.label_templates.fail_to_load_file=Αποτυχία φόρτωσης των προτύπων σημάτων από το αρχείο «%s»: %v @@ -1572,7 +1596,7 @@ issues.role.collaborator_helper=Ο χρήστης έλαβε πρόσκληση issues.role.first_time_contributor=Συντελεστής για πρώτη φορά issues.role.first_time_contributor_helper=Αυτή είναι η πρώτη συνεισφορά αυτού του χρήστη στο αποθετήριο. issues.role.contributor=Συντελεστής -issues.role.contributor_helper=Αυτός ο χρήστης έχει προηγούμενές υποβολές στο αποθετήριο. +issues.role.contributor_helper=Αυτός ο χρήστης έχει προηγούμενές υποβολές (commits) στο αποθετήριο. issues.re_request_review=Επαναίτηση ανασκόπησης issues.is_stale=Έχουν υπάρξει αλλαγές σε αυτό το PR από αυτή την αναθεώρηση issues.remove_request_review=Αφαίρεση αιτήματος αναθεώρησης @@ -1837,17 +1861,17 @@ pulls.merge_commit_id=Το ID της υποβολής συγχώνευσης pulls.require_signed_wont_sign=Ο κλάδος απαιτεί υπογεγραμμένες υποβολές αλλά αυτή η συγχώνευση δεν θα υπογραφεί pulls.invalid_merge_option=Δεν μπορείτε να χρησιμοποιήσετε αυτήν την επιλογή συγχώνευσης για αυτό το pull request. -pulls.merge_conflict=Η Συγχώνευση Απέτυχε: Υπήρξε μια διένεξη κατά τη συγχώνευση. Υπόδειξη: Δοκιμάστε μια διαφορετική στρατηγική -pulls.merge_conflict_summary=Μήνυμα Σφάλματος -pulls.rebase_conflict=Η Συγχώνευση Απέτυχε: Υπήρξε μια σύγκρουση κατά την αλλαγή βάσης της υποβολής: %[1]s. Υπόδειξη: Δοκιμάστε μια διαφορετική στρατηγική -pulls.rebase_conflict_summary=Μήνυμα Σφάλματος -pulls.unrelated_histories=H Συγχώνευση Απέτυχε: Η κεφαλή και η βάση της συγχώνευσης δεν μοιράζονται μια κοινή ιστορία. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική +pulls.merge_conflict=Η συγχώνευση απέτυχε: Υπήρξε μια σύγκρουση κατά τη συγχώνευση. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική +pulls.merge_conflict_summary=Μήνυμα σφάλματος +pulls.rebase_conflict=Η συγχώνευση απέτυχε: Υπήρξε μια σύγκρουση κατά την αλλαγή βάσης της υποβολής: %[1]s. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική +pulls.rebase_conflict_summary=Μήνυμα σφάλματος +pulls.unrelated_histories=H συγχώνευση απέτυχε: Η κεφαλή και η βάση της συγχώνευσης δεν έχουν κοινή ιστορία. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική pulls.merge_out_of_date=Η συγχώνευση απέτυχε: Κατά τη δημιουργία της συγχώνευσης, η βάση ενημερώθηκε. Συμβουλή: Δοκιμάστε ξανά. pulls.head_out_of_date=Η συγχώνευση απέτυχε: Κατά τη δημιουργία της συγχώνευσης, το HEAD ενημερώθηκε. Συμβουλή: Δοκιμάστε ξανά. pulls.has_merged=Αποτυχία: Το pull request έχει συγχωνευθεί, δεν είναι δυνατή η συγχώνευση ξανά ή να αλλάξει ο κλάδος προορισμού. -pulls.push_rejected=Αποτυχία ώθησης: Η ώθηση απορρίφθηκε. Ελέγξτε τα Git hooks του αποθετήριο. -pulls.push_rejected_summary=Μήνυμα Πλήρους Απόρριψης -pulls.push_rejected_no_message=Αποτυχία ώθησης: Η ώθηση απορρίφθηκε, αλλά δεν λάβαμε κάποιο μήνυμα. Ελέγξτε τα Git hooks του αποθετηρίου +pulls.push_rejected=Η ώθηση απέτυχε: Η ώθηση απορρίφθηκε. Ελέγξτε τα Git hooks του αποθετηρίου. +pulls.push_rejected_summary=Μήνυμα πλήρους απόρριψης +pulls.push_rejected_no_message=Η ώθηση απέτυχε: Η ώθηση απορρίφθηκε, αλλά δεν λάβαμε κάποιο μήνυμα. Ελέγξτε τα Git hooks του αποθετηρίου pulls.open_unmerged_pull_exists=`Δεν μπορείτε να ανοίξετε εκ νέου, επειδή υπάρχει ένα εκκρεμές pull request (#%d) με πανομοιότυπες ιδιότητες.` pulls.status_checking=Μερικοί έλεγχοι εκκρεμούν pulls.status_checks_success=Όλοι οι έλεγχοι ήταν επιτυχείς @@ -1866,7 +1890,7 @@ pulls.outdated_with_base_branch=Αυτός ο κλάδος δεν είναι ε pulls.close=Κλείσιμο pull request pulls.closed_at=`έκλεισε αυτό το pull request %[2]s` pulls.reopened_at=`άνοιξε ξανά αυτό το pull request %[2]s` -pulls.cmd_instruction_hint=`Δείτε τις οδηγίες γραμμής εντολών.` +pulls.cmd_instruction_hint=`Δείτε τις οδηγίες γραμμής εντολών.` pulls.cmd_instruction_checkout_title=Έλεγχος pulls.cmd_instruction_checkout_desc=Από το αποθετήριο του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές. pulls.cmd_instruction_merge_title=Συγχώνευση @@ -1925,7 +1949,7 @@ milestones.filter_sort.least_issues=Λιγότερα ζητήματα signing.will_sign=Αυτή η υποβολή θα υπογραφεί με το κλειδί «%s». signing.wont_sign.error=Παρουσιάστηκε σφάλμα κατά τον έλεγχο για το αν η υποβολή μπορεί να υπογραφεί. -signing.wont_sign.nokey=Δεν υπάρχει διαθέσιμο κλειδί για να υπογραφεί αυτή η υποβολή. +signing.wont_sign.nokey=Ο διακομιστής δεν παρέχει κάποιο κλειδί για την υπογραφή αυτής της υποβολής (commit). signing.wont_sign.never=Οι υποβολές δεν υπογράφονται ποτέ. signing.wont_sign.always=Οι υποβολές υπογράφονται πάντα. signing.wont_sign.pubkey=Η υποβολή δε θα υπογραφεί επειδή δεν υπάρχει δημόσιο κλειδί που να συνδέεται με το λογαριασμό σας. @@ -1944,21 +1968,21 @@ wiki=Wiki wiki.welcome=Καλώς ήρθατε στο Wiki. wiki.welcome_desc=Το wiki σας επιτρέπει να γράψετε και να μοιραστείτε τεκμηριώσεις (documentation) με άλλους συνεργάτες. wiki.desc=Γράψτε και μοιραστείτε τεκμηριώσεις με συνεργάτες. -wiki.create_first_page=Δημιουργία πρώτης σελίδας +wiki.create_first_page=Δημιουργία αρχικής σελίδας wiki.page=Σελίδα wiki.filter_page=Φιλτράρισμα σελίδας wiki.new_page=Σελίδα wiki.page_title=Τίτλος σελίδας wiki.page_content=Περιεχόμενο σελίδας wiki.default_commit_message=Γράψτε μια σημείωση σχετικά με αυτή την ενημέρωση σελίδας (προαιρετικό). -wiki.save_page=Αποθήκευση Σελίδας +wiki.save_page=Αποθήκευση σελίδας wiki.last_commit_info=%s επεξεργάστηκε αυτή τη σελίδα %s wiki.edit_page_button=Επεξεργασία -wiki.new_page_button=Νέα Σελίδα -wiki.file_revision=Αναθεώρηση Σελίδας -wiki.wiki_page_revisions=Αναθεωρήσεις Σελίδας Wiki +wiki.new_page_button=Νέα σελίδα +wiki.file_revision=Έκδοση σελίδας +wiki.wiki_page_revisions=Αναθεωρήσεις σελίδας wiki wiki.back_to_wiki=Πίσω στη σελίδα wiki -wiki.delete_page_button=Διαγραφή Σελίδας +wiki.delete_page_button=Διαγραφή σελίδας wiki.delete_page_notice_1=Η διαγραφή της σελίδας wiki «%s» δεν μπορεί να αναιρεθεί. Συνέχεια; wiki.page_already_exists=Υπάρχει ήδη μια σελίδα wiki με το ίδιο όνομα. wiki.reserved_page=Το όνομα σελίδας wiki «%s» είναι δεσμευμένο. @@ -2081,11 +2105,11 @@ settings.mirror_settings.push_mirror.remote_url=URL απομακρυσμένου settings.mirror_settings.push_mirror.add=Προσθήκη είδωλου ώθησης settings.mirror_settings.push_mirror.edit_sync_time=Επεξεργασία διαστήματος συγχρονισμού ειδώλου -settings.sync_mirror=Συγχρονισμός Τώρα +settings.sync_mirror=Να γίνει συγχρονισμός τώρα settings.pull_mirror_sync_in_progress=Έλκονται αλλαγές από την απομακρυσμένη τοποθεσία %s αυτή τη στιγμή. settings.push_mirror_sync_in_progress=Ώθηση αλλαγών στο απομακρυσμένο %s αυτή τη στιγμή. settings.site=Ιστοσελίδα -settings.update_settings=Ενημέρωση ρυθμίσεων +settings.update_settings=Αποθήκευση ρυθμίσεων settings.update_mirror_settings=Ενημέρωση ρυθμίσεων ειδώλου settings.branches.switch_default_branch=Αλλαγή προεπιλεγμένου κλάδου settings.branches.update_default_branch=Ενημέρωση προεπιλεγμένου κλάδου @@ -2126,9 +2150,9 @@ settings.projects_desc=Ενεργοποίηση έργων αποθετηρίο settings.actions_desc=Ενεργοποίηση actions αποθετηρίου settings.admin_settings=Ρυθμίσεις διαχειριστή settings.admin_enable_health_check=Ενεργοποίηση ελέγχων υγείας αποθετηρίων (git fsck) -settings.admin_code_indexer=Indexer Κώδικα -settings.admin_stats_indexer=Indexer Στατιστικών Κώδικα -settings.admin_indexer_commit_sha=Τελευταίο Indexed SHA +settings.admin_code_indexer=Indexer κώδικα +settings.admin_stats_indexer=Indexer στατιστικών κώδικα +settings.admin_indexer_commit_sha=Τελευταίο indexed SHA settings.admin_indexer_unindexed=Unindexed settings.reindex_button=Προσθήκη στην ουρά Reindex settings.reindex_requested=Αιτήθηκε reindex @@ -2346,7 +2370,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 push και συγχώνευση στον κλάδο. settings.protect_disable_push=Απενεργοποίηση ωθήσεων @@ -2388,7 +2412,7 @@ settings.protect_branch_name_pattern=Μοτίβο προστατευμένου settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος προστατευμένων κλάδων. Συμβολευτείτε την τεκμηρίωση για την σύνταξη ενός μοτίβου. Παραδείγματα: main, release/** settings.protect_patterns=Μοτίβα settings.protect_protected_file_patterns=Μοτίβα προστατευμένων αρχείων (διαχωρισμός με semicolon «;» και ΟΧΙ το ελληνικό ερωτηματικό): -settings.protect_protected_file_patterns_desc=Τα προστατευόμενα αρχεία δεν επιτρέπεται να αλλάξουν άμεσα, ακόμη και αν ο χρήστης έχει δικαιώματα να προσθέσει, να επεξεργαστεί ή να διαγράψει αρχεία σε αυτόν τον κλάδο. Επιπλέων μοτίβα μπορούν να διαχωριστούν με ερωτηματικό (';'). Δείτε την τεκμηρίωση github.com/gobwas/glob για τη σύνταξη του μοτίβου. Πχ: .drone.yml, /docs/**/*.txt. +settings.protect_protected_file_patterns_desc=Τα προστατευόμενα αρχεία δεν επιτρέπεται να αλλάξουν άμεσα, ακόμη και αν ο χρήστης έχει δικαιώματα να προσθέσει, να επεξεργαστεί ή να διαγράψει αρχεία σε αυτόν τον κλάδο. Επιπλέων μοτίβα μπορούν να διαχωριστούν με semicolon («;») (ΟΧΙ ερωτηματικό). Για να συντάξετε μοτίβα, συμβουλευτείται την τεκμηρίωση github.com/gobwas/glob. Παράδειγμα: .drone.yml, /docs/**/*.txt. settings.protect_unprotected_file_patterns=Μοτίβα μη προστατευμένων αρχείων (διαχωρισμένα με semicolon «;» και ΟΧΙ το ελληνικό ερωτηματικό): settings.protect_unprotected_file_patterns_desc=Μη προστατευμένα αρχεία που επιτρέπεται να αλλάξουν απευθείας εάν ο χρήστης έχει πρόσβαση εγγραφής, παρακάμπτοντας τον περιορισμό ώθησης. Επιπλέων μοτίβα μπορούν να διαχωριστούν με ερωτηματικό (';'). Δείτε την τεκμηρίωση github.com/gobwas/glob για τη σύνταξη του μοτίβου. Πχ: .drone.yml, /docs/**/*.txt. settings.add_protected_branch=Ενεργοποίηση προστασίας @@ -2458,15 +2482,15 @@ settings.lfs_invalid_lock_directory=Αδυναμία κλειδώματος φα settings.lfs_lock_already_exists=Το κλείδωμα υπάρχει ήδη: %s settings.lfs_lock=Κλείδωμα settings.lfs_lock_path=Διαδρομή αρχείου για να κλειδωθεί... -settings.lfs_locks_no_locks=Χωρίς Κλειδώματα +settings.lfs_locks_no_locks=Χωρίς κλειδώματα settings.lfs_lock_file_no_exist=Το κλειδωμένο αρχείο δεν υπάρχει στον προεπιλεγμένο κλάδο -settings.lfs_force_unlock=Εξαναγκασμός Ξεκλειδώματος +settings.lfs_force_unlock=Εξαγκαναστικό ξεκλείδωμα settings.lfs_pointers.found=Βρέθηκαν %d δείκτης(ες) blob - %d συσχετίστηκαν, %d δεν συσχετίστηκαν (%d λείπουν από το χώρο αποθήκευσης) -settings.lfs_pointers.sha=Blob SHA +settings.lfs_pointers.sha=Blob hash settings.lfs_pointers.oid=OID -settings.lfs_pointers.inRepo=Στο Αποθετήριο +settings.lfs_pointers.inRepo=Στο αποθετήριο settings.lfs_pointers.exists=Υπάρχει στο χώρο αποθήκευσης -settings.lfs_pointers.accessible=Προσβάσιμο στο Χρήστη +settings.lfs_pointers.accessible=Προσβάσιμο στον χρήστη settings.lfs_pointers.associateAccessible=Συσχετισμός προσιτών %d OID settings.rename_branch_failed_exist=Αδυναμία μετονομασίας του κλάδου, επειδή ο κλάδος προορισμού %s υπάρχει ήδη. settings.rename_branch_failed_not_exist=Αδυναμία μετονομασίας του κλάδου %s επειδή δεν υπάρχει. @@ -2515,7 +2539,7 @@ diff.comment.add_single_comment=Προσθέστε ένα σχόλιο diff.comment.add_review_comment=Προσθήκη σχολίου diff.comment.start_review=Έναρξη αξιολόγησης diff.comment.reply=Απάντηση -diff.review=Αξιολόγηση +diff.review=Ολοκλήρωση αξιολόγησης diff.review.header=Υποβολή αξιολόγησης diff.review.placeholder=Σχόλιο αξιολόγησης diff.review.comment=Σχόλιο @@ -2536,16 +2560,16 @@ releases.desc=Παρακολούθηση εκδόσεων έργου και λή release.releases=Κυκλοφορίες release.detail=Λεπτομέρειες κυκλοφορίας release.tags=Ετικέτες -release.new_release=Νέα Κυκλοφορία +release.new_release=Νέα κυκλοφορία release.draft=Προσχέδιο -release.prerelease=Προ-Κυκλοφορία +release.prerelease=Προδημοσίευση release.stable=Σταθερή release.compare=Σύγκριση release.edit=επεξεργασία release.ahead.commits=%d υποβολές release.ahead.target=σε %s από αυτή την έκδοση tag.ahead.target=μέχρι το %s από αυτή την ετικέτα -release.source_code=Πηγαίος Κώδικας +release.source_code=Πηγαίος κώδικας release.new_subheader=Οι Κυκλοφορίες οργανώνουν εκδόσεις έργων. release.edit_subheader=Οι Κυκλοφορίες οργανώνουν εκδόσεις έργων. release.tag_name=Όνομα ετικέτας @@ -2556,15 +2580,15 @@ release.tag_helper_existing=Υπάρχουσα ετικέτα. release.title=Τίτλος κυκλοφορίας release.title_empty=Ο τίτλος δεν μπορεί να είναι κενός. release.message=Περιγράψτε αυτήν την κυκλοφορία -release.prerelease_desc=Σήμανση ως Προ-Κυκλοφορία +release.prerelease_desc=Σήμανση ως προδημοσίευση release.prerelease_helper=Σημείωση αυτής της κυκλοφορίας ως ακατάλληλη για χρήση στη παραγωγή. release.cancel=Ακύρωση -release.publish=Δημοσίευση Κυκλοφορίας -release.save_draft=Αποθήκευση Προχείρου -release.edit_release=Ενημέρωση Κυκλοφορίας -release.delete_release=Διαγραφή Κυκλοφορίας -release.delete_tag=Διαγραφή Ετικέτας -release.deletion=Διαγραφή Κυκλοφορίας +release.publish=Δημοσίευση κυκλοφορίας +release.save_draft=Αποθήκευση προχείρου +release.edit_release=Ενημέρωση κυκλοφορίας +release.delete_release=Διαγραφή κυκλοφορίας +release.delete_tag=Διαγραφή ετικέτας +release.deletion=Διαγραφή κυκλοφορίας release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Gitea. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια; release.deletion_success=Η κυκλοφορία έχει διαγραφεί. release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το αποθετήριο. Τα περιεχόμενα του αποθετηρίου και το ιστορικό παραμένουν αμετάβλητα. Συνέχεια; @@ -2576,7 +2600,7 @@ release.tag_already_exist=Αυτό το όνομα ετικέτας υπάρχε release.downloads=Λήψεις release.download_count=Λήψεις: %s release.add_tag_msg=Χρησιμοποιήστε τον τίτλο και το περιεχόμενο της έκδοσης ως μήνυμα ετικέτας. -release.add_tag=Δημιουργία Ετικέτας Μόνο +release.add_tag=Δημιουργία ετικέτας release.releases_for=Κυκλοφορίες για %s release.tags_for=Ετικέτες για %s @@ -2709,7 +2733,7 @@ release.system_generated = Αυτό το αρχείο παράγεται αυτ pulls.ready_for_review = Έτοιμο για αξιολόγηση; settings.rename_branch_failed_protected = Δεν είναι δυνατή η μετονομασία του κλάδου %s, επειδή είναι προστατευόμενος. settings.event_pull_request_enforcement = Εξαναγκασμός -editor.commit_id_not_matching = Το αναγνωριστικό της υποβολής δεν ταιριάζει με την υποβολή που επεξεργαστήκατε. Θα πρέπει να υποβάλετε τις αλλαγές σας σε έναν νέο κλάδο και μετά να τις συγχωνεύσετε. +editor.commit_id_not_matching = Το αρχείο άλλαξε όσο το επεξεργαζόσασταν. Θα πρέπει να υποβάλετε τις αλλαγές σας σε έναν νέο κλάδο και μετά να τις συγχωνεύσετε. settings.sourcehut_builds.visibility = Ορατότητα εργασιών object_format = Μορφή αντικειμένων («object format») settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερες υποβολές, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο. @@ -2722,6 +2746,30 @@ file_follow = Ακολούθηση συνδέσμου (symlink) settings.sourcehut_builds.secrets_helper = Παραχώρηση πρόσβασης του job στα μυστικά ενός build (απαιτείται η άδεια SECRETS:RO) generated = Παραγμένο editor.push_out_of_date = Η αλλαγή φαίνεται να είναι παρωχημένη. +issues.author.tooltip.issue = Αυτό το ζήτημα δημιουργήθηκε από αυτόν τον χρήστη. +issues.author.tooltip.pr = Αυτό το pull request δημιουργήθηκε από αυτόν τον χρήστη. +settings.federation_settings = Ρυθμίσεις διαλειτουργικότητας +settings.federation_apapiurl = Το Federation URL (URL διαλειτουργικότητας) του αποθετηρίου. Κάντε το copy-paste στις ρυθμίσεις διαλειτουργικότητας ενός άλλου αποθετηρίου ως το URL ενός ακολουθούμενου αποθετηρίου. +form.string_too_long = Το κείμενο είναι μεγαλύτερο από %d χαρακτήρες. +release.hide_archive_links = Απόκρυψη αυτόματα δημιουργημένων archive +settings.graphql_url = URL του GraphQL +issues.edit.already_changed = Δεν ήταν δυνατή η αποθήκευση των αλλαγών στο ζήτημα αυτό, επειδή το περιεχόμενο έχει ήδη αλλαχθεί από κάποιον άλλο χρήστη. Για να μην χαθούν οι αλλαγές του, παρακαλείσθε να ανανεώσετε την σελίδα και προσπαθήστε να το επεξεργαστείτε ξανά. +project = Έργα +settings.sourcehut_builds.access_token_helper = Διακριτικό πρόσβασης (token) που έχει άδεια JOBS:RW. Δημιουργήστε ένα διακριτκό πρόσβασης για το build.sr.ht ή ένα διακριτικό πρόσβασης build.sr.ht με πρόσβαση ιδιωτικών περιεχομένων στο meta.sr.ht. +settings.federation_not_enabled = Οι λειτουργίες διαλειτουργικότητας δεν είναι ενεργοποιημένες στον διακομιστή σας. +settings.federation_following_repos = URL ακουλουθούμενων αποθετηρίων. Διαχωρίζονται με «;», χωρίς κενά. +subscribe.issue.guest.tooltip = Συνδεθείτε για να λάβετε ενημερώσεις για το ζήτημα αυτό. +subscribe.pull.guest.tooltip = Συνδεθείτε για να λάβετε ενημερώσεις για το pull request αυτό. +pulls.edit.already_changed = Δεν ήταν δυνατή η αποθήκευση των αλλαγών στο pull request αυτό, επειδή το περιεχόμενο έχει ήδη αλλαχθεί από κάποιον άλλο χρήστη. Για να μην χαθούν οι αλλαγές του, παρακαλείσθε να ανανεώσετε την σελίδα και προσπαθήστε να το επεξεργαστείτε ξανά. +comments.edit.already_changed = Δεν ήταν δυνατή η αποθήκευση των αλλαγών σε αυτό το σχόλιο, επειδή το περιεχόμενο έχει ήδη αλλαχθεί από κάποιον άλλο χρήστη. Για να μην χαθούν οι αλλαγές του, παρακαλείσθε να ανανεώσετε την σελίδα και προσπαθήστε να το επεξεργαστείτε ξανά. +settings.matrix.access_token_helper = Για τον σκοπό αυτό, σας συνιστούμε να δημιουργήσετε έναν ξεχωριστό λογαριασμό Matrix. Μπορείτε να αποκτήσετε το διακριτικό πρόσβασης μέσα στο Element. +settings.transfer.modal.title = Παραχώρηση ιδιοκτησίας +settings.transfer.button = Παραχώρηση ιδιοκτησίας +settings.matrix.room_id_helper = Το ID δωματίου μπορείτε να το βρείτε στο πρόγραμμα Element > Room Settings > Advanced > Internal room ID. Παράδειγμα: %s. +wiki.search = Αναζήτηση wiki +wiki.no_search_results = Κανένα αποτέλεσμα +n_release_one = %s κυκλοφορία +n_release_few = %s κυκλοφορίες [graphs] component_loading_failed = Δεν ήταν δυνατή η φόρτωση του %s @@ -2791,7 +2839,7 @@ settings.labels_desc=Προσθήκη σημάτων που μπορούν να members.membership_visibility=Ορατότητα μέλους: members.public=Ορατό -members.public_helper=κάνε το κρυφό +members.public_helper=κάνε κρυφό members.private=Κρυφό members.private_helper=κάνε ορατό members.member_role=Ρόλος μέλους: @@ -2855,7 +2903,8 @@ teams.all_repositories_admin_permission_desc=Αυτή η ομάδα παρέχε teams.invite.title=Έχετε προσκληθεί να συμμετάσχετε στην ομάδα %s του οργανισμού %s. teams.invite.by=Προσκλήθηκε από %s teams.invite.description=Παρακαλώ κάντε κλικ στον παρακάτω σύνδεσμο για συμμετοχή στην ομάδα. -follow_blocked_user = Δεν μπορείτε να ακολουθήσετε αυτόν τον οργανισμό, επειδή ο οργανισμός σας έχει αποκλείσει. +follow_blocked_user = Δεν μπορείτε να ακολουθήσετε τον οργανισμό, επειδή σας έχει αποκλείσει. +open_dashboard = Δημιουργία πίνακα δραστηριότητας [admin] dashboard=Πίνακας Ελέγχου @@ -2999,7 +3048,7 @@ users.delete_account=Διαγραφή λογαριασμού χρήστη users.cannot_delete_self=Δεν μπορείτε να διαγράψετε τον εαυτό σας users.still_own_repo=Αυτός ο χρήστης εξακολουθεί να κατέχει ένα ή περισσότερα αποθετήρια. Διαγράψτε ή μεταφέρετε αυτά τα αποθετήρια πρώτα. users.still_has_org=Αυτός ο χρήστης είναι μέλος ενός οργανισμού. Αφαιρέστε πρώτα τον χρήστη από οποιονδήποτε οργανισμό. -users.purge=Εκκαθάριση Χρήστη +users.purge=Διαγραφή χρήστη users.purge_help=Εξαναγκαστική διαγραφή χρήστη καθώς και των αποθετηρίων, οργανισμών και πακέτων που του ανήκουν. Όλα τα σχόλια και τα ζητήματα του χρήστη θα διαγραφούν επίσης. users.still_own_packages=Αυτός ο χρήστης εξακολουθεί να κατέχει ένα ή περισσότερα πακέτα, διαγράψτε αυτά τα πακέτα πρώτα. users.deletion_success=Ο λογαριασμός χρήστη έχει διαγραφεί. @@ -3009,14 +3058,14 @@ users.list_status_filter.reset=Επαναφορά users.list_status_filter.is_active=Ενεργό users.list_status_filter.not_active=Ανενεργό users.list_status_filter.is_admin=Διαχειριστής -users.list_status_filter.not_admin=Μη Διαχειριστής +users.list_status_filter.not_admin=Χωρίς δικαιώματα διαχειριστή users.list_status_filter.is_restricted=Περιορισμένος -users.list_status_filter.not_restricted=Μη Περιορισμένος -users.list_status_filter.is_prohibit_login=Απαγόρευση Σύνδεσης -users.list_status_filter.not_prohibit_login=Επιτρέπεται η Σύνδεση -users.list_status_filter.is_2fa_enabled=2FA Ενεργοποιημένο -users.list_status_filter.not_2fa_enabled=2FA Απενεργοποιημένο -users.details=Λεπτομέρειες Χρήστη +users.list_status_filter.not_restricted=Χωρίς περιορισμούς +users.list_status_filter.is_prohibit_login=Απαγορευμένη σύνδεση +users.list_status_filter.not_prohibit_login=Επιτρέπεται η σύνδεση +users.list_status_filter.is_2fa_enabled=Με ενεργοποιημένο 2FA +users.list_status_filter.not_2fa_enabled=Χωρίς 2FA +users.details=Λεπτομέρειες χρήστη emails.email_manage_panel=Διαχείριση email χρηστών emails.primary=Κύριο @@ -3051,8 +3100,8 @@ repos.size=Μέγεθος repos.lfs_size=Μέγεθος LFS packages.package_manage_panel=Διαχείριση πακέτων -packages.total_size=Συνολικό Μέγεθος: %s -packages.unreferenced_size=Μέγεθος Χωρίς Αναφορά: %s +packages.total_size=Συνολικό μέγεθος: %s +packages.unreferenced_size=Μέγεθος χωρίς αναφορά: %s packages.cleanup=Εκκαθάριση ληγμένων δεδομένων packages.cleanup.success=Επιτυχής εκκαθάριση δεδομένων που έχουν λήξει packages.owner=Ιδιοκτήτης @@ -3122,7 +3171,7 @@ 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=Όνομα διακομιστή HELO auths.helo_hostname_helper=Όνομα διακομιστή που αποστέλλεται με το HELO. Αφήστε κενό για να στείλετε το τρέχον όνομα του διακομιστή. auths.disable_helo=Απενεργοποίηση HELO auths.pam_service_name=Όνομα υπηρεσίας PAM @@ -3162,7 +3211,7 @@ auths.sspi_separator_replacement_helper=Ο χαρακτήρας που θα χρ auths.sspi_default_language=Προεπιλεγμένη γλώσσα χρήστη auths.sspi_default_language_helper=Προεπιλεγμένη γλώσσα για τους χρήστες που δημιουργούνται αυτόματα με τη μέθοδο ταυτοποίησης SSPI. Αφήστε κενό αν προτιμάτε η γλώσσα να εντοπιστεί αυτόματα. auths.tips=Συμβουλές -auths.tips.oauth2.general=Ταυτοποίηση OAuth2 +auths.tips.oauth2.general=Ταυτοποίηση μέσω OAuth2 auths.tips.oauth2.general.tip=Κατά την εγγραφή μιας νέας ταυτοποίησης OAuth2, το URL κλήσης/ανακατεύθυνσης πρέπει να είναι: auths.tip.oauth2_provider=Πάροχος OAuth2 auths.tip.bitbucket=Καταχωρήστε έναν νέο καταναλωτή OAuth στο https://bitbucket.org/account/user//oauth-consumers/new και προσθέστε το δικαίωμα 'Account' - 'Read' @@ -3218,7 +3267,7 @@ config.ssh_start_builtin_server=Χρήση ενσωματωμένου διακο config.ssh_domain=Domain διακομιστή SSH config.ssh_port=Θύρα config.ssh_listen_port=Θύρα ακρόασης (Listen port) -config.ssh_root_path=Ριζική Διαδρομή +config.ssh_root_path=Τοποθεσία root config.ssh_key_test_path=Διαδρομή δοκιμής κλειδιού config.ssh_keygen_path=Διαδρομή keygen («ssh-keygen») config.ssh_minimum_key_size_check=Έλεγχος ελάχιστου μεγέθους κλειδιού @@ -3242,7 +3291,7 @@ config.service_config=Ρυθμίσεις υπηρεσίας config.register_email_confirm=Να απαιτείται η επιβεβαίωση της διεύθυνσης email για την δημιουργία ενός λογαριασμού config.disable_register=Απενεργοποίηση αυτο-εγγραφής config.allow_only_internal_registration=Να επιτρέπονται εγγραφές μόνο μέσω του Forgejo -config.allow_only_external_registration=Να επιτρέπονται εγγραφές μόνο με την χρήση εξωτερικών υπηρεσιών +config.allow_only_external_registration=Να επιτρέπονται οι εγγραφές μόνο μέσω εξωτερικών υπηρεσιών config.enable_openid_signup=Ενεργοποίηση αυτο-εγγραφής OpenID config.enable_openid_signin=Ενεργοποίηση σύνδεσης μέσω OpenID config.show_registration_button=Εμφάνιση κουμπιού εγγραφής @@ -3397,6 +3446,12 @@ config.open_with_editor_app_help = Οι επεξεργαστές κειμένο auths.tip.gitlab_new = Μπορείτε να δημιουργήσετε μία νέα εφαρμογή στο https://gitlab.com/-/profile/applications self_check.database_collation_mismatch = Η βάση δεδομένων αναμένεται να χρησιμοποιεί το collation: %s self_check.database_collation_case_insensitive = Η βάση δεδομένων χρησιμοποιεί το collation %s, το οποίο δεν ξεχωρίζει κεφαλαία και πεζά γράμματα. Αν και το Forgejo μπορεί να δουλέψει με αυτό, ίσως να προκύψουν κάποιες σπάνιες περιπτώσεις όπου κάτι δεν θα δουλέψει όπως αναμένεται. +config.cache_test_failed = Η δοκιμή cache απέτυχε: %v. +config.cache_test_succeeded = Η δοκιμή cache πέτυχε, λάβαμε απάντηση σε %s. +config.cache_test = Δοκιμή cache +config.cache_test_slow = Η δοκιμή cache πέτυχε, αλλά καθυστέρησε: %s. +config.app_slogan = Slogan διακομιστή +auths.default_domain_name = Προεπιλεγμένο domain name που χρησιμοποιείται για την διεύθυνση email [action] @@ -3749,6 +3804,7 @@ runs.no_workflows.documentation = Για περισσότερες πληροφο runs.no_workflows.quick_start = Δεν ξέρετε από που να πρωτοξεκινήσετε με το Forgejo Actions; Για μια γρήγορη αρχή, συμβουλευτείτε τον οδηγό μας. runs.workflow = Ροή εργασίας runs.no_job_without_needs = Η ροή εργασίας πρέπει να περιέχει τουλάχιστον ένα έργο που δεν εξαρτάται από κάποιο άλλο έργο. +runs.no_job = Η ροή εργασιών πρέπει να περιέχει τουλάχιστον μία εργασία (job) [projects] type-1.display_name=Ατομικό έργο @@ -3787,6 +3843,10 @@ user_kind = Αναζήτηση χρηστών... org_kind = Αναζήτηση οργανισμών... team_kind = Αναζήτηση ομαδών... code_kind = Αναζήτηση κώδικα... +exact_tooltip = Να συμπεριληφθούν μόνο αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης +issue_kind = Αναζήτηση ζητημάτων... +pull_kind = Αναζήτηση pull... +exact = Ακριβής [munits.data] mib = MiB diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index bac0e8515a..1a28e8cba8 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -180,6 +180,7 @@ commit_kind = Search commits... runner_kind = Search runners... no_results = No matching results found. issue_kind = Search issues... +milestone_kind = Search milestones... pull_kind = Search pulls... keyword_search_unavailable = Searching by keyword is currently not available. Please contact the site administrator. @@ -491,7 +492,7 @@ admin.new_user.subject = New user %s just signed up admin.new_user.user_info = User information admin.new_user.text = Please click here to manage this user from the admin panel. -register_notify = Welcome to Forgejo +register_notify_prev9 = Welcome to Forgejo register_notify.text_1 = this is your registration confirmation email for %s! register_notify.text_2 = You can sign into your account using your username: %s register_notify.text_3 = If someone else made this account for you, you will need to set your password first. @@ -1075,7 +1076,7 @@ license = License license_helper = Select a license file. license_helper_desc = A license governs what others can and can't do with your code. Not sure which one is right for your project? See Choose a license. object_format = Object format -object_format_helper = Object format of the repository. Cannot be changed later. SHA1 is most compatible. +object_format_helper = Object format of the repository. Cannot be changed later. SHA1 is the most compatible. readme = README readme_helper = Select a README file template. readme_helper_desc = This is the place where you can write a complete description for your project. @@ -1304,6 +1305,8 @@ view_git_blame = View git blame video_not_supported_in_browser = Your browser does not support the HTML5 "video" tag. audio_not_supported_in_browser = Your browser does not support the HTML5 "audio" tag. stored_lfs = Stored with Git LFS +stored_annex = Stored with Git Annex +stored_annex_not_present = not present here, try using git annex whereis symbolic_link = Symbolic link executable_file = Executable file vendored = Vendored @@ -1329,6 +1332,7 @@ editor.upload_file = Upload file editor.edit_file = Edit file editor.preview_changes = Preview changes editor.cannot_edit_lfs_files = LFS files cannot be edited in the web interface. +editor.cannot_edit_annex_files = Annex files cannot be edited in the web interface. editor.cannot_edit_non_text_files = Binary files cannot be edited in the web interface. editor.edit_this_file = Edit file editor.this_file_locked = File is locked @@ -1614,8 +1618,8 @@ issues.reopened_at = `reopened this issue %[2]s` issues.commit_ref_at = `referenced this issue from a commit %[2]s` issues.ref_issue_from = `referenced this issue %[4]s %[2]s` issues.ref_pull_from = `referenced this pull request %[4]s %[2]s` -issues.ref_closing_from = `referenced a pull request %[4]s that will close this issue %[2]s` -issues.ref_reopening_from = `referenced a pull request %[4]s that will reopen this issue %[2]s` +issues.ref_closing_from = `referenced this issue from a pull request %[4]s that will close it, %[2]s` +issues.ref_reopening_from = `referenced this issue from a pull request %[4]s that will reopen it, %[2]s` issues.ref_closed_from = `closed this issue %[4]s %[2]s` issues.ref_reopened_from = `reopened this issue %[4]s %[2]s` issues.ref_from = `from %[1]s` @@ -1936,7 +1940,7 @@ pulls.close = Close pull request pulls.closed_at = `closed this pull request %[2]s` pulls.reopened_at = `reopened this pull request %[2]s` pulls.commit_ref_at = `referenced this pull request from a commit %[2]s` -pulls.cmd_instruction_hint = `View command line instructions.` +pulls.cmd_instruction_hint = View command line instructions pulls.cmd_instruction_checkout_title = Checkout pulls.cmd_instruction_checkout_desc = From your project repository, check out a new branch and test the changes. pulls.cmd_instruction_merge_title = Merge @@ -2116,6 +2120,7 @@ activity.git_stats_addition_n = %d additions activity.git_stats_and_deletions = and activity.git_stats_deletion_1 = %d deletion activity.git_stats_deletion_n = %d deletions +activity.commit = Commit activity contributors.contribution_type.filter_label = Contribution type: contributors.contribution_type.commits = Commits @@ -2265,7 +2270,7 @@ settings.trust_model.collaboratorcommitter = Collaborator+Committer settings.trust_model.collaboratorcommitter.long = Collaborator+Committer: Trust signatures by collaborators which match the committer settings.trust_model.collaboratorcommitter.desc = Valid signatures by collaborators of this repository will be marked "trusted" if they match the committer. Otherwise, valid signatures will be marked "untrusted" if the signature matches the committer and "unmatched" otherwise. This will force Forgejo to be marked as the committer on signed commits with the actual committer marked as Co-Authored-By: and Co-Committed-By: trailer in the commit. The default Forgejo key must match a User in the database. settings.wiki_rename_branch_main = Normalize the Wiki branch name -settings.wiki_rename_branch_main_desc = Rename the branch used internally by the Wiki to "%s". This is a permanent and cannot be undone. +settings.wiki_rename_branch_main_desc = Rename the branch used internally by the Wiki to "%s". This change is permanent and cannot be undone. settings.wiki_rename_branch_main_notices_1 = This operation CANNOT be undone. settings.wiki_rename_branch_main_notices_2 = This will permanently rename the the internal branch of %s's repository wiki. Existing checkouts will need to be updated. settings.wiki_branch_rename_success = The repository wiki's branch name has been successfully normalized. @@ -2743,7 +2748,7 @@ topic.done = Done topic.count_prompt = You cannot select more than 25 topics topic.format_prompt = Topics must start with a letter or number, can include dashes ("-") and dots ("."), can be up to 35 characters long. Letters must be lowercase. -find_file.go_to_file = Go to file +find_file.go_to_file = Find a file find_file.no_matching = No matching file found error.csv.too_large = Can't render this file because it is too large. @@ -3071,7 +3076,7 @@ orgs.new_orga = New organization repos.repo_manage_panel = Manage repositories repos.unadopted = Unadopted repositories -repos.unadopted.no_more = No more unadopted repositories found +repos.unadopted.no_more = No unadopted repositories found. repos.owner = Owner repos.name = Name repos.private = Private @@ -3815,3 +3820,6 @@ submodule = Submodule filepreview.line = Line %[1]d in %[2]s 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 translate it as "ok" to hit the 100% completion :) and save some time diff --git a/options/locale/locale_eo.ini b/options/locale/locale_eo.ini index 275fc069f5..5ca14e8ea0 100644 --- a/options/locale/locale_eo.ini +++ b/options/locale/locale_eo.ini @@ -135,6 +135,12 @@ toggle_menu = Baskuli menuon access_token = Alira ĵetono remove_all = Forigi ĉion remove_label_str = Forigi «%s» +test = Provo +invalid_data = Nevalidaj datumoj: %v +more_items = Pli da eroj +copy_generic = Kopii al tondujo +confirm_delete_artifact = Ĉu vi certas, ke vi volas forigi la artefakton "%s"? +artifacts = Artefaktoj [editor] buttons.list.ordered.tooltip = Aldoni nombran liston @@ -421,7 +427,7 @@ active_your_account = Aktivigi vian konton [mail] activate_account.text_1 = Saluton %[1]s, dankon pro via registriĝo ĉe %[2]s! release.title = Nomo: %s -register_notify = Bonvenon al Forgejo +register_notify_prev9 = Bonvenon al Forgejo reply = aŭ respondu tiun ĉi retleteron rekte issue.action.close = @%[1]s fermis #%[2]d. register_notify.text_1 = jen estas via registriĝa konfirmletero por %s! diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini index 8545b93b0c..a876fc1527 100644 --- a/options/locale/locale_es-ES.ini +++ b/options/locale/locale_es-ES.ini @@ -459,7 +459,7 @@ activate_email=Verifique su correo electrónico activate_email.title=%s, por favor verifique su dirección de correo electrónico activate_email.text=Por favor, haga clic en el siguiente enlace para verificar su dirección de correo electrónico dentro de %s: -register_notify=¡Bienvenido a Forgejo +register_notify_prev9=¡Bienvenido a Forgejo register_notify.title=%[1]s, bienvenido a %[2]s register_notify.text_1=este es tu correo de confirmación de registro para %s! register_notify.text_2=Ahora puede iniciar sesión vía nombre de usuario: %s. @@ -1220,6 +1220,7 @@ view_git_blame=Ver la culpa de Git video_not_supported_in_browser=Su navegador no soporta el tag video de HTML5. audio_not_supported_in_browser=Su navegador no soporta el tag audio de HTML5. stored_lfs=Almacenados con Git LFS +stored_annex=Almacenados con Git Annex symbolic_link=Enlace simbólico executable_file=Archivo Ejecutable commit_graph=Gráfico de commits @@ -1243,6 +1244,7 @@ editor.upload_file=Subir archivo editor.edit_file=Editar Archivo editor.preview_changes=Vista previa de los cambios editor.cannot_edit_lfs_files=Los archivos LFS no se pueden editar en la interfaz web. +editor.cannot_edit_annex_files=Los archivos Annex no se pueden editar en la interfaz web. editor.cannot_edit_non_text_files=Los archivos binarios no se pueden editar en la interfaz web. editor.edit_this_file=Editar Archivo editor.this_file_locked=El archivo está bloqueado diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini index 9192116d06..6c6525c04e 100644 --- a/options/locale/locale_fa-IR.ini +++ b/options/locale/locale_fa-IR.ini @@ -355,7 +355,7 @@ activate_account.text_2=لطفاً روی پیوند زیر کلیک کنید ت activate_email=نشانی ایمیل خود را تایید کنید activate_email.text=لطفاً روی پیوند زیر کلیک کنید تا رایانامه‌ی خود را در %s تأیید کنید: -register_notify=به گیتی یا گیت‌گو خوش آمدید +register_notify_prev9=به گیتی یا گیت‌گو خوش آمدید register_notify.title=%[1]s، به %[2]s خوش‌آمدید register_notify.text_1=این رایانامه‌ی تأیید عضویت شما در %s است! register_notify.text_2=حالا شما می‌توانید با نام کاربری وارد شوید: %s. @@ -938,6 +938,7 @@ file_copy_permalink=پرمالینک را کپی کنید video_not_supported_in_browser=مرورگر شما از تگ video که در HTML5 تعریف شده است، پشتیبانی نمی کند. audio_not_supported_in_browser=مرورگر شما از تگ audio که در HTML5 تعریف شده است، پشتیبانی نمی کند. stored_lfs=ذخیره شده با GIT LFS +stored_annex=ذخیره شده با GIT Annex symbolic_link=پیوند نمادین commit_graph=نمودار کامیت commit_graph.select=انتخاب برنچها @@ -955,6 +956,7 @@ editor.upload_file=بارگذاری پرونده editor.edit_file=ویرایش پرونده editor.preview_changes=پیش نمایش تغییرات editor.cannot_edit_lfs_files=پرونده های LFS در صحفه وب قابل تغییر نیست. +editor.cannot_edit_annex_files=پرونده های Annex در صحفه وب قابل تغییر نیست. editor.cannot_edit_non_text_files=پرونده‎های دودویی در صفحه وب قابل تغییر نیست. editor.edit_this_file=ویرایش پرونده editor.this_file_locked=پرونده قفل شده است diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini index 6e39931848..3ad22556d2 100644 --- a/options/locale/locale_fi-FI.ini +++ b/options/locale/locale_fi-FI.ini @@ -365,7 +365,7 @@ activate_account=Ole hyvä ja aktivoi tilisi activate_email=Vahvista sähköpostiosoitteesi -register_notify=Tervetuloa Forgejoan +register_notify_prev9=Tervetuloa Forgejoan register_notify.text_2=Voit nyt kirjautua käyttäjätunnuksella: %s. reset_password=Palauta käyttäjätili diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini index b9e6dd8f34..eb42cf6fd3 100644 --- a/options/locale/locale_fil.ini +++ b/options/locale/locale_fil.ini @@ -38,7 +38,7 @@ powered_by = Pinapatakbo ng %s explore = Tuklasin help = Tulong logo = Logo -sign_in = Mag-Sign In +sign_in = Mag-sign in sign_in_with_provider = Mag-sign in gamit ang %s sign_in_or = o sign_out = Mag-Sign Out @@ -141,6 +141,7 @@ dashboard = Dashboard more_items = Higit pang mga item invalid_data = Hindi wastong datos: %v copy_generic = Kopyahin sa clipboard +test = Subukan [home] search_repos = Maghanap ng Repository… @@ -399,7 +400,7 @@ scratch_code = Scratch code use_scratch_code = Gumamit ng scratch code twofa_passcode_incorrect = Mali ang iyong passcode. Kung nawala mo ang iyong device, gamitin ang iyong scratch code para mag-sign in. twofa_scratch_token_incorrect = Mali ang iyong scratch code. -login_userpass = Mag-Sign In +login_userpass = Mag-sign in login_openid = OpenID oauth_signup_tab = Mag-rehistro ng bagong account oauth_signup_title = Kumpletuhin ang bagong account @@ -441,6 +442,11 @@ last_admin = Hindi mo matatanggal ang pinakahuling admin. Kailangan may hindi ba tab_signin = Mag-sign In tab_signup = Mag-sign Up tab_openid = OpenID +hint_register = Kailangan ng account? Magrehistro ngayon. +sign_up_button = Magrehistro ngayon. +back_to_sign_in = Bumalik sa sign in +sign_in_openid = Magpatuloy gamit ang OpenID +hint_login = May account ka na? Mag-sign in ngayon! [mail] reply = o direktang tumugon sa email na ito @@ -456,7 +462,7 @@ activate_email = I-verify ang iyong email address admin.new_user.subject = Nag-sign up lang ngayon ang user na si %s admin.new_user.user_info = Impormasyon ng user admin.new_user.text = Mangyaring mag-click dito para ipamahala ang user na ito sa admin panel. -register_notify = Maligayang Pagdating sa Forgejo +register_notify_prev9 = Maligayang Pagdating sa Forgejo register_notify.title = %[1]s, maligayang pagdating sa %[2]s register_notify.text_1 = ito ang iyong registration confirmation email para sa %s! register_notify.text_2 = Maari kang mag-sign in sa iyong account gamit ng iyong username: %s @@ -640,6 +646,10 @@ following.title.few = Sinusundan followers.title.few = Mga tagasunod following.title.one = Sinusundan followers.title.one = Tagasunod +public_activity.visibility_hint.self_public = Nakikita ng lahat ang iyong aktibidad, maliban sa mga interaksyon sa pribadong espasyo. I-configure. +public_activity.visibility_hint.admin_public = Nakikita ng lahat ang aktibidad na ito, ngunit bilang tagapangasiwa maari mo ring makita ang mga interaksyon sa mga pribadong espasyo. +public_activity.visibility_hint.self_private = Nakikita mo lang at mga tagapangasiwa ng instansya ang iyong aktibidad. I-configure. +public_activity.visibility_hint.admin_private = Nakikita mo ang aktibidad na ito dahil isa kang tagapangasiwa, ngunit gusto ng user na panatilihin itong pribado. [settings] profile = Profile @@ -724,7 +734,7 @@ ssh_key_deletion_desc = Ang pagtanggal ng SSH key ay matatanggihan ang pag-acces no_activity = Walang kamakilang aktibidad ssh_signonly = Kasalukuyang naka-disable ang SSH kaya magagamit lang ang mga key na ito para sa pagpapatunay ng commit signature. gpg_desc = Ang mga pampublikong GPG key dito ay nauugnay sa iyong account at ginagamit para i-verify ang iyong mga commit. Panatilihing ligtas ang iyong mga pribadong key dahil pinapayagan nito ang pag-sign ng mga commit gamit ng iyong pagkakakilanlan. -keep_email_private_popup = Itatago nito ang iyong email address sa iyong profile, at kung gumawa ka ng pull request o mag-edit ng file sa pamamagitan ng web interface. Hindi babaguhin ang mga naka-push na commit. Gamitin ang %s sa mga commit para i-associate sila sa iyong account. +keep_email_private_popup = Itatago nito ang iyong email address sa iyong profile. Hindi na ito ang magiging default para sa mga commit na ginawa sa pamamagitan ng web interface, tulad ng pag-upload ng mga file at pagbabago. Sa halip gagamitin ang isang espeyal na address na %s para i-associate ang mga commit sa iyong account. Tandaan na ang pagbabago ng opsyon na ito ay hindi makakaapekto sa mga umiiral na commit. gpg_key_id_used = Ang isang publikong GPG key na may katulad na ID ay umiiral na. gpg_no_key_email_found = Ang GPG key na ito ay hindi tumutugma sa anumang email address na nauugnay sa iyong account. Madadagdag pa rin ito kapag i-sign mo ang ibinigay na token. ssh_principal_deletion_success = Tinanggal na ang principal. @@ -951,6 +961,7 @@ pronouns_custom = Pasadya pronouns_unspecified = Hindi natakda pronouns = Mga panghalip language.title = Default na wika +keep_activity_private.description = Makikita mo lang at mga tagapangasiwa ng instansya ang iyong pampublikong aktibidad. [repo] template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting. @@ -1080,7 +1091,7 @@ delete_preexisting = Burahin ang mga dating umiiral na file delete_preexisting_content = Burahin ang mga file sa %s tree_path_not_found_commit = Hindi umiiral ang path na %[1]s sa commit %[2]s tree_path_not_found_branch = Hindi umiiral ang daanang %[1]s sa branch %[2]s -migrate_items_pullrequests = Mga hiling sa pagtulak +migrate_items_pullrequests = Mga hiling sa paghila archive.pull.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga pull request. archive.title = Naka-archive ang repo na ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request. archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request. @@ -1287,7 +1298,7 @@ issues.cancel = Kanselahin issues.save = IImbak issues.label_title = Pangalan issues.delete.title = Burahin ang isyung ito? -settings.pulls_desc = Paganahin ang mga hiling sa paghatak para sa repositoryo +settings.pulls_desc = Paganahin ang mga hiling sa paghila para sa repositoryo editor.branch_does_not_exist = Walang natagpuang [branch] na "%s" sa [repository] na ito. commits.nothing_to_compare = Magkapareho ang mga branch na ito. commits.search_all = Lahat na mga branch @@ -1331,7 +1342,7 @@ issues.filter_type.assigned_to_you = Itinalaga sa iyo issues.filter_type.all_issues = Lahat ng mga isyu issues.author_helper = May-akda ang tagagamit na ito. issues.role.owner = May-ari -activity.title.prs_n = %d mga kahilingan sa paghatak +activity.title.prs_n = %d mga kahilingan sa paghila issues.label_color = Kulay pulls.nothing_to_compare = Magkapareho ang mga branch na ito. Hindi na kailangang gumawa ng hiling sa paghila. projects.column.assigned_to = Itinalaga sa/kay @@ -1395,7 +1406,7 @@ pulls.reopen_failed.base_branch = Hindi mabuksang muli ang hiling sa paghatak na issues.reopened_at = `binuksang muli ang isyung ito %[2]s` pulls.reopen_failed.head_branch = Hindi mabuksang muli ang [pull request] na ito dahil nabura ang punong [branch]. settings.event_pull_request_desc = Binuksan, sinara, muling binuksan, o binago ang hiling sa paghatak. -activity.opened_prs_count_n = Mga inimungkahing hiling sa paghatak +activity.opened_prs_count_n = Mga inimungkahing hiling sa paghila editor.filename_is_invalid = Hindi wasto ang pangalan ng file: "%s". activity.title.prs_opened_by = %s inimungkahi ni/ng %s pulls.cant_reopen_deleted_branch = Hindi mabuksang muli ang hiling sa paghatak na ito dahil nabura ang branch. @@ -1485,7 +1496,7 @@ settings.transfer_perform = Gawin ang paglipat settings.transfer_abort = Ipagpaliban ang paglipat settings.transfer_owner = Bagong may-ari pulls.tab_conversation = Pag-uusap -pulls.tab_files = Nabagong mga file +pulls.tab_files = Mga nabagong file settings.new_owner_blocked_doer = Hinarang ka ng bagong may-ari. settings.transfer.rejected = Tinanggihan ang paglipat ng [repository]. settings.transfer.success = Matagumpay na inilipat ang [repository]. @@ -1748,10 +1759,10 @@ pulls.delete.title = Burahin ang [pull request] na ito? issues.dependency.pr_closing_blockedby = Hinarang ng mga sumusunod na isyu mula sa pagsara ng hiling sa paghila na ito pulls.closed_at = `isinara ang [pull request] na ito%[2]s` pulls.close = Isara ang [pull request] -pulls.cmd_instruction_hint = `Tingnan ang mga panuto para sa linya ng utos.` +pulls.cmd_instruction_hint = `Tingnan ang mga panuto para sa linya ng utos.` project = Mga proyekto issues.content_history.deleted = binura -pulls.no_results = Walang nakitang mga resulta. +pulls.no_results = Walang mga nahanap na resulta. pulls.closed = Sarado ang [pull request] pulls.is_closed = Naisara na ang [pull request]. issues.ref_closing_from = `isinangguni ang hiling sa paghila %[4]s na magsasara sa isyung ito%[2]s` @@ -1803,12 +1814,12 @@ issues.edit.already_changed = Hindi maimbak ang mga pagbabago sa isyu. Mukhang n signing.wont_sign.not_signed_in = Hindi ka naka-sign in. activity.new_issues_count_n = Bagong mga isyu activity.git_stats_files_changed_n = mga nabago -activity.git_stats_files_changed_1 = nabago +activity.git_stats_files_changed_1 = ang nabago issues.dependency.remove = Tanggalin pulls.edit.already_changed = Hindi maimbak ang mga pagbabago sa [pull request]. Mukhang nabago na ng ibang tagagamit ang nilalaman. Mangyaring i-refresh ang pahina at subukang baguhin muli upang maiwasang ma-overwrite ang kanilang pagbago milestones.filter_sort.most_complete = Pinakakumpleto settings.collaboration.owner = May-ari -pulls.showing_only_single_commit = Ipinapakita lamang ang mga pagbago ng [commit] %[1]s +pulls.showing_only_single_commit = Ipinapakita lamang ang mga pagbago ng commit na %[1]s comments.edit.already_changed = Hindi maimbak ang mga pagbabago sa komento. Mukhang nabago na ng ibang tagagamit ang nilalaman. Mangyaring i-refresh ang pahina at subukang baguhin muli upang maiwasang ma-overwrite ang kanilang pagbago milestones.completeness = %d%% nakumpleto wiki.welcome = Maligayang pagdating sa Wiki. @@ -1826,9 +1837,9 @@ activity.git_stats_deletion_n = %d mga pagbura activity.navbar.code_frequency = Dalas ng [code] pulls.switch_head_and_base = Ilipat ang ulo at base activity.git_stats_push_to_all_branches = sa lahat ng mga [branch]. -activity.git_stats_pushed_n = mga itinulak +activity.git_stats_pushed_n = itinulak ang issues.reference_link = Pagsangguni: %s -activity.git_stats_pushed_1 = itinulak +activity.git_stats_pushed_1 = ang itinulak activity.git_stats_commit_n = %d mga [commit] issues.dependency.add = Magdagdag ng dependency… issues.dependency.cancel = Kanselahin @@ -1860,6 +1871,33 @@ pulls.showing_specified_commit_range = Ipinapakita lamang ang mga pagbabago sa p wiki.pages = Mga pahina activity.unresolved_conv_label = Nakabukas settings.pull_mirror_sync_in_progress = Inihatak ang mga pagbabago mula sa [malayuang] %s sa ngayon. +issues.dependency.setting = Paganahin ang mga dependency para sa mga isyu at mga hiling sa paghila +activity.navbar.pulse = Pulso +settings.protect_enable_merge_desc = Pinapayagan ang sinumang may [access] sa pagsulat upang isama ang mga hiling sa paghila sa [branch] na ito. +activity.git_stats_commit_1 = %d commit +activity.git_stats_file_n = %d mga file +activity.git_stats_file_1 = %d file +pulls.desc = Paganahin ang mga hiling sa paghila at mga pagsuri sa [code]. +activity.git_stats_exclude_merges = Maliban sa mga pagsali, +activity.active_prs_count_n = %d aktibong mga hiling sa paghila +issues.author.tooltip.issue = May-akda ng iysung ito ang user. +issues.author.tooltip.pr = May-akda ng hiling sa paghila na ito ang user na ito. +issues.dependency.add_error_dep_exists = Umiiral na and dependency. +issues.dependency.add_error_cannot_create_circular = Hindi ka maaring gumawa ng dependency na may dalawang isyu na humaharang ang isa't isa. +issues.dependency.add_error_same_issue = Hindi mo magagwang dumepende ang isyu sa sarili. +issues.dependency.add_error_dep_not_same_repo = Dapat nasa katulad na repositoryo ang mga isyu. +issues.dependency.add_error_dep_issue_not_exist = Hindi umiiral ang dumedependeng isyu. +issues.dependency.add_error_dep_not_exist = Hindi umiiral ang dependency. +pulls.compare_changes = Bagong hiling sa paghila +pulls.allow_edits_from_maintainers = Payagan ang mga pagbabago mula sa mga tagapagpanatili +pulls.show_all_commits = Ipakita ang lahat ng mga commit +pulls.show_changes_since_your_last_review = Ipakita ang mga pagbabago mula noong huli mong pagsusuri +issues.dependency.blocked_by_short = Dumedepende sa +issues.review.pending.tooltip = Kasalukuyang hindi visible ang komentong ito sa ibang mga user. Para i-submit ang iyong mga nakabinbin na komento, piliin ang "%s" -> "%s/%s/%s" sa itaas ng pahina. +pulls.tab_commits = Mga Commit +issues.dependency.issue_remove_text = Tatanggalin nito ang dependency sa isyu na ito. Magpatuloy? +issues.dependency.remove_header = Tanggalin ang Dependency +issues.dependency.pr_remove_text = Tatanggalin nito ang dependency sa hiling sa paghila na ito. Magpatuloy? [search] commit_kind = Maghanap ng mga commit... @@ -1886,6 +1924,8 @@ pull_kind = Maghanap ng mga paghila... issue_kind = Maghanap ng mga isyu... exact = Eksakto exact_tooltip = Samahan lamang ang mga resulta na tutugma sa eksaktong search term +union = Kaugnay +union_tooltip = Isama ang mga resulta na tumutugma sa anumang mga nahiwalay ng whitespace na keyword [admin] auths.updated = Nabago @@ -2151,7 +2191,7 @@ config.ssh_listen_port = Listen port config.ssh_keygen_path = Path ng keygen ("ssh-keygen") config.ssh_key_test_path = Path ng key test auths.verify_group_membership = Patunayan ang membership ng grupo sa LDAP (iwanang walang laman ang filter para i-skip) -config.allow_only_external_registration = Payagan lamang ang pagrehistro sa pamamagitan ng mga panlabas na Serbisyo +config.allow_only_external_registration = Payagan lamang ang pagrehistro sa pamamagitan ng mga panlabas na serbisyo config.allow_only_internal_registration = Payagan lamang ang pagrehistro sa pamamagitan ng Forgejo auths.search_page_size = Laki ng pahina auths.filter = Filter ng user @@ -2191,6 +2231,40 @@ notices.delete_selected = Burahin ang pinili notices.view_detail_header = Mga detalye ng paunawa notices.inverse_selection = Baliktarin ang pagpili config.app_slogan = Slogan ng instansya +auths.oauth2_provider = Tagapagbigay ng OAuth2 +auths.oauth2_tokenURL = URL ng token +auths.oauth2_authURL = URL ng Authorize +auths.oauth2_clientID = ID ng kliyente (Key) +auths.enable_ldap_groups = I-enable ang mga LDAP group +auths.oauth2_clientSecret = Sikreto ng Kliyente +auths.openIdConnectAutoDiscoveryURL = URL ng OpenID Connect Auto Discovery +auths.oauth2_use_custom_url = Gumamit ng mga custom URL sa halip ng mga default URL +auths.group_attribute_list_users = Group attribute na naglalaman ng listahan ng mga user +auths.user_attribute_in_group = User attribute na nakalista sa grupo +auths.oauth2_tenant = Tenant +auths.oauth2_scopes = Mga karagdagang scope +auths.oauth2_required_claim_name = Kinakailangang claim name +auths.pam_email_domain = Email domain ng PAM (opsyonal) +auths.oauth2_icon_url = URL ng icon +auths.oauth2_emailURL = URL ng email +auths.skip_local_two_fa = I-skip ang lokal na 2FA +auths.skip_tls_verify = I-skip ang pagpapatunay ng TLS +auths.force_smtps_helper = Palaging ginagagmit ang SMTPS sa port 465. Itakda ito para pilitin ang SMTPS sa mga ibang port. (Kung hindi, gagamitin ang STARTTLS sa mga ibang port kapag sinusuportahan ng host.) +auths.helo_hostname = Hostname ng HELO +auths.force_smtps = Pilitin ang SMTPS +auths.skip_local_two_fa_helper = Ang pag-iwan sa hindi nakatakda ay nangangahulugan na ang mga lokal na user na may 2FA ay kailangan pa ring pumasa sa 2FA upang mag-log on +auths.ms_ad_sa = Mga search attribute ng MS AD +auths.smtphost = Host ng SMTP +auths.allowed_domains_helper = Iwanang walang laman para payagan ang lahat ng mga domain. Ihiwalay ang mga maraming domain gamit ang kuwit (","). +auths.smtp_auth = Uri ng authentikasyon ng SMTP +auths.pam_service_name = Pangalan ng serbisyo ng PAM +auths.map_group_to_team = I-map ang mga LDAP group sa Mga koponan ng organisasyon (iwanang walang laman para i-skip) +auths.map_group_to_team_removal = Tanggalin ang mga user sa mga naka-synchronize na koponan kapag hindi kasama ang user sa katumbas na LDAP group +auths.smtpport = Port ng SMTP +auths.allowed_domains = Mga pinapayagang domain +auths.helo_hostname_helper = Hostname na pinapadala sa pamamagitan ng HELO. Iwanang walang laman para ipadala ang kasalukuyang hostname. +auths.disable_helo = I-disable ang HELO +auths.oauth2_profileURL = URL ng profile [org] repo_updated = Binago %s diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 9566626800..05921a9411 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -159,6 +159,7 @@ toggle_menu = Menu va-et-vient more_items = Plus d'éléments invalid_data = Données invalides : %v copy_generic = Copier dans le presse-papiers +test = Test [aria] navbar=Barre de navigation @@ -190,6 +191,8 @@ buttons.ref.tooltip=Référencer un ticket ou demande d’ajout buttons.switch_to_legacy.tooltip=Utiliser l’ancien éditeur à la place buttons.enable_monospace_font=Activer la police à chasse fixe buttons.disable_monospace_font=Désactiver la police à chasse fixe +buttons.indent.tooltip = Indenter les éléments d'un niveau +buttons.unindent.tooltip = Supprimer un niveau d'indentation [filter] string.asc=A - Z @@ -246,7 +249,7 @@ err_admin_name_is_invalid=Le nom d'utilisateur de l'administrateur est invalide general_title=Configuration générale app_name=Titre du site -app_name_helper=Entrez ici le nom de votre société. +app_name_helper=Entrez ici le nom de votre instance. Il sera affiché sur chaque page. repo_path=Emplacement racine des dépôts repo_path_helper=Les dépôts Git distants seront stockés dans ce répertoire. lfs_path=Répertoire racine Git LFS @@ -463,6 +466,11 @@ last_admin = Vous ne pouvez pas supprimer le dernier compte administrateur. Il d remember_me.compromised = Le jeton de login n'est plus valide ce qui pourrait indiquer une compromission de compte. Veuillez vérifier d'éventuelles activités inhabituelles. tab_signup = Enregistrement tab_signin = Connexion +hint_register = Besoin d'un compte ? Enregistrez vous. +sign_up_button = Creation d'un compte. +hint_login = Vous avez déjà un compte ? Connectez vous maintenant ! +back_to_sign_in = Retour à la connexion +sign_in_openid = Continuer avec OpenID [mail] view_it_on=Voir sur %s @@ -479,7 +487,7 @@ activate_email=Veuillez vérifier votre adresse courriel activate_email.title=%s, veuillez vérifier votre adresse courriel activate_email.text=Veuillez cliquer sur le lien suivant pour vérifier votre adresse courriel dans %s : -register_notify=Bienvenue sur Forgejo +register_notify_prev9=Bienvenue sur Forgejo register_notify.title=%[1]s, bienvenue à %[2]s register_notify.text_1=ceci est votre courriel de confirmation d'inscription pour %s ! register_notify.text_2=Vous pouvez maintenant vous connecter avec le nom d'utilisateur : %s @@ -672,14 +680,22 @@ form.name_pattern_not_allowed=Le motif « %s » n’est pas autorisé dans un form.name_chars_not_allowed=Le nom d'utilisateur "%s" contient des caractères non valides. block_user = Bloquer un utilisateur block_user.detail = Veuillez noter que bloquer un utilisateur a des conséquences. En particulier : -block_user.detail_1 = Vous ne suivez plus cet utilisateur. +block_user.detail_1 = Vous cesserez de vous suivre l'un et l'autre et ne pourrez plus vous suivre l'un et l'autre. block_user.detail_2 = Cet utilisateur ne peut interagir avec vos dépôts, les tickets ou commentaires que vous avez créés. -block_user.detail_3 = Cet utilisateur ne peut pas vous ajouter en tant que collaborateur, et vous ne pouvez pas l'ajouter en tant que collaborateur. +block_user.detail_3 = Cet utilisateur ne peut pas vous ajouter l'un et l'autre en tant que collaborateur. follow_blocked_user = Vous ne pouvez pas suivre cet utilisateur parce vous avez bloqué cet utilisateur ou bien cet utilisateur vous a bloqué. block = Bloquer unblock = Débloquer following_one = Suit %d personnes followers_one = %d abonné +public_activity.visibility_hint.self_public = Votre activité est visible de tous, a l'exception de vos interactions dans les espaces privés. Configurer. +public_activity.visibility_hint.admin_public = Cette activité est visible de tous mais, en tant qu'administrateur vous pouvez aussi voir les interactions dans les espaces privés. +public_activity.visibility_hint.self_private = Vous pouvez voir votre propre activité, ainsi que les administrateurs de l'instance. Configurer. +public_activity.visibility_hint.admin_private = Vous pouvez voir cette activité en tant qu'administrateur mais l'utilisateur veut qu'elle reste privée. +following.title.few = Following +followers.title.one = Follower +followers.title.few = Followers +following.title.one = Following [settings] profile=Profil @@ -794,7 +810,7 @@ add_email_success=La nouvelle adresse e-mail a été ajoutée. email_preference_set_success=L'e-mail de préférence a été défini avec succès. add_openid_success=La nouvelle adresse OpenID a été ajoutée. keep_email_private=Cacher l'adresse courriel -keep_email_private_popup=Ceci masquera votre adresse e-mail de votre profil, de vos demandes d'ajout et des fichiers modifiés depuis l'interface Web. Les révisions déjà soumises ne seront pas modifiés. Utilisez %s dans les révisions pour les relier à votre compte. +keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Notez que changer cette option n'aura pas d'effet sur les commits existants. openid_desc=OpenID vous permet de confier l'authentification à une tierce partie. manage_ssh_keys=Gérer les clés SSH @@ -1007,6 +1023,7 @@ pronouns_custom = Personnalisés pronouns = Pronoms pronouns_unspecified = Non spécifiés language.title = Langue par défaut +keep_activity_private.description = Vous seul pourrez voir votre activité publique, ainsi que les administrateurs de l'instance. [repo] new_repo_helper=Un dépôt contient tous les fichiers d’un projet, ainsi que l’historique de leurs modifications. Vous avez déjà ça ailleurs ? Migrez-le ici. @@ -1267,6 +1284,7 @@ view_git_blame=Voir Git blame video_not_supported_in_browser=Votre navigateur ne supporte pas la balise « vidéo » HTML5. audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5. stored_lfs=Stocké avec Git LFS +stored_annex=Stocké avec Git Annex symbolic_link=Lien symbolique executable_file=Fichier exécutable vendored=Externe @@ -1292,6 +1310,7 @@ editor.upload_file=Téléverser un fichier editor.edit_file=Modifier le fichier editor.preview_changes=Aperçu des modifications editor.cannot_edit_lfs_files=Les fichiers LFS ne peuvent pas être modifiés dans l'interface web. +editor.cannot_edit_annex_files=Les fichiers Annex ne peuvent pas être modifiés dans l'interface web. editor.cannot_edit_non_text_files=Les fichiers binaires ne peuvent pas être édités dans l'interface web. editor.edit_this_file=Modifier le fichier editor.this_file_locked=Le fichier est verrouillé @@ -1577,7 +1596,7 @@ issues.commit_ref_at=`a référencé ce ticket depuis une révision a fait référence à %[4]s ce ticket %[2]s.` issues.ref_pull_from=`a fait référence à cette demande d'ajout %[4]s %[2]s.` issues.ref_closing_from=`a fait référence à une demande d'ajout %[4]s qui clora ce ticket, %[2]s.` -issues.ref_reopening_from=`a référencé une pull request %[4]s qui va réouvrir ce ticket %[2]s` +issues.ref_reopening_from=`a référencé une pull request %[4]s qui va ré-ouvrir ce ticket %[2]s` issues.ref_closed_from=`a fermé ce ticket %[4]s %[2]s` issues.ref_reopened_from=`a rouvert ce ticket %[4]s %[2]s.` issues.ref_from=`de %[1]s` @@ -1887,7 +1906,7 @@ pulls.outdated_with_base_branch=Cette branche est désynchronisée avec la branc pulls.close=Fermer la demande d’ajout pulls.closed_at=`a fermé cette demande d'ajout %[2]s.` pulls.reopened_at=`a rouvert cette demande d'ajout %[2]s.` -pulls.cmd_instruction_hint=`Voir les instructions en ligne de commande.` +pulls.cmd_instruction_hint=Voir les instructions en ligne de commande pulls.cmd_instruction_checkout_title=Basculer pulls.cmd_instruction_checkout_desc=Depuis votre dépôt, basculer sur une nouvelle branche et tester des modifications. pulls.cmd_instruction_merge_title=Fusionner @@ -2490,7 +2509,7 @@ settings.lfs_locks_no_locks=Pas de verrous settings.lfs_lock_file_no_exist=Le fichier verrouillé n'existe pas dans la branche par défaut settings.lfs_force_unlock=Forcer le déverrouillage settings.lfs_pointers.found=%d pointeur(s) sur blob trouvés - %d associés, %d non associés (%d manquant dans le magasin) -settings.lfs_pointers.sha=SHA du Blob +settings.lfs_pointers.sha=SHA du blob settings.lfs_pointers.oid=OID settings.lfs_pointers.inRepo=Dans le dépôt settings.lfs_pointers.exists=Existe en magasin @@ -2768,6 +2787,14 @@ subscribe.issue.guest.tooltip = Authentifiez vous pour vous abonner à ce ticket subscribe.pull.guest.tooltip = Authentifiez vous pour suivre cette demande d'ajout. n_release_one = %s publication n_release_few = %s publications +issues.author.tooltip.pr = Cet utilisateur est l'auteur de cette pull request. +issues.author.tooltip.issue = Cet utilisateur est l'auteur de ce ticket. +issues.edit.already_changed = Impossible de sauvegarder les changements du ticket car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements +pulls.edit.already_changed = Impossible de sauvegarder les changements de la pull request car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements +settings.federation_following_repos = Les URL des dépôts suivis séparés par ";", sans espace. +settings.federation_not_enabled = La fédération n'est pas activée pour votre instance. +comments.edit.already_changed = Impossible de sauvegarder les changements du commentaire car son contenu a déjà été modifié par un autre utilisateur. Veuillez recharger la page et essayer de l'éditer à nouveau pour éviter d'écraser ses changements +settings.federation_apapiurl = URL de fédération de ce dépôt. A copier-coller dans les paramètres de fédérations d'un autre dépôt comme URL d'un dépôt à suivre. [graphs] component_loading=Chargement de %s… @@ -3290,7 +3317,7 @@ config.service_config=Configuration du service config.register_email_confirm=Exiger la confirmation de l'e-mail lors de l'inscription config.disable_register=Désactiver le formulaire d'inscription config.allow_only_internal_registration=Autoriser l'inscription uniquement via Forgejo lui-même -config.allow_only_external_registration=N'autoriser l'inscription qu'à partir des services externes +config.allow_only_external_registration=N'autoriser l'inscription qu'à partir de services externes config.enable_openid_signup=Activer l'inscription avec OpenID config.enable_openid_signin=Activer la connexion avec OpenID config.show_registration_button=Afficher le bouton d'enregistrement @@ -3453,6 +3480,10 @@ auths.tip.gitlab_new = Enregistrer une nouvelle application sur https://gitlab.c auths.default_domain_name = Nom de domaine par défaut utilisé pour le courriel config.open_with_editor_app_help = Les éditeurs du menu "Ouvrir avec". Si laissé vide, les valeurs par défaut seront utilisées. Ouvrir pour voir les valeurs par défaut. config.app_slogan = Slogan de l'instance +config.cache_test_slow = Test du cache réussi, mais le temps de réponse est lent : %s. +config.cache_test_failed = Échec du contrôle du cache : %v. +config.cache_test = Tester le cache +config.cache_test_succeeded = Test du cache réussi, réponse obtenue en %s. [action] create_repo=a créé le dépôt %s @@ -3811,6 +3842,14 @@ runs.no_workflows.documentation = Pour plus d’informations sur Forgejo Actions variables.id_not_exist = La variable numéro %d n’existe pas. runs.workflow = Workflow runs.no_job_without_needs = Le workflow doit contenir au moins une tâche sans dépendances. +workflow.dispatch.use_from = Utiliser un workflow depuis +runs.no_job = Le workflow doit au moins contenir une tâche +workflow.dispatch.trigger_found = Ce workflow a un déclencheur d'événement workflow_dispatch. +workflow.dispatch.run = Exécuter le workflow +workflow.dispatch.success = L'exécution du workflow a bien été demandée. +workflow.dispatch.input_required = Le champ "%s" est obligatoire. +workflow.dispatch.invalid_input_type = Type invalide pour le champ "%s". +workflow.dispatch.warn_input_limit = Affichage des %d premiers champs seulement. [projects] type-1.display_name=Projet personnel @@ -3860,6 +3899,12 @@ package_kind = Chercher les paquets... project_kind = Chercher les projets... branch_kind = Chercher les branches... commit_kind = Chercher les commits... +exact = Exact +exact_tooltip = Inclure uniquement les résultats qui correspondent exactement au terme recherché +issue_kind = Rechercher dans les tickets... +union = Union +union_tooltip = Inclus les résultats contenant au moins un des mots clé séparés par des espaces +pull_kind = Rechercher dans les demande d'ajout... [munits.data] diff --git a/options/locale/locale_gl.ini b/options/locale/locale_gl.ini index 673486f6c0..e650d438e9 100644 --- a/options/locale/locale_gl.ini +++ b/options/locale/locale_gl.ini @@ -7,7 +7,7 @@ dashboard = Panel de Control explore = Explorar help = Axuda logo = Logo -sign_in = Iniciar Sesión +sign_in = Iniciar sesión sign_in_with_provider = Iniciar Sesión con %s sign_in_or = ou sign_out = Pechar Sesión @@ -142,6 +142,7 @@ filter.public = Publico pin = Aproximada filter.private = Privado copy_generic = Copiar ao portapapeis +test = Test [aria] navbar = Barra de Navegación @@ -173,6 +174,8 @@ buttons.ref.tooltip = Referencia un problema ou pull request [search] search = Buscar... type_tooltip = Tipo de busca +repo_kind = Buscar repositorios... +user_kind = Buscar usuarios... [startpage] platform = Multiplataforma @@ -221,4 +224,6 @@ log_root_path = Ruta de rexistro log_root_path_helper = Os ficheiros de rexistro escribiranse neste directorio. sqlite_helper = Ruta do ficheiro para a base de datos SQLite3.
Introduza unha ruta absoluta se executa Forgejo como servizo. reinstall_confirm_message = A reinstalación cunha base de datos Forgejo existente pode causar varios problemas. Na maioría dos casos, deberías usar o teu "app.ini" existente para executar Forgejo. Se sabes o que estás facendo, confirma o seguinte: -reinstall_confirm_check_1 = É posible que se perdan os datos cifrados pola SECRET_KEY en app.ini: é posible que os usuarios non poidan iniciar sesión con 2FA/OTP e que os espellos non funcionen correctamente. Ao marcar esta caixa, confirmas que o ficheiro app.ini actual contén a SECRET_KEY correcta. \ No newline at end of file +reinstall_confirm_check_1 = É posible que se perdan os datos cifrados pola SECRET_KEY en app.ini: é posible que os usuarios non poidan iniciar sesión con 2FA/OTP e que os espellos non funcionen correctamente. Ao marcar esta caixa, confirmas que o ficheiro app.ini actual contén a SECRET_KEY correcta. +disable_gravatar.description = Desactiva o uso de Gravatar ou outras fontes de avatares de terceiros. As imaxes predeterminadas utilizaranse para os avatares dos usuarios a menos que carguen o seu propio avatar na instancia. +federated_avatar_lookup = Activar avatares federados \ No newline at end of file diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index 627b3a3700..98bd43f9bf 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -16,7 +16,7 @@ template=Sablon language=Nyelv notifications=Értesítések create_new=Létrehozás… -user_profile_and_more=Profil és beállítások... +user_profile_and_more=Profil és beállítások… signed_in_as=Bejelentkezve mint toc=Tartalomjegyzék licenses=Licencek @@ -56,7 +56,7 @@ collaborative=Közreműködő forks=Másolat activities=Tevékenységek -pull_requests=Egyesítési Kérések +pull_requests=Egyesítési kérések issues=Hibajegyek milestones=Mérföldkövek @@ -90,16 +90,70 @@ concept_user_organization=Szervezet name=Név +filter.not_archived = Nem archivált +filter.public = Nyilvános +filter.private = Privát +filter = Szűrő +filter.is_archived = Archivált +logo = Logó +sign_in_with_provider = Bejelentkezés %s fiókkal +webauthn_insert_key = Helyezze be biztonsági kulcsát +webauthn_press_button = Kérem nyomja meg a biztonsági kulcsán található gombot… +access_token = Hozzáférési token +webauthn_error = A biztonsági kulcsának beolvasása sikertelen volt. +webauthn_unsupported_browser = A böngészője jelenleg nem támogatja a WebAuthn protokollt. +webauthn_error_unknown = Egy ismeretlen hiba jelentkezett. Kérem próbálja újra. +webauthn_error_unable_to_process = A szerver nem tudta feldolgozni kérését. +webauthn_error_empty = Ennek a kulcsnak nevet kell adnia. +new_project_column = Új oszlop +never = Soha +unknown = Ismeretlen +value = Érték +copy_content = Tartalom másolása +copy_hash = Hash másolása +copy_success = Másolva! +confirm_delete_selected = Biztosan törli az összes kijelölt elemet? +pin = Kitűzés +show_timestamps = Időbélyegek mutatása +show_log_seconds = Másodpercek mutatása +download_logs = Naplófájlok letöltése +filter.is_template = Sablonok +error = Hiba +go_back = Vissza +filter.not_template = Nem sablonok +locked = Zárolt +more_items = További elemek +view = Megtekintés +ok = OK +copy_generic = Másolás vágólapra +copy_url = URL másolása +webauthn_error_insecure = A WebAuthn csak biztonságos kapcsolatokat támogat. HTTP-n keresztüli tesztelés esetén használja a "localhost" vagy "127.0.0.1"-es elérési pontokat [aria] +footer.links = Hivatkozások +footer = Lábléc [heatmap] +less = Kevesebb +more = Több [editor] +buttons.heading.tooltip = Fejléc hozzáadása +buttons.code.tooltip = Kód hozzáadása +buttons.bold.tooltip = Félkövér szöveg hozzáadása +buttons.italic.tooltip = Dőlt szöveg hozzáadása +buttons.quote.tooltip = Szöveg idézése +buttons.link.tooltip = Hivatkozás hozzáadása +buttons.indent.tooltip = Elemek behúzása egy szinttel [filter] +string.asc = A - Z +string.desc = Z - A [error] +occurred = Hiba történt +server_internal = Belső szerverhiba +network_error = Hálózati hiba [startpage] app_desc=Fájdalommentes, saját gépre telepíthető Git szolgáltatás @@ -136,7 +190,7 @@ app_name=Webhely címe app_name_helper=Itt megadhatja a vállalata nevét. repo_path=Tárolók gyökérkönyvtára repo_path_helper=Minden távoli Git tároló ebbe a mappába lesz mentve. -lfs_path=LFS Gyökérkönyvtár +lfs_path=Git LFS gyökérkönyvtár lfs_path_helper=A fájlok amiket Git LFS-el elmentesz ebbe a könyvtárba kerülnek. Hagyd üresen az LFS kikapcsolásához. run_user=Futtatás mint ssh_port=SSH szerver port @@ -197,6 +251,7 @@ default_enable_timetracking=Időmérés bekapcsolása alapértelmezetten default_enable_timetracking.description=Időmérés bekapcsolása az új tárolókra alapértelmezetten. no_reply_address=Rejtett e-mail tartomány no_reply_address_helper=Domain név a rejtett email címmel rendelkező felhasználók számára.Például: Ha a felhasználóneve "jani" akkor bejelentkezhet a "jani@noreply.example.org" email címmel,ha a rejtett email domain "noreply.example.org"-ra van állítva. +domain = Szerver domain [home] uname_holder=Felhasználónév vagy e-mail cím @@ -290,7 +345,7 @@ activate_account=Kérjük aktiválja a fiókját activate_email=E-mail cím megerősítése -register_notify=A Forgejo üdvözli +register_notify_prev9=A Forgejo üdvözli reset_password=Fiókjának visszaállítása @@ -689,6 +744,7 @@ file_too_large=Ez a fájl túl nagy ahhoz, hogy megjelenítsük. video_not_supported_in_browser=A böngésző nem támogatja a HTML5 video tag-et. audio_not_supported_in_browser=A böngésző nem támogatja a HTML5 audio tag-et. stored_lfs=Git LFS-el eltárolva +stored_annex=Git Annex-el eltárolva symbolic_link=Szimbolikus hivatkozás commit_graph=Commit gráf commit_graph.hide_pr_refs=Pull request-ek elrejtése @@ -701,6 +757,7 @@ editor.upload_file=Fájl feltöltése editor.edit_file=Fájl szerkesztése editor.preview_changes=Változások előnézete editor.cannot_edit_lfs_files=LFS fájlok nem szerkeszthetőek a webes felületen. +editor.cannot_edit_annex_files=Annex fájlok nem szerkeszthetőek a webes felületen. editor.cannot_edit_non_text_files=Bináris fájlok nem szerkeszthetőek a webes felületen. editor.edit_this_file=Fájl szerkesztése editor.this_file_locked=Zárolt állomány @@ -1673,3 +1730,17 @@ runs.commit=Commit symbolic_link=Szimbolikus hivatkozás submodule = Almodul + + +[search] +search = Keresés... +type_tooltip = Keresés típusa +code_kind = Kód keresése... +code_search_unavailable = A kódban való keresés jelenleg nem elérhető. Kérem vegye fel a kapcsolatot az oldal adminisztrátorával. +package_kind = Csomagok keresése... +project_kind = Projektek keresése... +user_kind = Felhasználók keresése... +repo_kind = Tárak keresése... +org_kind = Szervezetek keresése... +team_kind = Csapatok keresése... +exact = Pontos \ No newline at end of file diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index d85cb78abb..6af9488953 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -212,7 +212,7 @@ activate_account=Silakan aktifkan akun anda activate_email=Verifikasi alamat surel anda -register_notify=Selamat Datang di Forgejo +register_notify_prev9=Selamat Datang di Forgejo reset_password=Pulihkan akun Anda @@ -598,6 +598,7 @@ file_permalink=Permalink file_too_large=Berkas terlalu besar untuk ditampilkan. stored_lfs=Tersimpan dengan GIT LFS +stored_annex=Tersimpan dengan GIT Annex commit_graph=Grafik Komit blame=Salahkan normal_view=Pandangan Normal @@ -609,6 +610,7 @@ editor.upload_file=Unggah Berkas editor.edit_file=Sunting Berkas editor.preview_changes=Tinjau Perubahan editor.cannot_edit_lfs_files=Berkas LFS tidak dapat disunting dalam antarmuka web. +editor.cannot_edit_annex_files=Berkas Annex tidak dapat disunting dalam antarmuka web. editor.cannot_edit_non_text_files=Berkas biner tidak dapat disunting dalam antarmuka web. editor.edit_this_file=Sunting Berkas editor.this_file_locked=Berkas terkunci diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini index 7b5733e2eb..2abc0f1729 100644 --- a/options/locale/locale_is-IS.ini +++ b/options/locale/locale_is-IS.ini @@ -302,7 +302,7 @@ activate_account.text_2=Vinsamlegast smelltu á eftirfarandi tengil til að virk activate_email=Staðfestu netfangið þitt activate_email.text=Vinsamlegast smelltu á eftirfarandi tengil til að staðfesta netfangið þitt innan %s: -register_notify=Velkomin(n) í Forgejo +register_notify_prev9=Velkomin(n) í Forgejo register_notify.title=%[1]s, velkomin(n) í %[2]s register_notify.text_1=þetta er staðfestingarpóstur þinn fyrir skráningu á %s! register_notify.text_2=Þú getur nú skráð þig inn með notandanafni: %s. @@ -679,6 +679,7 @@ file_view_rendered=Skoða Unnið file_copy_permalink=Afrita Varanlega Slóð stored_lfs=Geymt með Git LFS +stored_annex=Geymt með Git Annex commit_graph.hide_pr_refs=Fela Sameiningarbeiðnir commit_graph.monochrome=Einlitað commit_graph.color=Litað diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index fe93ea51da..81e01a689b 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -8,7 +8,7 @@ sign_in=Accedi sign_in_or=o sign_out=Esci sign_up=Registrati -link_account=Collega account +link_account=Collega Profilo register=Registrati version=Versione powered_by=Gestito da %s @@ -16,11 +16,11 @@ page=Pagina template=Template language=Lingua notifications=Notifiche -active_stopwatch=Tracker Tempo Attivo +active_stopwatch=Attiva cronometro create_new=Crea… -user_profile_and_more=Profilo ed Impostazioni… +user_profile_and_more=Profilo ed impostazioni… signed_in_as=Accesso effettuato come -toc=Indice dei contenuti +toc=Indice dei Contenuti licenses=Licenze return_to_forgejo=Ritorna a Forgejo @@ -35,13 +35,13 @@ twofa_scratch=Codice di recupero per la verifica in due passaggi passcode=Codice di sicurezza webauthn_insert_key=Inserisci la tua chiave di sicurezza -webauthn_sign_in=Premere il pulsante sul tasto di sicurezza. Se il tasto di sicurezza non ha pulsante, reinseriscilo. -webauthn_press_button=Si prega di premere il pulsante sul tasto di sicurezza… +webauthn_sign_in=Premi il pulsante sul tasto di sicurezza. Se il tasto di sicurezza non ha pulsante, reinseriscilo. +webauthn_press_button=Premi il pulsante sulla chiave di sicurezza… webauthn_use_twofa=Usa un codice a due fattori dal tuo telefono webauthn_error=Impossibile leggere la tua chiave di sicurezza. webauthn_unsupported_browser=Il tuo browser al momento non supporta WebAuthn. webauthn_error_unknown=Si è verificato un errore sconosciuto. Riprova. -webauthn_error_insecure=`WebAuthn supporta solo connessioni sicure. Per il test su HTTP, è possibile utilizzare l'origine "localhost" o "127.0.0.1"` +webauthn_error_insecure=WebAuthn supporta solo connessioni sicure. Per il test su HTTP, è possibile utilizzare l'origine "localhost" o "127.0.0.1" webauthn_error_unable_to_process=Il server non può elaborare la richiesta. webauthn_error_duplicated=La chiave di sicurezza non è consentita per questa richiesta. Assicurati che la chiave non sia già registrata. webauthn_error_empty=Devi impostare un nome per questa chiave. @@ -71,18 +71,18 @@ mirrors=Mirror collaborative=Condivisi forks=Fork -activities=Attivitá -pull_requests=Pull request +activities=Attività +pull_requests=Richieste di modifica issues=Segnalazioni -milestones=Milestones +milestones=Traguardi ok=OK cancel=Annulla save=Salva add=Aggiungi -add_all=Aggiungi tutti +add_all=Aggiungi tutto remove=Rimuovi -remove_all=Rimuovi Tutti +remove_all=Rimuovi tutti edit=Modifica enabled=Attivo @@ -142,27 +142,29 @@ download_logs = Scarica logs confirm_delete_selected = Confermare l'eliminazione di tutti gli elementi selezionati? sign_in_with_provider = Accedi con %s new_project_column = Nuova colonna -toggle_menu = Mostra/Nascondi Menu -filter.not_fork = Non da fork +toggle_menu = Mostra/Nascondi menu +filter.not_fork = Non fork filter = Filtro filter.clear = Rimuovi filtri filter.is_archived = Archiviato filter.not_archived = Non archiviato -filter.is_fork = Da Fork +filter.is_fork = Da fork filter.is_mirror = Mirror filter.not_mirror = Non mirror -filter.is_template = Modello -filter.not_template = Non modello +filter.is_template = Modelli +filter.not_template = Non modelli filter.public = Pubblico filter.private = Privato more_items = Più elementi invalid_data = Dati non validi: %v +copy_generic = Copia negli appunti +test = Prova [aria] footer.links = Collegamenti -navbar = Barra di Navigazione +navbar = Barra di navigazione footer = Piè di Pagina -footer.software = A proposito del Software +footer.software = A proposito di questo software [heatmap] more = Più @@ -184,10 +186,12 @@ buttons.list.unordered.tooltip = Aggiungi un elenco puntato buttons.list.ordered.tooltip = Aggiungi un elenco numerato buttons.list.task.tooltip = Aggiungi un elenco di attività buttons.mention.tooltip = Menziona un utente o team -buttons.ref.tooltip = Fai riferimento ad un problema o pull request +buttons.ref.tooltip = Fa riferimento a una segnalazione o pull request buttons.switch_to_legacy.tooltip = Passa all'editor classico buttons.enable_monospace_font = Attiva font monospace buttons.disable_monospace_font = Disattiva font monospace +buttons.indent.tooltip = Annida elementi di un livello +buttons.unindent.tooltip = Disannida elementi di un livello [filter] string.asc = A - Z @@ -199,7 +203,7 @@ missing_csrf=Richiesta errata: nessun token CSRF presente invalid_csrf=Richiesta errata: token CSRF non valido not_found=Il bersaglio non è stato trovato. network_error=Errore di rete -report_message = Se credi che questo sia un errore di Forgejo, per favore controlla le segnalazioni su Codeberg o aprine una nuova se necessario. +report_message = Se si pensa che questo sia un errore di Forgejo, controllare le segnalazioni su Codeberg o aprine una nuova se necessario. server_internal = Errore interno del server [startpage] @@ -217,7 +221,7 @@ install_desc = Semplicemente la documentazione prima di cambiare qualsiasi impostazione. -require_db_desc=Forgejo requires MySQL, PostgreSQL, SQLite3 or TiDB (MySQL protocol). +require_db_desc=Forgejo richiede MySQL, PostgreSQL, SQLite3 o TiDB (protocollo MySQL). db_title=Impostazioni database db_type=Tipo di database host=Host @@ -229,13 +233,13 @@ db_schema_helper=Lascia vuoto per il valore predefinito del database ("public"). ssl_mode=SSL path=Percorso sqlite_helper=Percorso file del database SQLite3.
Inserisci un percorso assoluto se stai usando Forgejo come servizio. -reinstall_error=Stai cercando di installare in un database Forgejo esistente +reinstall_error=Stai cercando di installare Forgejo in una base dati già esistente reinstall_confirm_message=La reinstallazione con una base dati Forgejo esistente può causare vari problemi. Nella maggior parte dei casi, dovresti usare il tuo "app.ini" per eseguire Forgejo. Se sai cosa stai facendo, conferma quanto segue: -reinstall_confirm_check_1=I dati crittografati da SECRET_KEY nell'app. ni potrebbe essere perso: gli utenti potrebbero non essere in grado di accedere con 2FA/OTP & mirror potrebbe non funzionare correttamente. Selezionando questa casella confermi che il file attuale app.ini contiene il corretto SECRET_KEY. -reinstall_confirm_check_2=I repository e le impostazioni potrebbero avere bisogno di essere ri-sincronizzati. Selezionando questa casella confermi che potrai risincronizzare manualmente gli hook per i repository e il file authorized_keys. Confermi che assicurerai che le impostazioni del repository e del mirror siano corrette. -reinstall_confirm_check_3=Confermi di essere assolutamente sicuro che questo Forgejo è in esecuzione con l'app corretta. ni posizione e che sei sicuro di dover reinstallare. Confermi di aver riconosciuto i rischi di cui sopra. +reinstall_confirm_check_1=I dati crittografati da SECRET_KEY nell'app.ini potrebbero essere persi: gli utenti potrebbero non essere in grado di accedere con 2FA/OTP & i mirror potrebbero non funzionare correttamente. Selezionando questa casella confermi che il file attuale app.ini contiene il corretto SECRET_KEY. +reinstall_confirm_check_2=I repository e le impostazioni potrebbero avere bisogno di essere ri-sincronizzati. Selezionando questa casella confermi che potrai risincronizzare manualmente gli hook per i repository e il file authorized_keys. Confermi che assicurerai che le impostazioni dei repository e dei mirror siano corrette. +reinstall_confirm_check_3=Confermi di essere assolutamente sicurə che questo Forgejo è in esecuzione con il file app.ini corretto e che sei sicurə di dover reinstallare. Confermi di aver riconosciuto i rischi di cui sopra. err_empty_db_path=Il percorso del database SQLite3 non può essere vuoto. -no_admin_and_disable_registration=Non puoi disabilitare l'auto-registrazione degli utenti senza creare un account amministratore. +no_admin_and_disable_registration=Non puoi disabilitare l'auto-registrazione degli utenti senza creare un profilo amministratore. err_empty_admin_password=La password dell'amministratore non può essere vuota. err_empty_admin_email=L'email dell'amministratore non può essere vuota. err_admin_name_is_reserved=Nome utente Administrator non valido, nome utente riservato @@ -244,11 +248,11 @@ err_admin_name_is_invalid=Il nome utente Administrator non è valido general_title=Impostazioni generali app_name=Titolo dell'istanza -app_name_helper=Qui puoi inserire il nome della tua società. +app_name_helper=Inserire qui il nome dell'istanza. Verrà visualizzato su ogni pagina. repo_path=Percorso radice dei repository -repo_path_helper=Le Remote Git repositories saranno salvate in questa directory. +repo_path_helper=I repository Git remoti saranno salvati in questa cartella. lfs_path=Percorso radice di git LFS -lfs_path_helper=I file trovati da Git LFS saranno salvati in questa directory. Lasciare vuoto per disattivare. +lfs_path_helper=I file trovati da Git LFS saranno salvati in questa cartella. Lascia vuoto per disattivare. run_user=Nome utente col quale eseguire domain=Dominio server domain_helper=Dominio o indirizzo host per il server. @@ -266,27 +270,27 @@ email_title=Impostazioni e-mail smtp_addr=Host SMTP smtp_port=Porta SMTP smtp_from=Invia e-mail come -smtp_from_helper=Indirizzo Email che Forgejo utilizzerà. Inserisci un indirizzo email o usa il formato "Name" . +smtp_from_helper=Indirizzo e-mail che verrà usato da Forgejo. Inserisci un indirizzo e-mail o usa il formato "Nome" . mailer_user=Nome utente SMTP mailer_password=Password SMTP register_confirm=Richiedi conferma e-mail durante la registrazione mail_notify=Attiva le notifiche e-mail server_service_title=Impostazioni server e servizi di terze parti offline_mode=Attiva modalità in locale -offline_mode.description=Disattiva le reti di distribuzione dei contenuti di terze parti e fornisci tutte le risorse localmente. +offline_mode.description=Disattiva le reti di distribuzione dei contenuti di terze parti e servi tutte le risorse localmente. disable_gravatar=Disattiva Gravatar -disable_gravatar.description=Disattiva Gravatar e le fonti di avatar di terze parti. Verrà usato un avatar predefinito almeno che un utente non carichi un avatar in locale. +disable_gravatar.description=Disabilita l'utilizzo di Gravatar o di altre fonti avatar di terze parti. Le immagini predefinite verranno utilizzate per gli avatar degli utenti a meno che non carichino il proprio avatar sull'istanza. federated_avatar_lookup=Attiva le immagini profilo federate -federated_avatar_lookup.description=Enable federated avatars lookup to use federated open source service based on libravatar. +federated_avatar_lookup.description=Cerca gli avatar utilizzando Libravatar. disable_registration=Disattiva auto-registrazione -disable_registration.description=Disattiva la user self-registration. Solo gli amministratori saranno in grado di creare account. -allow_only_external_registration.description=Attiva la registrazione solo tramite servizi esterni +disable_registration.description=Solo gli amministratori dell'istanza potranno creare nuovi account utente. Si consiglia vivamente di mantenere la registrazione disabilitata a meno che non si intenda ospitare un'istanza pubblica per tutti e siate pronti a gestire grandi quantità di account spam. +allow_only_external_registration.description=Gli utenti potranno creare nuovi account usando i servizi esterni configurati. openid_signin=Attiva l'accesso con OpenID -openid_signin.description=Attiva registrazione utente via OpenID. +openid_signin.description=Permetti agli utenti di registrarsi via OpenID. openid_signup=Attiva auto-registrazione con OpenID -openid_signup.description=Attiva OpenID-based user self-registration. +openid_signup.description=Consenti agli utenti di creare account tramite OpenID se l'autoregistrazione è abilitata. enable_captcha=Abilita CAPTCHA per registrazione -enable_captcha.description=Richiedi convalida captcha per i nuovi utenti. +enable_captcha.description=Richiedi convalida CAPTCHA per i nuovi utenti. require_sign_in_view=Richiedi l'accesso per visualizzare il contenuto dell'istanza admin_setting.description=Creare un account amministratore è opzionale. Il primo utente registrato sarà automaticamente un amministratore. admin_title=Impostazioni profilo amministratore @@ -307,11 +311,11 @@ save_config_failed=Salvataggio della configurazione non riuscito: %v invalid_admin_setting=Le impostazioni dell'account amministratore sono invalide: %v invalid_log_root_path=Il percorso del log non è valido: %v default_keep_email_private=Nascondi Indirizzo e-mail come impostazione predefinita -default_keep_email_private.description=Nasconi l'indirizzo email dei nuovi account utente di default. +default_keep_email_private.description=Nascondi l'indirizzo email dei nuovi utenti di default cosicché questa informazione non venga subito rivelata dopo la registrazione. default_allow_create_organization=Consenti la creazione di organizzazioni come impostazione predefinita -default_allow_create_organization.description=Consenti ai nuovi account utente di creare organizzazioni di default. +default_allow_create_organization.description=Consenti ai nuovi utenti di creare organizzazioni per impostazione predefinita. Quando questa opzione è disabilitata, un amministratore dovrà concedere l'autorizzazione per la creazione di organizzazioni ai nuovi utenti. default_enable_timetracking=Attiva il cronografo come impostazione predefinita -default_enable_timetracking.description=Attiva il cronografo per le nuove repositories di default. +default_enable_timetracking.description=Attiva di default il cronografo per i nuovi repository. no_reply_address=Dominio e-mail nascosto no_reply_address_helper=Nome di dominio per utenti con un indirizzo email nascosto. Ad esempio, il nome utente "joe" accederà a Git come "joe@noreply.example.org" se il dominio email nascosto è impostato a "noreply.example.org". password_algorithm=Algoritmo per hash delle password @@ -324,22 +328,25 @@ env_config_keys = Configurazione Ambiente env_config_keys_prompt = Le seguenti variabili di ambiente saranno anche applicate al tuo file di configurazione: run_user_helper = Il nome utente del sistema operativo con il quale Forgejo viene eseguito. Questo utente deve avere accesso alla cartella principale dei repository. password_algorithm_helper = Imposta l'algoritmo di hashing della password. Gli algoritmi hanno requisiti e punti di forza diversi. L'algoritmo argon2 è relativamente sicuro ma usa un sacco di memoria e potrebbe non essere appropriato a piccoli sistemi. -require_sign_in_view.description = Limita l'accesso ad utenti autenticati. I visitatori vedranno solo le pagine di accesso e registrazione. +require_sign_in_view.description = Limita l'accesso a utenti autenticati. I visitatori vedranno solo le pagine di accesso e registrazione. allow_dots_in_usernames = Consenti l'uso del punto nel nome utente. Non impatta i profili già esistenti. config_location_hint = Queste opzioni di configurazione saranno salvate in: +allow_only_external_registration = Permetti la registrazione solo tramite servizi esterni +app_slogan = Slogan dell'istanza +app_slogan_helper = Inserire qui lo slogan dell'istanza. Lasciare vuoto per disabilitare. [home] uname_holder=Nome utente o indirizzo e-mail password_holder=Password -switch_dashboard_context=Cambia Dashboard Context +switch_dashboard_context=Cambia dashboard context my_repos=Repositories show_more_repos=Mostra altre repositories… -collaborative_repos=Repository Condivisi +collaborative_repos=Repository condivisi my_orgs=Organizzazioni my_mirrors=I miei Mirror view_home=Vedi %s search_repos=Trova un repository… -filter=Altro filtri +filter=Altri filtri filter_by_team_repositories=Filtra per repository del team feed_of=`Feed di "%s"` @@ -389,21 +396,21 @@ disable_register_prompt=La registrazione è disabilitata. Si prega di contattare disable_register_mail=Email di conferma per la registrazione disabilitata. manual_activation_only=Contatta l'amministratore del sito per completare l'attivazione. remember_me=Ricorda questo dispositivo -forgot_password_title=Password Dimenticata +forgot_password_title=Password dimenticata forgot_password=Password dimenticata? sign_up_now=Hai bisogno di un account? Registrati adesso. confirmation_mail_sent_prompt=Una nuova email di conferma è stata inviata a %s. Per favore controlla la tua posta in arrivo nelle prossime %s per completare il processo di registrazione. must_change_password=Aggiorna la tua password allow_password_change=Richiede all'utente di cambiare la password (scelta consigliata) reset_password_mail_sent_prompt=Una email di conferma è stata inviata a %s. Per favore controlla la tua posta in arrivo nelle prossime %s per completare il processo di reset della password. -active_your_account=Attiva il tuo Account +active_your_account=Attiva il tuo account account_activated=L'account è stato attivato prohibit_login=L'accesso è proibito resent_limit_prompt=Hai già richiesto un'e-mail d'attivazione recentemente. Si prega di attenere 3 minuti e poi riprovare. has_unconfirmed_mail=Ciao %s, hai un indirizzo di posta elettronica non confermato (%s). Se non hai ricevuto una e-mail di conferma o vuoi riceverla nuovamente, fare clic sul pulsante qui sotto. resend_mail=Clicca qui per inviare nuovamente l'e-mail di attivazione email_not_associate=L'indirizzo email non è associato ad alcuna conta. -send_reset_mail=Inviare email di recupero account +send_reset_mail=Invia email di recupero reset_password=Recupero account invalid_code=Il tuo codice di conferma è invalido oppure è scaduto. reset_password_helper=Recuperare account @@ -417,12 +424,12 @@ twofa_passcode_incorrect=Il tuo passcode non è corretto. Se hai smarrito il tuo twofa_scratch_token_incorrect=I tuo codice scratch non è corretto. login_userpass=Accedi tab_openid=OpenID -oauth_signup_tab=Creare nuovo account -oauth_signup_title=Completa Nuovo Account -oauth_signup_submit=Completa l'Account -oauth_signin_tab=Collegamento ad un Account Esistente -oauth_signin_title=Accedi per autorizzare l' Account collegato -oauth_signin_submit=Collega Account +oauth_signup_tab=Crea nuovo account +oauth_signup_title=Completa il nuovo account +oauth_signup_submit=Completa l'account +oauth_signin_tab=Collega ad un account esistente +oauth_signin_title=Accedi per autorizzare l'account collegato +oauth_signin_submit=Collega account oauth.signin.error=Si è verificato un errore nell'elaborazione della richiesta di autorizzazione. Se questo errore persiste, si prega di contattare l'amministratore del sito. oauth.signin.error.access_denied=La richiesta di autorizzazione è stata negata. oauth.signin.error.temporarily_unavailable=Autorizzazione non riuscita perché il server di autenticazione non è temporaneamente disponibile. Riprova più tardi. @@ -471,7 +478,7 @@ activate_account.text_2=Clicca sul seguente link per attivare il tuo account ent activate_email=Verifica il tuo indirizzo e-mail activate_email.text=Clicca sul seguente link per verificare il tuo indirizzo email entro %s: -register_notify=Benvenuto su Forgejo +register_notify_prev9=Benvenuto su Forgejo register_notify.title=%[1]s, benvenuto in %[2]s register_notify.text_1=questa è la tua email di conferma di registrazione per %s! register_notify.text_2=Puoi accedere al tuo profilo tramite il tuo nome utente: %s @@ -672,6 +679,14 @@ form.name_pattern_not_allowed = La sequenza "%s" non è consentita in un nome ut follow_blocked_user = Non puoi seguire questo utente perchè hai bloccato questo utente o perchè questo utente ha bloccato te. followers_one = %d seguace following_one = %d seguito +public_activity.visibility_hint.self_public = L'attività è visibile a tutti, tranne che per le interazioni negli spazi privati. Configura. +public_activity.visibility_hint.admin_public = Questa attività è visibile a tutti, ma come amministratore, si possono vedere anche le interazioni negli spazi privati. +public_activity.visibility_hint.self_private = L'attività è visibile solo a te e agli amministratori dell'istanza. Configura. +public_activity.visibility_hint.admin_private = Questa attività è visibile a te perché sei un amministratore, ma l'utente desidera che rimanga privata. +followers.title.one = Seguace +followers.title.few = Seguaci +following.title.one = Seguito +following.title.few = Osservato [settings] @@ -999,6 +1014,7 @@ hints = Suggerimenti pronouns = Pronomi pronouns_custom = Personalizzato pronouns_unspecified = Non specificato +language.title = Lingua predefinita [repo] owner=Proprietario @@ -1019,7 +1035,7 @@ fork_repo=Deriva progetto fork_from=Deriva da already_forked=Hai già fatto il fork di %s fork_to_different_account=Fai Fork a un account diverso -fork_visibility_helper=La visibilità di un repository forkato non può essere modificata. +fork_visibility_helper=La visibilità di un repository derivato non può essere modificata. use_template=Usa questo modello clone_in_vsc=Clona nel codice VS download_zip=Scarica ZIP @@ -1120,7 +1136,7 @@ migrate_options_lfs_endpoint.description=La migrazione tenterà di utilizzare il migrate_options_lfs_endpoint.description.local=È supportato anche un percorso server locale. migrate_items=Elementi di migrazione migrate_items_wiki=Wiki -migrate_items_milestones=Milestone +migrate_items_milestones=Traguardi migrate_items_labels=Etichette migrate_items_issues=Issues migrate_items_pullrequests=Richieste di modifica @@ -1152,14 +1168,14 @@ migrate.codebase.description=Migrare i dati da codebasehq.com. migrate.gitbucket.description=Migra i dati dalle istanze di GitBucket. migrate.migrating_git=Migrazione dei dati Git migrate.migrating_topics=Migrazione degli argomenti -migrate.migrating_milestones=Migrazione delle pietre miliari +migrate.migrating_milestones=Migrazione dei traguardi migrate.migrating_labels=Migrazione delle etichette migrate.migrating_releases=Migrazione dei rilasci migrate.migrating_issues=Migrazione delle segnalazioni migrate.migrating_pulls=Migrazione delle richieste di modifica mirror_from=mirror da -forked_from=forkato da +forked_from=derivato da generated_from=generato da fork_from_self=Non puoi effettuare il fork del tuo stesso repository. fork_guest_user=Accedi per effettuare il fork di questo repository. @@ -1169,7 +1185,7 @@ unwatch=Non seguire più watch=Segui unstar=Togli il voto star=Vota -fork=Forka +fork=Deriva download_archive=Scarica progetto no_desc=Nessuna descrizione @@ -1223,6 +1239,7 @@ view_git_blame=Visualizza git incolpa video_not_supported_in_browser=Il tuo browser non supporta le etichette "video" di HTML5. audio_not_supported_in_browser=Il tuo browser non supporta le etichette "audio" di HTML5. stored_lfs=Memorizzati con Git LFS +stored_annex=Memorizzati con Git Annex symbolic_link=Link Simbolico commit_graph=Grafico dei commit commit_graph.select=Seleziona rami @@ -1241,6 +1258,7 @@ editor.upload_file=Carica file editor.edit_file=Modifica file editor.preview_changes=Anteprima modifiche editor.cannot_edit_lfs_files=I file LFS non possono essere modificati nell'interfaccia web. +editor.cannot_edit_annex_files=I file Annex non possono essere modificati nell'interfaccia web. editor.cannot_edit_non_text_files=I file binari non possono essere modificati tramite interfaccia web. editor.edit_this_file=Modifica file editor.this_file_locked=Il file è bloccato @@ -1338,9 +1356,9 @@ projects.column.color=Colore projects.open=Apri projects.close=Chiudi -issues.desc=Organizza le segnalazioni di bug, attività e pietre miliari. +issues.desc=Organizza le segnalazioni di bug, attività e traguardi. issues.filter_assignees=Filtra assegnatario -issues.filter_milestones=Filtra traguardo +issues.filter_milestones=Filtra Traguardo issues.filter_projects=Filtra Progetti issues.filter_labels=Filtra etichetta issues.filter_reviewers=Filtra revisore @@ -1358,13 +1376,13 @@ issues.new.no_items=Nessun elemento issues.new.milestone=Traguardo issues.new.no_milestone=Nessuna pietra miliare issues.new.clear_milestone=Milestone pulita -issues.new.open_milestone=Apri pietra miliare -issues.new.closed_milestone=Pietre miliari chiuse +issues.new.open_milestone=Traguardi aperti +issues.new.closed_milestone=Traguardi chiusi issues.new.assignees=Assegnatari issues.new.clear_assignees=Cancella assegnatari issues.new.no_assignees=Nessun assegnatario issues.new.no_reviewers=Nessun revisore -issues.choose.get_started=Inizia +issues.choose.get_started=Cominciare issues.choose.open_external_link=Apri issues.choose.blank=Default issues.choose.blank_about=Crea un problema dal modello predefinito. @@ -1742,29 +1760,29 @@ pulls.delete.text=Vuoi davvero eliminare questo problema? (Questo rimuoverà per -milestones.new=Nuova pietra miliare +milestones.new=Nuovo traguardo milestones.closed=Chiuso %s milestones.no_due_date=Nessuna data di scadenza milestones.open=Apri milestones.close=Chiudi -milestones.completeness=%d%% Completato -milestones.create=Crea pietra miliare +milestones.completeness=%d%% Completato +milestones.create=Crea traguardo milestones.title=Titolo milestones.desc=Descrizione milestones.due_date=Scadenza (opzionale) milestones.clear=Pulisci milestones.invalid_due_date_format=Il formato della scadenza deve essere 'aaaa-mm-dd'. -milestones.edit=Modifica pietra miliare -milestones.edit_subheader=Le pietre miliari organizzano le issue e tengono conto del progresso. +milestones.edit=Modifica traguardo +milestones.edit_subheader=I traguardi permettono una migliore organizzazione dei problemi e ne tracciano il progresso. milestones.cancel=Annulla -milestones.modify=Aggiorna pietra miliare -milestones.deletion=Elimina pietra miliare -milestones.deletion_desc=Eliminare una pietra miliare la rimuove da tutte le relative issue. Continuare? -milestones.deletion_success=La pietra miliare è stata eliminata. -milestones.filter_sort.least_complete=Meno completato -milestones.filter_sort.most_complete=Più completato -milestones.filter_sort.most_issues=Maggior parte delle segnalazioni -milestones.filter_sort.least_issues=Meno segnalazioni +milestones.modify=Aggiorna traguardo +milestones.deletion=Elimina traguardo +milestones.deletion_desc=L'eliminazione di un traguardo lo rimuoverà da tutte le segnalazioni collegate ad esso. Continuare? +milestones.deletion_success=Il traguardo è stato eliminato. +milestones.filter_sort.least_complete=Completato di meno +milestones.filter_sort.most_complete=Completato di più +milestones.filter_sort.most_issues=Con più segnalazioni +milestones.filter_sort.least_issues=Con meno segnalazioni ext_wiki=Accesso al Wiki esterno @@ -2046,7 +2064,7 @@ settings.event_create_desc=Ramo o etichetta creati. settings.event_delete=Elimina settings.event_delete_desc=Ramo o etichetta eliminati. settings.event_fork=Fork -settings.event_fork_desc=Repository forkato. +settings.event_fork_desc=Repository derivato. settings.event_wiki=Wiki settings.event_release=Release settings.event_release_desc=Release pubblicata, aggiornata o rimossa in una repository. @@ -2407,7 +2425,7 @@ commitstatus.failure = Errore settings.units.overview = Panoramica all_branches = Tutti i rami projects.column.assigned_to = Assegnato a -pulls.cmd_instruction_hint = `Visualizza istruzioni per la riga di comando.` +pulls.cmd_instruction_hint = `Visualizza istruzioni per la riga di comando.` settings.add_collaborator_blocked_them = Non si può aggiungere il collaboratore perché ha bloccato il proprietario del progetto. branch.protected_deletion_failed = Il ramo "%s" è protetto. Non può essere eliminato. branch.default_deletion_failed = Il ramo "%s" è il ramo predefinito. Non può essere eliminato. @@ -2733,6 +2751,27 @@ settings.matrix.room_id_helper = L'ID della Stanza può essere ricavato dal web settings.graphql_url = URL GraphQL settings.sourcehut_builds.access_token_helper = Token di accesso con grant JOBS:RW. Genera un token builds.sr.ht o un token builds.sr.ht con accesso ai segreti su meta.sr.ht. settings.matrix.access_token_helper = È consigliata l'impostazione di un account Matrix dedicato per questa funzione. Il token di accesso può essere prelevato dal web client Element (in una pagina privata/incognito) > Menu utente (in alto a sinistra) > Tutte le impostazioni > Aiuto e informazioni > Avanzato > Token di accesso (sotto all'URL del Homeserver). Chiudi la pagina privata/incognito (La disconnessione invaliderebbe il token). +issues.author.tooltip.issue = Questo utente è l'autore di questa segnalazione. +form.string_too_long = La stringa data è più lunga di %d caratteri. +project = Progetti +issues.edit.already_changed = Impossibile salvare le modifiche al problema. Sembra che il contenuto sia già stato modificato da un altro utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche +subscribe.pull.guest.tooltip = Accedere per sottoscrivere questa richiesta di pull. +subscribe.issue.guest.tooltip = Accedere per sottoscrivere questo problema. +n_release_one = rilascio %s +n_release_few = rilasci %s +issues.author.tooltip.pr = Questo utente è l'autore di questa richiesta di pull. +release.hide_archive_links = Nascondi automaticamente gli archivi generati +settings.federation_settings = Impostazioni di federazione +settings.federation_apapiurl = URL della federazione di questo repository. Copiarlo e incollarlo nelle Impostazioni della federazione di un altro repository come URL di un repository successivo. +release.hide_archive_links_helper = Nascondi gli archivi del codice sorgente generati automaticamente per questa versione. Ad esempio, se stai caricando i tuoi. +comments.edit.already_changed = Impossibile salvare le modifiche al commento. Sembra che il contenuto sia già stato modificato da un altro utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche +settings.federation_following_repos = URL dei repository successivi. Separati da ";", senza spazi. +settings.federation_not_enabled = La federazione non è abilitata nella tua istanza. +settings.transfer.button = Trasferisci la proprietà +settings.transfer.modal.title = Trasferisci la proprietà +pulls.edit.already_changed = Impossibile salvare le modifiche alla richiesta di pull. Sembra che il contenuto sia già stato modificato da un altro utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche +wiki.search = Cerca nel wiki +wiki.no_search_results = Nessun risultato [graphs] contributors.what = contribuzioni @@ -2867,6 +2906,7 @@ follow_blocked_user = Non puoi seguire questa organizzazione perché ti ha blocc form.name_reserved = Il nome di organizzazione "%s" è riservato. settings.email = Email di contatto settings.visibility.limited = Limitato (visibile solo agli utenti autenticati) +open_dashboard = Apri pannello di controllo [admin] dashboard=Pannello di Controllo @@ -3310,7 +3350,7 @@ monitor.start=Orario Avvio monitor.execute_time=Tempo di Esecuzione monitor.last_execution_result=Risultato monitor.process.cancel=Annulla processo -monitor.process.cancel_desc=L'annullamento di un processo potrebbe causare la perdita di dati +monitor.process.cancel_desc=Annullare un processo potrebbe causare una perdita di dati monitor.process.cancel_notices=Annulla: %s? monitor.process.children=Figli @@ -3408,19 +3448,25 @@ auths.tip.gitlab_new = Registra una nuova applicazione su https://gitlab.com/-/p config_summary = Riepilogo config.open_with_editor_app_help = L'editor delle opzioni "Apri con" per il menu di clone. Se lasciato vuoto, verranno usati i default. Espandi per vedere i default. config_settings = Impostazioni +config.cache_test = Controllo cache +config.cache_test_failed = Fallito il controllo della cache: %v. +config.cache_test_succeeded = Successo nel controllo della cache, ottenuta una risposta in %s. +config.cache_test_slow = Successo nel controllo della cache, ma la risposta è lenta: %s. +config.app_slogan = Slogan dell'istanza +auths.default_domain_name = Nome di dominio predefinito utilizzato per l'indirizzo e-mail [action] create_repo=ha creato il repository %s rename_repo=repository rinominato da %[1]s a [3]s -create_issue=`ha aperto il problema %[3]s#%[2]s` +create_issue=`ha aperto la segnalazione %[3]s#%[2]s` close_issue=`ha chiuso il problema %[3]s#%[2]s` reopen_issue=`ha riaperto il problema %[3]s#%[2]s` create_pull_request=`ha creato la pull request %[3]s#%[2]s` close_pull_request=`ha chiuso la pull request %[3]s#%[2]s` reopen_pull_request=`ha riaperto la pull request %[3]s#%[2]s` -comment_issue=`ha commentato sul problema %[3]s#%[2]s` -comment_pull=`ha commentato su pull request %[3]s#%[2]s` +comment_issue=`ha commentato la segnalazione %[3]s#%[2]s` +comment_pull=`ha commentato la richiesta di modifica %[3]s#%[2]s` merge_pull_request=`ha unito il pull request %[3]s#%[2]s` transfer_repo=repository %s trasferito in %s push_tag=ha inviato il tag %[3]s su %[4]s @@ -3434,13 +3480,13 @@ mirror_sync_create=ha sincronizzato un nuovo riferimento %[3]s%[2]s a %[3]s dal mirror approve_pull_request=`ha approvato %[3]s#%[2]s` reject_pull_request=`ha suggerito modifiche per %[3]s#%[2]s` -publish_release=`ha rilasciato "%[4]s" su %[3]s` +publish_release=`ha rilasciato %[4]s su %[3]s` review_dismissed=`respinta la recensione da %[4]s per %[3]s#%[2]s` review_dismissed_reason=Motivo: create_branch=ha creato il ramo %[3]s in %[4]s starred_repo=ha salvato come preferito %[2]s watched_repo=ha iniziato a guardare %[2]s -commit_repo = immesso a %[3]s a %[4]s +commit_repo = ha immesso nel ramo %[3]s presso %[4]s auto_merge_pull_request = `richiesta di modifica %[3]s#%[2]s fusa automaticamente` [tool] @@ -3651,6 +3697,7 @@ owner.settings.chef.keypair.description = Per autenticarsi al registro Chef è n owner.settings.cargo.initialize.success = L'indice di Cargo è stato creato correttamente. owner.settings.cargo.rebuild.no_index = Impossibile ricostruire, nessun indice è inizializzato. owner.settings.cargo.rebuild.description = La ricostruzione può essere utile se l'indice non è sincronizzato con i pacchetti Cargo conservati. +npm.dependencies.bundle = Dipendenze raggruppate [secrets] secrets = Segreti @@ -3757,6 +3804,14 @@ runs.no_workflows.quick_start = Non sai come iniziare con le Forgejo Actions? Ve runners.delete_runner_notice = Se un'attività è in esecuzione su questo esecutore sarà terminata ed etichettata fallito. Potrebbe rompere flussi di lavoro di costruzione. runners.task_list = Attività recenti su questo esecutore runs.no_job_without_needs = Il flusso di lavoro deve contenere almeno un incarico senza dipendenze. +workflow.dispatch.trigger_found = Questo flusso di lavoro ha un rilevatore di eventi workflow_dispatch. +workflow.dispatch.run = Esegui flusso di lavoro +workflow.dispatch.success = L'esecuzione del flusso di lavoro è stata richiesta con successo. +workflow.dispatch.input_required = Richiedi valore per l'ingresso "%s". +workflow.dispatch.invalid_input_type = Tipo ingresso "%s" non valido. +workflow.dispatch.warn_input_limit = Visualizzati solo i primi %d ingressi. +runs.no_job = Il flusso di lavoro deve contenere almeno un incarico +workflow.dispatch.use_from = Usa flusso di lavoro da @@ -3798,6 +3853,10 @@ match_tooltip = Includi solo risultati che corrispondono precisamente al termine fuzzy_tooltip = Includi anche risultati che corrispondono approssimativamente al termine di ricerca user_kind = Cerca utenti... repo_kind = Cerca repository... +exact_tooltip = Includi solo i risultati che corrispondono esattamente al termine di ricerca +issue_kind = Cerca segnalazioni... +pull_kind = Ricerca pull... +exact = Esatto [munits.data] gib = GiB diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index ac0e855e06..a1096bcdbb 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -477,7 +477,7 @@ activate_email=メール アドレスを確認します activate_email.title=%s さん、メールアドレス確認をお願いします activate_email.text=あなたのメールアドレスを確認するため、%s以内に次のリンクをクリックしてください: -register_notify=Forgejoへようこそ +register_notify_prev9=Forgejoへようこそ register_notify.title=%[1]s さん、%[2]s にようこそ register_notify.text_1=これは %s への登録確認メールです! register_notify.text_2=あなたはユーザー名 %s でログインできるようになりました。 @@ -1266,6 +1266,7 @@ view_git_blame=Git Blameを表示 video_not_supported_in_browser=このブラウザはHTML5のvideoタグをサポートしていません。 audio_not_supported_in_browser=このブラウザーはHTML5のaudioタグをサポートしていません。 stored_lfs=Git LFSで保管されています +stored_annex=Git Annexで保管されています symbolic_link=シンボリック リンク executable_file=実行ファイル commit_graph=コミットグラフ @@ -1289,6 +1290,7 @@ editor.upload_file=ファイルをアップロード editor.edit_file=ファイルを編集 editor.preview_changes=変更をプレビュー editor.cannot_edit_lfs_files=LFSのファイルはWebインターフェースで編集できません。 +editor.cannot_edit_annex_files=AnnexのファイルはWebインターフェースで編集できません。 editor.cannot_edit_non_text_files=バイナリファイルはWebインターフェースで編集できません。 editor.edit_this_file=ファイルを編集 editor.this_file_locked=ファイルはロックされています @@ -1883,7 +1885,7 @@ pulls.outdated_with_base_branch=このブランチはベースブランチに対 pulls.close=プルリクエストをクローズ pulls.closed_at=`がプルリクエストをクローズ %[2]s` pulls.reopened_at=`がプルリクエストを再オープン %[2]s` -pulls.cmd_instruction_hint=`コマンドラインの手順を表示します。` +pulls.cmd_instruction_hint=`コマンドラインの手順 を表示します。` pulls.cmd_instruction_checkout_title=チェックアウト pulls.cmd_instruction_checkout_desc=プロジェクトリポジトリから新しいブランチをチェックアウトし、変更内容をテストします。 pulls.cmd_instruction_merge_title=マージ @@ -2668,7 +2670,7 @@ issues.blocked_by_user = あなたはこのリポジトリの所有者からブ pulls.nothing_to_compare_have_tag = 選択されたブランチまたはタグは同一です。 pulls.blocked_by_user = あなたはこのリポジトリの所有者からブロックされているため、プルリクエストを作成できません。 rss.must_be_on_branch = RSSフィードを見るためには、ブランチを閲覧する必要があります。 -migrate.forgejo.description = codeberge.orgまたは他のインスタンスからデータを移行する。 +migrate.forgejo.description = codeberg.orgまたは他のインスタンスからデータを移行する。 commits.browse_further = もっと見る issues.comment.blocked_by_user = あなたはこのリポジトリの所有者か、Issueの投稿者からブロックされているため、このIssueにコメントできません。 pulls.reopen_failed.head_branch = ブランチがもう存在しないため、このプルリクエストはreopenできません。 diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index 7c8cd2e960..081169df9b 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -43,7 +43,7 @@ admin_panel=사이트 관리 account_settings=계정 설정 settings=설정 your_profile=프로필 -your_starred=즐겨찾기 +your_starred=좋아한 저장소 your_settings=설정 all=전체 @@ -158,6 +158,7 @@ filter.private = 비공개 filter.not_template = 템플릿이 아님 view = 보기 never = 안함 +test = 테스트 [aria] navbar = 내비게이션 바 @@ -180,10 +181,15 @@ buttons.heading.tooltip = 헤딩 추가 buttons.bold.tooltip = 두꺼운 텍스트 추가 buttons.code.tooltip = 코드 추가 buttons.link.tooltip = 링크 추가 +buttons.quote.tooltip = 인용구 추가 [filter] +string.desc = 하 - 가 +string.asc = 가 - 하 [error] +network_error = 네트워크 오류 +server_internal = 내부 서버 오류 [startpage] app_desc=편리한 설치형 Git 서비스 @@ -215,7 +221,7 @@ err_admin_name_is_invalid=관리자 사용자 이름이 올바르지 않습니 general_title=기본설정 app_name=인스턴스 제목 -app_name_helper=회사이름을 넣으세요. +app_name_helper=인스턴스 이름을 입력하세요. 입력한 내용은 모든 페이지에 표시됩니다. repo_path=저장소 최상위 경로 repo_path_helper=Git 원격 저장소는 이 디렉터리에 저장 됩니다. lfs_path=Git LFS 루트 경로 @@ -242,16 +248,16 @@ register_confirm=가입시 이메일 확인 필수 mail_notify=이메일 알림 켜기 server_service_title=서버 및 기타 서비스 설정 offline_mode=로컬 모드 켜기 -offline_mode.description=타사 콘텐츠 전송 네트워크를 사용하지 않도록 설정하고 모든 리소스를 로컬로 제공하십시오. +offline_mode.description=타사 콘텐츠 전송 네트워크를 사용하지 않도록 설정하고 모든 리소스를 로컬에서 제공합니다. disable_gravatar=Gravatar 사용안함 disable_gravatar.description=Gravatar 및 타사 아바타 소스를 사용하지 않도록 설정합니다. 사용자가 로컬로 아바타를 업로드하지 않는 한 기본 아바타가 사용됩니다. federated_avatar_lookup=탈중앙화 아바타 사용 federated_avatar_lookup.description=libravatar 기반 오픈소스 연합 아바타 조회를 허용합니다. disable_registration=사용자 등록 비활성화 -disable_registration.description=사용자가 직접 등록할 수 없게 합니다. 관리자만이 추가할 수 있습니다. -allow_only_external_registration.description=외부 서비스를 통한 등록을 허용 +disable_registration.description=인스턴스 관리자만이 새 사용자 계정을 추가할 수 있게 됩니다. 공개 인스턴스를 제공할 예정이고 많은 양의 스팸 계정을 감당할 준비가 되어 있지 않다면 사용자 등록을 비활성화 할 것을 강력히 권고합니다. +allow_only_external_registration.description=새 계정을 등록하려는 사용자는 설정된 외부 서비스를 이용해야만 새 계정을 등록할 수 있습니다. openid_signin=OpenID 로그인 사용 -openid_signin.description=OpenID 를 이용한 로그인을 허용합니다. +openid_signin.description=OpenID를 이용한 로그인을 허용합니다. openid_signup=OpenID 가입 허용 openid_signup.description=OpenID를 통한 가입을 허용합니다. enable_captcha.description=사용자 등록시 캡차를 요구합니다. @@ -279,6 +285,12 @@ default_enable_timetracking=시간 추적 사용을 기본값으로 설정 default_enable_timetracking.description=신규 레포지토리에 대한 시간 추적 사용을 기본값으로 설정합니다. no_reply_address=가려진 이메일 도메인 no_reply_address_helper=가려진 이메일을 가진 사용자에게 적용될 이메일 도메인입니다. 예를 들어, 사용자 'joe'의 가려잔 이메일 도메인이 'noreply.example.org'로 설정되어 있으면 'joe@noreply.example.org'로 처리 됩니다. +db_schema_helper = 데이터베이스 기본값 ("공개")를 사용하려면 빈 칸으로 두세요. +require_db_desc = Forgejo를 사용하려면 MySQL, PostgreSQL, SQLite3 또는 TiDB (MySQL 프로토콜) 이 설치되어 있어야 합니다. +domain = 서버 도메인 +smtp_from_invalid = "이메일 발신인" 주소가 유효하지 않습니다 +enable_captcha = 등록 시 CAPTCHA 활성화 +allow_only_external_registration = 외부 서비스를 통한 등록만 허용 [home] uname_holder=사용자 이름 또는 이메일 주소 @@ -307,6 +319,8 @@ repo_no_results=일치하는 레포지토리가 없습니다. user_no_results=일치하는 사용자가 없습니다. org_no_results=일치하는 조직이 없습니다. code_no_results=검색어와 일치하는 소스코드가 없습니다. +stars_one = %d 좋아요 +stars_few = %d 좋아요 [auth] create_new_account=계정 등록 @@ -365,12 +379,23 @@ activate_account=계정을 활성화하세요 activate_email=이메일 주소 확인 -register_notify=Forgejo에 오신것을 환영합니다 +register_notify_prev9=Forgejo에 오신것을 환영합니다 reset_password=계정 복구 register_success=등록 완료 issue.action.close = @%[1]s님이 #%[2]d를 닫았습니다. +release.new.text = @%[1]s님이 %[2]s를 %[3]s에 출시함 +issue.action.push_n = @%[1]s님이 %[3]d개의 커밋을 %[2]s에 푸시함 +issue.action.reopen = @%[1]s님이 #%[2]d를 다시 열었습니다. +issue.action.approve = @%[1]s님이 이 풀 리퀘스트를 승인했습니다. +issue.action.review = @%[1]s님이 이 풀 리퀘스트에 커밋했습니다. +issue.action.ready_for_review = @%[1]s님이 이 풀 리퀘스트를 검토하기 적합하다 표시했습니다. +issue.action.push_1 = @%[1]s님이 %[3]d개의 커밋을 %[2]s에 푸시함 +issue.action.merge = @%[1]s님이 #%[2]d를 %[3]s에 병합했습니다. +issue.action.review_dismissed = @%[1]s님이 이 풀 리퀘스트에 대한 %[2]s의 마지막 검토를 거부했습니다. +issue.action.reject = @%[1]s님이 이 풀 리퀘스트에 수정을 요청했습니다. +issue.action.new = @%[1]s님이 #%[2]d를 만들었습니다. @@ -452,7 +477,7 @@ change_avatar=아바타 변경… repositories=저장소 activity=공개 활동 followers_few=%d 팔로워 -starred=관심있는 저장소 +starred=좋아하는 저장소 overview=개요 following_few=%d 팔로우 중 follow=추적하기 @@ -739,6 +764,7 @@ file_too_large=보여주기에는 파일이 너무 큽니다. video_not_supported_in_browser=당신의 브라우저가 HTML5의 "video" 태그를 지원하지 않습니다. audio_not_supported_in_browser=당신의 브라우저가 HTML5의 "audio" 태그를 지원하지 않습니다. stored_lfs=Git LFS에 저장되어 있습니다 +stored_annex=Git Annex에 저장되어 있습니다 commit_graph=커밋 그래프 editor.new_file=새 파일 @@ -848,7 +874,7 @@ issues.action_milestone=마일스톤 issues.action_milestone_no_select=마일스톤 없음 issues.action_assignee=담당자 issues.action_assignee_no_select=담당자 없음 -issues.opened_by= %[3]s님이 %[1]s에 오픈 +issues.opened_by= %[3]s님이 %[1]s 오픈 issues.previous=이전 issues.next=다음 issues.open_title=오픈 @@ -911,8 +937,8 @@ issues.due_date_form_add=마감일 추가 issues.due_date_form_edit=편집 issues.due_date_form_remove=삭제 issues.due_date_not_set=마감일이 설정되지 않았습니다. -issues.due_date_added=마감일 %s 를 추가 %s -issues.due_date_remove=%s %s 마감일이 삭제됨 +issues.due_date_added=님이 마감일 %s을 %s 추가함 +issues.due_date_remove=님이 마감일 %s를 %s 삭제함 issues.due_date_overdue="기한 초과" issues.due_date_invalid=기한이 올바르지 않거나 범위를 벗어났습니다. "yyyy-mm-dd"형식을 사용해주십시오. issues.dependency.title=전제조건 @@ -932,7 +958,7 @@ issues.dependency.add_error_dep_exists=전제조건이 이미 존재합니다. issues.dependency.add_error_dep_not_same_repo=두 이슈는 같은 저장소 안에 있어야 합니다. issues.review.self.approval=자신의 풀 리퀘스트를 승인할 수 없습니다. issues.review.self.rejection=자신의 풀 리퀘스트에 대한 변경을 요청할 수 없습니다. -issues.review.approve="이 변경사항을 승인하였습니다. %s" +issues.review.approve=이 변경사항을 승인함 %s issues.review.comment=검토됨 %s issues.review.pending=보류 issues.review.review=검토 @@ -948,19 +974,19 @@ pulls.compare_compare=다음으로부터 풀 pulls.filter_branch=Filter Branch pulls.no_results=결과를 찾을 수 없습니다. pulls.create=풀 리퀘스트 생성 -pulls.title_desc_few=%[2]s 에서 %[3]s 로 %[1]d개의 커밋들을 머지하려 합니다 -pulls.merged_title_desc_few=%[2]s 에서 %[3]s 로 %[1]d commits 를 머지했습니다 %[4]s +pulls.title_desc_few=%[2]s 에서 %[3]s 로 %[1]d개의 커밋들을 병합하려함 +pulls.merged_title_desc_few=님이 %[2]s 에서 %[3]s 로 %[1]d 커밋을 %[4]s 병합함 pulls.tab_conversation=대화 pulls.tab_commits=커밋 -pulls.tab_files=파일 변경됨 -pulls.reopen_to_merge=머지 작업을 수행하려면 이 풀 리퀘스트를 다시 열어주세요. -pulls.merged=병합 -pulls.can_auto_merge_desc=이 풀리퀘스트는 자동적으로 머지될 수 있습니다. -pulls.cannot_auto_merge_helper=충돌을 해결하려면 수동으로 머지하십시오. +pulls.tab_files=파일 변경 +pulls.reopen_to_merge=병합을 수행하려면 이 풀 리퀘스트를 다시 열어주세요. +pulls.merged=병합됨 +pulls.can_auto_merge_desc=이 풀리퀘스트는 자동적으로 병합될 수 있습니다. +pulls.cannot_auto_merge_helper=충돌을 해결하려면 수동으로 병합하십시오. -pulls.no_merge_desc=모든 저장소 머지 옵션이 비활성화 되어있기 때문에 이 풀 리퀘스트를 머지할 수 없습니다. +pulls.no_merge_desc=모든 저장소 병합 옵션이 비활성화 되어있기 때문에 이 풀 리퀘스트를 병합할 수 없습니다. -pulls.invalid_merge_option=이 풀 리퀘스트에서 설정한 머지 옵션을 사용하실 수 없습니다. +pulls.invalid_merge_option=이 풀 리퀘스트에서 설정한 병합 옵션을 사용하실 수 없습니다. @@ -1028,7 +1054,7 @@ activity.title.user_1=%d 사용자 activity.title.user_n=%d 사용자 activity.title.prs_1=풀 리퀘스트 %d개 activity.title.prs_n=풀 리퀘스트 %d개 -activity.title.prs_merged_by=%s 가 %s 로부터 머지 되었음 +activity.title.prs_merged_by=%s 가 %s 로부터 병합되었음 activity.title.prs_opened_by=%s 가 %s 로 부터 제안됨 activity.merged_prs_label=병합됨 activity.opened_prs_label=제안중 @@ -1194,7 +1220,7 @@ settings.protect_disable_push=푸시 끄기 settings.protect_enable_push=푸시 켜기 settings.protect_whitelist_search_users=사용자 찾기... settings.protect_whitelist_search_teams=팀 찾기... -settings.protect_merge_whitelist_committers=머지 화이트리스트 활성화 +settings.protect_merge_whitelist_committers=병합 화이트리스트 활성화 settings.protect_required_approvals=필요한 승인: settings.protect_approvals_whitelist_users=화이트리스트된 리뷰어: settings.add_protected_branch=보호 활성화 @@ -1297,7 +1323,7 @@ pulls.blocked_by_official_review_requests = 이 풀 리퀘스트는 공식 검 watch_guest_user = 이 저장소를 주시하려면 로그인 해야합니다. issues.closed_by_fake = %[2]s님이 %[1]s에 닫음 issues.new.closed_projects = 닫힌 프로젝트 -pulls.merged_by_fake = %[2]s님이 %[1]s에 머지함 +pulls.merged_by_fake = %[2]s님이 %[1]s 병합함 issues.closed_by = %[3]s님이 %[1]s에 닫음 issues.closed_at = `%[2]s`에 이 이슈를 닫음 issues.filter_milestone_closed = 닫힌 마일스톤 @@ -1321,6 +1347,25 @@ issues.dependency.no_permission_1 = %d개의 전제조건을 읽을 권한이 issues.dependency.no_permission.can_remove = 이 전제조건을 읽을 권한이 없지만 지울 수 있음 issues.dependency.removed_dependency = `님이 %s 전제조건 삭제` issues.dependency.pr_close_blocked = 병합하기 전에 이 풀 리퀘스트을 제한하는 모든 이슈를 종료해야 합니다. +stars = 좋아요 +stars_remove_warning = 이 작업은 이 저장소에 대한 모든 좋아요를 제거할것입니다. +star_guest_user = 로그인하여 이 저장소에 좋아요 하세요. +issues.author.tooltip.issue = 이 사용자는 이 이슈의 작성자 입니다. +issues.author.tooltip.pr = 이 사용자는 이 풀 리퀘스트의 작성자 입니다. +activity.git_stats_author_1 = %d명의 작성자 +issues.filter_poster_no_select = 모든 작성자 +pulls.blocked_by_user = 당신은 이 저장소의 소유자에게 차단당했기 떄문에 풀 리퀘스트를 만들 수 없습니다. +commits.search.tooltip = 키워드 앞에 접두사 "author:", "committer:", "after:", "before:"을 사용할 수 있습니다 (예: "revert author:Alice before:2019-01-13"). +issues.filter_poster = 작성자 +issues.author = 작성자 +issues.role.owner_helper = 이 사용자는 이 저장소의 소유자 입니다. +activity.git_stats_author_n = %d명의 작성자 +diff.review.self_reject = 풀 리퀘스트 작성자는 자신의 풀 리퀘스트에 수정을 요청할 수 없음 +diff.review.self_approve = 풀 리퀘스트 작성자는 자신의 풀 리퀘스트를 승인할 수 없음 +issues.blocked_by_user = 당신은 이 저장소의 소유자에게 차단당했기 떄문에 이슈를 만들 수 없습니다. +issues.comment.blocked_by_user = 당신은 이 저장소의 소유자 혹은 이 이슈의 작성자 에게 차단당했기 떄문에 이슈에 댓글을 달 수 없습니다. +author_search_tooltip = 최대 30명의 사용자를 표시함 +pulls.merged_title_desc_one = 님이 %[2]s 에서 %[3]s 로 %[1]d 커밋을 %[4]s 병합함 @@ -1695,6 +1740,7 @@ rename_repo=저장소 이름을 %[1]s에서에서 transfer_repo=저장소가 %s에서 %s로 이동됨 compare_commits=%d 커밋들 비교 watched_repo = %[2]s에대한 주시를 시작함 +starred_repo = %[2]s를 좋아함 [tool] now=현재 @@ -1754,6 +1800,7 @@ nuget.dependency.framework = 타겟 프레임워크 maven.download = 종속성을 다운로드하려면 명령줄을 통해 실행하세요: dependency.id = ID dependency.version = 버전 +details.author = 작성자 [secrets] diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index 460b0d351e..447de6a314 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -439,7 +439,7 @@ activate_email=Apstipriniet savu e-pasta adresi activate_email.title=%s, apstipriniet savu e-pasta adresi activate_email.text=Nospiediet uz saites, lai apstiprinātu savu e-pasta adresi lapā %s: -register_notify=Laipni lūdzam Forgejo +register_notify_prev9=Laipni lūdzam Forgejo register_notify.title=%[1]s, esat reģistrējies %[2]s register_notify.text_1=šis ir reģistrācijas apstiprinājuma e-pasts lapai %s! register_notify.text_2=Tagad varat autorizēties ar lietotāja vārdu: %s. @@ -1184,6 +1184,7 @@ view_git_blame=Aplūkot Git vainīgos video_not_supported_in_browser=Jūsu pārlūks neatbalsta HTML5 video. audio_not_supported_in_browser=Jūsu pārlūks neatbalsta HTML5 audio. stored_lfs=Saglabāts Git LFS +stored_annex=Saglabāts Git Annex symbolic_link=Simboliska saite executable_file=Izpildāmais fails commit_graph=Revīziju grafs @@ -1207,6 +1208,7 @@ editor.upload_file=Augšupielādēt failu editor.edit_file=Labot failu editor.preview_changes=Priekšskatīt izmaiņas editor.cannot_edit_lfs_files=LFS failus nevar labot no tīmekļa saskarnes. +editor.cannot_edit_annex_files=Annex failus nevar labot no tīmekļa saskarnes. editor.cannot_edit_non_text_files=Nav iespējams labot bināros failus no pārlūka saskarnes. editor.edit_this_file=Labot failu editor.this_file_locked=Fails ir bloķēts @@ -1801,7 +1803,7 @@ pulls.outdated_with_base_branch=Atzars ir novecojis salīdzinot ar bāzes atzaru pulls.close=Aizvērt izmaiņu pieprasījumu pulls.closed_at=`aizvēra šo izmaiņu pieprasījumu %[2]s` pulls.reopened_at=`atkārtoti atvēra šo izmaiņu pieprasījumu %[2]s` -pulls.cmd_instruction_hint=`Apskatīt komandrindas izmantošanas norādes.` +pulls.cmd_instruction_hint=`Apskatīt komandrindas izmantošanas norādes.` pulls.cmd_instruction_checkout_title=Paņemt pulls.cmd_instruction_checkout_desc=Projekta repozitorijā jāizveido jauns atzars un jāpārbauda izmaiņas. pulls.cmd_instruction_merge_title=Sapludināt diff --git a/options/locale/locale_ml-IN.ini b/options/locale/locale_ml-IN.ini new file mode 100644 index 0000000000..a15fd5a9dc --- /dev/null +++ b/options/locale/locale_ml-IN.ini @@ -0,0 +1,805 @@ +[common] +home=പൂമുഖം +dashboard=ഡാഷ്ബോർഡ് +explore=കണ്ടെത്തൂ +help=സഹായം +sign_in=പ്രവേശിക്കുക +sign_in_with=ഉപയോഗിച്ചു് പ്രവേശിയ്ക്കുക +sign_out=പുറത്തുകടക്കുക +sign_up=രജിസ്റ്റർ +link_account=അക്കൌണ്ട് ബന്ധിപ്പിയ്ക്കുക +register=രജിസ്റ്റർ +version=പതിപ്പ് +page=പേജ് +template=ടെംപ്ലേറ്റ് +language=ഭാഷ +notifications=അറിയിപ്പുകൾ +create_new=സൃഷ്ടിക്കുക… +user_profile_and_more=പ്രൊഫൈലും ക്രമീകരണങ്ങളും… +signed_in_as=ഇയാളായി പ്രവേശിയ്ക്കുക +enable_javascript=ഈ വെബ്‌സൈറ്റ് ജാവാസ്ക്രിപ്റ്റിനൊപ്പം മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു. + +username=ഉപയോക്ത്രു നാമം +email=ഈമെയില്‍ വിലാസം +password=രഹസ്യവാക്കു് +re_type=രഹസ്യവാക്കു് വീണ്ടും നല്‍കുക +captcha=ക്യാപ്ച +twofa=ഇരട്ട ഘടക പ്രാമാണീകരണം +twofa_scratch=ഇരട്ട ഫാക്ടർ സ്ക്രാച്ച് കോഡ് +passcode=രഹസ്യ കോഡ് + + +repository=കലവറ +organization=സംഘടന +mirror=മിറര്‍ +new_repo=പുതിയ കലവറ +new_migrate=പുതിയ കുടിയേറ്റിപ്പാര്‍പ്പിക്കല്‍ +new_mirror=പുതിയ മിറര്‍ +new_fork=കലവറയുടെ പുതിയ ശിഖരം +new_org=പുതിയ സംഘടന +manage_org=സംഘടനകളെ നിയന്ത്രിക്കുക +admin_panel=സൈറ്റിന്റെ കാര്യനിര്‍വ്വാഹണം +account_settings=അക്കൌണ്ട് ക്രമീകരണങള്‍ +settings=ക്രമീകരണങ്ങള്‍ +your_profile=പ്രൊഫൈൽ +your_starred=നക്ഷത്ര ചിഹ്നമിട്ടവ +your_settings=ക്രമീകരണങ്ങള്‍ + +all=എല്ലാം +sources=ഉറവിടങ്ങൾ +mirrors=മിററുകള്‍ +collaborative=സഹകരിക്കുന്ന +forks=ശാഖകള്‍ + +activities=പ്രവര്‍ത്തനങ്ങള്‍ +pull_requests=ലയന അഭ്യർത്ഥനകൾ +issues=പ്രശ്നങ്ങൾ + +cancel=റദ്ദാക്കുക + + +write=എഴുതുക +preview=തിരനോട്ടം +loading=ലഭ്യമാക്കുന്നു… + + + + + +[filter] + +[error] + +[startpage] + +[install] +install=സന്നിവേശിപ്പിയ്ക്കുക +title=പ്രാരംഭ ക്രമീകരണങ്ങള്‍ +docker_helper=ഡോക്കറിനുള്ളിലാണ് ഗിറ്റീ പ്രവര്‍ത്തിപ്പിയ്ക്കുന്നതെങ്കില്‍, മാറ്റങ്ങള്‍ വരുത്തുന്നതിനു മുമ്പു് ദയവായി ഡോക്യുമെന്റേഷൻ വായിയ്ക്കുക. +db_title=ഡാറ്റാബേസ് ക്രമീകരണങ്ങൾ +db_type=ഡാറ്റാബേസിന്റെ തരം +host=ഹോസ്റ്റ് +user=ഉപയോക്ത്രു നാമം +password=രഹസ്യവാക്കു് +db_name=ഡാറ്റാബേസിന്റെ പേര് +db_helper=MySQL ഉപയോക്താക്കൾക്കുള്ള കുറിപ്പ്: ദയവായി InnoDB സ്റ്റോറേജ് എഞ്ചിൻ ഉപയോഗിക്കുക. നിങ്ങൾ "utf8mb4" ഉപയോഗിക്കുകയാണെങ്കിൽ, InnoDB പതിപ്പ് 5.6 നേക്കാൾ വലുതായിരിക്കണം. +ssl_mode=SSL +charset=ക്യാര്‍സെറ്റ് +path=പാത +sqlite_helper=SQLite3 ഡാറ്റാബേസിന്റെ ഫയല്‍ പാത്ത്.
നിങ്ങൾ ഗിറ്റീയെ ഒരു സേവനമായി പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ സമ്പൂര്‍ണ്ണ ഫയല്‍ പാത നൽകുക. +err_empty_db_path=SQLite3 ഡാറ്റാബേസ് പാത്ത് ശൂന്യമായിരിക്കരുത്. +no_admin_and_disable_registration=ഒരു അഡ്മിനിസ്ട്രേറ്റർ അക്കൌണ്ട് സൃഷ്ടിക്കാതെ നിങ്ങൾക്ക് ഉപയോക്തൃ സ്വയം രജിസ്ട്രേഷൻ അപ്രാപ്തമാക്കാൻ കഴിയില്ല. +err_empty_admin_password=അഡ്മിനിസ്ട്രേറ്ററുടെ രഹസ്യവാക്കു് ശൂന്യമായിരിക്കരുത്. +err_empty_admin_email=അഡ്മിനിസ്ട്രേറ്ററുടെ ഇമെയില്‍ വിലാസം ശൂന്യമായിരിക്കരുത്. +err_admin_name_is_reserved=അഡ്മിനിസ്ട്രേറ്റര്‍ ഉപയോക്തൃനാമം അസാധുവാണ്, ഉപയോക്തൃനാമം റിസര്‍വ്വ് ചെയ്തതാണ് +err_admin_name_is_invalid=അഡ്മിനിസ്ട്രേറ്റർ ഉപയോക്തൃനാമം അസാധുവാണ് + +general_title=പൊതുവായ ക്രമീകരണങ്ങൾ +app_name=സൈറ്റ് ശീർഷകം +app_name_helper=നിങ്ങളുടെ കമ്പനിയുടെ പേര് ഇവിടെ നൽകാം. +repo_path=സംഭരണിയുടെ റൂട്ട് പാത്ത് +repo_path_helper=വിദൂര ഗിറ്റു് സംഭരണികള്‍ ഈ ഡയറക്ടറിയിലേക്ക് സംരക്ഷിക്കും. +lfs_path=Git LFS റൂട്ട് പാത്ത് +lfs_path_helper=Git LFS ട്രാക്കുചെയ്ത ഫയലുകൾ ഈ ഡയറക്ടറിയിൽ സൂക്ഷിക്കും. പ്രവർത്തനരഹിതമാക്കാൻ ഈ കളം ശൂന്യമായി വിടുക. +run_user=ഉപയോക്താവായി പ്രവര്‍ത്തിപ്പിക്കുക +run_user_helper=ഗിറ്റീ പ്രവർത്തിക്കുന്ന ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഉപയോക്തൃനാമം നല്കുക. ഈ ഉപയോക്താവിന് സംഭരണിയുടെ റൂട്ട് പാത്തിലേക്ക് പ്രവേശനം ഉണ്ടായിരിക്കണം. +ssh_port=SSH സെർവർ പോര്‍ട്ട് +ssh_port_helper=നിങ്ങളുടെ SSH സെർവർ ശ്രവിക്കുന്ന പോർട്ട് നമ്പർ നല്‍കുക. പ്രവർത്തനരഹിതമാക്കാൻ കളം ശൂന്യമായി വിടുക. +http_port=ഗിറ്റീ എച്ച്ടിടിപി ശ്രവിയ്ക്കുന്ന പോർട്ട് +http_port_helper=ഗിറ്റീ വെബ് സെർവർ ശ്രവിയ്ക്കുന്ന പോർട്ട് നമ്പർ. +app_url=ഗിറ്റീയുടെ അടിസ്ഥാന വിലാസം +app_url_helper=എച്ച്ടിടിപി(എസ്) ക്ലോണുകള്‍ക്കും ഇമെയിൽ അറിയിപ്പുകൾക്കുമായുള്ള അടിസ്ഥാന വിലാസം. +log_root_path=ലോഗ് പാത്ത് +log_root_path_helper=ലോഗ് ഫയലുകൾ ഈ ഡയറക്ടറിയിലേക്ക് എഴുതപ്പെടും. + +optional_title=ഐച്ഛികമായ ക്രമീകരണങ്ങൾ +email_title=ഇമെയിൽ ക്രമീകരണങ്ങൾ +smtp_from=ഈ വിലാസത്തില്‍ ഇമെയിൽ അയയ്‌ക്കുക +smtp_from_helper=ഗിറ്റീ ഉപയോഗിയ്ക്കുന്ന ഇമെയില്‍ വിലാസം. ഒരു സാധാ ഇമെയിൽ വിലാസം നൽകുക അല്ലെങ്കിൽ "പേര്" എന്ന ഘടന ഉപയോഗിക്കുക. +mailer_user=SMTP ഉപയോക്തൃനാമം +mailer_password=SMTP രഹസ്യവാക്കു് +register_confirm=രജിസ്റ്റർ ചെയ്യുന്നതിന് ഇമെയിൽ സ്ഥിരീകരണം ആവശ്യമാക്കുക +mail_notify=ഇമെയിൽ അറിയിപ്പുകൾ പ്രാപ്തമാക്കുക +server_service_title=സെർവറിന്റെയും മൂന്നാം കക്ഷി സേവനങ്ങളുടെയും ക്രമീകരണങ്ങള്‍ +offline_mode=പ്രാദേശിക മോഡ് പ്രവർത്തനക്ഷമമാക്കുക +offline_mode_popup=മൂന്നാം കക്ഷി ഉള്ളടക്ക ഡെലിവറി നെറ്റ്‌വർക്കുകൾ അപ്രാപ്‌തമാക്കി എല്ലാ വിഭവങ്ങളും പ്രാദേശികമായി നല്‍കുക. +disable_gravatar=ഗ്രവതാര്‍ പ്രവർത്തനരഹിതമാക്കുക +disable_gravatar_popup=ഗ്രവതാര്‍ അല്ലെങ്കില്‍ മൂന്നാം കക്ഷി അവതാർ ഉറവിടങ്ങൾ പ്രവർത്തനരഹിതമാക്കുക. ഒരു ഉപയോക്താവ് പ്രാദേശികമായി ഒരു അവതാർ അപ്‌ലോഡുചെയ്യുന്നില്ലെങ്കിൽ സ്ഥിരസ്ഥിതി അവതാർ ഉപയോഗിക്കും. +federated_avatar_lookup=കേന്ദ്രീകൃത അവതാര്‍ പ്രാപ്തമാക്കുക +federated_avatar_lookup_popup=ലിബ്രാവതാർ ഉപയോഗിച്ച് കേന്ദ്രീക്രത അവതാർ തിരയൽ പ്രാപ്തമാക്കുക. +disable_registration=സ്വയം രജിസ്ട്രേഷൻ അപ്രാപ്തമാക്കുക +disable_registration_popup=ഉപയോക്താക്കള്‍ സ്വയം രജിസ്റ്റര്‍ ചെയ്യുന്നതു അപ്രാപ്യമാക്കുക. അഡ്മിനിസ്ട്രേറ്റർമാർക്ക് മാത്രമേ പുതിയ ഉപയോക്തൃ അക്കൌണ്ടുകൾ സൃഷ്ടിക്കാന്‍ കഴിയൂ. +allow_only_external_registration_popup=ബാഹ്യ സേവനങ്ങളിലൂടെ മാത്രം രജിസ്ട്രേഷന്‍ അനുവദിക്കുക +openid_signin=OpenID പ്രവേശനം പ്രവർത്തനക്ഷമമാക്കുക +openid_signin_popup=OpenID വഴി ഉപയോക്തൃ പ്രവേശനം പ്രാപ്തമാക്കുക. +openid_signup=OpenID സ്വയം രജിസ്ട്രേഷൻ പ്രാപ്തമാക്കുക +openid_signup_popup=OpenID അടിസ്ഥാനമാക്കിയുള്ള ഉപയോക്തൃ സ്വയം രജിസ്ട്രേഷൻ പ്രാപ്തമാക്കുക. +enable_captcha_popup=ഉപയോക്താക്കള്‍ സ്വയം രജിസ്ട്രേഷന്‍ ചെയ്യുന്നതിനു് ഒരു ക്യാപ്ച ആവശ്യമാണ്. +require_sign_in_view=പേജുകൾ കാണുന്നതിന് സൈറ്റില്‍ പ്രവേശിക്കണം +require_sign_in_view_popup=പേജ് ആക്‌സസ്സ്, പ്രവേശിച്ച ഉപയോക്താക്കൾക്കുമാത്രമായി പരിമിതപ്പെടുത്തുക. സന്ദർശകർ 'പ്രവേശനം', രജിസ്ട്രേഷൻ പേജുകൾ എന്നിവ മാത്രമേ കാണൂ. +admin_setting_desc=ഒരു അഡ്മിനിസ്ട്രേറ്റര്‍ അക്കൗണ്ട് സൃഷ്ടിക്കുന്നത് ഐച്ഛികമാണ്. ആദ്യം രജിസ്റ്റര്‍ ചെയ്ത ഉപയോക്താവ് യാന്ത്രികമായി ഒരു അഡ്മിനിസ്ട്രേറ്ററായി മാറും. +admin_title=അഡ്മിനിസ്ട്രേറ്റര്‍ അക്കൗണ്ട് ക്രമീകരണങ്ങൾ +admin_name=അഡ്മിനിസ്ട്രേറ്ററുടെ ഉപയോക്തൃനാമം +admin_password=രഹസ്യവാക്കു് +confirm_password=രഹസ്യവാക്കു് സ്ഥിരീകരിക്കുക +admin_email=ഇ-മെയില്‍ വിലാസം +install_btn_confirm=ഗിറ്റീ സന്നിവേശിപ്പിയ്ക്കുക +test_git_failed='git' കമാന്‍ഡ് പരീക്ഷിക്കാന്‍ കഴിഞ്ഞില്ല: %v +sqlite3_not_available=ഗിറ്റീയുടെ ഈ വേര്‍ഷന്‍ SQLite3യെ പിന്തുണക്കുന്നില്ല. %s ൽ നിന്നും ഔദ്യോഗിക ബൈനറി പതിപ്പ് ഡൌണ്‍‌ലോഡ് ചെയ്യുക ('gobuild' പതിപ്പല്ല). +invalid_db_setting=ഡാറ്റാബേസ് ക്രമീകരണങ്ങൾ അസാധുവാണ്: %v +invalid_repo_path=കലവറയുടെ റൂട്ട് പാത്ത് അസാധുവാണ്: %v +run_user_not_match='റൺ ആസ്' ഉപയോക്തൃനാമം നിലവിലെ ഉപയോക്തൃനാമമല്ല: %s -> %s +save_config_failed=കോൺഫിഗറേഷൻ സംരക്ഷിക്കുന്നതിൽ പരാജയപ്പെട്ടു: %v +invalid_admin_setting=അഡ്മിനിസ്ട്രേറ്റര്‍ അക്കൌണ്ട് ക്രമീകരണം അസാധുവാണ്: %v +install_success=സ്വാഗതം! ഗിറ്റീ തിരഞ്ഞെടുത്തതിന് നന്ദി. സൂക്ഷിക്കുക, ആസ്വദിക്കൂ,! +invalid_log_root_path=ലോഗ് പാത്ത് അസാധുവാണ്: %v +default_keep_email_private=സ്ഥിരസ്ഥിതിയായി ഇമെയില്‍ വിലാസങ്ങള്‍ മറയ്‌ക്കുക +default_keep_email_private_popup=സ്ഥിരസ്ഥിതിയായി പുതിയ ഉപയോക്തൃ അക്കൗണ്ടുകളുടെ ഇമെയില്‍ വിലാസങ്ങള്‍ മറയ്ക്കുക. +default_allow_create_organization=സ്ഥിരസ്ഥിതിയായി സംഘടനകള്‍ സൃഷ്ടിക്കാന്‍ അനുവദിക്കുക +default_allow_create_organization_popup=സ്ഥിരസ്ഥിതിയായി സംഘടനകള്‍ സൃഷ്ടിക്കാന്‍ പുതിയ ഉപയോക്തൃ അക്കൗണ്ടുകളെ അനുവദിക്കുക. +default_enable_timetracking=സ്ഥിരസ്ഥിതിയായി സമയം ട്രാക്കു് ചെയ്യുന്നതു പ്രാപ്തമാക്കുക +default_enable_timetracking_popup=സ്ഥിരസ്ഥിതിയായി പുതിയ കലവറകള്‍ക്കു് സമയം ട്രാക്കു് ചെയ്യുന്നതു് പ്രാപ്തമാക്കുക. +no_reply_address=മറച്ച ഇമെയിൽ ഡൊമെയ്ൻ +no_reply_address_helper=മറഞ്ഞിരിക്കുന്ന ഇമെയിൽ വിലാസമുള്ള ഉപയോക്താക്കൾക്കുള്ള ഡൊമെയ്ൻ നാമം. ഉദാഹരണത്തിന്, മറഞ്ഞിരിക്കുന്ന ഇമെയിൽ ഡൊമെയ്ൻ 'noreply.example.org' ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ 'joe' എന്ന ഉപയോക്താവു് 'joe@noreply.example.org' ആയി ലോഗിൻ ചെയ്യും. + +[home] +uname_holder=ഉപയോക്തൃനാമമോ ഇമെയിൽ വിലാസമോ +password_holder=രഹസ്യവാക്കു് +switch_dashboard_context=ഡാഷ്‌ബോർഡ് സന്ദർഭം മാറ്റുക +my_repos=കലവറകള്‍ +show_more_repos=കൂടുതൽ കലവറകള്‍ കാണിക്കുക… +collaborative_repos=സഹകരിക്കാവുന്ന കലവറകള്‍ +my_orgs=എന്റെ സംഘടനകള്‍ +my_mirrors=എന്റെ മിററുകള്‍ +view_home=%s കാണുക +search_repos=ഒരു കലവറ കണ്ടെത്തുക… + + + +issues.in_your_repos=നിങ്ങളുടെ കലവറകളില്‍ + +[explore] +repos=കലവറകള്‍ +users=ഉപയോക്താക്കള്‍ +organizations=സംഘടനകള്‍ +search=തിരയുക +code=കോഡ് +repo_no_results=പൊരുത്തപ്പെടുന്ന കലവറകളൊന്നും കണ്ടെത്താനായില്ല. +user_no_results=പൊരുത്തപ്പെടുന്ന ഉപയോക്താക്കളെയൊന്നും കണ്ടെത്താനായില്ല. +org_no_results=പൊരുത്തപ്പെടുന്ന സംഘടനകളൊന്നും കണ്ടെത്താനായില്ല. +code_no_results=നിങ്ങളുടെ തിരയൽ പദവുമായി പൊരുത്തപ്പെടുന്ന സോഴ്സ് കോഡുകളൊന്നും കണ്ടെത്താനായില്ല. +code_search_results=%s എന്നതിനായുള്ള തിരയൽ ഫലങ്ങൾ + + +[auth] +create_new_account=അക്കൗണ്ട് രജിസ്റ്റർ ചെയ്യുക +register_helper_msg=ഇതിനകം ഒരു അക്കൗണ്ട് ഉണ്ടോ? ഇപ്പോൾ പ്രവേശിക്കുക! +social_register_helper_msg=ഇതിനകം ഒരു അക്കൗണ്ട് ഉണ്ടോ? ഇത് ഇപ്പോൾ ബന്ധിപ്പിയ്ക്കുക! +disable_register_prompt=രജിസ്ട്രേഷൻ അപ്രാപ്തമാക്കി. നിങ്ങളുടെ സൈറ്റ് അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക. +disable_register_mail=രജിസ്ട്രേഷനായുള്ള ഇമെയിൽ സ്ഥിരീകരണം അപ്രാപ്തമാക്കി. +forgot_password_title=അടയാളവാക്യം മറന്നുപോയോ +forgot_password=അടയാള വാക്ക് ഓർക്കുന്നില്ലേ? +sign_up_now=ഒരു അക്കൗണ്ട് ആവശ്യമുണ്ടോ? ഇപ്പോള്‍ രജിസ്റ്റര്‍ ചെയ്യുക. +sign_up_successful=അക്കൗണ്ട് വിജയകരമായി സൃഷ്ടിച്ചു. +confirmation_mail_sent_prompt=%s ലേക്ക് ഒരു പുതിയ സ്ഥിരീകരണ ഇമെയിൽ അയച്ചു. രജിസ്ട്രേഷൻ പ്രക്രിയ പൂർത്തിയാക്കുന്നതിന് അടുത്ത %s നുള്ളിൽ നിങ്ങളുടെ ഇൻ‌ബോക്സ് പരിശോധിക്കുക. +must_change_password=നിങ്ങളുടെ രഹസ്യവാക്കു് പുതുക്കുക +allow_password_change=രഹസ്യവാക്കു് മാറ്റാൻ ഉപയോക്താവിനോട് ആവശ്യപ്പെടുക (ശുപാർശിതം) +reset_password_mail_sent_prompt=%s ലേക്ക് ഒരു പുതിയ സ്ഥിരീകരണ ഇമെയിൽ അയച്ചു. അക്കൗണ്ട് വീണ്ടെടുക്കൽ പ്രക്രിയ പൂർത്തിയാക്കുന്നതിന് അടുത്ത %s നുള്ളിൽ നിങ്ങളുടെ ഇൻ‌ബോക്സ് പരിശോധിക്കുക. +active_your_account=നിങ്ങളുടെ അക്കൗണ്ട് സജീവമാക്കുക +account_activated=നിങ്ങളുടെ അക്കൗണ്ട് സജീവമാക്കി +prohibit_login=പ്രവേശനം നിരോധിച്ചിരിക്കുന്നു +prohibit_login_desc=നിങ്ങളുടെ അക്കൗണ്ടിലേയ്ക്കുള്ള പ്രവേശനം നിരോധിച്ചിരിക്കുന്നു, ദയവായി നിങ്ങളുടെ സൈറ്റ് അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക. +resent_limit_prompt=നിങ്ങൾ അടുത്തിടെ ഒരു സജീവമാക്കൽ ഇമെയിൽ അഭ്യർത്ഥിച്ചു. 3 മിനിറ്റ് കാത്തിരുന്ന് വീണ്ടും ശ്രമിക്കുക. +has_unconfirmed_mail=ഹായ് %s, നിങ്ങൾക്ക് സ്ഥിരീകരിക്കാത്ത ഇമെയിൽ വിലാസം (%s) ഉണ്ട്. നിങ്ങൾക്ക് ഒരു സ്ഥിരീകരണ ഇമെയിൽ ലഭിച്ചില്ലെങ്കിലോ പുതിയതൊന്ന് വീണ്ടും അയയ്‌ക്കേണ്ടതുണ്ടെങ്കിലോ, ചുവടെയുള്ള ബട്ടണിൽ ക്ലിക്കുചെയ്യുക. +resend_mail=നിങ്ങളുടെ സജീവമാക്കൽ ഇമെയിൽ വീണ്ടും അയയ്‌ക്കാൻ ഇവിടെ ക്ലിക്കുചെയ്യുക +email_not_associate=ഇമെയിൽ വിലാസം ഏതെങ്കിലും അക്കൗണ്ടുമായി ബന്ധപ്പെടുത്തിയിട്ടില്ല. +send_reset_mail=അക്കൗണ്ട് വീണ്ടെടുക്കൽ ഇമെയിൽ അയയ്‌ക്കുക +reset_password=അക്കൗണ്ട് വീണ്ടെടുക്കൽ +invalid_code=നിങ്ങളുടെ സ്ഥിരീകരണ കോഡ് അസാധുവാണ് അല്ലെങ്കിൽ കാലഹരണപ്പെട്ടു. +reset_password_helper=അക്കൗണ്ട് വീണ്ടെടുക്കുക +reset_password_wrong_user=നിങ്ങൾ %s ആയി സൈൻ ഇൻ ചെയ്‌തു, പക്ഷേ അക്കൗണ്ട് വീണ്ടെടുക്കൽ ലിങ്ക് %s എന്നതിനാണ് +password_too_short=പാസ്‌വേഡ് ദൈർഘ്യം %d അക്ഷരങ്ങളിലും കുറവായിരിക്കരുത്. +non_local_account=പ്രാദേശിക ഇതര ഉപയോക്താക്കൾക്ക് ഗിറ്റീ വെബ് വഴി പാസ്‌വേഡ് പുതുക്കാന്‍ ചെയ്യാൻ കഴിയില്ല. +verify=പ്രമാണീകരിയ്ക്കുക +scratch_code=സ്ക്രാച്ച് കോഡ് +use_scratch_code=ഒരു സ്ക്രാച്ച് കോഡ് ഉപയോഗിക്കുക +twofa_scratch_used=നിങ്ങളുടെ സ്ക്രാച്ച് കോഡ് ഉപയോഗിച്ചു. നിങ്ങളെ രണ്ട്-ഘടക ക്രമീകരണ പേജിലേക്ക് റീഡയറക്‌ട് ചെയ്‌തിരിക്കുന്നതിനാൽ നിങ്ങളുടെ ഉപകരണ എൻറോൾമെന്റ് നീക്കംചെയ്യാനോ പുതിയ സ്‌ക്രാച്ച് കോഡ് സൃഷ്‌ടിക്കാനോ കഴിയും. +twofa_passcode_incorrect=നിങ്ങളുടെ പാസ്‌കോഡ് തെറ്റാണ്. നിങ്ങളുടെ ഉപകരണം തെറ്റായി സ്ഥാപിച്ചിട്ടുണ്ടെങ്കിൽ, പ്രവേശിക്കാൻ നിങ്ങളുടെ സ്ക്രാച്ച് കോഡ് ഉപയോഗിക്കുക. +twofa_scratch_token_incorrect=നിങ്ങളുടെ സ്ക്രാച്ച് കോഡ് തെറ്റാണ്. +login_userpass=പ്രവേശിക്കുക +login_openid=OpenID +oauth_signup_tab=പുതിയ അക്കൗണ്ട് രജിസ്റ്റർ ചെയ്യുക +oauth_signup_submit=അക്കൗണ്ട് പൂർത്തിയാക്കുക +oauth_signin_tab=നിലവിലുള്ള അക്കൌണ്ടുമായി ബന്ധിപ്പിയ്ക്കുക +oauth_signin_title=അക്കൗണ്ട് ബന്ധിപ്പിയ്ക്കുന്നതു് അംഗീകരിക്കുന്നതിനായി സൈറ്റിലേയ്ക്കു് പ്രവേശിക്കുക +oauth_signin_submit=അക്കൌണ്ട് ബന്ധിപ്പിയ്ക്കുക +openid_connect_submit=ബന്ധിപ്പിക്കുക +openid_connect_title=നിലവിലുള്ള അക്കൗണ്ടുമായി ബന്ധിപ്പിയ്ക്കുക +openid_connect_desc=തിരഞ്ഞെടുത്ത ഓപ്പൺഐഡി യുആർഐ അജ്ഞാതമാണ്. ഇവിടെ നിന്നും ഒരു പുതിയ അക്കൗണ്ടുമായി ബന്ധപ്പെടുത്തുക. +openid_register_title=അംഗത്വമെടുക്കുക +openid_register_desc=തിരഞ്ഞെടുത്ത ഓപ്പൺഐഡി യുആർഐ അജ്ഞാതമാണ്. ഇവിടെ നിന്നും ഒരു പുതിയ അക്കൗണ്ടുമായി ബന്ധപ്പെടുത്തുക. +openid_signin_desc=നിങ്ങളുടെ OpenID URI നൽകുക. ഉദാഹരണത്തിന്: https://anne.me, bob.openid.org.cn അല്ലെങ്കിൽ gnusocial.net/carry. +email_domain_blacklisted=നിങ്ങളുടെ ഇമെയിൽ വിലാസത്തിൽ രജിസ്റ്റർ ചെയ്യാൻ കഴിയില്ല. +authorize_application=അപ്ലിക്കേഷനു് അംഗീകാരം നല്കുക +authorize_application_created_by=%s സൃഷ്‌ടിച്ച അപ്ലിക്കേഷൻ ആണ്. +authorize_application_description=നിങ്ങൾ പ്രവേശനം അനുവദിക്കുകയാണെങ്കിൽ, സ്വകാര്യ റിപ്പോകളും ഓർഗനൈസേഷനുകളും ഉൾപ്പെടെ നിങ്ങളുടെ എല്ലാ അക്കൌണ്ട് വിവരങ്ങള്‍ നേടാനും വേണമെങ്കില്‍‍ മാറ്റങ്ങള്‍ വരുത്താനും അതിന് കഴിയും. +authorize_title=നിങ്ങളുടെ അക്കൌണ്ടില്‍ പ്രവേശിയ്ക്കുന്നതിനു് "%s"നു് അംഗീകാരം നൽകണോ? +authorization_failed=അംഗീകാരം നല്‍കുന്നതില്‍ പരാജയപ്പെട്ടു +authorization_failed_desc=അസാധുവായ ഒരു അഭ്യർത്ഥന കണ്ടെത്തിയതിനാൽ ഞങ്ങൾ അംഗീകാരം പരാജയപ്പെടുത്തി. ദയവായി നിങ്ങൾ അംഗീകരിക്കാൻ ശ്രമിച്ച അപ്ലിക്കേഷന്റെ പരിപാലകനുമായി ബന്ധപ്പെടുക. + +[mail] + +activate_account=നിങ്ങളുടെ അക്കൗണ്ട് സജീവമാക്കുക + +activate_email=ഇമെയില്‍ വിലാസം സ്ഥിരീകരിയ്ക്കുക + +register_notify=ഗിറ്റീയിലേയ്ക്കു് സ്വാഗതം + +reset_password=നിങ്ങളുടെ അക്കൗണ്ട് വീണ്ടെടുക്കുക + +register_success=രജിസ്ട്രേഷൻ വിജയകരം + + + + + + + +[modal] +yes=അതെ +no=ഇല്ല +modify=പുതുക്കുക + +[form] +UserName=ഉപയോക്ത്രു നാമം +RepoName=കലവറയുടെ പേരു് +Email=ഇ-മെയില്‍ വിലാസം +Password=രഹസ്യവാക്കു് +Retype=രഹസ്യവാക്കു് വീണ്ടും നല്‍കുക +SSHTitle=SSH കീയുടെ പേരു് +HttpsUrl=HTTPS URL +PayloadUrl=പേലോഡ് URL +TeamName=ടീമിന്റെ പേരു് +AuthName=അംഗീകാരത്തിന്റെ പേരു് +AdminEmail=അഡ്‌മിൻ ഇമെയിൽ + +NewBranchName=പുതിയ ശാഖയുടെ പേരു് +CommitSummary=നിയോഗത്തിന്റെ സംഗ്രഹം +CommitMessage=നിയോഗത്തിന്റെ സന്ദേശം +CommitChoice=നിയോഗത്തിന്റെ തിരഞ്ഞെടുക്കല്‍ +TreeName=ഫയല്‍ പാത്ത് +Content=ഉള്ളടക്കം + + +require_error=`ശൂന്യമായിരിക്കരുത്.` +alpha_dash_error=`ആൽ‌ഫാന്യൂമെറിക്, ഡാഷ് ('-'), അടിവരയിട്ട ('_') എന്നീ ചിഹ്നങ്ങള്‍ മാത്രം അടങ്ങിയിരിക്കണം.` +alpha_dash_dot_error=`ആൽ‌ഫാന്യൂമെറിക്, ഡാഷ് ('-'), അടിവരയിടുക ('_'), ഡോട്ട് ('.') എന്നീ ച്ഹ്നങ്ങള്‍ മാത്രം അടങ്ങിയിരിക്കണം.` +git_ref_name_error=`നന്നായി രൂപപ്പെടുത്തിയ Git റഫറൻസ് നാമമായിരിക്കണം.` +size_error=`വലുപ്പം %s ആയിരിക്കണം.` +min_size_error=`കുറഞ്ഞത് %s അക്ഷരങ്ങള്‍ അടങ്ങിയിരിക്കണം.` +max_size_error=`പരമാവധി %s അക്ഷരങ്ങള്‍ അടങ്ങിയിരിക്കണം.` +email_error=സാധുവായ ഒരു ഈ-മെയിൽ വിലാസം അല്ല +include_error=`%s'എന്ന ഉപവാക്യം അടങ്ങിയിരിക്കണം.` +glob_pattern_error=ഗ്ലോബു് ശൃേണി തെറ്റാണു്: %s +unknown_error=അജ്ഞാതമായ പിശക്: +captcha_incorrect=ക്യാപ്ച കോഡ് തെറ്റാണ്. +password_not_match=രഹസ്യവാക്കുകള്‍ യോജിക്കുന്നില്ല. + +username_been_taken=ഉപയോക്തൃനാമം ലഭ്യമല്ല. +repo_name_been_taken=കലവറയുടെ പേരു് ഇതിനോടകം ഉപയോഗിച്ചിട്ടുണ്ടു്. +visit_rate_limit=വിദൂര വിലാസം വിവരകൈമാറ്റത്തിനു് പരിധി നിശ്ചയിച്ചിട്ടുണ്ടു്. +2fa_auth_required=വിദൂര വിലാസം ഇരട്ട ഘടക പ്രാമാണീകരണം ആവശ്യപ്പെടുന്നുണ്ടു്. +org_name_been_taken=സംഘടനയുടെ പേര് ഇതിനകം എടുത്തിട്ടുണ്ട്. +team_name_been_taken=ടീമിന്റെ പേര് ഇതിനകം എടുത്തിട്ടുണ്ട്. +team_no_units_error=കുറഞ്ഞത് ഒരു കലവറ വിഭാഗത്തിലേക്ക് പ്രവേശനം അനുവദിക്കുക. +email_been_used=ഈ ഇമെയിൽ വിലാസം ഇതിനു മുന്നേ എടുത്തിട്ടുണ്ട്. +openid_been_used=%s എന്ന ഓപ്പണ്‍ഐഡി വിലാസം ഇതിനു മുന്നേ എടുത്തിട്ടുണ്ട്. +username_password_incorrect=ഉപഭോക്തൃനാമമോ രഹസ്യവാക്കോ തെറ്റാണ്. +enterred_invalid_repo_name=ഈ കവവറയുടെ പേരു് തെറ്റാണു്. +enterred_invalid_owner_name=പുതിയ ഉടമസ്ഥന്റെ പേരു് സാധുവല്ല. +enterred_invalid_password=താങ്കള്‍ നല്‍കിയ രഹസ്യവാക്കു് തെറ്റാണ്. +user_not_exist=ഉപയോക്താവ് നിലവിലില്ല. +cannot_add_org_to_team=ഒരു സംഘടനയെ ടീം അംഗമായി ചേർക്കാൻ കഴിയില്ല. + +invalid_ssh_key=നിങ്ങളുടെ SSH കീ സ്ഥിരീകരിക്കാൻ കഴിയില്ല: %s +invalid_gpg_key=നിങ്ങളുടെ GPG കീ സ്ഥിരീകരിക്കാൻ കഴിയില്ല: %s +unable_verify_ssh_key=SSH കീ സ്ഥിരീകരിക്കാൻ കഴിയില്ല; തെറ്റുകളുണ്ടോയെന്നു് ഒന്നുകൂടി പരിശോധിക്കുക. +auth_failed=പ്രാമാണീകരണം പരാജയപ്പെട്ടു: %v + +still_own_repo=നിങ്ങളുടെ അക്കൗണ്ടിന് ഒന്നോ അതിലധികമോ കലവറകള്‍ ഉണ്ട്; ആദ്യം അവ ഇല്ലാതാക്കുക അല്ലെങ്കിൽ കൈമാറുക. +still_has_org=നിങ്ങളുടെ അക്കൗണ്ട് ഒന്നോ അതിലധികമോ സംഘടനകളില്‍ അംഗമാണ്; ആദ്യം അവ വിടുക. +org_still_own_repo=നിങ്ങളുടെ സംഘടന ഇനിയും ഒന്നോ അതിലധികമോ കലവറകളുടെ ഉടമസ്ഥനാണു്; ആദ്യം അവ ഇല്ലാതാക്കുക അല്ലെങ്കിൽ കൈമാറുക. + +target_branch_not_exist=ലക്ഷ്യമാക്കിയ ശാഖ നിലവിലില്ല. + +[user] +change_avatar=നിങ്ങളുടെ അവതാർ മാറ്റുക… +join_on=ചേർന്നതു് +repositories=കലവറകള്‍ +activity=പൊതുവായ പ്രവർത്തനങ്ങള്‍ +followers=പിന്തുടരുന്നവര്‍‌ +starred=നക്ഷത്രമിട്ട കലവറകള്‍ +following=പിന്തുടരുന്നവര്‍ +follow=പിന്തുടരൂ +unfollow=പിന്തുടരുന്നത് നിര്‍ത്തുക +heatmap.loading=ഹീറ്റ്മാപ്പ് ലോഡുചെയ്യുന്നു… +user_bio=ജീവചരിത്രം + +form.name_reserved='%s' എന്ന ഉപയോക്തൃനാമം മറ്റാവശ്യങ്ങള്‍ക്കായി നീക്കിവച്ചിരിക്കുന്നു. +form.name_pattern_not_allowed=ഉപയോക്തൃനാമത്തിൽ '%s' എന്ന ശ്രേണി അനുവദനീയമല്ല. + +[settings] +profile=പ്രൊഫൈൽ +account=അക്കൗണ്ട് +password=രഹസ്യവാക്കു് +security=സുരക്ഷ +avatar=അവതാര്‍ +ssh_gpg_keys=SSH / GPG കീകള്‍ +social=സോഷ്യൽ അക്കൗണ്ടുകൾ +applications=അപ്ലിക്കേഷനുകൾ +orgs=സംഘടനകളെ നിയന്ത്രിക്കുക +repos=കലവറകള്‍ +delete=അക്കൗണ്ട് ഇല്ലാതാക്കുക +twofa=ഇരട്ട ഘടക പ്രാമാണീകരണം +account_link=ബന്ധിപ്പിച്ച അക്കൌണ്ടുകള്‍ +organization=സംഘടനകള്‍ +uid=Uid + +public_profile=പരസ്യമായ പ്രൊഫൈൽ +profile_desc=അറിയിപ്പുകൾക്കും മറ്റ് പ്രവർത്തനങ്ങൾക്കുമായി നിങ്ങളുടെ ഇമെയിൽ വിലാസം ഉപയോഗിക്കും. +password_username_disabled=പ്രാദേശികമല്ലാത്ത ഉപയോക്താക്കൾക്ക് അവരുടെ ഉപയോക്തൃനാമം മാറ്റാൻ അനുവാദമില്ല. കൂടുതൽ വിവരങ്ങൾക്ക് നിങ്ങളുടെ സൈറ്റ് അഡ്മിനിസ്ട്രേറ്ററുമായി ബന്ധപ്പെടുക. +full_name=പൂർണ്ണമായ പേര് +website=വെബ് സൈറ്റ് +location=സ്ഥലം +update_theme=പ്രമേയം പുതുക്കുക +update_profile=പ്രോഫൈല്‍ പരിഷ്കരിക്കുക +update_profile_success=നിങ്ങളുടെ പ്രൊഫൈൽ പരിഷ്കരിച്ചിരിക്കുന്നു. +change_username=നിങ്ങളുടെ ഉപയോക്തൃനാമം മാറ്റി. +change_username_prompt=കുറിപ്പ്: ഉപയോക്തൃനാമത്തിലെ മാറ്റം നിങ്ങളുടെ അക്കൗണ്ട് URLഉം മാറ്റുന്നു. +continue=തുടരുക +cancel=റദ്ദാക്കുക +language=ഭാഷ +ui=പ്രമേയങ്ങള്‍ + +lookup_avatar_by_mail=ഇമെയിൽ വിലാസം അനുസരിച്ച് അവതാർ കണ്ടെത്തുക +federated_avatar_lookup=കേന്ദ്രീക്രത അവതാര്‍ കണ്ടെത്തല്‍ +enable_custom_avatar=ഇഷ്‌ടാനുസൃത അവതാർ ഉപയോഗിക്കുക +choose_new_avatar=പുതിയ അവതാർ തിരഞ്ഞെടുക്കുക +update_avatar=അവതാർ പുതുക്കുക +delete_current_avatar=നിലവിലെ അവതാർ ഇല്ലാതാക്കുക +uploaded_avatar_not_a_image=അപ്‌ലോഡുചെയ്‌ത ഫയൽ ഒരു ചിത്രമല്ല. +uploaded_avatar_is_too_big=അപ്‌ലോഡുചെയ്‌ത ഫയൽ പരമാവധി വലുപ്പം കവിഞ്ഞു. +update_avatar_success=നിങ്ങളുടെ അവതാര്‍ പരിഷ്കരിച്ചിരിക്കുന്നു. + +change_password=പാസ്‌വേഡ് പുതുക്കുക +old_password=നിലവിലുള്ള രഹസ്യവാക്കു് +new_password=പുതിയ രഹസ്യവാക്കു് +retype_new_password=പുതിയ രഹസ്യവാക്കു് വീണ്ടും നല്‍കുക +password_incorrect=നിലവിലെ പാസ്‌വേഡ് തെറ്റാണ്. +change_password_success=നിങ്ങളുടെ പാസ്‌വേഡ് അപ്‌ഡേറ്റുചെയ്‌തു. ഇനി മുതൽ നിങ്ങളുടെ പുതിയ പാസ്‌വേഡ് ഉപയോഗിച്ച് പ്രവേശിക്കുക. +password_change_disabled=പ്രാദേശിക ഇതര ഉപയോക്താക്കൾക്ക് ഗിറ്റീ വെബ് വഴി പാസ്‌വേഡ് പുതുക്കാന്‍ ചെയ്യാൻ കഴിയില്ല. + +emails=ഇ-മെയില്‍ വിലാസങ്ങള്‍ +manage_emails=ഇമെയിൽ വിലാസങ്ങൾ നിയന്ത്രിക്കുക +manage_themes=സ്ഥിരസ്ഥിതി പ്രമേയം തിരഞ്ഞെടുക്കുക +manage_openid=ഓപ്പൺഐഡി വിലാസങ്ങൾ നിയന്ത്രിക്കുക +email_desc=അറിയിപ്പുകൾക്കും മറ്റ് പ്രവർത്തനങ്ങൾക്കുമായി നിങ്ങളുടെ പ്രാഥമിക ഇമെയിൽ വിലാസം ഉപയോഗിക്കും. +theme_desc=സൈറ്റിലുടനീളം ഇത് നിങ്ങളുടെ സ്ഥിരസ്ഥിതി പ്രമേയം ആയിരിക്കും. +primary=പ്രാഥമികം +primary_email=പ്രാഥമികമാക്കുക +delete_email=നീക്കം ചെയ്യുക +email_deletion=ഈ-മെയില്‍ വിലാസം നീക്കം ചെയ്യുക +email_deletion_desc=ഇമെയിൽ വിലാസവും അനുബന്ധ വിവരങ്ങളും നിങ്ങളുടെ അക്കൗണ്ടിൽ നിന്ന് നീക്കംചെയ്യും. ഈ ഇമെയിൽ വിലാസം വഴിയുള്ള ഗിറ്റു് നിയോഗങ്ങളും മാറ്റമില്ലാതെ ഉണ്ടാകും. തുടരട്ടെ? +email_deletion_success=ഇമെയിൽ വിലാസം നീക്കംചെയ്‌തു. +theme_update_success=നിങ്ങളുടെ പ്രമേയം പുതുക്കി. +theme_update_error=തിരഞ്ഞെടുത്ത പ്രമേയം നിലവിലില്ല. +openid_deletion=OpenID വിലാസം നീക്കം ചെയ്യുക +openid_deletion_desc=നിങ്ങളുടെ അക്കൗണ്ടിൽ നിന്ന് ഓപ്പൺഐഡി വിലാസം നീക്കംചെയ്യുന്നത് ഇതുപയോഗിച്ചു് ഇനി പ്രവേശിക്കുന്നതിൽ നിന്ന് നിങ്ങളെ തടയും. തുടരട്ടെ? +openid_deletion_success=ഓപ്പൺഐഡി വിലാസം നീക്കംചെയ്‌തു. +add_new_email=ഈ-മെയില്‍ വിലാസം ചേര്‍ക്കുക +add_new_openid=പുതിയ ഓപ്പണ്‍ ഐഡി വിലാസം ചേര്‍ക്കുക +add_email=ഈ-മെയില്‍ വിലാസം ചേര്‍ക്കുക +add_openid=ഓപ്പണ്‍ ഐഡി വിലാസം ചേര്‍ക്കുക +add_email_confirmation_sent=ഒരു സ്ഥിരീകരണ ഇമെയിൽ '%s' ലേക്ക് അയച്ചു. നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുന്നതിന് അടുത്ത %s നുള്ളിൽ നിങ്ങളുടെ ഇൻ‌ബോക്സ് പരിശോധിക്കുക. +add_email_success=പുതിയ ഇമെയിൽ വിലാസം ചേര്‍ത്തു. +add_openid_success=പുതിയ ഓപ്പണ്‍ഐഡി വിലാസം ചേര്‍ത്തു. +keep_email_private=ഈ-മെയില്‍ വിലാസം മറയ്ക്കുക +keep_email_private_popup=നിങ്ങളുടെ ഇമെയിൽ വിലാസം മറ്റ് ഉപയോക്താക്കു് കാണാനാകില്ല. +openid_desc=ഒരു ബാഹ്യ ദാതാവിന് പ്രാമാണീകരണം നിയുക്തമാക്കാൻ ഓപ്പൺഐഡി നിങ്ങളെ അനുവദിക്കുന്നു. + +manage_ssh_keys=​എസ്. എസ്. എച്ച് കീകള്‍ നിയന്ത്രിക്കുക +manage_gpg_keys=ജീ പീ. ജി കീകള്‍ നിയന്ത്രിക്കുക +add_key=കീ ചേര്‍ക്കുക +ssh_desc=ഇവയാണു് നിങ്ങളുടെ അക്കൗണ്ടുമായി ബന്ധപ്പെടുത്തിയിരിക്കുന്ന പൊതുവായ എസ്. എസ്. എച്ച് കീകൾ. ഇതിനോടനു ബന്ധിപ്പിച്ചിട്ടുള്ള സ്വകാര്യ കീകൾ നിങ്ങളുടെ കലവറകളിലേയ്ക്കു് പൂർണ്ണ ആക്സസ് അനുവദിക്കുന്നു. +gpg_desc=ഈ പൊതു GPG കീകൾ നിങ്ങളുടെ അക്കൗണ്ടുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. കമ്മിറ്റുകളെ പരിശോധിച്ചുറപ്പിക്കാൻ നിങ്ങളുടെ സ്വകാര്യ കീകൾ അനുവദിക്കുന്നതിനാൽ അവ സുരക്ഷിതമായി സൂക്ഷിക്കുക. +ssh_helper=സഹായം ആവശ്യമുണ്ടോ? നിങ്ങളുടെ സ്വന്തം SSH കീകൾ സൃഷ്ടിക്കുക, അല്ലെങ്കിൽ പൊതുവായ പ്രശ്നങ്ങൾ എന്നിവയ്ക്കായുള്ള ഗിറ്റ്ഹബ്ബിന്റെ മാര്‍ഗദര്‍ശനങ്ങള്‍ ഉപയോഗിച്ചു് നിങ്ങൾക്ക് എസ്. എസ്. എച്ചുമായി ബന്ധപ്പെട്ട പ്രശ്നങ്ങള്‍ പരിഹരിക്കാം. +gpg_helper= സഹായം ആവശ്യമുണ്ടോ? ജിപിജിയെക്കുറിച്ച് ഗിറ്റ്ഹബിന്റെ മാര്‍ഗ്ഗനിര്‍ദ്ദേശങ്ങള്‍ പരിശോധിയ്ക്കുക. +add_new_key=SSH കീ ചേർക്കുക +add_new_gpg_key=GPG കീ ചേർക്കുക +ssh_key_been_used=ഈ SSH കീ ഇതിനകം ചേർത്തു. +gpg_key_id_used=സമാന ഐഡിയുള്ള ഒരു പൊതു ജിപിജി കീ ഇതിനകം നിലവിലുണ്ട്. +subkeys=സബ് കീകള്‍ +key_id=കീ ഐഡി +key_name=കീയുടെ പേരു് +key_content=ഉള്ളടക്കം +add_key_success='%s' എന്ന SSH കീ ചേർത്തു. +add_gpg_key_success='%s' എന്ന GPG കീ ചേർത്തു. +delete_key=നീക്കം ചെയ്യുക +ssh_key_deletion=SSH കീ നീക്കം ചെയ്യുക +gpg_key_deletion=GPG കീ നീക്കം ചെയ്യുക +ssh_key_deletion_desc=ഒരു SSH കീ നീക്കംചെയ്യുന്നത് നിങ്ങളുടെ അക്കൌണ്ടിലേക്കുള്ള പ്രവേശനം അസാധുവാക്കുന്നു. തുടരട്ടെ? +gpg_key_deletion_desc=ഒരു ജി‌പി‌ജി കീ നീക്കംചെയ്യുന്നത് അതിൽ ഒപ്പിട്ട കമ്മിറ്റുകളെ സ്ഥിരീകരിക്കില്ല. തുടരട്ടെ? +ssh_key_deletion_success=SSH കീ നീക്കംചെയ്‌തു. +gpg_key_deletion_success=GPG കീ നീക്കംചെയ്‌തു. +add_on=ചേര്‍ത്തതു് +valid_until=വരെ സാധുവാണ് +valid_forever=എന്നും സാധുവാണു് +last_used=അവസാനം ഉപയോഗിച്ചത് +no_activity=സമീപകാലത്തു് പ്രവർത്തനങ്ങളൊന്നുമില്ല +can_read_info=വായിയ്ക്കുക +can_write_info=എഴുതുക +key_state_desc=കഴിഞ്ഞ 7 ദിവസങ്ങളിൽ ഈ കീ ഉപയോഗിച്ചു +token_state_desc=ഈ ടോക്കൺ കഴിഞ്ഞ 7 ദിവസങ്ങളിൽ ഉപയോഗിച്ചു +show_openid=പ്രൊഫൈലിൽ കാണുക +hide_openid=പ്രൊഫൈലിൽ നിന്ന് മറയ്‌ക്കുക +ssh_disabled=SSH അപ്രാപ്‌തമാക്കി +manage_social=സഹവസിക്കുന്ന സോഷ്യൽ അക്കൗണ്ടുകളെ നിയന്ത്രിക്കുക +social_desc=ഈ സോഷ്യൽ അക്കൗണ്ടുകൾ നിങ്ങളുടെ ഗിറ്റീ അക്കൗണ്ടുമായി ലിങ്കുചെയ്‌തു. ഇവ നിങ്ങളുടെ ഗീറ്റീ അക്കൗണ്ടിലേക്ക് പ്രവേശിക്കാൻ ഉപയോഗിക്കാവുന്നതിനാൽ അവയെല്ലാം നിങ്ങൾ തിരിച്ചറിഞ്ഞുവെന്ന് ഉറപ്പാക്കുക. +unbind=അൺലിങ്ക് ചെയ്യുക +unbind_success=നിങ്ങളുടെ ഗീറ്റീ അക്കൗണ്ടിൽ നിന്ന് സോഷ്യൽ അക്കൗണ്ട് അൺലിങ്ക് ചെയ്തു. + +manage_access_token=ആക്‌സസ്സ് ടോക്കണുകൾ നിയന്ത്രിക്കുക +generate_new_token=പുതിയ ടോക്കൺ സൃഷ്‌ടിക്കുക +tokens_desc=ഈ ടോക്കണുകൾ ഗിറ്റീ API ഉപയോഗിച്ച് നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് പ്രവേശനം നൽകുന്നു. +new_token_desc=ഒരു ടോക്കൺ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകൾക്ക് നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് പൂർണ്ണ പ്രവേശനം ഉണ്ട്. +token_name=ടോക്കണിന്റെ പേരു് +generate_token=ടോക്കൺ സൃഷ്‌ടിക്കുക +generate_token_success=നിങ്ങളുടെ പുതിയ ടോക്കൺ ജനറേറ്റുചെയ്‌തു. ഇത് വീണ്ടും കാണിക്കാത്തതിനാൽ ഇപ്പോൾ തന്നെ പകർത്തുക. +delete_token=നീക്കം ചെയ്യുക +access_token_deletion=ആക്‌സസ്സ് ടോക്കണ്‍ നീക്കം ചെയ്യുക +delete_token_success=ടോക്കൺ ഇല്ലാതാക്കി. ഇനി ഇത് ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകൾക്ക് നിങ്ങളുടെ അക്കൌണ്ടിലേക്ക് പ്രവേശനം ഉണ്ടാകില്ല. + +manage_oauth2_applications=OAuth2 അപ്ലിക്കേഷനുകൾ നിയന്ത്രിക്കുക +edit_oauth2_application=OAuth2 അപ്ലിക്കേഷൻ എഡിറ്റുചെയ്യുക +oauth2_applications_desc=നിങ്ങളുടെ മൂന്നാം കക്ഷി അപ്ലിക്കേഷനെ, ഈ ഗിറ്റീ ഇന്‍സ്റ്റാളേഷനുമായി സുരക്ഷിതമായി ഉപയോക്താക്കളെ പ്രാമാണീകരിക്കാൻ OAuth2 അപ്ലിക്കേഷനുകൾ പ്രാപ്തമാക്കുന്നു. +remove_oauth2_application=OAuth2 അപ്ലിക്കേഷനുകൾ നീക്കംചെയ്യുക +remove_oauth2_application_desc=ഒരു OAuth2 അപ്ലിക്കേഷൻ നീക്കംചെയ്യുന്നത് ഒപ്പിട്ട എല്ലാ ആക്സസ് ടോക്കണുകളിലേക്കും പ്രവേശനം റദ്ദാക്കും. തുടരട്ടെ? +remove_oauth2_application_success=അപ്ലിക്കേഷൻ ഇല്ലാതാക്കി. +create_oauth2_application=ഒരു പുതിയ OAuth2 അപ്ലിക്കേഷൻ സൃഷ്ടിക്കുക +create_oauth2_application_button=അപ്ലിക്കേഷൻ സൃഷ്ടിക്കുക +create_oauth2_application_success=നിങ്ങൾ വിജയകരമായി ഒരു പുതിയ OAuth2 അപ്ലിക്കേഷൻ സൃഷ്ടിച്ചു. +update_oauth2_application_success=നിങ്ങൾ വിജയകരമായി ഒരു പുതിയ OAuth2 അപ്ലിക്കേഷൻ പുതുക്കി. +oauth2_application_name=അപ്ലിക്കേഷന്റെ പേര് +oauth2_redirect_uri=URI റീഡയറക്‌ട് ചെയ്യുക +save_application=സംരക്ഷിയ്ക്കുക +oauth2_client_id=ക്ലൈന്റ് ഐഡി +oauth2_client_secret=ക്ലൈന്റു് രഹസ്യം +oauth2_regenerate_secret=രഹസ്യം പുനഃസൃഷ്ടിയ്ക്കുക +oauth2_regenerate_secret_hint=നിങ്ങളുടെ രഹസ്യം നഷ്ടപ്പെട്ടോ? +oauth2_client_secret_hint=നിങ്ങൾ ഈ പേജ് വീണ്ടും സന്ദർശിക്കുകയാണെങ്കിൽ രഹസ്യം ദൃശ്യമാകില്ല. നിങ്ങളുടെ രഹസ്യം സംരക്ഷിക്കുക. +oauth2_application_edit=ക്രമീകരിക്കുക +oauth2_application_create_description=OAuth2 ആപ്ലിക്കേഷനുകൾ നിങ്ങളുടെ മൂന്നാം കക്ഷി ആപ്ലിക്കേഷൻ ഉപയോക്തൃ അക്കൌണ്ടുകളിലേക്ക് ആക്സസ് നൽകുന്നു. +oauth2_application_remove_description=ഒരു OAuth2 ആപ്ലിക്കേഷൻ നീക്കംചെയ്യുന്നത് ഈ സന്ദർഭത്തിൽ അംഗീകൃത ഉപയോക്തൃ അക്കൌണ്ടുകളിലേക്ക് പ്രവേശിക്കുന്നത് തടയും. തുടരട്ടെ? + +authorized_oauth2_applications=അംഗീകൃത OAuth2 അപ്ലിക്കേഷനുകൾ +authorized_oauth2_applications_description=ഈ മൂന്നാം കക്ഷി അപ്ലിക്കേഷനുകളിലേക്ക് നിങ്ങളുടെ സ്വകാര്യ ഗീറ്റീ അക്കൗണ്ടിലേക്ക് പ്രവേശനം അനുവദിച്ചു. അപ്ലിക്കേഷനുകൾക്കായുള്ള നിയന്ത്രണം ഇനി ആവശ്യമില്ല. +revoke_key=അസാധുവാക്കുക +revoke_oauth2_grant=നിയന്ത്രണം തിരിച്ചെടുക്കുക +revoke_oauth2_grant_description=ഈ മൂന്നാം കക്ഷി ആപ്ലിക്കേഷനായി ആക്സസ് അസാധുവാക്കുന്നത് നിങ്ങളുടെ ഡാറ്റ ആക്സസ് ചെയ്യുന്നതിൽ നിന്ന് ഈ ആപ്ലിക്കേഷനെ തടയും. നിങ്ങള്‍ക്ക് ഉറപ്പാണോ? +revoke_oauth2_grant_success=നിങ്ങൾ വിജയകരമായി പ്രവേശനം റദ്ദാക്കി. + +twofa_desc=ഇരട്ട ഘടക പ്രാമാണീകരണം നിങ്ങളുടെ അക്കൗണ്ടിന്റെ സുരക്ഷ വർദ്ധിപ്പിക്കുന്നു. +twofa_is_enrolled=നിങ്ങളുടെ അക്കൗണ്ട് നിലവിൽ ഇരട്ട ഘടക പ്രമാണീകരണത്തിനു് എൻറോൾ ചെയ്തിട്ടുണ്ട്. . +twofa_not_enrolled=നിങ്ങളുടെ അക്കൗണ്ട് നിലവിൽ ഇരട്ട ഘടക പ്രമാണീകരണത്തിനു് എൻറോൾ ചെയ്തിട്ടില്ല.. +twofa_disable=ഇരട്ട ഘടക പ്രാമാണീകരണം റദ്ദാക്കി +twofa_scratch_token_regenerate=സ്ക്രാച്ച് ടോക്കൺ പുനഃനിര്‍മ്മിയ്ക്കുക +twofa_scratch_token_regenerated=%s ആണ് ഇപ്പോൾ നിങ്ങളുടെ സ്ക്രാച്ച് ടോക്കൺ. സുരക്ഷിതമായ സ്ഥലത്ത് സൂക്ഷിക്കുക. +twofa_enroll=ഇരട്ട ഘടക പ്രാമാണീകരണത്തില്‍ അംഗമാകുക +twofa_disable_note=ആവശ്യമെങ്കിൽ നിങ്ങൾക്ക് രണ്ട്-ഘടക പ്രാമാണീകരണം അപ്രാപ്തമാക്കാൻ കഴിയും. +twofa_disable_desc=രണ്ട്-ഘടക പ്രാമാണീകരണം അപ്രാപ്‌തമാക്കുന്നത് നിങ്ങളുടെ അക്കൗണ്ട് സുരക്ഷിതമല്ലാത്തതാക്കും. തുടരട്ടെ? +regenerate_scratch_token_desc=നിങ്ങളുടെ സ്ക്രാച്ച് ടോക്കൺ തെറ്റായി സ്ഥാപിക്കുകയോ അല്ലെങ്കിൽ സൈൻ ഇൻ ചെയ്യാൻ ഇതിനകം ഉപയോഗിക്കുകയോ ചെയ്തിട്ടുണ്ടെങ്കിൽ അത് ഇവിടെനിന്നു് പുനഃസജ്ജമാക്കാൻ കഴിയും. +twofa_disabled=രണ്ട്-ഘട്ട പ്രാമാണീകരണം അപ്രാപ്‌തമാക്കി. +scan_this_image=നിങ്ങളുടെ പ്രാമാണീകരണ ആപ്ലിക്കേഷൻ ഉപയോഗിച്ച് ഈ ചിത്രം സൂക്ഷ്‌മപരിശോധന നടത്തുക: +or_enter_secret=അല്ലെങ്കിൽ രഹസ്യ കോഡ് നൽകുക: %s +then_enter_passcode=അപ്ലിക്കേഷനിൽ കാണിച്ചിരിക്കുന്ന പാസ്‌കോഡ് നൽകുക: +passcode_invalid=പാസ്‌കോഡ് തെറ്റാണ്. വീണ്ടും ശ്രമിക്കുക. +twofa_enrolled=നിങ്ങളുടെ അക്കൌണ്ട് രണ്ട്-ഘട്ട പ്രാമാണീകരണത്തിലേക്ക് ചേർത്തിട്ടുണ്ട്. നിങ്ങളുടെ സ്ക്രാച്ച് ടോക്കൺ (%s) ഒരു തവണ മാത്രം കാണിക്കുന്നതിനാൽ അതു് സുരക്ഷിതമായ സ്ഥലത്ത് സൂക്ഷിക്കുക! + + +manage_account_links=ബന്ധിപ്പിച്ചിട്ടുള്ള അക്കൗണ്ടുകൾ നിയന്ത്രിക്കുക +manage_account_links_desc=ഈ ബാഹ്യ അക്കൗണ്ടുകൾ നിങ്ങളുടെ ഗിറ്റീ അക്കൗണ്ടുമായി ലിങ്കുചെയ്‌തു. +account_links_not_available=നിങ്ങളുടെ ഗിറ്റീ അക്കൌണ്ടുമായി നിലവിൽ മറ്റു് ബാഹ്യ അക്കൌണ്ടുകളൊന്നും ബന്ധിപ്പിച്ചിട്ടില്ല. +remove_account_link=ബന്ധിപ്പിച്ച അക്കൗണ്ട് നീക്കംചെയ്യുക +remove_account_link_desc=ഒരു ബന്ധിപ്പിച്ച അക്കൗണ്ട് നീക്കംചെയ്യുന്നത് നിങ്ങളുടെ ഗിറ്റീ അക്കൗണ്ടിലേക്കുള്ള പ്രവേശനം അസാധുവാക്കും. തുടരട്ടെ? +remove_account_link_success=ബന്ധിപ്പിച്ച അക്കൗണ്ട് നീക്കംചെയ്‌തു. + +orgs_none=നിങ്ങൾ ഏതെങ്കിലും സംഘടനയില്‍ അംഗമല്ല. +repos_none=നിങ്ങൾക്ക് ഒരു കലവറയും സ്വന്തമായി ഇല്ല + +delete_account=അക്കൗണ്ട് ഇല്ലാതാക്കുക +delete_prompt=ഈ പ്രവർത്തനം നിങ്ങളുടെ ഉപയോക്തൃ അക്കൗണ്ട് ശാശ്വതമായി ഇല്ലാതാക്കും. ഇത് പൂർ‌വ്വാവസ്ഥയിലാക്കാൻ‌ കഴിയില്ല.. +confirm_delete_account=ഇല്ലാതാക്കൽ സ്ഥിരീകരിക്കുക +delete_account_title=ഉപയോക്തൃ അക്കൗണ്ട് ഇല്ലാതാക്കുക +delete_account_desc=ഈ ഉപയോക്തൃ അക്കൗണ്ട് ശാശ്വതമായി ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ? + +email_notifications.enable=ഇമെയിൽ അറിയിപ്പുകൾ പ്രാപ്തമാക്കുക +email_notifications.onmention=ഇ-മെയിൽ പരാമര്‍ശിച്ചാൽ മാത്രം അയയ്ക്കുക +email_notifications.disable=ഇമെയിൽ അറിയിപ്പുകൾ അപ്രാപ്തമാക്കുക +email_notifications.submit=ഇ-മെയില്‍ മുൻഗണനകള്‍ + + +[repo] +owner=ഉടമസ്ഥന്‍ +repo_name=കലവറയുടെ പേരു് +repo_name_helper=നല്ല കലവറയുടെ പേരു് ഹ്രസ്വവും അവിസ്മരണീയവും അതുല്യവുമായ കീവേഡുകൾ ഉപയോഗിക്കുന്നു. +visibility=കാണാനാവുന്നതു് +visibility_description=ഉടമയ്‌ക്കോ ഓർഗനൈസേഷൻ അംഗങ്ങൾക്കോ അവകാശങ്ങളുണ്ടെങ്കിൽ മാത്രമേ കാണാൻ കഴിയൂ. +visibility_helper=കലവറ സ്വകാര്യമാക്കുക +visibility_helper_forced=നിങ്ങളുടെ സൈറ്റ് അഡ്മിനിസ്ട്രേറ്റർ പുതിയ കലവറകളെ സ്വകാര്യമാക്കാൻ നിർബന്ധിക്കുന്നു. +visibility_fork_helper=(മാറ്റം എല്ലാ ഫോർക്കുകളെയും ബാധിക്കും.) +clone_helper=ക്ലോണ്‍ ചെയ്യാന്‍ സഹായം വേണോ? സഹായം സന്ദര്‍ശിക്കുക. +fork_repo=കലവറ ഫോര്‍ക്കു് ചെയ്യുക +fork_from=ല്‍ നിന്നും ഫോര്‍ക്കു് ചെയ്യൂ +fork_visibility_helper=ഒരു കലവറയുടെ ഫോര്‍ക്കിന്റെ ദൃശ്യപരത മാറ്റാൻ കഴിയില്ല. +repo_desc=വിരരണം +repo_lang=ഭാഷ +repo_gitignore_helper=.gitignore ടെംപ്ലേറ്റുകൾ തിരഞ്ഞെടുക്കുക. +license=ലൈസൻസ് +license_helper=ഒരു ലൈസൻസ് ഫയൽ തിരഞ്ഞെടുക്കുക. +readme=റീഡ്‍മീ +readme_helper=ഒരു റീഡ്‍മീ ഫയൽ ടെംപ്ലേറ്റ് തിരഞ്ഞെടുക്കുക. +auto_init=കലവറ സമാരംഭിക്കുക (.gitignore, ലൈസൻസ്, റീഡ്‍മീ എന്നിവ ചേർക്കുന്നു) +create_repo=കലവറ സൃഷ്ടിക്കുക +default_branch=സ്ഥിരസ്ഥിതി ശാഖ +mirror_prune=വെട്ടിഒതുക്കുക +mirror_prune_desc=കാലഹരണപ്പെട്ട വിദൂര ട്രാക്കിംഗ് റഫറൻസുകൾ നീക്കംചെയ്യുക +mirror_interval_invalid=മിറർ ചെയ്യാനുള്ള ഇടവേള സാധുവല്ല. +mirror_address=URL- ൽ നിന്നുള്ള ക്ലോൺ +mirror_address_url_invalid=നൽകിയ url അസാധുവാണ്. നിങ്ങൾ url- ന്റെ എല്ലാ ഘടകങ്ങളും ശരിയായി നല്‍കണം. +mirror_address_protocol_invalid=നൽകിയ url അസാധുവാണ്. http(s):// അല്ലെങ്കിൽ git:// ലൊക്കേഷനുകൾ മാത്രമേ മിറർ ചെയ്യാൻ കഴിയൂ. +mirror_last_synced=അവസാനം സമന്വയിപ്പിച്ചതു് +watchers=നിരീക്ഷകർ +stargazers=സ്റ്റാർഗാസറുകൾ +forks=ശാഖകള്‍ +pick_reaction=നിങ്ങളുടെ പ്രതികരണം തിരഞ്ഞെടുക്കുക +reactions_more=കൂടാതെ %d അധികം + + + + +archive.title=ഈ കലവറ ചരിത്രരേഖാപരമായി നിലനിര്‍ത്തിയിരിക്കുന്നു. നിങ്ങൾക്ക് ഫയലുകൾ കാണാനും ക്ലോൺ ചെയ്യാനും കഴിയും, പക്ഷേ പ്രശ്‌നങ്ങൾ / ലയന അഭ്യർത്ഥനകൾ ഉണ്ടാക്കാനോ തുറക്കാനോ കഴിയില്ല. +archive.issue.nocomment=ഈ കലവറ ചരിത്രപരമായി നിലനിര്‍ത്തിയിരിക്കുന്നതാണു്. നിങ്ങൾക്ക് പ്രശ്നങ്ങളിൽ അഭിപ്രായമിടാൻ കഴിയില്ല. +archive.pull.nocomment=ഈ കലവറ ചരിത്രപരമായി നിലനിര്‍ത്തിയിരിക്കുന്നതാണു്. നിങ്ങൾക്ക് ലയന അഭ്യർത്ഥനകളില്‍ അഭിപ്രായമിടാൻ കഴിയില്ല. + +form.name_reserved='%s' എന്ന കലവറയുടെ പേരു് മറ്റാവശ്യങ്ങള്‍ക്കായി നീക്കിവച്ചിരിക്കുന്നു. +form.name_pattern_not_allowed=കലവറനാമത്തിൽ '%s' എന്ന ശ്രേണി അനുവദനീയമല്ല. + +migrate_items=മൈഗ്രേഷൻ ഇനങ്ങൾ +migrate_items_wiki=വിക്കി +migrate_items_milestones=നാഴികക്കല്ലുകള്‍ +migrate_items_labels=ലേബലുകള്‍ +migrate_items_issues=പ്രശ്നങ്ങൾ +migrate_items_pullrequests=ലയന അഭ്യർത്ഥനകൾ +migrate_items_releases=പ്രസിദ്ധീകരണങ്ങള്‍ +migrate_repo=കലവറ മൈഗ്രേറ്റ് ചെയ്യുക +migrate.clone_address=URL- ൽ നിന്ന് മൈഗ്രേറ്റ് / ക്ലോൺ ചെയ്യുക +migrate.clone_address_desc=നിലവിലുള്ള ഒരു കലവറയുടെ HTTP(S) അല്ലെങ്കിൽ ഗിറ്റു് 'ക്ലോൺ' URL +migrate.clone_local_path=അല്ലെങ്കിൽ ഒരു പ്രാദേശിക സെർവർ പാത +migrate.permission_denied=പ്രാദേശിക കലവറകള്‍ ഇറക്കുമതി ചെയ്യാൻ നിങ്ങള്‍ക്കു് അനുവാദമില്ല. +migrate.invalid_local_path=പ്രാദേശിക പാത അസാധുവാണ്. ഇത് നിലവിലില്ല അല്ലെങ്കിൽ ഒരു ഡയറക്ടറിയല്ല. +migrate.failed=മൈഗ്രേഷൻ പരാജയപ്പെട്ടു: %v +migrated_from=%[2]s നിന്ന് മൈഗ്രേറ്റുചെയ്‌തു +migrated_from_fake=%[1]s നിന്ന് മൈഗ്രേറ്റുചെയ്തു + +mirror_from=ന്റെ കണ്ണാടി +forked_from=ല്‍ നിന്നും വഴിപിരിഞ്ഞതു് +fork_from_self=നിങ്ങളുടെ ഉടമസ്ഥതയിലുള്ള ഒരു ശേഖരം നിങ്ങൾക്ക് ഫോര്‍ക്കു് ചെയ്യാൻ കഴിയില്ല. +fork_guest_user=ഈ ശേഖരം ഫോർക്ക് ചെയ്യുന്നതിന് സൈൻ ഇൻ ചെയ്യുക. +unwatch=ശ്രദ്ധിക്കാതിരിയ്ക്കുക +watch=ശ്രദ്ധിയ്ക്കുക +unstar=നക്ഷത്രം നീക്കുക +star=നക്ഷത്രം നല്‍ക്കുക +fork=ഫോര്‍ക്കു് +download_archive=കലവറ ഡൗൺലോഡുചെയ്യുക + +no_desc=വിവരണം ലഭ്യമല്ല +quick_guide=ദ്രുത മാര്‍ഗദര്‍ശനം +clone_this_repo=ഈ കലവറ ക്ലോൺ ചെയ്യുക +create_new_repo_command=കമാൻഡ് ലൈന്‍ വഴി ഒരു പുതിയ കലവറ സൃഷ്ടിക്കുക +push_exist_repo=കമാൻഡ് ലൈനിൽ നിന്ന് നിലവിലുള്ള ഒരു കലവറ തള്ളിക്കയറ്റുക +empty_message=ഈ കലവറയില്‍ ഉള്ളടക്കമൊന്നും അടങ്ങിയിട്ടില്ല. + +code=കോഡ് +code.desc=ഉറവിട കോഡ്, ഫയലുകൾ, കമ്മിറ്റുകളും ശാഖകളും പ്രവേശിയ്ക്കുക. +branch=ശാഖ +tree=മരം +filter_branch_and_tag=ശാഖ അല്ലെങ്കിൽ ടാഗ് അരിച്ചെടുക്കുക +branches=ശാഖകള്‍ +tags=ടാഗുകള്‍ +issues=പ്രശ്നങ്ങൾ +pulls=ലയന അഭ്യർത്ഥനകൾ +labels=ലേബലുകള്‍ + +milestones=നാഴികക്കല്ലുകള്‍ +commits=കമ്മിറ്റുകള്‍ +commit=കമ്മിറ്റ് +releases=പ്രസിദ്ധപ്പെടുത്തുക +file_raw=കലര്‍പ്പില്ലാത്തതു് +file_history=നാള്‍വഴി +file_view_raw=കലര്‍പ്പില്ലാതെ കാണുക +file_permalink=സ്ഥിരമായ കണ്ണി +file_too_large=ഈ ഫയൽ കാണിക്കാൻ കഴിയാത്തത്ര വലുതാണ്. + +video_not_supported_in_browser=നിങ്ങളുടെ ബ്രൌസർ HTML5 'വീഡിയോ' ടാഗിനെ പിന്തുണയ്ക്കുന്നില്ല. +audio_not_supported_in_browser=നിങ്ങളുടെ ബ്ര browser സർ HTML5 'ഓഡിയോ' ടാഗിനെ പിന്തുണയ്ക്കുന്നില്ല. +stored_lfs=ഗിറ്റു് LFS ഉപയോഗിച്ച് സംഭരിച്ചു +commit_graph=കമ്മിറ്റ് ഗ്രാഫ് +blame=ചുമതല +normal_view=സാധാരണ കാഴ്ച + +editor.new_file=പുതിയ ഫയൽ +editor.upload_file=ഫയൽ അപ്‌ലോഡ് +editor.edit_file=ഫയൽ തിരുത്തുക +editor.preview_changes=മാറ്റങ്ങൾ കാണുക +editor.cannot_edit_lfs_files=വെബ് ഇന്റർഫേസിൽ LFS ഫയലുകൾ എഡിറ്റുചെയ്യാൻ കഴിയില്ല. +editor.cannot_edit_non_text_files=വെബ് ഇന്റർഫേസിൽ ബൈനറി ഫയലുകൾ എഡിറ്റുചെയ്യാൻ കഴിയില്ല. +editor.edit_this_file=ഫയൽ തിരുത്തുക +editor.must_be_on_a_branch=ഈ ഫയലിൽ മാറ്റങ്ങൾ വരുത്താനോ നിർദ്ദേശിക്കാനോ നിങ്ങൾ ഏതെങ്കിലും ഒരു ശാഖയിൽ ആയിരിക്കണം. +editor.fork_before_edit=ഈ ഫയലിൽ മാറ്റങ്ങൾ വരുത്താനോ നിർദ്ദേശിക്കാനോ നിങ്ങൾ ഈ ശേഖരം ഫോര്‍ക്കു ചെയ്തിരിക്കണം. +editor.delete_this_file=ഫയൽ ഇല്ലാതാക്കുക +editor.must_have_write_access=ഈ ഫയലിൽ മാറ്റങ്ങൾ വരുത്താനോ നിർദ്ദേശിക്കാനോ നിങ്ങൾക്ക് എഴുതാനുള്ള അനുമതി ഉണ്ടായിരിക്കണം. +editor.file_delete_success=%s ഫയൽ ഇല്ലാതാക്കി. +editor.name_your_file=നിങ്ങളുടെ ഫയലിന് പേര് നൽകുക… +editor.filename_help=ഒരു ഡയറക്‌ടറിയുടെ പേര് ടൈപ്പുചെയ്‌ത് സ്ലാഷും ('/') ചേർത്ത് ചേർക്കുക. ഇൻപുട്ട് ഫീൽഡിന്റെ തുടക്കത്തിൽ ബാക്ക്‌സ്‌പെയ്‌സ് ടൈപ്പുചെയ്‌ത് ഒരു ഡയറക്‌ടറി നീക്കംചെയ്യുക. +editor.or=അഥവാ +editor.cancel_lower=റദ്ദാക്കുക +editor.commit_changes=മാറ്റങ്ങൾ വരുത്തുക +editor.add_tmpl='<ഫയല്‍>' ചേർക്കുക +editor.add=%s ചേര്‍ക്കുക +editor.update=%s പുതുക്കുക +editor.delete=%s നീക്കം ചെയ്യുക +editor.propose_file_change=ഫയലിനു് മാറ്റങ്ങള്‍ നിർദ്ദേശിക്കുക +editor.new_branch_name_desc=പുതിയ ശാഖയുടെ പേരു്… +editor.cancel=റദ്ദാക്കുക +editor.filename_cannot_be_empty=ഫയലിന്റെ പേരു് ശൂന്യമായിരിക്കരുത്. +editor.add_subdir=ഒരു ഡയറക്ടറി ചേർക്കുക… +editor.upload_files_to_dir=ഫയലുകൾ %s ലേക്ക് അപ്‌ലോഡുചെയ്യുക + + + + + +issues.new.clear_labels=ലേബലുകൾ മായ്‌ക്കുക +issues.new.milestone=നാഴികക്കല്ല് +issues.new.no_milestone=നാഴികക്കല്ല് ഇല്ല +issues.new.clear_milestone=നാഴികക്കല്ല് എടുത്തു മാറ്റുക +issues.new.open_milestone=നാഴികക്കല്ലുകൾ തുറക്കുക +issues.new.closed_milestone=അടച്ച നാഴികക്കല്ലുകൾ +issues.new.assignees=നിശ്ചയിക്കുന്നവര്‍ +issues.new.clear_assignees=നിശ്ചയിക്കുന്നവരെ നീക്കം ചെയ്യുക +issues.new.no_assignees=നിശ്ചയിക്കുന്നവര്‍ ഇല്ല +issues.no_ref=ശാഖാ അഥവാ ടാഗ് വ്യക്തമാക്കിയിട്ടില്ല +issues.create=പ്രശ്നം സൃഷ്ടിക്കുക +issues.new_label=പുതിയ അടയാളം +issues.new_label_placeholder=അടയാള നാമം +issues.new_label_desc_placeholder=വിരരണം +issues.create_label=അടയാളം സൃഷ്ടിക്കുക +issues.label_templates.title=മുൻ‌നിശ്ചയിച്ച ഒരു കൂട്ടം ലേബലുകൾ‌ നിറയ്‌ക്കുക +issues.label_templates.info=ലേബലുകളൊന്നും ഇതുവരെ നിലവിലില്ല. 'പുതിയ ലേബൽ' ഉപയോഗിച്ച് ഒരു ലേബൽ സൃഷ്ടിക്കുക അല്ലെങ്കിൽ മുൻ‌നിശ്ചയിച്ച ലേബൽ സെറ്റ് ഉപയോഗിക്കുക: +issues.label_templates.helper=ഒരു ലേബൽ സെറ്റ് തിരഞ്ഞെടുക്കുക +issues.label_templates.use=ലേബൽ സെറ്റ് ഉപയോഗിക്കുക +issues.deleted_milestone=`(ഇല്ലാതാക്കി)` +issues.filter_type.all_issues=എല്ലാ ഇഷ്യൂകളും +issues.label_open_issues=%d തുറന്നനിലയിലുള്ള ഇഷ്യൂകള്‍ +issues.label_deletion_desc=ഒരു ലേബൽ ഇല്ലാതാക്കിയാല്‍, അതു് നിയുകതമാക്കിയ എല്ലാ ഇഷ്യൂകളില്‍ നിന്നും നീക്കംചെയ്യും. തുടരട്ടെ? +issues.dependency.issue_close_blocks=ഈ ഇഷ്യു അടയ്‌ക്കുന്നത് ഇനിപ്പറയുന്ന ഇഷ്യൂകള്‍ തടയുന്നു് +issues.dependency.pr_close_blocks=ഈ ഇഷ്യൂകള്‍ അടയ്‌ക്കുന്നത് ഈ ലയന അഭ്യര്‍ത്ഥന തടയുന്നു് +issues.dependency.issue_close_blocked=ഈ ഇഷ്യൂ അടയ്‌ക്കുന്നതിന് മുമ്പ് ഇതിനെ തടയുന്ന എല്ലാ ഇഷ്യൂകളും നിങ്ങൾ അടയ്‌ക്കേണ്ടതുണ്ട്. +issues.dependency.pr_close_blocked=ഈ ലയന അഭ്യര്‍ത്ഥന സ്ഥിരീകരിയ്ക്കുന്നതിനു മുമ്പ് ഇതിനെ തടയുന്ന എല്ലാ ഇഷ്യൂകളും നിങ്ങൾ അടയ്‌ക്കേണ്ടതുണ്ട്. +issues.dependency.setting=ലയന അഭ്യര്‍ത്ഥനകള്‍ക്കും ഇഷ്യൂകള്‍ക്കുമായി ആശ്രിതത്വം സജ്ജമാക്കുക +issues.dependency.add_error_cannot_create_circular=രണ്ട് ഇഷ്യൂകളും പരസ്പരം തടയുന്നതാകുന്നതിലൂടെ നിങ്ങൾക്ക് ഒരു ആശ്രയത്വം സൃഷ്ടിക്കാൻ കഴിയില്ല. +issues.dependency.add_error_dep_not_same_repo=രണ്ട് പ്രശ്നങ്ങളും ഒരേ കലവറയിലേതു് ആയിരിക്കണം. + + + + +; %[2]s
%[3]s
+ + + + + +milestones.filter_sort.most_issues=മിക്ക ഇഷ്യൂകളും +milestones.filter_sort.least_issues=കുറഞ്ഞ ഇഷ്യൂകളെങ്കിലും + + + + +activity.active_issues_count_n=%d സജ്ജീവ ഇഷ്യൂകള്‍ +activity.closed_issues_count_n=അടച്ച ഇഷ്യൂകള്‍ +activity.title.issues_n=%d ഇഷ്യൂകള്‍ +activity.new_issues_count_n=പുതിയ ഇഷ്യൂകള്‍ + + +settings.event_issues=ഇഷ്യൂകള്‍ + + + + + + + + + +[org] + + + + + + + +[admin] + + + + + +repos.issues=ഇഷ്യൂകള്‍ + + + + + + + + + + + + + + + + + + + + + + + +[action] + +[tool] + +[dropzone] + +[notification] + +[gpg] + +[units] + +[packages] + diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 399e42de29..95b4a6c247 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -67,7 +67,7 @@ your_settings=Instellingen all=Alles sources=Bronnen -mirrors=Spiegels +mirrors=Mirrors collaborative=Samenwerkend forks=Forks @@ -158,6 +158,7 @@ filter.not_archived = Niet gearchiveerd more_items = Meer items invalid_data = Ongeldige data: %v copy_generic = Kopieer naar klembord +test = Test [aria] navbar = Navigatiebalk @@ -189,6 +190,8 @@ buttons.enable_monospace_font = Lettertype monospace inschakelen buttons.italic.tooltip = Schuingedrukte tekst toevoegen buttons.list.task.tooltip = Een lijst met taken toevoegen buttons.disable_monospace_font = Lettertype monospace uitschakelen +buttons.indent.tooltip = Items één niveau lager plaatsen +buttons.unindent.tooltip = Items één niveau hoger plaatsen [filter] string.asc = A - Z @@ -207,7 +210,7 @@ server_internal = Interne serverfout app_desc=Een eenvoudige, self-hosted Git service install=Makkelijk te installeren platform=Cross-platform -platform_desc=Forgejo werkt op alles waar Go op kan compileren: Windows, macOS, Linux, ARM, etc. Kies het platform dat bij je past! +platform_desc=Forgejo draait op libre-besturingssystemen zoals Linux en FreeBSD en op verschillende CPU-architecturen. Kies degene waar u van houdt! lightweight=Lichtgewicht lightweight_desc=Forgejo heeft hele lage systeemeisen, je kunt Forgejo al draaien op een goedkope Raspberry Pi! license=Open Source @@ -232,7 +235,7 @@ path=Pad sqlite_helper=Bestandspad voor de SQLite3-database.
Vul een volledig pad in als je Forgejo als een service uitvoert. reinstall_error=U probeert te installeren in een bestaande Forgejo database reinstall_confirm_message=Herinstalleren met een bestaande Forgejo-database kan meerdere problemen veroorzaken. In de meeste gevallen kun je het bestaande "app.ini" gebruiken om Forgejo te laten draaien. Als je weet wat je aan het doen bent, bevestig dan het volgende: -reinstall_confirm_check_1=De gegevens versleuteld door de SECRET_KEY in de app.ini kan verloren gaan: gebruikers kunnen mogelijk niet meer inloggen met 2FA/OTP & spiegels werken mogelijk niet meer. Door dit vakje aan te vinken bevestigt u dat het huidige app.ini bestand de juiste SECRET_KEY bevat. +reinstall_confirm_check_1=De gegevens versleuteld door de SECRET_KEY in de app.ini kan verloren gaan: gebruikers kunnen mogelijk niet meer inloggen met 2FA/OTP & mirrors werken mogelijk niet meer. Door dit vakje aan te vinken bevestigt u dat het huidige app.ini bestand de juiste SECRET_KEY bevat. reinstall_confirm_check_2=De repositories en instellingen moeten mogelijk opnieuw worden gesynchroniseerd. Door dit vakje aan te vinken, bevestigt u dat u de hooks voor de repositories en authorized_keys bestand handmatig zult hersynchroniseren. U bevestigt dat u ervoor zult zorgen dat de instellingen van de repository en mirror correct zijn. reinstall_confirm_check_3=Je bevestigt dat je er absoluut zeker van bent dat deze Forgejo draait met de juiste app. Geen locatie en dat je zeker weet dat je opnieuw moet installeren. Je bevestigt dat je de hierbovenstaande risico's erkent. err_empty_db_path=SQLite3 database pad mag niet leeg zijn. @@ -274,20 +277,20 @@ register_confirm=E-mailbevestiging vereist bij registreren mail_notify=Activeer e-mailnotificaties server_service_title=Server en service-instellingen van derden offline_mode=Lokale modus inschakelen -offline_mode.description=Schakel third-party content uit en gebruik alleen lokale middelen. +offline_mode.description=Schakel content delivery netwerken van derden uit en serveer alle middelen lokaal. disable_gravatar=Gravatar uitschakelen disable_gravatar.description=Gravatar en derden avatar bronnen uitschakelen. Een standaard avatar zal worden gebruikt, tenzij een gebruiker hun eigen avatar uploadt naar de instantie. federated_avatar_lookup=Federated avatars toestaan federated_avatar_lookup.description=Zoek avatars op met Libravatar. disable_registration=Schakel zelf registratie uit -disable_registration.description=Schakel zelfregistratie uit, alleen admins kunnen accounts maken. -allow_only_external_registration.description=Registratie alleen via externe diensten toestaan +disable_registration.description=Alleen instantiebeheerders kunnen nieuwe gebruikersaccounts aanmaken. Het wordt sterk aangeraden om registratie uitgeschakeld te houden, tenzij je van plan bent om een publieke instantie voor iedereen te hosten en klaar bent om grote hoeveelheden spam-accounts te verwerken. +allow_only_external_registration.description=Gebruikers kunnen alleen nieuwe accounts aanmaken via geconfigureerde externe services. openid_signin=OpenID-inloggen inschakelen -openid_signin.description=Gebruikerslogin via OpenID inschakelen. +openid_signin.description=Laat gebruikers zich aanmelden via OpenID. openid_signup=OpenID zelf-registratie inschakelen -openid_signup.description=OpenID zelfregistratie inschakelen. +openid_signup.description=Sta gebruikers toe om accounts aan te maken via OpenID als zelfregistratie is ingeschakeld. enable_captcha=Registratie CAPTCHA inschakelen -enable_captcha.description=Vereis captcha validatie voor zelf-registratie van gebruiker. +enable_captcha.description=Gebruikers verplichten om CAPTCHA te passeren om accounts aan te maken. require_sign_in_view=Aanmelden vereist om inhoud van instantie te bekijken admin_setting.description=Het creëren van een administrator-account is optioneel. De eerste geregistreerde gebruiker wordt automatisch de beheerder. admin_title=Instellingen beheerdersaccount @@ -308,11 +311,11 @@ save_config_failed=Kan de configuratie niet opslaan: %v invalid_admin_setting=Instelling van de administrator-account is ongeldig: %v invalid_log_root_path=Ongeldig log-pad: %v default_keep_email_private=Verberg standaard alle e-mailadressen -default_keep_email_private.description=Verberg standaard de email-adressen van nieuwe gebruikers. +default_keep_email_private.description=Schakel het verbergen van e-mailadressen standaard in voor nieuwe gebruikers, zodat deze informatie niet meteen na het aanmelden uitlekt. default_allow_create_organization=Standaard toestaan om organisaties aan te maken -default_allow_create_organization.description=Standaard toestaan dat nieuwe gebruikers organisaties kunnen aanmaken. +default_allow_create_organization.description=Sta nieuwe gebruikers standaard toe om organisaties aan te maken. Als deze optie is uitgeschakeld, moet een beheerder nieuwe gebruikers toestemming geven om organisaties aan te maken. default_enable_timetracking=Tijdregistratie standaard inschakelen -default_enable_timetracking.description=Tijdsregistratie voor nieuwe repositories standaard inschakelen. +default_enable_timetracking.description=Sta het gebruik van de tijd-tracking functie voor nieuwe repositories standaard toe. no_reply_address=Verborgen e-maildomein no_reply_address_helper=Domeinnaam voor gebruikers met een verborgen e-mailadres. Bijvoorbeeld zal de gebruikersnaam "joe" in Git worden geregistreerd als "joe@noreply.example.org" als het verborgen email domein is ingesteld op "noreply.example.org". password_algorithm=Wachtwoord hash-algoritme @@ -324,7 +327,7 @@ enable_update_checker = Updatecontrole inschakelen invalid_password_algorithm = Ongeldig wachtwoord hash-algoritme password_algorithm_helper = Stel het hashing-algoritme voor wachtwoorden in. De algoritmes hebben verschillende vereisten en sterkte. Het argon2-algoritme is tamelijk veilig, maar gebruikt veel geheugen en kan ongeschikt zijn voor kleine systemen. run_user_helper = De gebruikersnaam van het besturingssysteem waaronder Forgejo draait. Merk op dat deze gebruiker toegang moet hebben tot de hoofdmap van de repository. -require_sign_in_view.description = Beperk de toegang tot de pagina's tot ingelogde gebruikers. Bezoekers zien alleen de aanmeldings- en registratiepagina's. +require_sign_in_view.description = Beperk de inhoudstoegang tot aangemelde gebruikers. Bezoekers kunnen alleen de verificatiepagina's bezoeken. enable_update_checker_helper_forgejo = Het zal periodiek controleren op nieuwe Forgejo-versies door een TXT DNS-record op release.forgejo.org te controleren. smtp_from_invalid = Het adres "E-mails versturen als" is ongeldig config_location_hint = Deze configuratieopties worden opgeslagen in: @@ -402,12 +405,12 @@ allow_password_change=Verplicht de gebruiker om zijn/haar wachtwoord te wijzigen reset_password_mail_sent_prompt=Een bevestigingsmail is verstuurd naar %s. Controleer uw inbox in de volgende %s om het herstel van uw account te voltooien. active_your_account=Activeer uw account account_activated=Account is geactiveerd -prohibit_login=Inloggen niet toegestaan +prohibit_login=Account is geschorst resent_limit_prompt=Sorry, je hebt te snel na elkaar een aanvraag gedaan voor een activatiemail. Wacht drie minuten voor je volgende aanvraag. has_unconfirmed_mail=Beste %s, u heeft een onbevestigd e-mailadres (%s). Als u nog geen bevestiging heeft ontvangen, of u een nieuwe aanvraag wilt doen, klik dan op de onderstaande knop. resend_mail=Klik hier om uw activatie mail nog een keer te verzenden email_not_associate=Dit emailadres is niet gekoppeld aan een account. -send_reset_mail=Stuur account herstel e-mail +send_reset_mail=Verzend e-mail voor herstel reset_password=Account herstel invalid_code=Uw bevestigingscode is ongeldig of is verlopen. reset_password_helper=Account herstellen @@ -446,7 +449,7 @@ authorize_title=Autoriseer "%s" voor toegang tot uw account? authorization_failed=Autorisatie mislukt sspi_auth_failed=SSPI-authenticatie mislukt password_pwned_err=Kan het verzoek om HaveIBeenPwned niet voltooien -prohibit_login_desc = Het is verboden om aan te melden met dit account. Neem contact op met de beheerder van je site. +prohibit_login_desc = Uw account is geschorst voor interactie met de instantie. Neem contact op met de beheerder van de instantie om weer toegang te krijgen. change_unconfirmed_email_error = Kan het e-mailadres niet wijzigen: %v sign_up_successful = Account succesvol aangemaakt. Welkom! change_unconfirmed_email = Als je tijdens de registratie een verkeerd e-mailadres hebt opgegeven, kun je dit hieronder wijzigen. Er wordt dan een bevestiging naar het nieuwe e-mailadres gestuurd. @@ -461,6 +464,11 @@ authorization_failed_desc = De autorisatie is mislukt omdat we een ongeldig verz remember_me.compromised = De login-sleutel is niet meer geldig, dit kan wijzen op een gecompromitteerd account. Controleer uw account voor verdachte activiteiten. tab_signin = Inloggen tab_signup = Aanmelden +hint_login = Heb je al een account? Nu aanmelden! +hint_register = Heb je een account nodig? Registreer nu. +sign_up_button = Registreer nu. +back_to_sign_in = Terug naar aanmelden +sign_in_openid = Ga verder met OpenID [mail] view_it_on=Bekijk het op %s @@ -475,7 +483,7 @@ activate_account.text_2=Klik op de volgende link om uw account te activeren binn activate_email=Verifieer uw e-mailadres activate_email.text=Klik op de volgende link om je e-mailadres te bevestigen in %s: -register_notify=Welkom bij Forgejo +register_notify_prev9=Welkom bij Forgejo register_notify.title=%[1]s, welkom bij %[2]s register_notify.text_1=dit is uw registratie bevestigingsemail voor %s! register_notify.text_2=U kunt zich aanmelden bij uw account met uw gebruikersnaam: %s @@ -659,10 +667,10 @@ user_bio=Biografie disabled_public_activity=Deze gebruiker heeft de publieke zichtbaarheid van de activiteit uitgeschakeld. block_user = Blokkeer gebruiker joined_on = Geregistreerd op %s -block_user.detail_1 = Deze gebruiker zal u ontvolgen. -block_user.detail = Begrijp alsjeblieft dat als u deze gebruiker blokkeert, er andere acties worden genomen. Zoals: -block_user.detail_2 = Deze gebruiker kan geen interactie hebben met repositories, gecreëerde issues en reacties. -block_user.detail_3 = Deze gebruiker kunt u niet toevoegen als samenwerker, noch kunt u hen toevoegen als samenwerker. +block_user.detail_1 = Jullie zullen elkaar niet meer volgen en zullen elkaar niet meer kunnen volgen. +block_user.detail = Merk op dat het blokkeren van een gebruiker andere effecten heeft, zoals: +block_user.detail_2 = Deze gebruiker kan geen interactie hebben met de repositories waarvan jij de eigenaar bent, of met de issues en berichten die je hebt aangemaakt. +block_user.detail_3 = Je zult elkaar niet kunnen toevoegen als samenwerker. follow_blocked_user = U kunt deze gebruiker niet volgen, omdat u hen geblokkeerd heeft en of deze gebruiker heeft u geblokkeerd. block = Blokkeren unblock = Deblokkeren @@ -680,6 +688,10 @@ followers.title.few = Volgers following.title.one = Volgend following.title.few = Volgend followers.title.one = Volger +public_activity.visibility_hint.self_public = Uw activiteiten zijn zichtbaar voor iedereen, behalve voor interacties in privéruimtes. Configureer. +public_activity.visibility_hint.admin_public = Deze activiteit is zichtbaar voor iedereen, maar als beheerder kun je ook interacties in privéruimtes zien. +public_activity.visibility_hint.self_private = Uw activiteiten zijn alleen zichtbaar voor jou en de beheerders van de instantie. Configureer. +public_activity.visibility_hint.admin_private = Deze activiteit is zichtbaar voor u omdat u een beheerder bent, maar de gebruiker wil dat het privé blijft. [settings] @@ -692,11 +704,11 @@ avatar=Profielfoto ssh_gpg_keys=SSH / GPG sleutels social=Sociale netwerk-accounts applications=Applicaties -orgs=Beheer organisaties +orgs=Organisaties repos=Repositories delete=Verwijder account twofa=Twee-factor authenticatie (TOTP) -account_link=Gekoppelde Accounts +account_link=Gekoppelde accounts organization=Organisaties webauthn=Twee-factor authenticatie (Beveiligingssleutels) @@ -753,8 +765,8 @@ password_change_disabled=Niet-lokale gebruikers kunnen hun wachtwoord niet in de emails=E-mailadressen manage_emails=E-mailadressen beheren -manage_themes=Selecteer standaardthema -manage_openid=Beheer OpenID-adressen +manage_themes=Standaardthema +manage_openid=OpenID-adressen theme_desc=Dit zal het standaardthema worden op de gehele site. primary=Primair activated=Geactiveerd @@ -794,7 +806,7 @@ add_new_key=SSH sleutel toevoegen add_new_gpg_key=GPG sleutel toevoegen key_content_ssh_placeholder=Begint met "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", of "sk-ssh-ed25519@openssh.com" key_content_gpg_placeholder=Begint met "-----BEGIN PGP PUBLIC KEY BLOCK-----" -add_new_principal=Verantwoordelijke toevoegen +add_new_principal=Principaal toevoegen ssh_key_been_used=Deze SSH-sleutel is al toegevoegd aan de server. ssh_key_name_used=Er bestaat al een SSH sleutel met dezelfde naam in uw account. ssh_principal_been_used=Deze verantwoordelijke is al toegevoegd aan de server. @@ -846,12 +858,12 @@ token_state_desc=Dit token werd gebruikt in de laatste 7 dagen principal_state_desc=Deze verantwoordelijke werd gebruikt in de laatste 7 dagen show_openid=Tonen op profiel hide_openid=Verbergen van profiel -ssh_disabled=SSH uitgeschakeld +ssh_disabled=SSH is uitgeschakeld ssh_externally_managed=Deze SSH sleutel wordt extern beheerd voor deze gebruiker manage_social=Beheer gekoppelde sociale accounts unbind=Ontkoppelen -manage_access_token=Beheer toegangstokens +manage_access_token=Toegangstokens generate_new_token=Nieuw token genereren tokens_desc=Deze tokens geven toegang tot je account via de API van Forgejo. token_name=Tokennaam @@ -911,7 +923,7 @@ webauthn_nickname=Bijnaam webauthn_delete_key=Verwijder beveiligingssleutel webauthn_delete_key_desc=Als u een beveiligingssleutel verwijdert, kunt u er niet meer mee inloggen. Doorgaan? -manage_account_links=Gekoppelde accounts beheren +manage_account_links=Gekoppelde accounts manage_account_links_desc=Deze externe accounts zijn gekoppeld aan je Forgejo-account. account_links_not_available=Er zijn momenteel geen externe accounts aan je Forgejo-account gelinkt. link_account=Account koppelen @@ -975,7 +987,7 @@ at_least_one_permission = Je moet minstens één machtiging kiezen om een token permission_write = Lees en schrijf oauth2_client_secret_hint = Dit geheim zal niet meer worden getoond nadat u deze pagina heeft verlaten of vernieuwd. Zorg ervoor dat u het heeft opgeslagen. revoke_oauth2_grant_success = Toegang succesvol ingetrokken. -keep_email_private_popup = Dit zal uw e-mailadres verbergen van uw profielpagina en ook wanneer u een web-gebaseerde Git-operatie uitvoert. Gepushte commits zullen niet aangepast worden. Gebruik %s in commits om deze met uw account te associëren. +keep_email_private_popup = Dit zal je e-mailadres verbergen van uw profielpagina. Het zal niet langer de standaard zijn voor commits die via de webinterface gemaakt worden, zoals bestandsuploads en bewerkingen, en het zal niet gebruikt worden voor samenvoeg commits. In plaats daarvan kan een speciaal adres %s gebruikt worden om commits met je account te associëren. Merk op dat het veranderen van deze optie geen effect heeft op bestaande commits. create_oauth2_application_success = U heeft met succes een OAuth2 applicatie gecreëerd. permissions_access_all = Alle (publiek, privé en gelimiteerd) oauth2_application_remove_description = Door een OAuth2-applicatie te verwijderen, krijgt deze geen toegang meer tot geautoriseerde gebruikersaccounts op deze instantie. Doorgaan? @@ -999,7 +1011,7 @@ hidden_comment_types.issue_ref_tooltip = Reacties waarbij de gebruiker de branch oauth2_redirect_uris = Omleiding URI's. Gebruik een nieuwe regel voor elke URI. oauth2_application_locked = Forgejo registreert sommige OAuth2 applicaties vooraf bij het opstarten als dit is ingeschakeld in de configuratie. Om onverwacht gedrag te voorkomen, kunnen deze niet bewerkt of verwijderd worden. Raadpleeg de OAuth2 documentatie voor meer informatie. change_password = Wachtwoord bijwerken -additional_repo_units_hint = Stimuleer het inschakelen van extra repositorie units +additional_repo_units_hint = Stel voor om extra repositorie units in te schakelen update_hints = Tips bijwerken update_hints_success = Tips zijn bijgewerkt. hints = Tips @@ -1008,6 +1020,9 @@ pronouns = Persoonlijke voornaamwoord pronouns_custom = Aangepast pronouns_unspecified = Ongedefinieerd language.title = Standaard taal +keep_activity_private.description = Uw publieke activiteit zal alleen zichtbaar zijn voor u en de beheerders van de instantie. +language.description = Deze taal wordt opgeslagen in uw account en wordt als standaardtaal gebruikt nadat u zich heeft aangemeld. +language.localization_project = Help ons Forgejo in uw taal te vertalen! Leer meer. [repo] owner=Eigenaar @@ -1122,7 +1137,7 @@ form.reach_limit_of_creation_n=U heeft al uw limiet van %d repositories bereikt. need_auth=Autorisatie migrate_options=Migratie opties migrate_service=Migratie service -migrate_options_mirror_helper=Deze repositorie zal een spiegel zijn +migrate_options_mirror_helper=Deze repositorie zal een mirror zijn migrate_options_lfs=Migreer LFS bestanden migrate_options_lfs_endpoint.label=LFS eindpunt migrate_options_lfs_endpoint.description=Migratie zal proberen om je Git remote te gebruiken om de LFS-server te bepalen. Je kan ook een aangepast eindpunt opgeven als de LFS-gegevens ergens anders zijn opgeslagen. @@ -1221,8 +1236,8 @@ file_view_rendered=Weergave weergeven file_view_raw=Weergave ruw bestand file_permalink=Permalink file_too_large=Dit bestand is te groot om te tonen. -invisible_runes_line=`Deze lijn heeft onzichtbare unicode karakters` -ambiguous_runes_line=`Deze lijn heeft dubbelzinnige unicode karakters` +invisible_runes_line=`Deze lijn heeft onzichtbare Unicode karakters` +ambiguous_runes_line=`Deze lijn heeft dubbelzinnige Unicode karakters` ambiguous_character=`%[1]c [U+%04[1]X] is verwarrend met %[2]c [U+%04[2]X]` escape_control_characters=Escape @@ -1232,6 +1247,7 @@ view_git_blame=Bekijk git blame video_not_supported_in_browser=Uw browser ondersteunt de HTML5 "video" element niet. audio_not_supported_in_browser=Uw browser ondersteunt de HTML5 "audio" element niet. stored_lfs=Opgeslagen met Git LFS +stored_annex=Opgeslagen met Git Annex symbolic_link=Symbolische link commit_graph=Commit grafiek commit_graph.select=Selecteer branches @@ -1250,6 +1266,7 @@ editor.upload_file=Upload bestand editor.edit_file=Bewerk bestand editor.preview_changes=Voorbeeld tonen editor.cannot_edit_lfs_files=LFS-bestanden kunnen niet worden bewerkt in de webinterface. +editor.cannot_edit_annex_files=Annex-bestanden kunnen niet worden bewerkt in de webinterface. editor.cannot_edit_non_text_files=Binaire bestanden kunnen niet worden bewerkt in de webinterface. editor.edit_this_file=Bewerk bestand editor.this_file_locked=Bestand is vergrendeld @@ -1266,7 +1283,7 @@ editor.commit_changes=Wijzigingen doorvoeren editor.add_tmpl="" toevoegen editor.patch=Patch toepassen editor.patching=Patchen: -editor.new_patch=Nieuwe Patch +editor.new_patch=Nieuwe patch editor.commit_message_desc=Voeg een optionele uitgebreide omschrijving toe… editor.signoff_desc=Voeg een Signed-off-by toe aan het einde van het commit logbericht. editor.commit_directly_to_this_branch=Commit direct naar de branch '%s'. @@ -1474,7 +1491,7 @@ issues.reopened_at=`heropende dit probleem %[2]s issues.commit_ref_at=`verwees naar dit probleem vanuit commit %[2]s'` issues.ref_issue_from=`refereerde aan dit issue %[4]s %[2]s` issues.ref_pull_from=`refereerde aan deze pull request %[4]s %[2]s` -issues.ref_closing_from=`verwees naar een pull request %[4]s dat het issue zal sluiten %[2]s` +issues.ref_closing_from=`verwees naar deze issue van een pull request %[4]s dat het zal sluiten, %[2]s` issues.ref_reopening_from=`verwees naar een pull request %[4]s dat dit issue heropent %[2]s ` issues.ref_closed_from=`sloot dit issue %[4]s %[2]s` issues.ref_reopened_from=`heropende dit issue %[4]s %[2]s` @@ -1790,7 +1807,7 @@ wiki.last_commit_info=%s heeft deze pagina aangepast %s wiki.edit_page_button=Bewerken wiki.new_page_button=Nieuwe pagina wiki.file_revision=Pagina revisie -wiki.wiki_page_revisions=Herzieningen wiki pagina +wiki.wiki_page_revisions=Pagina revisies wiki.back_to_wiki=Terug naar wiki-pagina wiki.delete_page_button=Verwijder pagina wiki.page_already_exists=Er bestaat al een wiki-pagina met deze naam. @@ -1808,8 +1825,8 @@ activity.period.quarterly=3 maanden activity.period.semiyearly=6 maanden activity.period.yearly=1 jaar activity.overview=Overzicht -activity.active_prs_count_1=%d actieve pull requests -activity.active_prs_count_n=%d Actieve pull requests +activity.active_prs_count_1=%d actieve pull request +activity.active_prs_count_n=%d actieve pull requests activity.merged_prs_count_1=Samengevoegde pull request activity.merged_prs_count_n=Samengevoegde pull requests activity.opened_prs_count_1=Voorgestelde pull request @@ -1892,12 +1909,12 @@ settings.mirror_settings.direction=Richting settings.mirror_settings.direction.pull=Pull settings.mirror_settings.direction.push=Push settings.mirror_settings.last_update=Laatst bijgewerkt -settings.mirror_settings.push_mirror.none=Geen spiegels geconfigureerd +settings.mirror_settings.push_mirror.none=Geen push mirrors geconfigureerd settings.mirror_settings.push_mirror.add=Push mirror toevoegen settings.sync_mirror=Nu synchroniseren settings.site=Website -settings.update_settings=Instellingen bewerken +settings.update_settings=Instellingen opslaan settings.branches.update_default_branch=Standaard branch bewerken settings.advanced_settings=Geavanceerde instellingen settings.wiki_desc=Repository-wiki inschakelen @@ -2080,7 +2097,7 @@ settings.protected_branch=Branch bescherming settings.protected_branch_can_push=Push toestaan? settings.protected_branch_can_push_yes=U mag pushen settings.protected_branch_can_push_no=U mag niet pushen -settings.branch_protection=Branch bescherming voor branch "%s" +settings.branch_protection=Beschermingsregels voor branch “%s” settings.protect_this_branch=Branch bescherming inschakelen settings.protect_this_branch_desc=Voorkomt verwijdering en beperkt Git pushing en samenvoegen tot de branch. settings.protect_disable_push=Push uitschakelen @@ -2145,7 +2162,7 @@ settings.archive.button=Repo archiveren settings.archive.header=Archiveer deze repo settings.archive.success=De repo is succesvol gearchiveerd. settings.archive.error=Er is een fout opgetreden tijdens het archiveren van de repo. Zie het logboek voor meer informatie. -settings.archive.error_ismirror=U kunt geen gespiegelde repo archiveren. +settings.archive.error_ismirror=U kunt geen gespiegelde repository archiveren. settings.archive.branchsettings_unavailable=Branch instellingen zijn niet beschikbaar als de repo is gearchiveerd. settings.archive.tagsettings_unavailable=Labelinstellingen zijn niet beschikbaar als de repo is gearchiveerd. settings.update_avatar_success=De repository avatar is bijgewerkt. @@ -2153,7 +2170,7 @@ settings.lfs=LFS settings.lfs_filelist=LFS bestanden opgeslagen in deze repository settings.lfs_no_lfs_files=Geen LFS bestanden opgeslagen in deze repository settings.lfs_findcommits=Vind commits -settings.lfs_lfs_file_no_commits=Geen Commits gevonden voor dit LFS-bestand +settings.lfs_lfs_file_no_commits=Geen commits gevonden voor dit LFS-bestand settings.lfs_noattribute=Dit pad heeft niet het vergrendelbare attribuut in de standaard branch settings.lfs_delete=LFS-bestand met OID %s verwijderen settings.lfs_delete_warning=Het verwijderen van een LFS bestand kan leiden tot "object bestaat niet" fouten bij het uitchecken. Weet u het zeker? @@ -2164,13 +2181,13 @@ settings.lfs_invalid_lock_directory=Kan map %s niet vergrendelen settings.lfs_lock_already_exists=Vergrendeling bestaat al: %s settings.lfs_lock=Vergrendel settings.lfs_lock_path=Bestandspad om te vergrendelen... -settings.lfs_locks_no_locks=Geen Locks +settings.lfs_locks_no_locks=Geen locks settings.lfs_lock_file_no_exist=Vergrendeld bestand bestaat niet in de standaard branch settings.lfs_force_unlock=Forceer ontgrendelen settings.lfs_pointers.found=%d blob-pointer(s) gevonden - %d gekoppeld, %d niet-gekoppeld (%d ontbreekt in de winkel) -settings.lfs_pointers.sha=Blob SHA +settings.lfs_pointers.sha=Blob hash settings.lfs_pointers.oid=OID -settings.lfs_pointers.inRepo=In Repository +settings.lfs_pointers.inRepo=In repository settings.lfs_pointers.exists=Bestaat in opslag settings.lfs_pointers.accessible=Toegankelijk voor gebruiker settings.lfs_pointers.associateAccessible=Koppel toegankelijke %d OIDs @@ -2220,7 +2237,7 @@ diff.comment.add_single_comment=Één reactie toevoegen diff.comment.add_review_comment=Voeg commentaar toe diff.comment.start_review=Review starten diff.comment.reply=Reageer -diff.review=Review +diff.review=Beoordeling voltooien diff.review.header=Review versturen diff.review.placeholder=Commentaar controleren diff.review.comment=Opmerking @@ -2239,7 +2256,7 @@ release.detail=Release details release.tags=Labels release.new_release=Nieuwe release release.draft=Concept -release.prerelease=Voorlopige versie +release.prerelease=Voorlopige release release.stable=Stabiel release.compare=Vergelijk release.edit=bewerken @@ -2249,14 +2266,14 @@ release.source_code=Broncode release.tag_name=Tagnaam release.target=Doel release.tag_helper=Kies een bestaande tag, of creëer een nieuwe tag bij publiceren. -release.prerelease_desc=Markeren als voorlopige versie +release.prerelease_desc=Markeren als voorlopige release release.prerelease_helper=Markeer deze release als ongeschikt voor productiedoeleinden. release.cancel=Annuleren release.publish=Release publiceren release.save_draft=Concept opslaan -release.edit_release=Update release -release.delete_release=Verwijder release -release.deletion=Verwijder release +release.edit_release=Release bijwerken +release.delete_release=Release verwijderen +release.deletion=Release verwijderen release.deletion_success=De release is verwijderd. release.tag_name_already_exist=Een versie met deze naam bestaat al. release.tag_name_invalid=Tagnaam is niet geldig. @@ -2306,7 +2323,7 @@ fork_no_valid_owners = Deze repository kan niet geforkt worden omdat er geen gel visibility_helper = Maak repository privé clone_in_vscodium = Kloon in VSCodium object_format = Objectformaat -object_format_helper = Objectformaat van de repository. Dit kan niet worden veranderd. SHA1 is het meest compatibel. +object_format_helper = Objectformaat van de repository. Kan later niet worden gewijzigd. SHA1 is het meest compatibel. mirror_sync = gesynchroniseerd branch.delete_branch_has_new_commits = Branch "%s" kan niet verwijderd worden omdat er nieuwe commits zijn toegevoegd na het samenvoegen. branch.create_success = Branch "%s" is gecreëerd. @@ -2336,7 +2353,7 @@ branch.new_branch_from = Creëer nieuwe branch van "%s" branch.renamed = Branch %s is hernoemd naar %s. tag.create_success = Tag "%s" is gecreëerd. topic.format_prompt = Onderwerpen moeten beginnen met een letter of cijfer, kunnen streepjes ("-") en puntjes (".") bevatten en mogen maximaal 35 tekens lang zijn. Letters moeten kleine letters zijn. -find_file.go_to_file = Ga naar bestand +find_file.go_to_file = Zoek een bestand find_file.no_matching = Geen overeenkomstige bestanden gevonden error.csv.too_large = Kan dit bestand niet renderen omdat het te groot is. error.csv.unexpected = Kan dit bestand niet renderen omdat het een onverwacht karakter bevat in regel %d en kolom %d. @@ -2405,7 +2422,7 @@ issues.role.collaborator_helper = Deze gebruiker is uitgenodigd om mee te werken issues.role.first_time_contributor = Eerste keer bijdrager issues.role.first_time_contributor_helper = Dit is de eerste bijdrage van deze gebruiker aan de repository. issues.role.contributor = Bijdrager -issues.role.contributor_helper = Deze gebruiker heeft al eerder gecommitteerd in de repository. +issues.role.contributor_helper = Deze gebruiker heeft al eerder gecommitteerd in deze repository. issues.label_exclusive = Exclusief issues.label_archive = Label archiveren issues.label_exclusive_warning = Eventuele conflicterende scoped labels worden verwijderd bij het bewerken van de labels van een issue of pull request. @@ -2429,7 +2446,7 @@ tree_path_not_found_commit = Pad %[1]s bestaat niet in commit %[2]s tree_path_not_found_tag = Pad %[1]s bestaat niet in tag %[2]s transfer.no_permission_to_reject = Je hebt geen rechten om deze overdracht af te wijzen. settings.transfer_owner = Nieuwe eigenaar -mirror_address_protocol_invalid = De opgegeven URL is ongeldig. Alleen http(s):// of git:// locaties kunnen gebruikt worden voor spiegeling. +mirror_address_protocol_invalid = De opgegeven URL is ongeldig. Alleen http(s):// of git:// locaties kunnen gebruikt worden voor spiegelen. archive.title = Deze repo is gearchiveerd. Je kunt bestanden bekijken en klonen, maar geen issues of pull requests pushen of openen. archive.title_date = Deze repository is gearchiveerd op %s. Je kunt bestanden bekijken en klonen, maar je kunt niet pushen of issues of pull requests openen. migrate_options_lfs_endpoint.placeholder = Als dit leeg gelaten wordt, zal het eindpunt afgeleid worden van de kloon URL @@ -2485,7 +2502,7 @@ wiki.page_content = Pagine inhoud wiki.cancel = Annuleren settings.projects_desc = Repository projecten inschakelen settings.admin_code_indexer = Code indexeerder -settings.admin_indexer_commit_sha = Laatst geïndexeerde SHA +settings.admin_indexer_commit_sha = Laatst geïndexeerde commit settings.reindex_button = Toevoegen aan herindexeringswachtrij settings.reindex_requested = Herindexering aangevraagd settings.danger_zone = Gevaren zone @@ -2505,7 +2522,7 @@ editor.update = %s bijwerken projects.column.unset_default_desc = Maak deze kolom ongedaan als standaard pulls.showing_only_single_commit = Alleen veranderingen tonen van commit %[1]s pulls.blocked_by_changed_protected_files_1 = Dit pull request is geblokkeerd omdat het een beveiligd bestand wijzigt: -signing.wont_sign.nokey = Er is geen sleutel beschikbaar om deze commit te ondertekenen. +signing.wont_sign.nokey = Deze instantie heeft geen sleutel om deze commmit mee te ondertekenen. settings.admin_enable_close_issues_via_commit_in_any_branch = Sluit een issue via een commit gedaan in een niet standaard branch stars_remove_warning = Hiermee worden alle sterren uit deze repository verwijderd. tree_path_not_found_branch = Pad %[1]s bestaat niet in branch %[2]s @@ -2544,7 +2561,7 @@ issues.action_check = Aanvinken/uitvinken issues.dependency.issue_batch_close_blocked = Het is niet mogelijk om de issues die u gekozen heeft in bulk te sluiten, omdat issue #%d nog open afhankelijkheden heeft pulls.review_only_possible_for_full_diff = Beoordeling is alleen mogelijk bij het bekijken van de volledige diff pulls.commit_ref_at = `heeft naar deze pull request verwezen vanuit een commit %[2]s` -pulls.cmd_instruction_hint = `Bekijk opdrachtregelinstructies.` +pulls.cmd_instruction_hint = Bekijk opdrachtregelinstructies pulls.cmd_instruction_checkout_desc = Vanuit uw project repository, schakel over naar een nieuwe branch en test de veranderingen. pulls.showing_specified_commit_range = Alleen veranderingen weergeven tussen %[1]s..%[2]s pulls.reopen_failed.base_branch = De pull request kan niet worden heropend, omdat de base branch niet meer bestaat. @@ -2573,9 +2590,9 @@ release.tag_helper_existing = Bestaande tag. release.title = Releasetitel release.title_empty = Titel kan niet leeg zijn. release.message = Beschrijf deze release -release.delete_tag = Verwijder Tag +release.delete_tag = Tag verwijderen release.add_tag_msg = Gebruik de titel en inhoud van de release als bericht. -release.add_tag = Alleen Tag Aanmaken +release.add_tag = Tag aanmaken release.releases_for = Releases voor %s release.tags_for = Tags voor %s branch.delete = Branch "%s" verwijderen @@ -2606,7 +2623,7 @@ settings.tracker_issue_style.regexp_pattern_desc = De eerste groep wordt gebruik settings.admin_indexer_unindexed = Niet-geïndexeerd settings.admin_enable_health_check = Repository gezondheidscontroles inschakelen (git fsck) settings.admin_settings = Beheerdersinstellingen -settings.actions_desc = Repository acties inschakelen +settings.actions_desc = Geïntegreerde CI/CD-pijplijnen met Forgejo Actions inschakelen settings.releases_desc = Repository releases inschakelen settings.pulls.default_delete_branch_after_merge = Verwijder standaard pull request branch na samenvoegen settings.pulls.allow_rebase_update = Het bijwerken van een pull request branch door rebase inschakelen @@ -2616,7 +2633,7 @@ settings.trust_model.default.desc = Gebruik de standaard repository vertrouwensm settings.signing_settings = Instellingen voor verificatie van ondertekening settings.wiki_branch_rename_success = De branch naam van de repository wiki is succesvol genormaliseerd. settings.wiki_rename_branch_main_notices_1 = Deze bewerking KAN NIET ongedaan worden gemaakt. -settings.wiki_rename_branch_main_desc = Hernoem de branch die intern door de Wiki wordt gebruikt naar "%s". Dit is permanent en kan niet ongedaan gemaakt worden. +settings.wiki_rename_branch_main_desc = Hernoem de branch die intern door de Wiki wordt gebruikt naar "%s". Deze verandering is permanent en kan niet ongedaan worden gemaakt. settings.add_collaborator_owner = Kan geen eigenaar toevoegen als samenwerker. settings.update_settings_no_unit = De repository moet op zijn minst enige vorm van interactie toestaan. settings.authorization_header = Autorisatie-header @@ -2711,7 +2728,7 @@ commits.search_branch = Deze branch pulls.merged_title_desc_one = heeft %[1]d commit van %[2]s samengevoegd in %[3]s %[4]s pulls.ready_for_review = Klaar voor een beoordeling? editor.push_out_of_date = De push lijkt verouderd. -editor.commit_id_not_matching = De commit ID komt niet overeen met degene die je aan het bewerken was. Committeer naar een nieuwe branch en voeg dan samen. +editor.commit_id_not_matching = Het bestand is gewijzigd terwijl je het aan het bewerken was. Committeer naar een nieuwe branch en voeg dan samen. settings.rename_branch_failed_protected = Kan branch %s niet hernoemen omdat het een beschermde branch is. stars = Sterren n_commit_few = %s commits @@ -2737,8 +2754,8 @@ settings.federation_following_repos = URLs van de volgende repositories. Geschei settings.federation_settings = Federatie instellingen settings.federation_apapiurl = Federatie URL van deze repository. Kopiër en plak dit in de federatie instellingen van een andere repository als een URL van de volgende repository. settings.federation_not_enabled = Federatie is niet ingeschakeld voor deze instantie. -subscribe.issue.guest.tooltip = Log in om dit issue te volgen. -subscribe.pull.guest.tooltip = Log in om dit pull request te volgen. +subscribe.issue.guest.tooltip = Log in om deze issue te volgen. +subscribe.pull.guest.tooltip = Log in om deze pull request te volgen. settings.transfer.modal.title = Eigendom overdragen settings.transfer.button = Eigendom overdragen settings.graphql_url = GraphQL URL @@ -2750,6 +2767,17 @@ settings.sourcehut_builds.visibility = Job zichtbaarheid settings.sourcehut_builds.manifest_path = Bouw manifestpad n_release_one = %s release n_release_few = %s releases +issues.author.tooltip.issue = Deze gebruiker is de auteur van deze issue. +issues.author.tooltip.pr = Deze gebruiker is de auteur van deze pull request. +settings.matrix.room_id_helper = De kamer-ID kan worden opgehaald uit de Element webclient > Kamerinstellingen > Geavanceerd > Interne ruimte ID. Voorbeeld: %s. +issues.edit.already_changed = Kan wijzigingen in deze issue niet opslaan. Het lijkt erop dat de inhoud al is gewijzigd door een andere gebruiker. Vernieuw de pagina en probeer opnieuw te bewerken om te voorkomen dat hun wijzigingen worden overschreven +pulls.edit.already_changed = Kan wijzigingen in deze pull request niet opslaan. Het lijkt erop dat de inhoud al is gewijzigd door een andere gebruiker. Vernieuw de pagina en probeer opnieuw te bewerken om te voorkomen dat hun wijzigingen worden overschreven +comments.edit.already_changed = Kan wijzigingen in deze reactie niet opslaan. Het lijkt erop dat de inhoud al is gewijzigd door een andere gebruiker. Vernieuw de pagina en probeer opnieuw te bewerken om te voorkomen dat hun wijzigingen worden overschreven +settings.sourcehut_builds.secrets_helper = Geef de job toegang tot de bouwgeheimen (SECRETS:RO toekenning vereist) +settings.add_webhook.invalid_path = Het pad mag geen deel bevatten dat "." of ".." of de lege tekenreeks is. Het kan niet beginnen of eindigen met een schuine streep. +settings.matrix.access_token_helper = Het is aanbevolen om hiervoor een speciale Matrix-account in te stellen. Het toegangstoken kan worden opgehaald via de Element webclient (in een besloten/incognito tabblad) > Gebruikersmenu (linksboven) > Instellingen > Hulp & Info > Geavanceerd > Toegangstoken (onder de Homeserver URL). Sluit het privé/incognito tabblad (uitloggen maakt de token ongeldig). +settings.sourcehut_builds.access_token_helper = Toegangstoken met JOBS:RW toekenning. Genereer een builds.sr.ht token of een builds.sr.ht token met toegang voor geheimen op meta.sr.ht. +activity.commit = Commit activiteit @@ -2807,9 +2835,9 @@ settings.labels_desc=Voeg labels toe die kunnen worden gebruikt bij problemen vo members.membership_visibility=Zichtbaarheid lidmaatschap: members.public=Zichtbaar -members.public_helper=verborgen maken +members.public_helper=Verborgen maken members.private=Verborgen -members.private_helper=maak zichtbaar +members.private_helper=Maak zichtbaar members.member_role=Rol van lid: members.owner=Eigenaar members.member=Lid @@ -2865,8 +2893,8 @@ form.name_pattern_not_allowed = Het patroon "%s' is niet toegestaan in een organ settings.email = Contact e-mail settings.change_orgname_redirect_prompt = De oude naam zal worden omgeleid tot het wordt geclaimd. members.remove.detail = %[1]s van %[2]s verwijderen? -members.leave.detail = %s verlaten? -teams.leave.detail = %s verlaten? +members.leave.detail = Weet u zeker dat je organisatie "%s" wilt verlaten? +teams.leave.detail = Weet u zeker dat je team “%s” wilt verlaten? teams.general_access_helper = De machtigingen van de leden zullen worden vastgesteld door middel van de onderstaande tabel. teams.write_access = Schrijf teams.invite_team_member = Uitnodigen tot %s @@ -2973,7 +3001,7 @@ users.repos=Repos users.created=Aangemaakt users.last_login=Laatste keer ingelogd users.never_login=Nooit ingelogd -users.send_register_notify=Stuur gebruikersregistratie notificatie +users.send_register_notify=Via e-mail informeren over registratie users.edit=Bewerken users.auth_source=Authenticatiebron users.local=Lokaal @@ -2983,10 +3011,10 @@ users.update_profile_success=Het gebruikersaccount is bijgewerkt. users.edit_account=Wijzig gebruikers account users.max_repo_creation=Maximale aantal repositories users.max_repo_creation_desc=(Zet op -1 om de globale limiet te gebruiken) -users.is_activated=Gebruikersaccount is geactiveerd -users.prohibit_login=Inloggen uitschakelen -users.is_admin=Is beheerder -users.is_restricted=Is beperkt +users.is_activated=Geactiveerd account +users.prohibit_login=Geschorst account +users.is_admin=Beheerdersaccount +users.is_restricted=Beperkte account users.allow_git_hook=Mag Git hooks maken users.allow_git_hook_tooltip=Git hooks worden uitgevoerd als de OS-gebruiker die Forgejo uitvoert en zal hetzelfde niveau van host toegang hebben. Als gevolg daarvan hebben gebruikers met dit speciale Git hook privilege toegang tot alle Forgejo repositories en de door Forgejo gebruikte database. Zij zijn dus ook in staat om Forgejo beheerdersprivileges te verkrijgen. users.allow_import_local=Mag lokale repositories importeren @@ -3022,7 +3050,7 @@ orgs.new_orga=Nieuwe organisatie repos.repo_manage_panel=Repositories beheren repos.unadopted=Niet-geadopteerde repositories -repos.unadopted.no_more=Geen niet-geadopteerde repositories meer gevonden +repos.unadopted.no_more=Geen niet-geadopteerde repositories gevonden repos.owner=Eigenaar repos.name=Naam repos.private=Prive @@ -3232,7 +3260,7 @@ config.git_max_diff_lines=Max diff regels per bestand config.git_max_diff_files=Max. getoonde diff-bestanden config.git_gc_args=GC-argumenten config.git_migrate_timeout=Migratie time-out -config.git_mirror_timeout=Time-out spiegelupdate +config.git_mirror_timeout=Time-out mirror update config.git_clone_timeout=Kloon operatie timeout config.git_pull_timeout=Pull operatie timeout config.git_gc_timeout=GC operatie timeout @@ -3308,7 +3336,7 @@ users.list_status_filter.not_prohibit_login = Inloggen toestaan users.list_status_filter.is_2fa_enabled = 2FA ingeschakeld users.details = Gebruikersgegevens emails.change_email_text = Weet je zeker dat je dit e-mailadres wilt bijwerken? -repos.lfs_size = LFS Grootte +repos.lfs_size = LFS grootte packages.package_manage_panel = Pakketten beheren packages.total_size = Totale grootte: %s packages.unreferenced_size = Grootte waarnaar niet wordt verwezen: %s @@ -3344,17 +3372,17 @@ dashboard.sync_repo_tags = Tags synchroniseren van git data naar database dashboard.cleanup_hook_task_table = Tabel hook_task opschonen dashboard.cleanup_packages = Verlopen pakketten opschonen dashboard.cleanup_actions = Verlopen logs en artefacten van actions opschonen -dashboard.delete_old_actions.started = Het verwijderen van alle oude acties uit de database is gestart. +dashboard.delete_old_actions.started = Het verwijderen van alle oude activiteiten uit de database is gestart. dashboard.update_checker = Update checker dashboard.stop_zombie_tasks = Zombietaken stoppen dashboard.stop_endless_tasks = Eindeloze taken stoppen dashboard.start_schedule_tasks = Start geplande taken -dashboard.sync_branch.started = Branches synchroniseren is gestart -dashboard.sync_tag.started = Tags synchroniseren is gestart +dashboard.sync_branch.started = Branch synchronisatie is gestart +dashboard.sync_tag.started = Tag synchronisatie is gestart auths.attribute_avatar = Avatar attribuut auths.enable_ldap_groups = LDAP-groepen inschakelen auths.ms_ad_sa = MS AD zoekattributen -dashboard.delete_old_actions = Verwijder alle oude acties uit de database +dashboard.delete_old_actions = Verwijder alle oude activiteiten uit de database identity_access = Identiteit & toegang assets = Code assets auths.helo_hostname_helper = Hostnaam verzonden met HELO. Laat leeg om huidige hostnaam te versturen. @@ -3423,6 +3451,16 @@ config.open_with_editor_app_help = De "Openen met" editors voor het kloonmenu. A auths.tip.gitlab_new = Registreer een nieuwe applicatie op https://gitlab.com/-/profile/applications config.app_slogan = Instantie slogan auths.default_domain_name = Standaarddomeinnaam die voor het e-mailadres wordt gebruikt +config.cache_test = Test cache +config.cache_test_succeeded = Cache test succesvol, kreeg een antwoord in %s. +users.activated.description = Voltooiing van e-mailverificatie. De eigenaar van een niet-geactiveerd account kan zich pas aanmelden nadat de e-mailverificatie is voltooid. +users.block.description = Blokkeer deze gebruiker voor interactie met deze service via zijn account en verbied het aanmelden. +users.admin.description = Geef deze gebruiker volledige toegang tot alle beheerfuncties die beschikbaar zijn via de web UI en de API. +users.restricted.description = Sta alleen interactie toe met de repositories en organisaties waar deze gebruiker als samenwerker is toegevoegd. Dit voorkomt toegang tot openbare repositories op deze instantie. +users.local_import.description = Sta het importeren van repositories vanaf het lokale bestandssysteem van de server toe. Dit kan een beveiligingsprobleem zijn. +users.organization_creation.description = Sta het aanmaken van nieuwe organisaties toe. +config.cache_test_failed = Het is niet gelukt om de cache te peilen: %v. +config.cache_test_slow = Cache-test geslaagd, maar reactie is traag: %s. [action] @@ -3438,13 +3476,13 @@ comment_issue = `gaf reactie op issue %[3]s#%[2]s` comment_pull = `gaf reactie op pull request %[3]s#%[2]s` merge_pull_request = `pull request samengevoegd %[3]s#%[2]s` push_tag = tag %[3]s gepusht naar %[4]s -mirror_sync_create = nieuwe referentie gesynchroniseerd naar %[3]s op %[4]s van spiegel +mirror_sync_create = nieuwe referentie gesynchroniseerd naar %[3]s op %[4]s van mirror approve_pull_request = `goedgekeurd %[3]s#%[2]s` reopen_pull_request = `heropend pull request %[3]s#%[2]s` close_pull_request = `sloot pull request %[3]s#%[2]s` -mirror_sync_delete = gesynchroniseerde en verwijderde referentie %[2]s op %[3]s van spiegel +mirror_sync_delete = gesynchroniseerde en verwijderde referentie %[2]s op %[3]s van mirror auto_merge_pull_request = `pull request automatisch samengevoegd %[3]s#%[2]s` -mirror_sync_push = commits gesynchroniseerd naar %[3]s op %[4]s van spiegel +mirror_sync_push = commits gesynchroniseerd naar %[3]s op %[4]s van mirror review_dismissed_reason = Reden: commit_repo = gepusht naar %[3]s bij %[4]s create_issue = `opent issue %[3]s#%[2]s` @@ -3455,7 +3493,7 @@ reject_pull_request = `stelde wijzigingen voor %[3]s#%[2]s` review_dismissed = `heeft beoordeling van %[4]s voor %[3]s#%[2]s afgewezen` create_branch = heeft de branch %[3]s gemaakt in %[4]s watched_repo = begon te kijken naar %[2]s -publish_release = `released "%[4]s" op %[3]s` +publish_release = `released %[4]s op %[3]s` starred_repo = heeft %[2]s een star gegeven [tool] @@ -3608,7 +3646,7 @@ owner.settings.cargo.rebuild = Index herbouwen owner.settings.cargo.rebuild.description = Heropbouwen kan nuttig zijn als de index niet is gesynchroniseerd met de opgeslagen Cargo pakketten. owner.settings.cargo.rebuild.error = Mislukt om Cargo index te herbouwen: %v owner.settings.cargo.rebuild.success = De Cargo index is met succes opnieuw opgebouwd. -owner.settings.cleanuprules.title = Opschoonregels beheren +owner.settings.cleanuprules.title = Opschoonregels owner.settings.cleanuprules.add = Regel voor opschonen toevoegen owner.settings.cleanuprules.edit = Regel voor opschonen bewerken owner.settings.cleanuprules.preview = Voorbeeld opruimregel @@ -3761,7 +3799,7 @@ runs.actors_no_select = Alle acteurs runs.status_no_select = Alle statussen runs.no_results = Geen resultaten gevonden. runs.no_workflows = Er zijn nog geen workflows. -unit.desc = Beheer actions +unit.desc = Beheer geïntegreerde CI/CD-pijplijnen met Forgejo Actions runs.no_workflows.documentation = Voor meer informatie over Forgejo acties, zie de documentatie. workflow.disable_success = Workflow "%s" is succesvol uitgeschakeld. variables.none = Er zijn nog geen variabelen. @@ -3774,6 +3812,13 @@ runs.no_matching_online_runner_helper = Geen overeenkomende online runner met la runs.workflow = Workflow runs.no_job_without_needs = De workflow moet ten minste één taak zonder afhankelijkheden bevatten. runs.no_job = De workflow moet minimaal één job bevatten +workflow.dispatch.trigger_found = Deze workflow heeft een workflow_dispatch event trigger. +workflow.dispatch.success = Workflow-run is met succes aangevraagd. +workflow.dispatch.use_from = Gebruik workflow van +workflow.dispatch.run = Workflow uitvoeren +workflow.dispatch.warn_input_limit = Alleen de eerste %d invoeren worden weergegeven. +workflow.dispatch.invalid_input_type = Ongeldig invoertype “%s”. +workflow.dispatch.input_required = Waarde vereist voor invoer “%s”. @@ -3829,6 +3874,8 @@ exact = Exact exact_tooltip = Bevat alleen resultaten die de exacte zoekterm bevatten issue_kind = Zoek issues... pull_kind = Zoek pulls... +union = Trefwoorden +union_tooltip = Neem resultaten op die overeenkomen met een van de trefwoorden gescheiden door spaties [munits.data] b = B @@ -3843,3 +3890,7 @@ pib = PiB filepreview.line = Lijn %[1]d in %[2]s filepreview.lines = Lijnen %[1]d naar %[2]d in %[3]s filepreview.truncated = Voorbeeld is ingekort + + +[translation_meta] +test = Oké \ No newline at end of file diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index f2bc34d711..837d8c0a30 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -157,6 +157,7 @@ filter.is_archived = Zarchiwizowane filter.is_mirror = Kopie lustrzane more_items = Więcej elementów filter.is_fork = Forki +test = Test [aria] navbar = Pasek nawigacji @@ -466,7 +467,7 @@ activate_account.text_2=Kliknij poniższy link, aby aktywować swoje konto w ci activate_email=Potwierdź swój adres e-mail activate_email.text=Aby zweryfikować swój adres e-mail, w ciągu następnych %s kliknij poniższy link: -register_notify=Witamy w Forgejo +register_notify_prev9=Witamy w Forgejo register_notify.title=%[1]s, witaj w %[2]s register_notify.text_1=to jest Twój e-mail z potwierdzeniem rejestracji dla %s! register_notify.text_2=Możesz teraz zalogować się za pomocą nazwy użytkownika: %s @@ -523,6 +524,7 @@ yes=Tak no=Nie cancel=Anuluj modify=Aktualizuj +confirm = Potwierdź [form] UserName=Nazwa użytkownika @@ -613,6 +615,7 @@ follow=Obserwuj unfollow=Przestań obserwować user_bio=Biografia disabled_public_activity=Ten użytkownik wyłączył publiczne wyświetlanie jego aktywności. +code = Kod [settings] @@ -845,6 +848,17 @@ visibility=Widoczność użytkownika visibility.public=Publiczny visibility.limited=Ograniczony visibility.private=Prywatny +uid = UID +comment_type_group_label = Etykieta +comment_type_group_milestone = Kamień milowy +comment_type_group_assignee = Przypisanie +comment_type_group_branch = Gałąź +comment_type_group_deadline = Termin +comment_type_group_project = Projekt +comment_type_group_reference = Odniesienie +webauthn_nickname = Pseudonim +comment_type_group_dependency = Zależność +permissions_list = Uprawnienia: [repo] owner=Właściciel @@ -1046,6 +1060,7 @@ file_copy_permalink=Kopiuj bezpośredni odnośnik video_not_supported_in_browser=Twoja przeglądarka nie obsługuje znacznika HTML5 "video". audio_not_supported_in_browser=Twoja przeglądarka nie obsługuje znacznika HTML5 "audio". stored_lfs=Przechowane za pomocą Git LFS +stored_annex=Przechowane za pomocą Git Annex symbolic_link=Dowiązanie symboliczne commit_graph=Wykres commitów commit_graph.select=Wybierz gałęzie @@ -1063,6 +1078,7 @@ editor.upload_file=Wyślij plik editor.edit_file=Edytuj plik editor.preview_changes=Podgląd zmian editor.cannot_edit_lfs_files=Pliki LFS nie mogą być edytowane poprzez interfejs przeglądarkowy. +editor.cannot_edit_annex_files=Pliki Annex nie mogą być edytowane poprzez interfejs przeglądarkowy. editor.cannot_edit_non_text_files=Pliki binarne nie mogą być edytowane poprzez interfejs przeglądarkowy. editor.edit_this_file=Edytuj plik editor.this_file_locked=Plik jest zablokowany @@ -2025,6 +2041,39 @@ topic.count_prompt=Nie możesz wybrać więcej, niż 25 tematów error.csv.too_large=Nie można wyświetlić tego pliku, ponieważ jest on zbyt duży. error.csv.unexpected=Nie można renderować tego pliku, ponieważ zawiera nieoczekiwany znak w wierszu %d i kolumnie %d. error.csv.invalid_field_count=Nie można renderować tego pliku, ponieważ ma nieprawidłową liczbę pól w wierszu %d. +settings.admin_indexer_unindexed = Nieindeksowane +settings.web_hook_name_forgejo = Forgejo +issues.filter_poster = Autor +issues.content_history.options = Opcje +issues.content_history.deleted = usunięto +issues.content_history.created = utworzono +editor.patching = Łatanie: +settings.web_hook_name_gogs = Gogs +desc.sha256 = SHA256 +commitstatus.failure = Awaria +settings.protect_status_check_matched = Dopasowano +settings.web_hook_name_slack = Slack +settings.web_hook_name_dingtalk = DingTalk +commitstatus.success = Sukces +wiki.cancel = Anuluj +settings.web_hook_name_packagist = Packagist +settings.web_hook_name_telegram = Telegram +settings.event_package = Pakiet +settings.web_hook_name_discord = Discord +settings.web_hook_name_matrix = Matrix +settings.protect_patterns = Szablony +default_branch_label = domyślnie +issues.author = Autor +commit.operations = Operacje +commit.revert = Odwróć +pull.deleted_branch = (usunięto):%s +diff.vendored = dostarczono +from_comment = (komentarz) +issues.filter_project = Projekt +mirror_sync = zsynchronizowano +settings.web_hook_name_gitea = Gitea +packages = Pakiety +actions = Akcje [graphs] @@ -2133,6 +2182,8 @@ teams.all_repositories_helper=Zespół ma dostęp do wszystkich repozytoriów. W teams.all_repositories_read_permission_desc=Ten zespół nadaje uprawnienie Odczytu do wszystkich repozytoriów: jego członkowie mogą wyświetlać i klonować repozytoria. teams.all_repositories_write_permission_desc=Ten zespół nadaje uprawnienie Zapisu do wszystkich repozytoriów: jego członkowie mogą odczytywać i przesyłać do repozytoriów. teams.all_repositories_admin_permission_desc=Ten zespół nadaje uprawnienia Administratora do wszystkich repozytoriów: jego członkowie mogą odczytywać, przesyłać oraz dodawać innych współtwórców do repozytoriów. +teams.write_access = Zapis +code = Kod [admin] dashboard=Pulpit @@ -2553,6 +2604,20 @@ notices.type_2=Zadanie notices.desc=Opis notices.op=Operacja notices.delete_success=Powiadomienia systemu zostały usunięte. +monitor.last_execution_result = Wynik +monitor.process.children = Dzieci +integrations = Integracje +users.bot = Bot +users.list_status_filter.menu_text = Filtr +packages.version = Wersja +packages.creator = Twórca +users.list_status_filter.not_active = Nieaktywne +notices.operations = Operacje +config.send_test_mail_submit = Wyślij +packages.published = Opublikowane +config.mailer_protocol = Protokół +monitor.stats = Statystyki +users.remote = Zdalnie [action] @@ -2603,6 +2668,7 @@ pin=Przypnij powiadomienie mark_as_read=Oznacz jako przeczytane mark_as_unread=Oznacz jak nieprzeczytane mark_all_as_read=Oznacz wszystkie jako przeczytane +subscriptions = Subskrybcje [gpg] default_key=Podpisano domyślnym kluczem @@ -2618,6 +2684,7 @@ error.probable_bad_default_signature=OSTRZEŻENIE! Pomimo, że domyślny klucz p [units] error.no_unit_allowed_repo=Nie masz uprawnień do żadnej sekcji tego repozytorium. error.unit_not_allowed=Nie masz uprawnień do tej sekcji repozytorium. +unit = Jednostka [packages] filter.type=Typ @@ -2625,6 +2692,23 @@ alpine.repository.branches=Gałęzie alpine.repository.repositories=Repozytoria conan.details.repository=Repozytorium owner.settings.cleanuprules.enabled=Włączone +alpine.repository.architectures = Architektury +container.details.platform = Platforma +requirements = Wymagania +keywords = Słowa kluczowe +versions = Wersje +dependency.id = ID +dependency.version = Wersja +details.author = Autor +filter.type.all = Wszystko +filter.container.tagged = Oznaczone +details.license = Licencja +installation = Instalacja +composer.dependencies = Zależności +filter.container.untagged = Nieoznaczone +title = Pakiety +dependencies = Zależności +details = Szczegóły [secrets] diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 1778c865be..f2edd3c283 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -24,7 +24,7 @@ signed_in_as=Sessão iniciada como enable_javascript=Este site requer JavaScript. toc=Índice licenses=Licenças -return_to_forgejo=Volte para Forgejo +return_to_forgejo=Retornar ao Forgejo username=Nome de usuário email=Endereço de e-mail @@ -89,7 +89,7 @@ add=Adicionar add_all=Adicionar todos remove=Remover remove_all=Excluir todos -remove_label_str=`Remover item "%s"` +remove_label_str=Remover item "%s" edit=Editar enabled=Habilitado @@ -157,7 +157,7 @@ filter.not_archived = Não arquivado filter.not_fork = Sem forks filter.not_mirror = Sem espelhos filter.not_template = Sem modelos -copy_generic = Copiar para área de transferência +copy_generic = Copiar para a área de transferência [aria] navbar=Barra de navegação @@ -456,9 +456,9 @@ password_pwned=A senha que você escolheu faz parte de uma %s: -register_notify=Bem-vindo ao Forgejo +register_notify_prev9=Bem-vindo ao Forgejo register_notify.title=%[1]s, bem-vindo(a) a %[2]s register_notify.text_1=este é o seu e-mail de confirmação de registro para %s! register_notify.text_2=Você pode fazer login em sua conta utilizando o usuário: %s @@ -631,7 +631,7 @@ target_branch_not_exist=O branch de destino não existe. username_error_no_dots = ` pode conter apenas caracteres alfanuméricos ("0-9, "a-z", "A-Z"), hífens ("-") e traços inferiores ("_"). Não é permitido conter caracteres não alfanuméricos no início ou fim. Caracteres não alfanuméricos consecutivos também não são permitidos.` admin_cannot_delete_self = Você não pode excluir a si mesmo quando você é um administrador. Por favor, remova suas permissões de administrador primeiro. AccessToken = Token de acesso -To = Nome do Branch +To = Nome do ramo Website = Site Pronouns = Pronomes Biography = Biografia @@ -671,7 +671,7 @@ block_user = Bloquear usuário unblock = Desbloquear block = Bloquear block_user.detail_2 = Este usuário não poderá interagir com seus repositórios, questões criadas e comentários. -follow_blocked_user = Você não pode seguir este usuário, pois você o bloqueou ou foi bloqueado por ele. +follow_blocked_user = Você não pode seguir este usuário porque você o bloqueou ou foi bloqueado por ele. block_user.detail_3 = Este(a) usuário(a) não poderá adicioná-lo(a) como colaborador(a), nem você poderá adicioná-lo(a) como colaborador(a). block_user.detail = Por favor, entenda que se você bloquear este usuário, outras ações serão tomadas. Tais como: followers_one = %d seguidor @@ -755,14 +755,14 @@ update_user_avatar_success=O avatar do usuário foi atualizado. update_password=Modificar senha old_password=Senha atual new_password=Nova senha -retype_new_password=Confirmar nova senha +retype_new_password=Confirme a nova senha password_incorrect=A senha atual está incorreta. change_password_success=Sua senha foi atualizada. Acesse usando sua nova senha de agora em diante. password_change_disabled=Contas não-locais não podem alterar sua senha através da interface web do Forgejo. emails=Endereços de e-mail manage_emails=Gerenciar endereços de e-mail -manage_themes=Tema Padrão +manage_themes=Tema padrão manage_openid=Endereços OpenID email_desc=Seu endereço de e-mail principal será usado para notificações, recuperação de senha e, desde que não esteja oculto, para operações do Git baseadas na Web. theme_desc=Este será o seu tema padrão em todo o site. @@ -770,7 +770,7 @@ primary=Principal activated=Ativado requires_activation=Requer ativação primary_email=Tornar primário -activate_email=Enviar ativação +activate_email=Enviar e-mail de ativação activations_pending=Ativações pendentes can_not_add_email_activations_pending=Há uma ativação pendente, tente novamente em alguns minutos se quiser adicionar um novo e-mail. delete_email=Remover @@ -986,7 +986,7 @@ visibility.limited_tooltip=Visível apenas para usuários autenticados visibility.private=Privada visibility.private_tooltip=Visível apenas para membros das organizações às quais você se associou blocked_users = Usuários bloqueados -blocked_since = Bloqueado desde %s +blocked_since = Bloqueado(a) desde %s user_unblock_success = O usuário foi desbloqueado. user_block_success = O usuário foi bloqueado. twofa_recovery_tip = Caso perca o seu dispositivo, você poderá usar uma chave de uso único para recuperar o acesso à sua conta. @@ -1254,6 +1254,7 @@ view_git_blame=Ver Git Blame video_not_supported_in_browser=Seu navegador não suporta a tag 'video' do HTML5. audio_not_supported_in_browser=Seu navegador não suporta a tag 'audio' do HTML5. stored_lfs=Armazenado com Git LFS +stored_annex=Armazenado com Git Annex symbolic_link=Link simbólico executable_file=Arquivo executável commit_graph=Gráfico de commits @@ -1277,6 +1278,7 @@ editor.upload_file=Enviar arquivo editor.edit_file=Editar arquivo editor.preview_changes=Pré-visualizar alterações editor.cannot_edit_lfs_files=Arquivos LFS não podem ser editados na interface web. +editor.cannot_edit_annex_files=Arquivos Annex não podem ser editados na interface web. editor.cannot_edit_non_text_files=Arquivos binários não podem ser editados na interface web. editor.edit_this_file=Editar arquivo editor.this_file_locked=Arquivo está bloqueado @@ -1770,8 +1772,8 @@ pulls.nothing_to_compare=Estes branches são iguais. Não há nenhuma necessidad pulls.nothing_to_compare_and_allow_empty_pr=Estes branches são iguais. Este PR ficará vazio. pulls.has_pull_request=`Um pull request entre esses branches já existe: %[2]s#%[3]d` pulls.create=Criar pull request -pulls.title_desc_few=quer aplicar o merge de %[1]d commits de %[2]s em %[3]s -pulls.merged_title_desc_few=aplicou merge dos %[1]d commits de %[2]s em %[3]s %[4]s +pulls.title_desc_few=quer mesclar %[1]d commits de %[2]s em %[3]s +pulls.merged_title_desc_few=mesclou %[1]d commits de %[2]s em %[3]s %[4]s pulls.change_target_branch_at=`mudou o branch de destino de %s para %s %s` pulls.tab_conversation=Conversação pulls.tab_commits=Commits @@ -2119,7 +2121,7 @@ settings.convert_fork_desc=Você pode converter este fork em um repositório nor settings.convert_fork_notices_1=Esta operação irá converter o fork em um repositório normal e não pode ser desfeita. settings.convert_fork_confirm=Converter repositório settings.convert_fork_succeed=O fork foi convertido em um repositório normal. -settings.transfer.title=Transferir propriedade +settings.transfer.title=Transferir titularidade settings.transfer.rejected=A transferência do repositório foi rejeitada. settings.transfer.success=A transferência do repositório foi bem sucedida. settings.transfer_abort=Cancelar transferência @@ -2584,7 +2586,7 @@ issues.role.collaborator = Colaborador(a) issues.label_archived_filter = Mostrar etiquetas arquivadas pulls.status_checks_hide_all = Esconder todas as verificações pulls.status_checks_show_all = Mostrar todas as verificações -pulls.cmd_instruction_hint = `Ver as instruções da linha de comando.` +pulls.cmd_instruction_hint = `Ver as instruções da linha de comando.` wiki.cancel = Cancelar settings.unarchive.success = O repositório foi desarquivado. settings.unarchive.button = Desarquivar repositório @@ -2592,13 +2594,13 @@ settings.unarchive.header = Desarquivar este repositório diff.comment.add_line_comment = Adicionar comentário na linha new_repo_helper = Um repositório contém todos os arquivos de projeto, incluindo o histórico de revisões. Já hospeda um repositório em outra plataforma? Migrar repositório blame.ignore_revs.failed = Falha ao ignorar as revisões em .git-blame-ignore-revs. -migrate.forgejo.description = Migrar dados do codeberg.org ou outras instâncias Forgejo. +migrate.forgejo.description = Migrar dados do codeberg.org ou outras servidores Forgejo. commits.browse_further = Ver mais issues.role.first_time_contributor = Primeira vez contribuindo issues.role.first_time_contributor_helper = Esta é a primeira contribuição deste usuário para o repositório. issues.role.contributor = Contribuidor(a) issues.role.member_helper = Este usuário é membro da organização proprietária deste repositório. -issues.role.collaborator_helper = Este usuário foi convidado para colaborar neste repositório. +issues.role.collaborator_helper = Este(a) usuário(a) foi convidado(a) para colaborar neste repositório. pulls.cmd_instruction_checkout_title = Checkout settings.wiki_globally_editable = Permitir que qualquer pessoa possa editar a wiki settings.transfer_abort_success = A transferência de repositório para %s foi cancelada. @@ -2612,12 +2614,12 @@ admin.manage_flags = Gerenciar sinalizadores admin.enabled_flags = Sinalizadores habilitados para o repositório: admin.update_flags = Atualizar sinalizadores admin.flags_replaced = Os sinalizadores do repositório foram substituídos -all_branches = Todas as branches +all_branches = Todos os ramos fork_branch = Branch a ser clonada para o fork object_format_helper = O formato utilizado para armazenar os objetos do repositório, sendo SHA1 o mais compatível. Esta ação é IRREVERSÍVEL. object_format = Formato dos objetos -tree_path_not_found_branch = Caminho %[1]s não existe na branch %[2]s -tree_path_not_found_tag = Caminho %[1]s não existe na etiqueta %[2]s +tree_path_not_found_branch = O caminho %[1]s não existe no ramo %[2]s +tree_path_not_found_tag = O caminho %[1]s não existe na etiqueta %[2]s commits.view_path = Ver neste ponto do histórico commits.renamed_from = Renomeado de %s admin.failed_to_replace_flags = Falha ao substituir os sinalizadores do repositório @@ -2639,7 +2641,7 @@ settings.units.units = Funcionalidades vendored = Externo issues.num_participants_one = %d participante issues.archived_label_description = (arquivada) %s -n_branch_few = %s branches +n_branch_few = %s ramos stars = Favoritos n_commit_one = %s commit n_tag_few = %s etiquetas @@ -3358,6 +3360,7 @@ dashboard.task.cancelled = Tarefa: %[1]s cancelada: %[3]s dashboard.sync_branch.started = Sincronização de ramos iniciada dashboard.sync_repo_branches = Sincronizar ramos perdidos do Git para o banco de dados packages.cleanup.success = Os dados expirados foram limpos com sucesso +monitor.queue.activeworkers = Processos ativos [action] @@ -3567,10 +3570,10 @@ settings.delete.notice=Você está prestes a excluir %s (%s). Esta operação é settings.delete.success=O pacote foi excluído. settings.delete.error=Falha ao excluir o pacote. owner.settings.cargo.title=Índice do Registro Cargo -owner.settings.cargo.initialize=Iniciar Índice +owner.settings.cargo.initialize=Inicializar índice owner.settings.cargo.initialize.error=Falha ao inicializar índice Cargo: %v owner.settings.cargo.initialize.success=O índice Cargo foi criado com sucesso. -owner.settings.cargo.rebuild=Reconstruir Índice +owner.settings.cargo.rebuild=Reconstruir índice owner.settings.cargo.rebuild.error=Falha ao reconstruir índice Cargo: %v owner.settings.cargo.rebuild.success=O índice Cargo foi reconstruído com sucesso. owner.settings.cleanuprules.title=Gerenciar Regras de Limpeza @@ -3613,7 +3616,7 @@ deletion=Excluir segredo deletion.description=A exclusão de um segredo é permanente e não pode ser desfeita. Continuar? deletion.success=O segredo foi excluído. deletion.failed=Falha ao excluir segredo. -management=Gerenciamento de Segredos +management=Gerenciar segredos [actions] actions=Ações @@ -3649,7 +3652,7 @@ runners.task_list.repository=Repositório runners.task_list.commit=Commit runners.task_list.done_at=Realizada em runners.edit_runner=Editar Runner -runners.update_runner=Atualizar as Alterações +runners.update_runner=Salvar alterações runners.update_runner_success=Runner atualizado com sucesso runners.update_runner_failed=Falha ao atualizar runner runners.delete_runner=Deletar esse runner @@ -3741,8 +3744,8 @@ match_tooltip = Inclui apenas os resultados que correspondem exatamente aos term repo_kind = Buscar repositórios... type_tooltip = Tipo de busca code_search_by_git_grep = Os resultados atuais da pesquisa de código são fornecidos por "git grep". Pode haver melhores resultados se o administrador do site ativar o indexador de código. -branch_kind = Pesquisar branches… -commit_kind = Pesquisar commits… +branch_kind = Buscar ramos… +commit_kind = Buscar commits… runner_kind = Pesquisar runners... code_search_unavailable = A pesquisa de código não está disponível no momento. Entre em contato com o administrador do site. diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini index f4ab925dd0..13d4324f00 100644 --- a/options/locale/locale_pt-PT.ini +++ b/options/locale/locale_pt-PT.ini @@ -158,6 +158,7 @@ filter.not_template = Não modelos toggle_menu = Comutar menu filter = Filtro copy_generic = Copiar para a área de transferência +test = Testar [aria] navbar=Barra de navegação @@ -189,6 +190,8 @@ buttons.ref.tooltip=Referenciar uma questão ou um pedido de integração buttons.switch_to_legacy.tooltip=Usar o editor clássico buttons.enable_monospace_font=Habilitar tipo de letra mono-espaçado buttons.disable_monospace_font=Desabilitar tipo de letra mono-espaçado +buttons.indent.tooltip = Empacotar itens num nível +buttons.unindent.tooltip = Desempacotar itens por um nível [filter] string.asc=A - Z @@ -245,7 +248,7 @@ err_admin_name_is_invalid=O nome de utilizador do administrador é inválido general_title=Configurações gerais app_name=Título do sítio -app_name_helper=Pode escrever aqui o nome da sua companhia. +app_name_helper=Escreva aqui o nome da sua instância. Será mostrado em todas as páginas. repo_path=Localização dos repositórios repo_path_helper=Os repositórios Git remotos serão guardados nesta pasta. lfs_path=Localização do Git LFS @@ -461,6 +464,11 @@ change_unconfirmed_email_summary = Mudar o endereço de email para onde a mensag tab_signin = Iniciar sessão tab_signup = Criar conta change_unconfirmed_email_error = Não foi possível mudar o endereço de email: %v +hint_login = Já tem uma conta? Inicie a sessão agora! +hint_register = Precisa de uma conta? Faça uma inscrição agora. +sign_up_button = Faça uma inscrição agora. +back_to_sign_in = Voltar ao iniciar a sessão +sign_in_openid = Prosseguir com OpenID [mail] view_it_on=Ver em %s @@ -477,7 +485,7 @@ activate_email=Valide o seu endereço de email activate_email.title=%s, por favor valide o seu endereço de email activate_email.text=Por favor clique na seguinte ligação para validar o seu endereço de email dentro de %s: -register_notify=Bem-vindo(a) ao Forgejo +register_notify_prev9=Bem-vindo(a) ao Forgejo register_notify.title=%[1]s, bem-vindo(a) a %[2]s register_notify.text_1=este é o seu email de confirmação de registo para %s! register_notify.text_2=Pode iniciar a sessão usando o seu nome de utilizador: %s @@ -671,12 +679,20 @@ block = Bloquear unblock = Desbloquear followers_one = %d seguidor following_one = %d seguindo -block_user.detail = Note que se bloquear este utilizador, serão executadas outras operações, tais como: -block_user.detail_1 = Está a deixar de ser seguido/a por este utilizador. -block_user.detail_2 = Este utilizador não pode interagir com os seus repositórios, questões criadas e comentários. -block_user.detail_3 = Este/a utilizador/a não o/a pode adicionar como colaborador/a nem você pode o/a adicionar como colaborador/a. +block_user.detail = Repare que bloquear um utilizador tem outros efeitos, tais como: +block_user.detail_1 = Irão deixar de seguir um ao outro e deixarão de poder seguir um ao outro. +block_user.detail_2 = Este/a utilizador/a deixará de poder interagir com os seus repositórios ou com as questões e comentários criados por si. +block_user.detail_3 = Não poderão adicionar um ao outro como colaboradores do repositório. follow_blocked_user = Não pode seguir este/a utilizador/a porque você o/a bloqueou ou este/a utilizador/a bloqueou-o/a a si. block_user = Bloquear utilizador +followers.title.one = Seguidor +followers.title.few = Seguidores +following.title.one = Seguindo +following.title.few = Seguindo +public_activity.visibility_hint.self_public = O seu trabalho está visível para todos, salvo o que é feito em espaços privados. Configurar. +public_activity.visibility_hint.admin_public = Este trabalho está visível para todos, mas como administrador/a pode também ver o que consta em espaços privados. +public_activity.visibility_hint.self_private = O seu trabalho apenas está visível para si e para os administradores da instância. Configurar. +public_activity.visibility_hint.admin_private = Este trabalho está visível para si porque é um/a administrador/a, mas o/a utilizador/a quer permanecer privado/a. [settings] profile=Perfil @@ -1004,6 +1020,7 @@ update_hints_success = As sugestões foram modificadas. blocked_users_none = Não há utilizadores bloqueados. user_unblock_success = O utilizador foi desbloqueado com sucesso. language.title = Idioma predefinido +keep_activity_private.description = O seu trabalho público apenas estará visível para si e para os administradores da instância. [repo] new_repo_helper=Um repositório contém todos os ficheiros do trabalho, incluindo o histórico das revisões. Já tem um hospedado noutro sítio? Migre o repositório. @@ -1266,6 +1283,7 @@ view_git_blame=Ver git blame video_not_supported_in_browser=O seu navegador não suporta a etiqueta "video" do HTML5. audio_not_supported_in_browser=O seu navegador não suporta a etiqueta "audio" do HTML5. stored_lfs=Armazenado com Git LFS +stored_annex=Armazenado com Git Annex symbolic_link=Ligação simbólica executable_file=Ficheiro executável vendored=Externo @@ -1291,6 +1309,7 @@ editor.upload_file=Carregar ficheiro editor.edit_file=Editar ficheiro editor.preview_changes=Pré-visualizar modificações editor.cannot_edit_lfs_files=Ficheiros LFS não podem ser editados na interface web. +editor.cannot_edit_annex_files=Ficheiros Annex não podem ser editados na interface web. editor.cannot_edit_non_text_files=Ficheiros binários não podem ser editados na interface da web. editor.edit_this_file=Editar ficheiro editor.this_file_locked=Ficheiro bloqueado @@ -1887,7 +1906,7 @@ pulls.outdated_with_base_branch=Este ramo é obsoleto em relação ao ramo base pulls.close=Encerrar pedido de integração pulls.closed_at=`fechou este pedido de integração %[2]s` pulls.reopened_at=`reabriu este pedido de integração %[2]s` -pulls.cmd_instruction_hint=`Ver instruções para a linha de comandos.` +pulls.cmd_instruction_hint=`Ver instruções para a linha de comandos.` pulls.cmd_instruction_checkout_title=Conferir pulls.cmd_instruction_checkout_desc=No seu repositório, irá criar um novo ramo para que possa testar as modificações. pulls.cmd_instruction_merge_title=Integrar @@ -2756,6 +2775,8 @@ settings.federation_following_repos = URLs de repositórios que estão a ser seg settings.federation_not_enabled = A federação não está a habilitada na sua instância. n_release_one = %s lançamento n_release_few = %s lançamentos +issues.author.tooltip.issue = Este/a utilizador/a é o/a autor/a desta questão. +issues.author.tooltip.pr = Este/a utilizador/a é o/a autor/a deste pedido de integração. [graphs] component_loading=A carregar %s... @@ -3435,6 +3456,16 @@ config.open_with_editor_app_help = Os editores da opção "Abrir com" do menu da config.allow_dots_in_usernames = Permitir que os utilizadores usem pontos no seu nome de utilizador. Não altera as contas existentes. auths.default_domain_name = Nome de domínio predefinido usado para o endereço de email config.app_slogan = Lema da instância +config.cache_test = Testar a cache +config.cache_test_slow = O teste da cache foi bem sucedido, mas a resposta é lenta: %s. +config.cache_test_succeeded = O teste da cache foi bem sucedido, o tempo de resposta foi de %s. +config.cache_test_failed = Falhou a sondagem da cache: %v. +users.block.description = Impedir que este utilizador interaja com este serviço através da sua conta e proibi-lo de iniciar sessão. +users.admin.description = Atribuir acesso total a este utilizador a todos os recursos administrativos disponíveis através da interface web e da API. +users.local_import.description = Permitir a importação de repositórios a partir do sistema de ficheiros local do servidor. Isto poderá ser um problema de segurança. +users.organization_creation.description = Permitir a criação de novas organizações. +users.activated.description = Finalização da verificação do email. O proprietário de uma conta não habilitada não poderá iniciar a sessão enquanto a verificação do email não estiver finalizada. +users.restricted.description = Permitir que este/a utilizador/a interaja apenas com os repositórios e as organizações onde tenha sido adicionado/a como colaborador/a. Isto impede o acesso a repositórios públicos nesta instância. [action] create_repo=criou o repositório %s @@ -3788,6 +3819,13 @@ runs.no_workflows.quick_start = Não sabe como começar com o Forgejo Action? Ve runs.no_job_without_needs = A sequência de trabalho tem de conter pelo menos um trabalho sem dependências. runs.workflow = Sequência de trabalho runs.no_job = A sequência de trabalho tem de conter pelo menos um trabalho +workflow.dispatch.use_from = Usar sequência de trabalho de +workflow.dispatch.run = Executar sequência de trabalho +workflow.dispatch.input_required = Exigir valor para a entrada "%s". +workflow.dispatch.warn_input_limit = Apresentando apenas as %d primeiras entradas. +workflow.dispatch.trigger_found = Esta sequência de trabalho é despoletada pelo evento workflow_dispatch. +workflow.dispatch.success = A execução da sequência de trabalho foi pedida com sucesso. +workflow.dispatch.invalid_input_type = Tipo de entrada "%s" inválido. [projects] type-1.display_name=Planeamento individual @@ -3826,6 +3864,12 @@ user_kind = Pesquisar utilizadores... team_kind = Pesquisar equipas... code_kind = Pesquisar código... code_search_unavailable = A pesquisa de código não está disponível, neste momento. Entre em contacto com o administrador. +exact = Fiel +exact_tooltip = Incluir somente os resultados que correspondam rigorosamente ao termo de pesquisa +issue_kind = Procurar questões... +pull_kind = Procurar puxadas... +union = Palavras-chave +union_tooltip = Incluir resultados correspondentes a qualquer das palavras-chave separadas por espaços em branco [munits.data] kib = KiB @@ -3839,4 +3883,7 @@ b = B [markup] filepreview.lines = Linhas %[1]d até %[2]d em %[3]s filepreview.line = Linha %[1]d em %[2]s -filepreview.truncated = A previsão foi truncada \ No newline at end of file +filepreview.truncated = A previsão foi truncada + +[translation_meta] +test = ok \ No newline at end of file diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index 30cb893fa0..d89bb31ee4 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -152,12 +152,13 @@ filter.is_mirror = Зеркала filter.is_template = Шаблоны filter.not_template = Не шаблоны filter.public = Публичные -filter.private = Приватные +filter.private = Частные filter.is_archived = Архивированные filter.not_mirror = Не зеркала more_items = Больше элементов invalid_data = Неверные данные: %v copy_generic = Копировать в буфер обмена +test = Проверить [aria] navbar=Панель навигации @@ -189,6 +190,8 @@ buttons.ref.tooltip=Сослаться на задачу или запрос с buttons.switch_to_legacy.tooltip=Использовать старый редактор buttons.enable_monospace_font=Включить моноширинный шрифт buttons.disable_monospace_font=Выключить моноширинный шрифт +buttons.unindent.tooltip = Уменьшить вложенность на 1 +buttons.indent.tooltip = Увеличить вложенность на 1 [filter] string.asc=A - Я @@ -291,7 +294,7 @@ enable_captcha=CAPTCHA для регистрации enable_captcha.description=Требовать прохождение CAPTCHA для регистрации учётных записей. require_sign_in_view=Требовать авторизацию для просмотра содержимого require_sign_in_view.description=Требовать наличие учётной записи для просмотра содержимого сервера. Посетители увидят лишь страницы входа и регистрации. -admin_setting.description=Создание учётной записи администратора необязательно. Первый зарегистрированный пользователь автоматически становится администратором. +admin_setting.description=Создание учётной записи администратора необязательно. Первый зарегистрировавшийся пользователь автоматически станет администратором. admin_title=Учётная запись администратора admin_name=Логин администратора admin_password=Пароль @@ -335,7 +338,7 @@ app_slogan_helper = Укажите лозунг вашего сервера, л [home] uname_holder=Логин или адрес эл. почты password_holder=Пароль -switch_dashboard_context=Переключить контекст панели управления +switch_dashboard_context=Сменить просматриваемое пространство my_repos=Репозитории show_more_repos=Показать больше репозиториев… collaborative_repos=Совместные репозитории @@ -352,7 +355,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=Показаны только публичные @@ -394,7 +397,7 @@ disable_register_mail=Подтверждение регистрации по э manual_activation_only=Обратитесь к администратору сайта для завершения активации. remember_me=Запомнить это устройство remember_me.compromised=Токен входа более не действителен, что может указывать на компрометацию учётной записи. Пожалуйста, проверьте свою учётную запись на необычные действия. -forgot_password_title=Восстановить пароль +forgot_password_title=Восстановление пароля forgot_password=Забыли пароль? sign_up_now=Нужна учётная запись? Зарегистрируйтесь. sign_up_successful=Учётная запись успешно создана. Добро пожаловать! @@ -402,7 +405,7 @@ confirmation_mail_sent_prompt=Новое письмо для подтвержд must_change_password=Обновите пароль allow_password_change=Требовать смену пароля пользователем (рекомендуется) reset_password_mail_sent_prompt=Письмо с подтверждением отправлено на %s. Пожалуйста, проверьте входящую почту в течение %s, чтобы завершить процесс восстановления учётной записи. -active_your_account=Активируйте свою учётную запись +active_your_account=Активация учётной записи account_activated=Учётная запись активирована prohibit_login=Вход запрещён prohibit_login_desc=Вход в вашу учётную запись запрещен. Свяжитесь с администратором сайта. @@ -410,7 +413,7 @@ resent_limit_prompt=Недавно вы уже запрашивали письм has_unconfirmed_mail=Здравствуйте, %s! У вас есть неподтвержденный адрес эл. почты (%s). Если вам не приходило письмо с подтверждением или нужно выслать новое письмо, нажмите на кнопку ниже. resend_mail=Нажмите здесь, чтобы отправить письмо для активации ещё раз email_not_associate=Этот адрес эл. почты не связан ни с одной учётной записью. -send_reset_mail=Отправить письмо для восстановления учётной записи +send_reset_mail=Отправить восстановление пароля reset_password=Восстановление учётной записи invalid_code=Код подтверждения недействителен или истёк. invalid_code_forgot_password=Ваш код подтверждения недействителен или истек. Нажмите здесь для начала новой сессии. @@ -430,9 +433,9 @@ tab_signin = Войти tab_signup = Зарегистрироваться tab_openid=OpenID oauth_signup_tab=Зарегистрировать новую учётную запись -oauth_signup_title=Полная новая учётная запись -oauth_signup_submit=Полная учётная запись -oauth_signin_tab=Ссылка на существующую учётную запись +oauth_signup_title=Завершение регистрации учётной записи +oauth_signup_submit=Завершить регистрацию +oauth_signin_tab=Привязать существующую уч. запись oauth_signin_title=Войдите, чтобы авторизовать связанную учётную запись oauth_signin_submit=Привязать учётную запись oauth.signin.error=Произошла ошибка при обработке запроса авторизации. Если эта ошибка повторяется, обратитесь к администратору сайта. @@ -461,6 +464,11 @@ change_unconfirmed_email_summary = Измените адрес эл. почты, change_unconfirmed_email_error = Невозможно изменить адрес почты: %v last_admin = Невозможно удалить единственного администратора. Всегда должен оставаться хотя бы один администратор. change_unconfirmed_email = Если при регистрации был введён неправильный адрес, его можно изменить ниже, и письмо с подтверждением будет выслано на исправленный адрес. +hint_register = Нет учётной записи? Зарегистрируйтесь. +sign_up_button = Зарегистрироваться. +back_to_sign_in = Назад ко входу +sign_in_openid = Продолжить с OpenID +hint_login = Уже есть учётная запись? Войдите! [mail] view_it_on=Посмотреть на %s @@ -477,7 +485,7 @@ activate_email=Подтвердите свой адрес эл. почты activate_email.title=%s, пожалуйста, подтвердите свой адрес эл. почты activate_email.text=Для подтверждения эл. почты перейдите по следующей ссылке в течение %s: -register_notify=Добро пожаловать в Forgejo +register_notify_prev9=Добро пожаловать в Forgejo register_notify.title=%[1]s, добро пожаловать в %[2]s register_notify.text_1=это письмо с вашим подтверждением регистрации в %s! register_notify.text_2=Теперь вы можете войти в учётную запись, используя логин: %s @@ -696,7 +704,7 @@ avatar=Аватар ssh_gpg_keys=Ключи SSH / GPG social=Учётные записи в соцсетях applications=Приложения -orgs=Управление организациями +orgs=Организации repos=Репозитории delete=Удалить учётную запись twofa=Двухфакторная аутентификация (TOTP) @@ -707,7 +715,7 @@ webauthn=Двухфакторная аутентификация (ключами public_profile=Публичный профиль biography_placeholder=Расскажите немного о себе! (Можно использовать Markdown) -location_placeholder=Поделитесь своим приблизительным местоположением с другими +location_placeholder=Пусть все знают, откуда вы profile_desc=Как ваш профиль будет отображаться для других пользователей. Ваш основной адрес эл. почты будет использоваться для уведомлений, восстановления пароля и веб-операций с Git. password_username_disabled=Нелокальным пользователям запрещено изменение их имени пользователя. Для получения более подробной информации обратитесь к администратору сайта. full_name=Полное имя @@ -745,7 +753,7 @@ comment_type_group_pull_request_push=Добавленные коммиты comment_type_group_project=Проект comment_type_group_issue_ref=Ссылка на задачу saved_successfully=Ваши настройки успешно сохранены. -privacy=Приватность +privacy=Конфиденциальность keep_activity_private=Скрыть активность со страницы профиля keep_activity_private_popup=Ваша активность будет видна только вам и администраторам сервера @@ -770,8 +778,8 @@ password_change_disabled=Нелокальные учётные записи не emails=Адреса эл. почты manage_emails=Управление адресами эл. почты -manage_themes=Выберите тему по умолчанию -manage_openid=Управление адресами OpenID +manage_themes=Тема по умолчанию +manage_openid=Адреса OpenID email_desc=Ваш основной адрес эл. почты будет использоваться для уведомлений, восстановления пароля и, если он не скрыт, для действий с Git в веб-интерфейсе. theme_desc=Это будет темой по умолчанию для всего сайта. primary=Основной @@ -779,7 +787,7 @@ activated=Активирован requires_activation=Требуется активация primary_email=Сделать основным activate_email=Отправить активацию -activations_pending=Ожидает активации +activations_pending=Ожидают активации can_not_add_email_activations_pending=Ожидается активация. Если хотите добавить новый почтовый ящик, попробуйте еще раз через несколько минут. delete_email=Удалить email_deletion=Удалить адрес эл. почты @@ -791,7 +799,7 @@ openid_deletion=Удалить OpenID URI openid_deletion_desc=После удаления адреса OpenID вы не сможете войти в вашу учётную запись с его помощью. Вы уверены? openid_deletion_success=Адрес OpenID удален. add_new_email=Добавить адрес эл. почты -add_new_openid=Добавить новый OpenID URI +add_new_openid=Добавить новый URI OpenID add_email=Добавить адрес эл. почты add_openid=Добавить адрес OpenID add_email_confirmation_sent=Письмо для подтверждения отправлено на «%s». Пожалуйста, проверьте ваш почтовый ящик в течение %s, чтобы завершить процесс подтверждения. @@ -881,7 +889,7 @@ social_desc=Эти учётные записи социальных сетей unbind=Удалить связь unbind_success=Учётная запись социальной сети успешно удалена. -manage_access_token=Управление токенами +manage_access_token=Токены доступа generate_new_token=Создать новый токен tokens_desc=Эти токены предоставляют доступ к вашей учётной записи с помощью Forgejo API. token_name=Имя токена @@ -916,7 +924,7 @@ create_oauth2_application_button=Создать приложение create_oauth2_application_success=Вы успешно создали новое приложение OAuth2. update_oauth2_application_success=Изменения настроек приложения OAuth2 успешно применены. oauth2_application_name=Имя приложения -oauth2_redirect_uris=URI для перенаправления. Используйте новую строку для каждого URI. +oauth2_redirect_uris=URI перенаправлений. Размещайте URI на отдельных строках. save_application=Сохранить oauth2_client_id=ИД клиента oauth2_client_secret=Клиентский ключ @@ -959,11 +967,11 @@ webauthn_delete_key=Удалить ключ безопасности webauthn_delete_key_desc=Если удалить ключ безопасности, его больше не выйдет использовать для входа. Продолжить? webauthn_key_loss_warning=Потеря ключей безопасности приведёт к утрате доступа к учётной записи. -manage_account_links=Управление привязанными учётными записями +manage_account_links=Привязанные учетные записи manage_account_links_desc=Эти сторонние учётные записи привязаны к вашей учётной записи Forgejo. account_links_not_available=У вас нет привязанных сторонних учётных записей. link_account=Привязать учётную запись -remove_account_link=Удалить привязанный аккаунт +remove_account_link=Удалить привязанную учётную запись remove_account_link_desc=Удаление привязанной учётной записи отменит её доступ к вашей учётной записи Forgejo. Продолжить? remove_account_link_success=Привязанная учётная запись удалена. @@ -972,7 +980,7 @@ orgs_none=Вы не состоите ни в одной организации. repos_none=Вы не владеете ни одним репозиторием. delete_account=Удаление учётной записи -delete_prompt=Эта операция навсегда удалит вашу учётную запись. Это НЕВОЗМОЖНО будет отменить. +delete_prompt=Эта операция навсегда удалит вашу учётную запись. Её НЕВОЗМОЖНО отменить. delete_with_all_comments=Ваша учётная запись младше %s. Чтобы избежать комментариев к плану, все комментарии к ней будут удалены. confirm_delete_account=Подтвердить удаление delete_account_title=Удалить эту учётную запись @@ -984,13 +992,13 @@ email_notifications.disable=Отключить уведомления по по email_notifications.submit=Задать настройку уведомлений email_notifications.andyourown=И ваши собственные уведомления -visibility=Видимость пользователя +visibility=Видимость профиля visibility.public=Публичный -visibility.public_tooltip=Видимый для всех +visibility.public_tooltip=Виден всем, кто может открыть этот сайт visibility.limited=Ограниченный -visibility.limited_tooltip=Виден только выполнившим вход пользователям -visibility.private=Приватный -visibility.private_tooltip=Видно только участникам организаций, к которым вы присоединились +visibility.limited_tooltip=Виден только зарегистрированным пользователям сайта +visibility.private=Частный +visibility.private_tooltip=Виден только участникам организаций, в которых вы состоите blocked_users_none = Заблокированных пользователей нет. user_block_success = Пользователь заблокирован. oauth2_application_locked = Forgejo предварительно регистрирует некоторые приложения OAuth2 при запуске, если это включено в конфигурации. Для избежания неожиданного поведения их нельзя удалять или редактировать. Ознакомиться с подробностями можно в документации OAuth2. @@ -1012,6 +1020,9 @@ pronouns_custom = Другие pronouns = Местоимения pronouns_unspecified = Не указаны language.title = Язык по умолчанию +keep_activity_private.description = Ваша публичная активность будет видна только вам и администраторам сервера. +language.description = Выбранный язык будет сохранён в вашей уч. записи и будет использован по умолчанию после входа. +language.localization_project = Помогите с переводом Forgejo на свой язык! Подробнее. [repo] owner=Владелец @@ -1109,7 +1120,7 @@ transfer.accept_desc=Переместить в «%s» transfer.reject=Отказаться от передачи transfer.reject_desc=Отменить перемещение в «%s» -desc.private=Приватный +desc.private=Частный desc.public=Публичный desc.template=Шаблон desc.internal=Внутренний @@ -1257,6 +1268,7 @@ view_git_blame=Показать git blame video_not_supported_in_browser=Ваш браузер не поддерживает тэг HTML5 «video». audio_not_supported_in_browser=Ваш браузер не поддерживает тэг HTML5 «audio». stored_lfs=Хранится Git LFS +stored_annex=Хранится Git Annex symbolic_link=Символическая ссылка executable_file=Исполняемый файл commit_graph=Граф коммитов @@ -1280,6 +1292,7 @@ editor.upload_file=Загрузить файл editor.edit_file=Редактировать файл editor.preview_changes=Просмотр изменений editor.cannot_edit_lfs_files=LFS файлы невозможно редактировать в веб-интерфейсе. +editor.cannot_edit_annex_files=Annex файлы невозможно редактировать в веб-интерфейсе. editor.cannot_edit_non_text_files=Двоичные файлы нельзя редактировать в веб-интерфейсе. editor.edit_this_file=Редактировать файл editor.this_file_locked=Файл заблокирован @@ -1298,10 +1311,10 @@ editor.add_tmpl=Добавить «» editor.add=Добавить %s editor.update=Обновить %s editor.delete=Удалить %s -editor.patch=Применить патч +editor.patch=Применить правку editor.patching=Исправление: editor.fail_to_apply_patch=Невозможно применить патч «%s» -editor.new_patch=Новый патч +editor.new_patch=Новая правка editor.commit_message_desc=Добавьте необязательное расширенное описание… editor.signoff_desc=Добавить трейлер Signed-off-by с автором коммита в конце сообщения коммита. editor.commit_directly_to_this_branch=Сделайте коммит напрямую в ветку %s. @@ -1329,7 +1342,7 @@ editor.fail_to_update_file=Не удалось обновить/создать editor.fail_to_update_file_summary=Ошибка: editor.push_rejected_no_message=Изменение отклонено сервером без сообщения. Пожалуйста, проверьте Git-хуки. editor.push_rejected=Изменение отклонено сервером. Пожалуйста, проверьте Git-хуки. -editor.push_rejected_summary=Полное сообщение об отклонении: +editor.push_rejected_summary=Причина отклонения: editor.add_subdir=Добавить каталог… editor.unable_to_upload_files=Не удалось загрузить файлы в «%s» из-за ошибки: %v editor.upload_file_is_locked=Файл «%s» заблокирован %s. @@ -1423,25 +1436,25 @@ issues.filter_milestones=Фильтр этапов issues.filter_projects=Фильтровать проекты issues.filter_labels=Фильтр меток issues.filter_reviewers=Фильтр рецензентов -issues.new=Добавить задачу +issues.new=Создать задачу issues.new.title_empty=Заголовок не может быть пустым issues.new.labels=Метки issues.new.no_label=Нет меток issues.new.clear_labels=Очистить метки issues.new.projects=Проекты -issues.new.clear_projects=Очистить проекты +issues.new.clear_projects=Удалить из проектов issues.new.no_projects=Нет проекта issues.new.open_projects=Открытые проекты issues.new.closed_projects=Закрытые проекты issues.new.no_items=Нет элементов issues.new.milestone=Этап issues.new.no_milestone=Нет этапа -issues.new.clear_milestone=Очистить этап +issues.new.clear_milestone=Удалить из этапа issues.new.open_milestone=Открытые этапы issues.new.closed_milestone=Завершённые этапы issues.new.assignees=Назначенные -issues.new.clear_assignees=Убрать ответственных -issues.new.no_assignees=Нет назначенных лиц +issues.new.clear_assignees=Снять назначения +issues.new.no_assignees=Нет назначенных issues.new.no_reviewers=Нет рецензентов issues.choose.get_started=Начать issues.choose.open_external_link=Открыть @@ -1449,7 +1462,7 @@ issues.choose.blank=По умолчанию issues.choose.blank_about=Создать запрос из шаблона по умолчанию. issues.choose.ignore_invalid_templates=Некорректные шаблоны были проигнорированы issues.choose.invalid_templates=Найден(ы) %v неверный(х) шаблон(ов) -issues.choose.invalid_config=Конфигурация задачи содержит ошибки: +issues.choose.invalid_config=Ошибки в конфигурации задачи: issues.no_ref=Нет связанной ветки или тега issues.create=Создать задачу issues.new_label=Новая метка @@ -1494,7 +1507,7 @@ issues.filter_milestone_open=Открытые этапы issues.filter_milestone_closed=Завершённые этапы issues.filter_project=Проект issues.filter_project_all=Все проекты -issues.filter_project_none=Нет проекта +issues.filter_project_none=Без проекта issues.filter_assignee=Назначено issues.filter_assginee_no_select=Все назначения issues.filter_assginee_no_assignee=Нет ответственного @@ -1525,9 +1538,9 @@ issues.action_open=Открыть issues.action_close=Закрыть issues.action_label=Метка issues.action_milestone=Этап -issues.action_milestone_no_select=Нет этапа -issues.action_assignee=Ответственный -issues.action_assignee_no_select=Нет ответственного +issues.action_milestone_no_select=Без этапа +issues.action_assignee=Назначенный +issues.action_assignee_no_select=Без назначенного issues.action_check=Выбрать/отменить выбор issues.action_check_all=Выбрать/отменить выбор всех элементов issues.opened_by=открыта %[1]s %[3]s @@ -1563,8 +1576,8 @@ issues.reopened_at=`задача была открыта снова %[2]s` issues.ref_issue_from=`упоминание этой задачи %[4]s %[2]s` issues.ref_pull_from=`упоминание этого запроса слияния %[4]s %[2]s` -issues.ref_closing_from=`упоминание запроса слияния %[4]s, закрывающего эту задачу %[2]s` -issues.ref_reopening_from=`упоминание запроса слияния %[4]s, повторно открывающего эту задачу %[2]s` +issues.ref_closing_from=`упоминание из запроса на слияние %[4]s, который закроет эту задачу %[2]s` +issues.ref_reopening_from=`упоминание из запроса на слияние %[4]s, который повторно откроет эту задачу %[2]s` issues.ref_closed_from=`закрыл этот запрос %[4]s %[2]s` issues.ref_reopened_from=`задача была открыта снова %[4]s %[2]s` issues.ref_from=`из %[1]s` @@ -1756,7 +1769,7 @@ pulls.desc=Включить запросы на слияние и проверк pulls.new=Создать запрос pulls.view=Просмотр запроса на слияние pulls.compare_changes=Новый запрос на слияние -pulls.allow_edits_from_maintainers=Разрешить редактирование сопровождающими +pulls.allow_edits_from_maintainers=Разрешить правки от сопровождающих pulls.allow_edits_from_maintainers_desc=Пользователи с доступом на запись в основную ветку могут отправлять изменения и в эту ветку pulls.allow_edits_from_maintainers_err=Не удалось обновить pulls.compare_changes_desc=Сравнить две ветки и создать запрос на слияние для изменений. @@ -1866,7 +1879,7 @@ pulls.outdated_with_base_branch=Эта ветка отстает от базов pulls.close=Закрыть запрос на слияние pulls.closed_at=`закрыл этот запрос на слияние %[2]s` pulls.reopened_at=`переоткрыл этот запрос на слияние %[2]s` -pulls.cmd_instruction_hint=`Показать инструкции для командной строки.` +pulls.cmd_instruction_hint=Показать инструкции для командной строки pulls.cmd_instruction_merge_title=Слейте изменения pulls.cmd_instruction_merge_desc=Слейте изменения и отправьте их обратно. pulls.clear_merge_message=Очистить сообщение о слиянии @@ -2087,13 +2100,13 @@ settings.use_internal_wiki=Использовать встроенную вик settings.use_external_wiki=Использовать внешнюю вики settings.external_wiki_url=Ссылка на внешнюю вики settings.external_wiki_url_error=URL внешней вики не является корректным URL. -settings.external_wiki_url_desc=Посетители будут перенаправлены на URL, когда они кликнут по вкладке. +settings.external_wiki_url_desc=Посетители будут перенаправлены по указанному адресу вики при открытии вкладки. settings.issues_desc=Включить систему задач settings.use_internal_issue_tracker=Использовать встроенную систему задач settings.use_external_issue_tracker=Использовать внешнюю систему задач settings.external_tracker_url=Ссылка на внешнюю систему отслеживания задач settings.external_tracker_url_error=URL внешнего баг-трекера не является корректным URL. -settings.external_tracker_url_desc=Посетители будут перенаправлены на URL, когда они кликнут по вкладке. +settings.external_tracker_url_desc=Посетители будут перенаправлены по указанному адресу трекера задач при открытии вкладки. settings.tracker_url_format=Формат ссылки внешней системы отслеживания задач settings.tracker_url_format_error=Формат URL внешнего баг-трекера некорректен. settings.tracker_issue_style=Формат нумерации во внешней системе задач @@ -2447,7 +2460,7 @@ settings.lfs_locks_no_locks=Нет блокировки settings.lfs_lock_file_no_exist=Заблокированный файл не существует в ветке по умолчанию settings.lfs_force_unlock=Принудительная разблокировка settings.lfs_pointers.found=Найдено %d указатель(ей) блоков - присоединено %d, %d не привязано (%d отсутствует в хранилище) -settings.lfs_pointers.sha=Blob SHA +settings.lfs_pointers.sha=Хеш blob'а settings.lfs_pointers.oid=OID settings.lfs_pointers.inRepo=В репозитории settings.lfs_pointers.exists=Существуют в хранилище @@ -2611,7 +2624,7 @@ topic.done=Сохранить topic.count_prompt=Нельзя выбрать более 25 тем topic.format_prompt=Темы должны начинаться с буквы или цифры и могут содержать дефисы («-») и точки («.»). Длина темы не должна превышать 35 символов. Все буквы должны быть строчными. -find_file.go_to_file=Перейти к файлу +find_file.go_to_file=Найти файл find_file.no_matching=Совпадающих файлов не найдено error.csv.too_large=Не удается отобразить этот файл, потому что он слишком большой. @@ -2647,7 +2660,7 @@ archive.title = Этот репозиторий архивирован. Вы м archive.title_date = С %s этот репозиторий архивирован. Вы можете просматривать его содержимое или клонировать, но не добавлять новые комиты, открывать задачи или запросы на слияние. migrate.forgejo.description = Перенести данные с codeberg.org или другого сервера Forgejo. generated = Сгенерированный -pulls.review_only_possible_for_full_diff = Отзыв возможен только при просмотре всех различий +pulls.review_only_possible_for_full_diff = Оставить отзыв можно только при просмотре всех различий diff.comment.add_line_comment = Добавить комментарий к строке tree_path_not_found_tag = Путь %[1]s отсутствует в теге %[2]s migrate_options_lfs_endpoint.placeholder = Если не заполнено, конечная точка будет определена из URL клонирования @@ -2767,6 +2780,9 @@ n_release_one = %s выпуск n_release_few = %s выпусков subscribe.issue.guest.tooltip = Войдите, чтобы подписаться на эту задачу. subscribe.pull.guest.tooltip = Войдите, чтобы подписаться на это слияние. +issues.author.tooltip.issue = Автор этой задачи. +issues.author.tooltip.pr = Автор этого запроса слияния. +activity.commit = Кол-во коммитов [graphs] @@ -3018,14 +3034,14 @@ users.update_profile_success=Профиль учётной записи обно users.edit_account=Изменение учётной записи users.max_repo_creation=Ограничение количества репозиториев users.max_repo_creation_desc=(Установите -1 для использования стандартного глобального значения предела) -users.is_activated=Эта учётная запись активирована -users.prohibit_login=Вход запрещён -users.is_admin=Является администратором -users.is_restricted=Ограниченная -users.allow_git_hook=Может создавать Git-хуки +users.is_activated=Подтверждённая уч. запись +users.prohibit_login=Замороженная уч. запись +users.is_admin=Уч. запись администратора +users.is_restricted=Ограниченная уч. запись +users.allow_git_hook=Разрешено создание Git-хуков users.allow_git_hook_tooltip=Git hooks выполняются от пользователя ОС, под которым работает Forgejo. Они будут иметь такой же доступ к хосту. Из-за этого пользователи с правами на Git hook будут иметь возможность получать доступ и модифицировать все репозитории в Forgejo, а также базу данных Forgejo. Следовательно, они также могут получить права администратора Forgejo. -users.allow_import_local=Может импортировать локальные репозитории -users.allow_create_organization=Может создавать организации +users.allow_import_local=Разрешён импорт локальных репозиториев +users.allow_create_organization=Разрешено создание организаций users.update_profile=Обновить учётную запись users.delete_account=Удалить эту учётную запись users.cannot_delete_self=Вы не можете удалить свою учётную запись @@ -3071,7 +3087,7 @@ orgs.new_orga=Новая организация repos.repo_manage_panel=Управление репозиториями repos.unadopted=Непринятые репозитории -repos.unadopted.no_more=Больше непринятых репозиториев не найдено +repos.unadopted.no_more=Непринятые репозитории не найдены. repos.owner=Владелец repos.name=Название repos.private=Частный @@ -3401,7 +3417,7 @@ notices.system_notice_list=Системные оповещения notices.view_detail_header=Подробности уведомления notices.operations=Операции notices.select_all=Выбрать всё -notices.deselect_all=Отменить выделение +notices.deselect_all=Снять выделение notices.inverse_selection=Инверсия выделения notices.delete_selected=Удалить выбранные notices.delete_all=Удалить все уведомления @@ -3438,6 +3454,16 @@ auths.tip.gitlab_new = Создайте новое приложение в https monitor.queue.review_add = Подробности / добавить обработчики auths.default_domain_name = Домен по умолчанию для адресов эл. почты config.app_slogan = Лозунг сервера +config.cache_test = Проверить кэш +config.cache_test_slow = Кэш проверен успешно, но ответ был медленным: %s. +config.cache_test_failed = Не удалось проверить кэш: %v. +config.cache_test_succeeded = Кэш был проверен успешно, ответ получен за %v. +users.activated.description = Подтверждение учётной записи по эл. почте. Пользователь неподтверждённой уч. записи не сможет войти, не выполнив подтверждение. +users.block.description = Заблокировать учётную запись, чтобы препятствовать её использованию и запретить вход. +users.organization_creation.description = Разрешить создание новых организаций на сервере. +users.local_import.description = Разрешить импортировать репозитории из локальной ФС сервера. Это может нести угрозу безопасности. +users.admin.description = Предоставить полный доступ к административному функционалу веб-интерфейса и API. +users.restricted.description = Разрешить взаимодействие с лишь репозиториями и организациями, в которых этот пользователь состоит в качестве соучастника. Предотвращает доступ к публичным репозиториям на этом сервере. [action] @@ -3503,7 +3529,7 @@ pib = ПиБ eib = ЭиБ [dropzone] -default_message=Перетащите файл или кликните сюда для загрузки. +default_message=Перетащите сюда файлы или нажмите для загрузки. invalid_input_type=Вы не можете загружать файлы этого типа. file_too_big=Размер файла ({{filesize}} МБ) больше чем максимальный размер ({{maxFilesize}} МБ). remove_file=Удалить файл @@ -3525,7 +3551,7 @@ no_subscriptions=Нет подписок [gpg] default_key=Подписано ключом по умолчанию error.extract_sign=Не удалось извлечь подпись -error.generate_hash=Не удалось создать хэш коммита +error.generate_hash=Не удалось создать хеш коммита error.no_committer_account=Учётная запись с эл. почтой этого коммитера не найдена error.no_gpg_keys_found=Не найден ключ, соответствующий данной подписи error.not_signed_commit=Неподписанный коммит @@ -3803,6 +3829,13 @@ runs.status_no_select = Любое состояние runs.no_matching_online_runner_helper = Нет работающего исполнителя с меткой: %s runs.no_job_without_needs = Рабочий поток должен содержать хотя бы одну задачу без зависимостей. runs.no_job = Рабочий поток должен включать хотя бы одну задачу +workflow.dispatch.trigger_found = Этот рабочий поток срабатывает на события workflow_dispatch. +workflow.dispatch.use_from = Использовать рабочий поток из +workflow.dispatch.run = Выполнить рабочий поток +workflow.dispatch.success = Выполнение рабочего потока запрошено успешно. +workflow.dispatch.input_required = Требовать значение для поля «%s». +workflow.dispatch.invalid_input_type = Неизвестный тип поля «%s». +workflow.dispatch.warn_input_limit = Отображаются только первые %d полей. [projects] type-1.display_name=Индивидуальный проект @@ -3832,7 +3865,7 @@ recent_commits.what = недавние коммиты [search] search = Поиск... -fuzzy_tooltip = Включать результаты, достаточно похожие на запрос +fuzzy_tooltip = Включает результаты, достаточно похожие на запрос, даже при наличии неточностей type_tooltip = Тип поиска fuzzy = Приблизительный match = Точный @@ -3852,12 +3885,17 @@ code_search_unavailable = Поиск по коду сейчас недоступ runner_kind = Поиск исполнителей... code_search_by_git_grep = Эти результаты получены через «git grep». Результатов может быть больше, если администратор сервера включит индексатор кода. exact = Точный -exact_tooltip = Включать только результаты, точно соответствующие запросу +exact_tooltip = Включает только результаты, в точности соответствующие запросу issue_kind = Поиск задач... pull_kind = Поиск слияний... +union_tooltip = Включает результаты с совпавшими ключевыми словами, разделёнными пробелами +union = Обычный [markup] filepreview.line = Строка %[1]d в %[2]s filepreview.lines = Строки с %[1]d по %[2]d в %[3]s -filepreview.truncated = Предпросмотр был обрезан \ No newline at end of file +filepreview.truncated = Предпросмотр был обрезан + +[translation_meta] +test = хи-хи \ No newline at end of file diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini index a6fb37c2bb..132f9be5ee 100644 --- a/options/locale/locale_si-LK.ini +++ b/options/locale/locale_si-LK.ini @@ -324,7 +324,7 @@ activate_account.text_2=%sතුළ ඔබගේ ගිණුම සක activate_email=ඔබගේ විද්යුත් තැපැල් ලිපිනය සත්යාපනය කරන්න activate_email.text=තුළ ඔබගේ විද්යුත් තැපැල් ලිපිනය සත්යාපනය කිරීමට පහත සබැඳිය ක්ලික් කරන්න %s: -register_notify=ගිටියා වෙත සාදරයෙන් පිළිගනිමු +register_notify_prev9=ගිටියා වෙත සාදරයෙන් පිළිගනිමු register_notify.title=%[1]s, %[2]s වෙත සාදරයෙන් පිළිගනිමු register_notify.text_1=මෙය %sසඳහා ඔබගේ ලියාපදිංචි තහවුරු කිරීමේ විද්යුත් තැපෑලයි! register_notify.text_2=ඔබට දැන් පරිශීලක නාමය හරහා පිවිසිය හැකිය: %s. @@ -890,6 +890,7 @@ file_copy_permalink=පිටපත් මාමලින්ක් video_not_supported_in_browser=ඔබගේ බ්රව්සරය HTML5 'වීඩියෝ' ටැගය සඳහා සහය නොදක්වයි. audio_not_supported_in_browser=ඔබගේ බ්රව්සරය HTML5 'ශ්රව්ය' ටැගය සඳහා සහය නොදක්වයි. stored_lfs=Git LFS සමඟ ගබඩා +stored_annex=Git Annex සමඟ ගබඩා symbolic_link=සංකේතාත්මක සබැඳිය commit_graph=ප්රස්තාරය කැප commit_graph.select=ශාඛා තෝරන්න @@ -907,6 +908,7 @@ editor.upload_file=ගොනුව උඩුගත කරන්න editor.edit_file=ගොනුව සංස්කරණය editor.preview_changes=වෙනස්කම් පෙරදසුන editor.cannot_edit_lfs_files=LFS ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක. +editor.cannot_edit_annex_files=Annex ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක. editor.cannot_edit_non_text_files=ද්විමය ගොනු වෙබ් අතුරු මුහුණත තුළ සංස්කරණය කළ නොහැක. editor.edit_this_file=ගොනුව සංස්කරණය editor.this_file_locked=ගොනුවට අගුළු ලා ඇත diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini index d37f909c40..068781beec 100644 --- a/options/locale/locale_sk-SK.ini +++ b/options/locale/locale_sk-SK.ini @@ -425,7 +425,7 @@ activate_account.text_2=Pre aktiváciu vašeho účtu kliknite, prosím, na nasl activate_email=Overte svoju e-mailovú adresu activate_email.text=Pre overenie vašej e-mailovej adresy kliknite, prosím, na nasledovný odkaz do %s: -register_notify=Vitajte v Forgejo +register_notify_prev9=Vitajte v Forgejo register_notify.title=%[1]s, vitajte v %[2]s register_notify.text_1=toto je e-mail potvrdzujúci vašu registráciu pre %s! register_notify.text_2=Teraz sa môžete prihlásiť s používateľským menom: %s. @@ -1011,6 +1011,7 @@ view_git_blame=Zobraziť Git Blame video_not_supported_in_browser=Váš prehliadač nepodporuje HTML5 tag 'video'. audio_not_supported_in_browser=Váš prehliadač nepodporuje HTML5 tag 'audio'. stored_lfs=Uložené pomocou Git LFS +stored_annex=Uložené pomocou Git Annex symbolic_link=Symbolický odkaz commit_graph=Graf commitov line=riadok diff --git a/options/locale/locale_sl.ini b/options/locale/locale_sl.ini index 962b1d0d72..6ddda5fc64 100644 --- a/options/locale/locale_sl.ini +++ b/options/locale/locale_sl.ini @@ -537,7 +537,7 @@ activate_account.text_1 = Pozdravljeni %[1]s, hvala za registracijo na %[ admin.new_user.subject = Prijavil se je nov uporabnik %s admin.new_user.user_info = Informacije o uporabniku admin.new_user.text = Prosimo, da klikni tukaj za upravljanje tega uporabnika iz upraviteljske plošče. -register_notify = Dobrodošli v Forgejo +register_notify_prev9 = Dobrodošli v Forgejo register_notify.title = %[1]s, dobrodošli v %[2]s register_notify.text_2 = V svoj račun se lahko prijavite z uporabniškim imenom: %s register_notify.text_3 = Če je ta račun namesto vas ustvaril nekdo drug, boste morali najprej nastaviti svoje geslo. diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini new file mode 100644 index 0000000000..e091f91a68 --- /dev/null +++ b/options/locale/locale_sr-SP.ini @@ -0,0 +1,732 @@ +[common] +home=Почетна +dashboard=Контролни панел +explore=Преглед +help=Помоћ +sign_in=Пријавите Се +sign_out=Одјава +register=Регистрација +website=Веб-страница +version=Верзија +page=Страница +template=Шаблон +language=Језик +signed_in_as=Пријављени сте као + +username=Корисничко име +password=Лозинка + + +repository=Спремиште +organization=Организација +mirror=Огледало +new_repo=Ново спремиште +new_migrate=Нова миграција +new_mirror=Ново огледало +new_org=Нова организација +manage_org=Управљање организацијама +account_settings=Подешавања налога +settings=Подешавања + + +activities=Активности +pull_requests=Захтеви за спајање +issues=Дискусије + +cancel=Откажи + + + + + + +[error] + +[startpage] + +[install] +install=Инсталација +db_title=Подешавања базе +db_type=Тип базе података +host=Хост +password=Лозинка +db_name=Име базе података +path=Пут + +repo_path=Пут до корена спремишта +log_root_path=Пут до журнала + +optional_title=Напредна подешавања +smtp_host=SMTP сервер +federated_avatar_lookup_popup=Омогућите federated avatars lookup да би сте користили федеративни сервис помоћу libravatar. +enable_captcha_popup=Тражи Captcha приликом регистрације корисника. +admin_password=Лозинка +confirm_password=Потврдите лозинку +install_btn_confirm=Успостави Gitea +test_git_failed=Команда 'git' није успела: %v + +[home] +password_holder=Лозинка +switch_dashboard_context=Пребаците контекст контролној панели +collaborative_repos=Заједничка спремишта +my_orgs=Моје организације +my_mirrors=Моја огледала +view_home=Прикажи %s + + + +issues.in_your_repos=У вашим спремиштима + +[explore] +repos=Спремишта +users=Корисници +search=Претрага + +[auth] +register_helper_msg=Већ имате налог? Пријавите се! +active_your_account=Активирајте ваш налог +has_unconfirmed_mail=Здраво, %s! Имате непотврђену адресу е-поште (%s). Ако вам није стигло писмо са потврдом или морате да пошаљете нову поруку, притисните на пратеће дугме. +resend_mail=Кликните овде да поново пошаљете писмо + +[mail] + +activate_account=Молимо вас активирајте ваш налог + +activate_email=Потврдите вашу адресу е-поште + + + + + + + + + +[modal] +yes=Да +no=Не + +[form] +UserName=Корисничко име +RepoName=Име спремишта +Email=Адреса ел. поште +Password=Лозинка +SSHTitle=Име SSH кључа +HttpsUrl=HTTPS URL адреса +PayloadUrl=URL адреса за слање +TeamName=Име тима +AuthName=Ауторизацијско име +AdminEmail=Адреса е-поште администратора + +NewBranchName=Име нове гране +CommitSummary=Опис за ревизију +CommitMessage=Ревизни текст +CommitChoice=Избор ревизије +TreeName=Пут до датотеке +Content=Садржај + + +require_error=` не може бити празно.` +size_error=` мора бити величине %s.` +min_size_error=` мора да садржи најмање %s карактера.` +max_size_error=` мора да садржи највише %s карактера.` +email_error=` није важећа адреса е-поште.` +url_error=` није исправна URL адреса.` +include_error=` мора да садржи текст '%s'.` +unknown_error=Непозната грешка: + + +auth_failed=Грешка идентитета: %v + + +target_branch_not_exist=Ова грана не постоји. + +[user] +join_on=Регистриран +repositories=Спремишта +activity=Активности +followers=Пратиоци +following=Пратим +follow=Прати +unfollow=Престани да пратиш + + +[settings] +profile=Профил +password=Лозинка +avatar=Аватар +social=Налози на друштвеним мрежама +delete=Уклоните налог + +public_profile=Јавни профил +full_name=Име и презиме +website=Веб страница +location=Локација +update_profile=Ажурирај профил +continue=Настави +cancel=Откажи + +federated_avatar_lookup=Federated Avatar претрага +enable_custom_avatar=Укључи ваш аватар +choose_new_avatar=Изаберите нови аватар +delete_current_avatar=Обришите тренутни аватар + +old_password=Тренутна лозинка +new_password=Нова лозинка + +emails=Адреса ел. поште +email_desc=Ваша главна адреса ће се користити за обавештења и других операција. +primary=Главно + +manage_ssh_keys=Управљање SSH кључева +add_key=Додај кључ +add_new_key=Додај SSH кључ +key_name=Име кључа +key_content=Садржај +add_on=Додато +last_used=Задње корршћено +no_activity=Нема недавних активности +manage_social=Управљање прикључених друштвеним мрежама + +generate_new_token=Генериши нови токен +token_name=Име токена +generate_token=Генериши токен +delete_token=Уклони + + + + + + + +delete_account=Уклоните ваш налог +confirm_delete_account=Потврдите брисање + + + +[repo] +owner=Власник +repo_name=Име спремишта +visibility=Видљивост +fork_repo=Креирај огранак спремишта +fork_from=Огранак од +repo_desc=Опис +repo_lang=Језик +license=Лиценца +create_repo=Ново спремиште +default_branch=Главна грана +mirror_prune=Очисти +watchers=Посматрачи +stargazers=Пратиоци +forks=Огранци + + + + + + +migrate_repo=Мигрирајте спремиште +migrate.permission_denied=Немате права на увезете локално спремиште. +migrate.failed=Миграција није успела: %v + +mirror_from=огледало од +forked_from=изданак од +unwatch=Престани пратити +watch=Прати +unstar=Улкони звезду +star=Волим +fork=Креирај огранак + +no_desc=Нема описа +quick_guide=Кратак водич +clone_this_repo=Клонирај спремиште + +code=Код +branch=Грана +tree=Дрво +filter_branch_and_tag=Профилтрирај по грани или ознаци +branches=Гране +tags=Ознаке +issues=Дискусије +pulls=Захтеви за спајање +labels=Лабеле + +milestones=Фазе +commits=Комити +releases=Издања +file_raw=Датотека +file_history=Историја +file_view_raw=Прегледај саму датотеку +file_permalink=Пермалинк + + +editor.preview_changes=Преглед промена +editor.or=или +editor.commit_changes=Изврши комит промена +editor.add=Додај '%s' +editor.update=Ажурирај '%s' +editor.delete=Уклони '%s' +editor.commit_directly_to_this_branch=Изврши комит директно на %s грану. +editor.create_new_branch=Креирај нову грану за овај комит и поднеси захтев за спајање. +editor.cancel=Откажи +editor.branch_already_exists=Грана '%s' већ постоји за ово спремиште. +editor.no_changes_to_show=Нема никаквих промена. +editor.unable_to_upload_files=Учитање датотеке '%s' није успело са грешкном: %v +editor.upload_files_to_dir=Пошаљи датотеке на '%s' + +commits.commits=Комити +commits.author=Аутор +commits.message=Порука +commits.date=Датум +commits.older=Старије +commits.newer=Новије + + + +issues.new=Нови задатак +issues.new.labels=Лавеле +issues.new.no_label=Нема лабеле +issues.new.clear_labels=Уклони лабеле +issues.new.milestone=Фаза +issues.new.no_milestone=Нема фазе +issues.new.clear_milestone=Уклони фазу +issues.new.open_milestone=Отворене фазе +issues.new.closed_milestone=Затворене фазе +issues.create=Додај задатак +issues.new_label=Нова лабела +issues.create_label=Креирај лабелу +issues.label_templates.title=Преузмите унапред дефинисани скуп лабела +issues.label_templates.helper=Изаберите скуп лабела +issues.label_templates.fail_to_load_file=Није могуће преузети датотеку '%s': %v +issues.open_tab=%d отворено +issues.close_tab=%d затворено +issues.filter_label=Лабела +issues.filter_milestone=Фаза +issues.filter_assignee=Одговорни +issues.filter_type=Тип +issues.filter_type.all_issues=Сви задаци +issues.filter_type.assigned_to_you=Заказано вама +issues.filter_type.created_by_you=креирано од вас +issues.filter_type.mentioning_you=Помењује вас +issues.filter_sort=Сортирај +issues.filter_sort.latest=Најновије +issues.filter_sort.oldest=Најстарије +issues.filter_sort.recentupdate=Недавно ажурирано +issues.filter_sort.leastupdate=Давно ажуриано +issues.filter_sort.mostcomment=Највише коментара +issues.filter_sort.leastcomment=Најмање коментара +issues.opened_by=отворено %[1]s од %[3]s +issues.previous=Претходна +issues.next=Следеће +issues.open_title=Отворено +issues.closed_title=Затворено +issues.num_comments=%d коментара +issues.commented_at=`коментирира %s` +issues.delete_comment_confirm=Да ли желите да избришете овај коментар? +issues.no_content=Још нема садржаја. +issues.close_issue=Затвори +issues.reopen_issue=Поново отвори +issues.create_comment=Коментирај +issues.commit_ref_at=`поменуо овај задатак у комит %[2]s` +issues.poster=Аутор +issues.collaborator=Коаутор +issues.owner=Власник +issues.sign_in_require_desc=Пријавите се да се прикључе у овом разговору. +issues.edit=Уреди +issues.cancel=Откажи +issues.save=Сачувај +issues.label_title=Име лабеле +issues.label_color=Боја лабеле +issues.label_count=%d лабела +issues.label_open_issues=%d отворених задатака +issues.label_edit=Уреди +issues.label_delete=Уклони +issues.num_participants=%d учесника +issues.attachment.open_tab=`Кликните "%s" да видите у новом прозору` +issues.attachment.download=`Кликните да преузмете "%s"` + + +pulls.new=Нови захтев за спајање +pulls.filter_branch=Филтер по грани +pulls.no_results=Нема резултата. +pulls.create=Поднеси захтев за спајање +pulls.merged_title_desc=споји(ла) %[1]d комит(е) из %[2]s у %[3]s %[4]s +pulls.tab_conversation=Дискусија +pulls.tab_commits=Комити +pulls.merged=Спојено +pulls.can_auto_merge_desc=Овај захтев за спајање може бити обављен аутоматски. + +; %[2]s
%[3]s
+ + +milestones.new=Нова фаза +milestones.open_tab=%d отворено +milestones.close_tab=%d затворено +milestones.closed=Затворено %s +milestones.no_due_date=Рок није наведен +milestones.open=Отвори +milestones.close=Затвори +milestones.create=Креирај фазу +milestones.title=Наслов +milestones.desc=Опис +milestones.due_date=Датум завршетка (опционо) +milestones.clear=Уклони +milestones.edit=Ажурирај фазу +milestones.cancel=Откажи + + + +wiki=Вики +wiki.page=Страница +wiki.filter_page=Филтер странице +wiki.save_page=Сачувај страницу +wiki.last_commit_info=%s урећивао ову страницу %s +wiki.edit_page_button=Уреди +wiki.new_page_button=Нова страница +wiki.delete_page_button=Уклони страницу +wiki.page_already_exists=Страница са овим именом већ постоји. +wiki.pages=Странице +wiki.last_updated=Последње ажурирано %s + + + +settings=Подешавања +settings.collaboration.write=За писање +settings.collaboration.read=Читање +settings.collaboration.undefined=Није дефинисано +settings.githooks=Git хуки +settings.basic_settings=Основна подешавања +settings.mirror_settings=Подешавања огледала +settings.update_settings=Примени промене +settings.advanced_settings=Напредна подешавања +settings.external_wiki_url=URL адреса спољног Вики +settings.tracker_url_format=Спољни формат везе система за праћење грешака +settings.tracker_issue_style.numeric=Нумерично +settings.tracker_issue_style.alphanumeric=Алфанумерично +settings.danger_zone=Опасна зона +settings.new_owner_has_same_repo=Нови власник већ има спремиште по истим називом. Молимо вас изаберите друго име. +settings.transfer=Пренеси власништво +settings.transfer_owner=Нови власник +settings.delete=Уклони ово спремиште +settings.delete_notices_1=- Ова операција НЕЋЕ МОЧИ бити укинута. +settings.add_webhook=Додај Webhook +settings.webhook.test_delivery=Провери испоруку +settings.webhook.request=Захтев +settings.webhook.response=Одговор +settings.webhook.headers=Наслови +settings.webhook.body=Тело +settings.githook_edit_desc=Aко Webhook није активан, примерни садржај ће бити представљен. Ако оставите празно, Webhook ће бити онемогућен. +settings.githook_name=Име Hook-а +settings.githook_content=Садржај Hook-а +settings.update_githook=Ажурирај Hook +settings.secret=Тајна +settings.slack_username=Корисничко име +settings.slack_icon_url=URL адреса иконице +settings.event_create=Креирај +settings.event_pull_request=Захтев за спајање +settings.update_webhook=Ажурирај Webhook +settings.recent_deliveries=Недавне испоруке +settings.hook_type=Тип Hook-а +settings.slack_token=Токен +settings.slack_domain=Домен +settings.slack_channel=Канал +settings.deploy_keys=Кључеви за распоређивање +settings.add_deploy_key=Додај кључ за распоређивање +settings.title=Наслов +settings.deploy_key_content=Садржај + +diff.browse_source=Преглед изворни кода +diff.parent=родитељ +diff.commit=комит +diff.show_split_view=Подељен поглед +diff.show_unified_view=Један поглед +diff.stats_desc= %d измењених фајлова са %d додато и %d уклоњено +diff.view_file=Прегледај датотеку +diff.file_suppressed=Разлика између датотеке није приказан због своје велике величине + +release.releases=Издања +release.new_release=Ново издање +release.draft=Нацрт +release.prerelease=Пред-верзија +release.stable=Стабилно +release.edit=уреди +release.source_code=Изворни код +release.tag_name=Име ознаке +release.target=Циљ +release.title=Наслов +release.content=Садржај +release.cancel=Откажи +release.publish=Објави издање +release.save_draft=Сачувај нацрт +release.downloads=Преузимања + + + + + +[org] +org_name_holder=Име организације +org_full_name_holder=Пун назив организације +create_org=Створи Организацију +repo_updated=Ажурирано +people=Особе +teams=Тимови +lower_members=чланови +lower_repositories=спремишта +org_desc=Опис +team_name=Име тима +team_desc=Опис + + +settings=Подешавања +settings.full_name=Пуно име +settings.website=Саит +settings.location=Локација + +settings.update_settings=Ажурирај подешавања +settings.delete=Уклони организацију +settings.delete_account=Уклони ову организацију +settings.confirm_delete_account=Потврди брисање + + +members.membership_visibility=Видљивост: +members.member_role=Улога учесника: +members.owner=Власник +members.member=Члан +members.remove=Уклони +members.leave=Изађи +members.invite_desc=Додја новог члана %s: +members.invite_now=Позовите сада + +teams.join=Придружи се +teams.leave=Изаћи +teams.no_desc=Овај тим нема описа +teams.settings=Подешавања +teams.members=Чланови тима +teams.update_settings=Примени промене +teams.add_team_member=Додај члан тиму +teams.repositories=Тимска спремишта +teams.add_nonexistent_repo=Овакво спремиште не постоји, молим вас прво да га направите. + +[admin] +dashboard=Контролни панел +organizations=Организације +repositories=Спремишта +config=Подешавања +notices=Системска обавештења +monitor=Праћење +first_page=Први +last_page=Последњи +total=Укупно: %d + +dashboard.operation_name=Име операције +dashboard.operation_switch=Пребаци +dashboard.operation_run=Покрени +dashboard.server_uptime=Време непрекидног рада сервера +dashboard.current_goroutine=Тренутнe Goroutine +dashboard.current_memory_usage=Тренутна употреба меморије +dashboard.total_memory_allocated=Укупно меморије алоцирано +dashboard.memory_obtained=Коришћена меморија +dashboard.pointer_lookup_times=Захтева показивача +dashboard.current_heap_usage=Тренутна употреба динамичке меморије +dashboard.heap_memory_obtained=Слободно динамичке меморије +dashboard.heap_memory_idle=Неактиво динамичке меморије +dashboard.heap_memory_in_use=Динамичка меморија у употреби +dashboard.heap_memory_released=Ослобођено динамичке меморије +dashboard.heap_objects=Објекти динамичке меморије +dashboard.bootstrap_stack_usage=Коришћење стек меморије +dashboard.stack_memory_obtained=Слободно стек меморије +dashboard.mspan_structures_usage=Употреба структуре MSpan +dashboard.mspan_structures_obtained=Добијено структуре MSpan +dashboard.mcache_structures_usage=Употреба структурa MCache +dashboard.mcache_structures_obtained=Добијено структурa MCache +dashboard.profiling_bucket_hash_table_obtained=Хеш-таблеа постигнуто за Profiling Bucket +dashboard.gc_metadata_obtained=Добијених метаподатака cакупљању смећа +dashboard.other_system_allocation_obtained=Добијено друга системска меморија +dashboard.next_gc_recycle=Следећа рециклажа cакупљању смећа +dashboard.last_gc_time=Времена од прошлог cакупљању смећа +dashboard.total_gc_time=Укупно време cакупљању смећа +dashboard.total_gc_pause=Укупно време cакупљању смећа +dashboard.last_gc_pause=Задња пауза у cакупљању смећа +dashboard.gc_times=Времена cакупљању смећа + +users.activated=Активиран +users.admin=Администратор +users.repos=Спремишта +users.created=Креирано +users.edit=Уреди +users.auth_source=Извор аутентикације +users.local=Локално + + +orgs.name=Име +orgs.teams=Тимови +orgs.members=Чланови + +repos.owner=Власник +repos.name=Име +repos.private=Приватно +repos.stars=Фаворити +repos.issues=Задаци + + + +auths.name=Име +auths.type=Тип +auths.enabled=Омогућено +auths.updated=Ажурирано +auths.auth_type=Врста провере аутентичности +auths.auth_name=Име провере аутентичности +auths.security_protocol=Протокол безбедности +auths.domain=Домен +auths.host=Хост +auths.port=Порт +auths.bind_password=Bind лозинкa +auths.user_base=База претраживање корисника +auths.user_dn=DN корисника +auths.filter=Филтер корисника +auths.admin_filter=Филтер администратора +auths.smtp_auth=Тип SMTP аутентикације +auths.smtphost=SMTP хост +auths.smtpport=SMTP порт +auths.allowed_domains=Дозвољени домени +auths.skip_tls_verify=Прескочи TLS проверу +auths.pam_service_name=Назив PAM сервиса +auths.enable_auto_register=Омогући аутоматску регистрацију +auths.tips=Савети + +config.server_config=Конфигурација сервера +config.disable_router_log=Онемогући журнал рутера +config.run_mode=Режим извршавања +config.repo_root_path=Пут до корена спремишта +config.static_file_root_path=Пут до статичке датотеке +config.script_type=Врста скрипта +config.reverse_auth_user=Корисничко име при обрнуту аутентикацију + +config.ssh_config=SSH конфигурација +config.ssh_enabled=Омогућено +config.ssh_port=Порт +config.ssh_listen_port=Порт за слушање +config.ssh_root_path=Основни пут +config.ssh_key_test_path=Пут до кључу +config.ssh_keygen_path=Пут до генератор кључева ('ssh-keygen') +config.ssh_minimum_key_size_check=Минимална величина провера кључа +config.ssh_minimum_key_sizes=Минимална величина кључева + + +config.db_config=Конфигурација базе података +config.db_type=Тип +config.db_host=Хост +config.db_name=Име +config.db_path=Пут + +config.service_config=Подешавања сервиса +config.show_registration_button=Прикажи дугме за регистрацију +config.disable_key_size_check=Онемогући проверу на минималној величини кључа +config.active_code_lives=Дужина живота активних кодова + +config.webhook_config=Подешавања Webhook +config.queue_length=Дужина реда +config.deliver_timeout=Време до отказивање слања + +config.mailer_enabled=Омогућено +config.mailer_disable_helo=Онемогући HELO +config.mailer_name=Име +config.mailer_host=Хост +config.mailer_user=Корисник + +config.oauth_config=Подешавања OAuth +config.oauth_enabled=Укључено + +config.cache_config=Подешавања кеша +config.cache_adapter=Кеш адаптер +config.cache_interval=Кеш интервал +config.cache_conn=Кеш на вези + +config.session_config=Подешавања сесије +config.session_provider=Добављач сесија +config.provider_config=Конфигурација на добављачу +config.cookie_name=Име датотеке cookie +config.gc_interval_time=Интервал cакупљања смећа +config.session_life_time=Дужина живота сесјие +config.https_only=Само HTTPS +config.cookie_life_time=Дужина живота датотеке cookie + +config.picture_service=Услуга за слике +config.disable_gravatar=Онемогући Gravatar +config.enable_federated_avatar=Омогући Federated Avatars + +config.git_config=Git конфигурација +config.git_disable_diff_highlight=Онемогући бојење синтаксе када гледате разлике +config.git_max_diff_lines=Максималан број различитих редова (у датотеци) +config.git_max_diff_line_characters=Максималан број различитих карактера (у реду) +config.git_max_diff_files=Максималан број измењених датотека (приказаних) +config.git_gc_args=Аргументи на cакупљање смећа +config.git_migrate_timeout=Време до отказања миграције +config.git_mirror_timeout=Време до отазање синхронизацији огледала +config.git_clone_timeout=Време до отказивања клонирањем +config.git_pull_timeout=Време до отказивања pull операцији +config.git_gc_timeout=Време до отказивања cакупљање смећа + +config.log_config=Kонфигурација журнала +config.log_mode=Режим журналовања + +monitor.cron=Cron задаци +monitor.name=Име +monitor.schedule=Распоред +monitor.next=Следећи пут +monitor.previous=Претходни пут +monitor.process=Покренути процеси +monitor.desc=Опис +monitor.start=Почетно време +monitor.execute_time=Време извршивања + + + +notices.system_notice_list=Системска обавештавања +notices.actions=Акције +notices.select_all=Изабери све +notices.deselect_all=Уклоните избор свих +notices.inverse_selection=Обрна селекција +notices.delete_selected=Избриши изабране +notices.delete_all=Уклони сва обавештења +notices.type=Тип +notices.type_1=Спремиште +notices.desc=Опис +notices.op=Oп. + +[action] +create_repo=креира спремиште %s +rename_repo=преимензје спремиште од %[1]s на %[3]s +transfer_repo=преноси спремиште %s на %s + +[tool] +ago=пре %s +from_now=од сада %s +now=сада +1s=1 секунд +1m=1 минут +1h=1 час +1d=1 дан +1w=1 недеља +1mon=1 месец +1y=1 година +seconds=%d секунди +minutes=%d минута +hours=%d часа +days=%d дана +weeks=%d недеља +months=%d месеци +years=%d година +raw_seconds=секунди +raw_minutes=минута + +[dropzone] +remove_file=Уклони датотеку + +[notification] + +[gpg] + +[units] + diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index 8e9727deef..47b0cb806a 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -305,7 +305,7 @@ activate_account=Vänligen aktivera ditt konto activate_email=Verifiera din epostaddress -register_notify=Välkommen till Forgejo +register_notify_prev9=Välkommen till Forgejo reset_password=Återställ ditt konto @@ -755,6 +755,7 @@ file_too_large=Filen är för stor för att visas. video_not_supported_in_browser=Din webbläsare stödjer ej HTML5-taggen 'video'. audio_not_supported_in_browser=Din webbläsare stöder inte taggen 'audio' i HTML5. stored_lfs=Sparad med Git LFS +stored_annex=Sparad med Git Annex symbolic_link=Symbolisk länk commit_graph=Commit-Graf commit_graph.monochrome=Mono @@ -768,6 +769,7 @@ editor.upload_file=Ladda Upp Fil editor.edit_file=Redigera Fil editor.preview_changes=Förhandsgranska ändringar editor.cannot_edit_lfs_files=LFS-filer kan inte redigeras i webbgränssnittet. +editor.cannot_edit_annex_files=Annex-filer kan inte redigeras i webbgränssnittet. editor.cannot_edit_non_text_files=Binära filer kan inte redigeras genom webbgränssnittet. editor.edit_this_file=Redigera Fil editor.this_file_locked=Filen är låst diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index f3acf9e4da..4094612d57 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -454,7 +454,7 @@ activate_email=E-posta adresinizi doğrulayın activate_email.title=%s, lütfen e-posta adresinizi doğrulayın activate_email.text=E posta adresinizi doğrulamak için lütfen %s içinde linke tıklayın: -register_notify=Forgejo'ya Hoş Geldiniz +register_notify_prev9=Forgejo'ya Hoş Geldiniz register_notify.title=%[1]s, %[2]s e hoşgeldiniz register_notify.text_1=bu %s için kayıt onay e postanızdır! register_notify.text_2=Artık %s kullanıcı adı ile oturum açabilirsiniz. @@ -1198,6 +1198,7 @@ view_git_blame=Git Suç Görüntüle video_not_supported_in_browser=Tarayıcınız HTML5 'video' etiketini desteklemiyor. audio_not_supported_in_browser=Tarayıcınız HTML5 'audio' etiketini desteklemiyor. stored_lfs=Git LFS ile depolandı +stored_annex=Git Annex ile depolandı symbolic_link=Sembolik Bağlantı executable_file=Çalıştırılabilir Dosya commit_graph=İşleme Grafiği @@ -1221,6 +1222,7 @@ editor.upload_file=Dosya Yükle editor.edit_file=Dosyayı Düzenle editor.preview_changes=Değişiklikleri Önizle editor.cannot_edit_lfs_files=LFS dosyaları web arayüzünde düzenlenemez. +editor.cannot_edit_annex_files=Annex dosyaları web arayüzünde düzenlenemez. editor.cannot_edit_non_text_files=Bu tür dosyalar web arayüzünden düzenlenemez. editor.edit_this_file=Dosyayı Düzenle editor.this_file_locked=Dosya kilitlendi @@ -1815,7 +1817,7 @@ pulls.outdated_with_base_branch=Bu dal, temel dal ile güncel değil pulls.close=Değişiklik İsteğini Kapat pulls.closed_at=`%[2]s değişiklik isteğini kapattı` pulls.reopened_at=`%[2]s değişiklik isteğini yeniden açtı` -pulls.cmd_instruction_hint=`Komut satırı talimatlarını görüntüleyin.` +pulls.cmd_instruction_hint=`Komut satırı talimatlarını görüntüleyin.` pulls.cmd_instruction_checkout_title=Çekme pulls.cmd_instruction_checkout_desc=Proje deponuzdan yeni bir dalı çekin ve değişiklikleri test edin. pulls.cmd_instruction_merge_title=Birleştir diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 6334bcf469..615274d534 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -390,7 +390,7 @@ activate_account.text_2=Перейдіть за цим посиланням, щ activate_email=Підтвердить вашу адресу електронної пошти activate_email.text=Перейдіть за цим посиланням, щоб підтвердити вашу електронну адресу в %s: -register_notify=Ласкаво просимо у Forgejo +register_notify_prev9=Ласкаво просимо у Forgejo register_notify.title=%[1]s, ласкаво просимо до %[2]s register_notify.text_1=це ваша е-пошта для підтвердження реєстрації для %s! register_notify.text_2=Тепер ви можете увійти як: %s. @@ -995,6 +995,7 @@ file_copy_permalink=Копіювати постійне посилання video_not_supported_in_browser=Ваш браузер не підтримує тег 'video' HTML5. audio_not_supported_in_browser=Ваш браузер не підтримує тег HTML5 'audio'. stored_lfs=Збережено з Git LFS +stored_annex=Збережено з Git Annex symbolic_link=Символічне посилання commit_graph=Графік комітів commit_graph.select=Виберіть гілки @@ -1012,6 +1013,7 @@ editor.upload_file=Завантажити файл editor.edit_file=Редагування файлу editor.preview_changes=Попередній перегляд змін editor.cannot_edit_lfs_files=Файли LFS не можна редагувати в веб-інтерфейсі. +editor.cannot_edit_annex_files=Файли Annex не можна редагувати в веб-інтерфейсі. editor.cannot_edit_non_text_files=Бінарні файли не можливо редагувати у веб-інтерфейсі. editor.edit_this_file=Редагувати файл editor.this_file_locked=Файл заблоковано diff --git a/options/locale/locale_yi.ini b/options/locale/locale_yi.ini new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/options/locale/locale_yi.ini @@ -0,0 +1 @@ + diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 9dc86d07ee..89fa9dd677 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -158,6 +158,7 @@ toggle_menu = 切换菜单 invalid_data = 无效数据:%v more_items = 显示更多 copy_generic = 复制到剪贴板 +test = 测试 [aria] navbar=导航栏 @@ -189,6 +190,8 @@ buttons.ref.tooltip=引用一个问题或拉取请求 buttons.switch_to_legacy.tooltip=使用旧版编辑器 buttons.enable_monospace_font=启用等宽字体 buttons.disable_monospace_font=禁用等宽字体 +buttons.unindent.tooltip = 解除一级嵌套条目 +buttons.indent.tooltip = 解除一级嵌套条目 [filter] string.asc=A - Z @@ -477,7 +480,7 @@ activate_email=请验证您的邮箱地址 activate_email.title=%s,请验证您的邮箱 activate_email.text=请在 %s 时间内,点击以下链接,以验证你的电子邮件地址: -register_notify=欢迎来到 Forgejo +register_notify_prev9=欢迎来到 Forgejo register_notify.title=%[1]s,欢迎来到 %[2]s register_notify.text_1=这是您的 %s 注册确认电子邮件 ! register_notify.text_2=您现在可以以用户名 %s 登录 @@ -1267,6 +1270,7 @@ view_git_blame=查看 Git Blame video_not_supported_in_browser=您的浏览器不支持 HTML5 “video” 标签。 audio_not_supported_in_browser=您的浏览器不支持 HTML5 “audio” 标签。 stored_lfs=存储到Git LFS +stored_annex=存储到Git Annex symbolic_link=符号链接 executable_file=可执行文件 vendored=被供应的 @@ -1292,6 +1296,7 @@ editor.upload_file=上传文件 editor.edit_file=编辑文件 editor.preview_changes=预览变更 editor.cannot_edit_lfs_files=无法在 web 界面中编辑 lfs 文件。 +editor.cannot_edit_annex_files=无法在 web 界面中编辑 lfs 文件。 editor.cannot_edit_non_text_files=网页不能编辑二进制文件。 editor.edit_this_file=编辑文件 editor.this_file_locked=文件已锁定 @@ -1887,7 +1892,7 @@ pulls.outdated_with_base_branch=此分支相比基础分支已过期 pulls.close=关闭合并请求 pulls.closed_at=`于 %[2]s 关闭此合并请求 ` pulls.reopened_at=`重新打开此合并请求 %[2]s` -pulls.cmd_instruction_hint=`查看 命令行提示。` +pulls.cmd_instruction_hint=`查看 命令行提示。` pulls.cmd_instruction_checkout_title=检出 pulls.cmd_instruction_checkout_desc=从你的仓库中检出一个新的分支并测试变更。 pulls.cmd_instruction_merge_title=合并 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index 941f93bfc3..220064c300 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -172,7 +172,7 @@ activate_account=請啟用您的帳戶 activate_email=請驗證您的郵箱地址 -register_notify=歡迎來到 Forgejo +register_notify_prev9=歡迎來到 Forgejo register_success=註冊成功 @@ -392,6 +392,7 @@ file_view_raw=查看原始文件 file_permalink=永久連結 stored_lfs=儲存到到 Git LFS +stored_annex=儲存到到 Git Annex editor.preview_changes=預覽更改 editor.or=或 @@ -1022,4 +1023,3 @@ runners.task_list.repository=儲存庫 [git.filemode] ; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", … - diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index fd73d62c1a..3ca85f9021 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -328,6 +328,7 @@ smtp_from_invalid = 郵件寄件人的地址無效 config_location_hint = 這些設定將被儲存在: allow_dots_in_usernames = 允許使用者在使用者名稱中使用英文句點。不影響既有帳號。 enable_update_checker_helper_forgejo = 透過檢查 release.forgejo.org 的 DNS TXT 記錄來定期檢查新的 Forgejo 版本。 +app_slogan = 站點標語 [home] uname_holder=帳號名稱或電子信箱 @@ -437,7 +438,7 @@ disable_forgot_password_mail=由於未設定電子郵件功能,帳號復原功 disable_forgot_password_mail_admin=帳號復原功能需要設定電子郵件功能才能使用。請設定電子郵件功能以啟用帳號復原。 email_domain_blacklisted=您無法使用您的電子信箱註冊帳號。 authorize_application=授權應用程式 -authorize_redirect_notice=如果您授權此應用程式,您將會被重新導向至 %s。 +authorize_redirect_notice=如果您授權此應用程式,您將會被轉址至 %s。 authorize_application_created_by=此應用程式是由 %s 建立的。 authorize_application_description=如果您允許,它將能夠讀取和修改您的所有帳號資訊,包括私有儲存庫和組織。 authorize_title=授權「%s」存取您的帳號? @@ -458,6 +459,10 @@ password_pwned = 該密碼出現在先前資料洩露的馬上登入! +hint_register = 需要一個帳號嗎?馬上註冊。 +sign_up_button = 馬上註冊。 +sign_in_openid = 使用 OpenID 繼續 [mail] view_it_on=在 %s 上查看 @@ -473,7 +478,7 @@ activate_account.text_2=請在%s內點擊下列連結以啟用您的帳 activate_email=請驗證您的電子信箱 activate_email.text=請在%s內點擊下列連結以驗證您的電子信箱: -register_notify=歡迎來到 Forgejo +register_notify_prev9=歡迎來到 Forgejo register_notify.title=%[1]s,歡迎來到 %[2]s register_notify.text_1=這是您在 %s 的註冊確認信! register_notify.text_2=您現在可以使用您的使用者名稱登入:%s @@ -617,10 +622,10 @@ must_use_public_key=您提供的金鑰是私有金鑰,請勿上傳您的私有 unable_verify_ssh_key=無法驗證 SSH 金鑰,請再次檢查是否有錯誤。 auth_failed=授權認證失敗:%v -still_own_repo=您的帳號擁有至少一個儲存庫,請先刪除或轉移它們。 -still_has_org=您的帳號是至少一個組織的成員,請先離開它們。 +still_own_repo=您的帳號擁有一個或多個儲存庫,請先刪除或轉移它們。 +still_has_org=您的帳號是一個或多個組織的成員,請先離開它們。 still_own_packages=您的帳號擁有至少一個軟體包,請先刪除它們。 -org_still_own_repo=此組織仍然擁有一個以上的儲存庫,請先刪除或轉移它們。 +org_still_own_repo=此組織仍然擁有一個或多個的儲存庫,請先刪除或轉移它們。 org_still_own_packages=此組織仍然擁有至少一個軟體包,請先刪除它們。 target_branch_not_exist=目標分支不存在。 @@ -644,13 +649,13 @@ required_prefix = 輸入文字必須以「%s」開頭 change_avatar=更改大頭貼… repositories=儲存庫 activity=公開動態 -followers_few=%d 追蹤者 +followers_few=%d 位追蹤者 starred=已加星號的儲存庫 watched=關注的儲存庫 code=程式碼 projects=專案 overview=概覽 -following_few=%d 追蹤中 +following_few=追蹤 %d 個人 follow=追蹤 unfollow=取消追蹤 user_bio=個人簡介 @@ -667,13 +672,15 @@ settings = 使用者設定 block_user = 封鎖使用者 block_user.detail_1 = 該使用者已停止追踪您。 block_user.detail_2 = 這個使用者無法對您的儲存庫、您提出的問題或發表的留言做出任何操作。 -followers_one = %d 個追踪者 -following_one = 追踪 %d 個人 +followers_one = %d 位追蹤者 +following_one = 追蹤 %d 個人 block_user.detail_3 = 該使用者無法將您加為協作者,您也無法將其加為協作者。 follow_blocked_user = 因為這個使用者封鎖您或被您封鎖,您不能追蹤此使用者。 block = 封鎖 unblock = 解除封鎖 block_user.detail = 請注意,封鎖此使用者將會導致以下結果。例如: +followers.title.one = 位追蹤者 +followers.title.few = 位追蹤者 [settings] profile=個人資料 @@ -787,7 +794,7 @@ ssh_helper=需要協助嗎?建議可看看 GitHub 的文件 gpg_helper=需要協助嗎?建議可看看 GitHub 的 about GPG 文件。 add_new_key=新增 SSH 金鑰 add_new_gpg_key=新增 GPG 金鑰 -key_content_ssh_placeholder=以 「ssh-ed25519」、「ssh-rsa」、「ecdsa-sha2-nistp256」、「ecdsa-sha2-nistp384」、「ecdsa-sha2-nistp521」、「sk-ecdsa-sha2-nistp256@openssh.com」、或 「sk-ssh-ed25519@openssh.com」 開頭 +key_content_ssh_placeholder=以 「ssh-ed25519」、「ssh-rsa」、「ecdsa-sha2-nistp256」、「ecdsa-sha2-nistp384」、「ecdsa-sha2-nistp521」、「sk-ecdsa-sha2-nistp256@openssh.com」或 「sk-ssh-ed25519@openssh.com」 開頭 key_content_gpg_placeholder=以 「-----BEGIN PGP PUBLIC KEY BLOCK-----」 開頭 add_new_principal=新增主體 ssh_key_been_used=此 SSH 金鑰早已加入本伺服器。 @@ -853,7 +860,7 @@ unbind=解除連結 manage_access_token=管理存取符記 generate_new_token=產生新的符記 -tokens_desc=這些符記透過 Forgejo API 獲得存取您帳號的權限。 +tokens_desc=這些符記透過 Forgejo API 授予存取您帳號的權限。 token_name=符記名稱 generate_token=產生符記 generate_token_success=已經產生新的符記。請立刻複製它,因為它將不會被再次顯示。 @@ -870,10 +877,10 @@ permission_read=讀取 manage_oauth2_applications=管理 OAuth2 應用程式 edit_oauth2_application=編輯 OAuth2 應用程式 oauth2_applications_desc=OAuth2 應用程式讓您的第三方應用程式安全地驗證此 Forgejo 站點中的使用者。 -remove_oauth2_application=刪除 OAuth2 應用程式 +remove_oauth2_application=移除 OAuth2 應用程式 remove_oauth2_application_desc=刪除 OAuth2 應用程式將會撤銷所有已簽署的存取符記之存取權。是否繼續? -remove_oauth2_application_success=已刪除應用程式。 -create_oauth2_application=新增 OAuth2 應用程式 +remove_oauth2_application_success=已移除應用程式。 +create_oauth2_application=建立新的 OAuth2 應用程式 create_oauth2_application_button=建立應用程式 oauth2_application_name=應用程式名稱 oauth2_confidential_client=機密客戶端 (Confidential Client)。請為能保持機密性的程式勾選,例如網頁應用程式。使用原生程式時不要勾選,包含桌面、行動應用程式。 @@ -915,10 +922,10 @@ webauthn_delete_key_desc=如果您移除安全金鑰,將不能再使用它登 manage_account_links=連結的帳號 manage_account_links_desc=這些外部帳號已連結至您的 Forgejo 帳號。 -account_links_not_available=目前沒有外部帳號連結到您的 Forgejo 帳號。 +account_links_not_available=目前沒有外部帳號連結至您的 Forgejo 帳號。 link_account=連結帳號 remove_account_link=刪除連結的帳號 -remove_account_link_desc=移除連結帳號將撤銷其對 Forgejo 帳號的存取權限。是否繼續? +remove_account_link_desc=移除連結帳號將撤銷其對 Forgejo 帳號的存取權限。要繼續嗎? remove_account_link_success=已移除連結的帳號。 @@ -942,18 +949,18 @@ visibility.public=公開 visibility.public_tooltip=所有人都可以看到 visibility.limited=受限 visibility.private=私有 -blocked_users_none = 您沒有封鎖任何使用者 。 +blocked_users_none = 沒有任何被封鎖的使用者 。 blocked_users = 封鎖的使用者 hints = 提示 update_hints = 更新提示 update_hints_success = 提示已被更改。 added_on = 於 %s 新增 biography_placeholder = 和我們介紹一下您自己吧!(您可以使用 Markdown) -location_placeholder = 與其他人分享您的地理位置 +location_placeholder = 與其他人分享您粗略的地理位置 profile_desc = 管理其他人如何看到您的個人資料。通知、密碼復原和網頁上的 Git 操作會使用您的主要電子信箱。 hidden_comment_types.ref_tooltip = 註記哪些問題/提交/… 提及了此問題 keep_activity_private = 隱藏個人頁面中的活動資料 -uploaded_avatar_is_too_big = 上傳檔案的大小 (%d KiB)超過了上限 (%d KiB )。 +uploaded_avatar_is_too_big = 上傳檔案的大小 (%d KiB)超過了上限 (%d KiB )。 select_permissions = 選擇權限 permission_write = 讀寫 permissions_list = 權限: @@ -970,7 +977,7 @@ social_desc = 這些社群帳號可以被用來登入您的帳號。請確保您 unbind_success = 已成功移除該社群帳號。 create_oauth2_application_success = 您已成功建立一個新的 OAuth2 應用程式。 change_username_prompt = 註:更改您的使用者名稱也會更改您的帳號 URL。 -change_username_redirect_prompt = 舊的使用者名稱在其他使用者認領之前將會轉址到新的使用者名稱。 +change_username_redirect_prompt = 舊的使用者名稱在被其他使用者認領之前將會轉址到新的使用者名稱。 visibility.limited_tooltip = 只有已登入的使用者能看見 visibility.private_tooltip = 只有您加入的組織之成員能看見 keep_email_private_popup = 這將在您的個人資料頁面、合併請求或網頁檔案編輯器中隱藏您的電子信箱地址。已推送的提交不會被修改。在提交中使用 %s 來將其連結至您的帳號。 @@ -980,7 +987,7 @@ pronouns_custom = 自訂 oauth2_client_secret_hint = 這把密鑰在您離開或重新整理此頁面後將不再被顯示。請確保您已儲存它。 additional_repo_units_hint_description = 在沒有啟用所有模組的儲存庫中顯示「新增更多模組…」按鈕。 hidden_comment_types.issue_ref_tooltip = 使用者更改與問題相關分支/標籤的留言 -pronouns = 代名詞 +pronouns = 稱謂語 update_oauth2_application_success = 您已成功更新該 OAuth2 應用程式。 oauth2_redirect_uris = 轉址 URI。每個 URI 應各佔一行。 pronouns_unspecified = 未指定 @@ -997,7 +1004,7 @@ webauthn_key_loss_warning = 如果您弄丟了您的安全金鑰,您將無法 user_unblock_success = 已成功解除對此使用者的封鎖。 webauthn_alternative_tip = 您可能想新增一個額外的驗證方法。 user_block_success = 已成功封鎖此使用者。 -access_token_desc = 已選擇的符記僅授權相對應的 API 路徑。請參閱文件來了解更多。 +access_token_desc = 選擇的符記僅授權相對應的 API路徑。請參閱文件來了解更多。 oauth2_application_locked = 可以在組態中設定 Forgejo 預先註冊一些 OAuth2 應用程式。為了避免不可預料的情況,它們無法被編輯或是移除。請參閱 OAuth2 文件來了解更多。 hidden_comment_types_description = 在這裡選取的留言種類將不會顯示於問題頁面中。舉例來說,核取「標籤」將隱藏所有「使用者新增/移除了<標籤>」留言。 authorized_oauth2_applications_description = 您已授權給這些第三方應用程式取用您的 Forgejo 個人帳號的權限。請撤銷您不再使用的應用程式的權限。 @@ -1042,7 +1049,7 @@ license_helper_desc=授權條款定義了他人使用您原始碼的允許和禁 readme=讀我檔案 readme_helper=選擇讀我檔案範本。 readme_helper_desc=這是您能為專案撰寫完整描述的地方。 -auto_init=初始化儲存庫 (加入 .gitignore、授權條款、讀我檔案) +auto_init=初始化儲存庫(加入 .gitignore、授權條款、讀我檔案) trust_model_helper=選擇簽署驗證的信任模型。可用的選項: trust_model_helper_collaborator=協作者: 信任協作者的簽署 trust_model_helper_committer=提交者: 信任與提交者相符的簽署 @@ -1053,10 +1060,10 @@ default_branch=預設分支 default_branch_helper=預設分支是合併請求和提交程式碼的基底分支。 mirror_prune=裁減 mirror_prune_desc=刪除過時的遠端追蹤參考 -mirror_interval=鏡像週期(有效時間單位為「h」、「m」、「s」),設為 0 以停用定期同步。(最小值為:%s) +mirror_interval=鏡像週期(有效時間單位為「h」、「m」、「s」)。設為 0 以停用定期同步。(最小值為:%s) mirror_interval_invalid=鏡像週期無效。 mirror_sync_on_commit=推送提交後進行同步 -mirror_address=從 URL Clone +mirror_address=從 URL 拓製 mirror_address_desc=在授權資訊中填入必要的資料。 mirror_lfs=Large File Storage (LFS) mirror_lfs_desc=啟動 LFS 檔案的鏡像功能。 @@ -1232,6 +1239,7 @@ view_git_blame=檢視 Git Blame video_not_supported_in_browser=您的瀏覽器不支援 HTML5 的「video」標籤。 audio_not_supported_in_browser=您的瀏覽器不支援 HTML5 的「audio」標籤。 stored_lfs=已使用 Git LFS 儲存 +stored_annex=已使用 Git Annex 儲存 symbolic_link=符號連結 commit_graph=提交線圖 commit_graph.select=選擇分支 @@ -1249,8 +1257,9 @@ editor.add_file=新增檔案 editor.new_file=建立新檔案 editor.upload_file=上傳檔案 editor.edit_file=編輯檔案 -editor.preview_changes=預覽更改 +editor.preview_changes=預覽變更 editor.cannot_edit_lfs_files=無法在 web 介面中編輯 LFS 檔。 +editor.cannot_edit_annex_files=無法在 web 介面中編輯 Annex 檔。 editor.cannot_edit_non_text_files=網站介面不能編輯二進位檔案。 editor.edit_this_file=編輯檔案 editor.this_file_locked=檔案已被鎖定 @@ -1260,12 +1269,12 @@ editor.delete_this_file=刪除檔案 editor.must_have_write_access=您必須擁有寫入權限才能對此檔案進行修改或提出變更。 editor.file_delete_success=已刪除文件「%s」。 editor.name_your_file=命名您的檔案… -editor.filename_help=輸入名稱和斜線("/") 以新增目錄。在文字框開始處輸入退格鍵以移除目錄。 +editor.filename_help=輸入以斜線("/")結尾的名稱來新增目錄。在文字框開始處輸入退格鍵以移除目錄。 editor.or=或 editor.cancel_lower=取消 -editor.commit_signed_changes=提交簽署過的變更 +editor.commit_signed_changes=提交簽署的變更 editor.commit_changes=提交變更 -editor.add_tmpl=新增「」 +editor.add_tmpl=新增「<檔案>」 editor.add=新增 %s editor.update=更新 %s editor.delete=刪除 %s @@ -1286,14 +1295,14 @@ editor.filename_cannot_be_empty=檔案名稱不能為空。 editor.filename_is_invalid=檔名無效:「%s」。 editor.branch_does_not_exist=此儲存庫沒有名為「%s」的分支。 editor.branch_already_exists=此儲存庫已有名為「%s」的分支。 -editor.file_changed_while_editing=檔案內容在您編輯時已被變更。按一下此處查看被更動的地方或再次提交以覆蓋這些變更。 +editor.file_changed_while_editing=檔案內容在您編輯時已被更改。按一下此處來檢視被更改的地方或再次提交以覆蓋這些變更。 editor.file_already_exists=此儲存庫已有名為「%s」的檔案。 editor.commit_empty_file_header=提交空白檔案 editor.commit_empty_file_text=你準備提交的檔案是空白的,是否繼續? editor.no_changes_to_show=沒有可以顯示的變更。 editor.fail_to_update_file=更新/建立檔案「%s」失敗。 editor.fail_to_update_file_summary=錯誤訊息: -editor.push_rejected_no_message=該變更被伺服器拒絕,它未提供其他資訊。請檢查 Git Hook。 +editor.push_rejected_no_message=該變更被伺服器拒絕,它未提供其他訊息。請檢查 Git Hook。 editor.push_rejected=該變更被伺服器拒絕。請檢查 Git Hook。 editor.push_rejected_summary=完整的拒絕訊息: editor.add_subdir=加入目錄… @@ -1554,7 +1563,7 @@ issues.label.filter_sort.alphabetically=按字母順序排序 issues.label.filter_sort.reverse_alphabetically=按字母反向排序 issues.label.filter_sort.by_size=檔案由小到大 issues.label.filter_sort.reverse_by_size=檔案由大到小 -issues.num_participants_few=%d 參與者 +issues.num_participants_few=%d 位參與者 issues.attachment.open_tab=`在新分頁中查看「%s」` issues.attachment.download=`點擊下載「%s」` issues.subscribe=訂閱 @@ -1979,13 +1988,13 @@ settings.use_internal_wiki=使用內建 Wiki settings.use_external_wiki=使用外部 Wiki settings.external_wiki_url=外部 Wiki 連結 settings.external_wiki_url_error=外部 Wiki 網址不是有效的網址。 -settings.external_wiki_url_desc=點擊問題標籤時,使用者會被導向到外部 Wiki URL。 +settings.external_wiki_url_desc=點擊百科分頁時,使用者會被轉址至外部百科的 URL。 settings.issues_desc=啟用儲存庫問題追蹤器 settings.use_internal_issue_tracker=使用內建問題追蹤器 settings.use_external_issue_tracker=使用外部問題追蹤器 settings.external_tracker_url=外部問題追蹤器 URL settings.external_tracker_url_error=該外部問題追蹤器 URL 無效。 -settings.external_tracker_url_desc=點擊問題頁籤時,使用者會被導向至外部問題追蹤器 URL。 +settings.external_tracker_url_desc=點擊問題頁籤時,使用者會被轉址至外部問題追蹤器 URL。 settings.tracker_url_format=外部問題追蹤器的 URL 格式 settings.tracker_url_format_error=該外部問題追蹤器 URL 格式無效。 settings.tracker_issue_style=外部問題追蹤器的編號格式 @@ -2487,8 +2496,8 @@ mirror_sync = 已同步 commit.contained_in_default_branch = 這個提交是預設分支的一部分 editor.invalid_commit_mail = 用於建立提交的信箱無效。 admin.update_flags = 更新旗標 -admin.failed_to_replace_flags = 儲存庫旗標更新失敗 -admin.flags_replaced = 儲存庫旗標已被更換 +admin.failed_to_replace_flags = 儲存庫旗標替換失敗 +admin.flags_replaced = 已替換儲存庫旗標 default_branch_label = 預設 tree_path_not_found_tag = 路徑 %[1]s 不存在於標籤 %[2]s 中 tree_path_not_found_commit = 路徑 %[1]s 不存在於提交 %[2]s 中 @@ -2513,7 +2522,7 @@ migrate.cancel_migrating_confirm = 您確定要取消這次的遷移嗎? invisible_runes_header = `此檔案內含不可見的 Unicode 字元` ambiguous_runes_header = `這個檔案內含模棱兩可的 Unicode 字元` rss.must_be_on_branch = 您必須在一個分支上才能訂閱 RSS。 -admin.enabled_flags = 該儲存庫的旗標: +admin.enabled_flags = 該儲存庫啟用的旗標: mirror_address_protocol_invalid = 輸入的 URL 無效。只有 https(s):// 或 git:// 連結可以被設定為鏡像來源。 ambiguous_runes_description = `這個檔案內含容易造成混淆的 Unicode 字元。如果您覺得這是檔案作者的本意,您可以安全的忽略這則訊息。按下 Escape 可以顯示這些字元。` commit.contained_in = 這個提交存在於: @@ -2606,7 +2615,7 @@ pulls.commit_ref_at = `在提交 %[2]s 引用了 pulls.cmd_instruction_checkout_desc = 從您的專案儲存庫 checkout 一個新的分支來測試這些更改。 pulls.cmd_instruction_merge_title = 合併 pulls.ready_for_review = 可以開始審閱了嗎? -pulls.cmd_instruction_hint = `檢視命令列指示` +pulls.cmd_instruction_hint = `檢視 命令列指示` file_follow = 跟隨象徵式連結 milestones.filter_sort.earliest_due_data = 最早到期日 size_format = %[1]s:%[2]s,%[3]s:%[4]s @@ -2648,6 +2657,10 @@ wiki.original_git_entry_tooltip = 與其使用友善連結,檢視原始 Git settings.mirror_settings.docs.more_information_if_disabled = 您可以在這裡找到更多關於 push 和 pull 鏡像的資訊: settings.mirror_settings.docs.doc_link_title = 如何建立儲存庫鏡像? settings.mirror_settings.docs.pulling_remote_title = 從遠端儲存庫拉取 +issues.author.tooltip.pr = 此使用者是這個合併請求的作者。 +form.string_too_long = 提供的字串超過了 %d 個字母。 +subscribe.issue.guest.tooltip = 登入來追蹤這個問題。 +subscribe.pull.guest.tooltip = 登入來追蹤這個合併請求。 [graphs] @@ -2693,7 +2706,7 @@ settings.visibility.private_shortname=私有 settings.update_settings=更新設定 settings.update_setting_success=組織設定已更新。 -settings.change_orgname_redirect_prompt=舊的名稱被領用前,會重新導向新名稱。 +settings.change_orgname_redirect_prompt=舊的名稱被領用前將會轉址至新名稱。 settings.update_avatar_success=已更新組織的大頭貼。 settings.delete=刪除組織 settings.delete_account=刪除這個組織 @@ -2824,9 +2837,9 @@ dashboard.resync_all_hooks=重新同步所有儲存庫的 pre-receive、update dashboard.reinit_missing_repos=重新初始化所有記錄存在但遺失的 Git 儲存庫 dashboard.sync_external_users=同步外部使用者資料 dashboard.cleanup_hook_task_table=清理 hook_task 資料表 -dashboard.cleanup_packages=清理已過期的軟體包 +dashboard.cleanup_packages=清理過期的軟體包 dashboard.server_uptime=伺服器運作時間 -dashboard.current_goroutine=目前的 Goroutines 數量 +dashboard.current_goroutine=目前的 Goroutines dashboard.current_memory_usage=目前記憶體使用量 dashboard.total_memory_allocated=所有被分配的記憶體 dashboard.memory_obtained=獲得的記憶體 @@ -3119,7 +3132,7 @@ config.lfs_enabled=已啟用 config.lfs_content_path=LFS 內容路徑 config.lfs_http_auth_expiry=LFS HTTP 驗證有效時間 -config.db_config=資料庫設定 +config.db_config=資料庫組態 config.db_type=資料庫類型 config.db_host=主機地址 config.db_name=名稱 @@ -3171,7 +3184,7 @@ config.mailer_use_dummy=Dummy config.test_email_placeholder=電子信箱 (例:test@example.com) config.send_test_mail=寄送測試郵件 config.test_mail_failed=傳送測試郵件至「%s」時失敗: %v -config.test_mail_sent=測試郵件已傳送至「%s」。 +config.test_mail_sent=已傳送測試郵件至「%s」。 config.oauth_config=OAuth 設定 config.oauth_enabled=啟用服務 @@ -3204,7 +3217,7 @@ config.git_max_diff_files=差異比較時顯示的最多檔案數 config.git_gc_args=GC 參數 config.git_migrate_timeout=遷移逾時 config.git_mirror_timeout=鏡像更新逾時 -config.git_clone_timeout=Clone 作業逾時 +config.git_clone_timeout=拓製逾時 config.git_pull_timeout=Pull 作業逾時 config.git_gc_timeout=GC 作業逾時 @@ -3280,7 +3293,7 @@ assets = 程式碼資料 dashboard.sync_branch.started = 已開始同步分支 dashboard.rebuild_issue_indexer = 重建問題索引 repos.lfs_size = LFS 大小 -packages.cleanup = 清除過期資料 +packages.cleanup = 清除過期的資料 packages.cleanup.success = 已成功清除過期資料 monitor.processes_count = %d 個程序 monitor.queue.settings.remove_all_items = 全部移除 @@ -3653,4 +3666,5 @@ runner_kind = 搜尋 Runners … project_kind = 搜尋專案… branch_kind = 搜尋分支… commit_kind = 搜尋提交… -code_search_by_git_grep = 目前搜尋結果由「git grep」提供。如果網站管理員啟用程式碼索引,可能會有更好的結果。 \ No newline at end of file +code_search_by_git_grep = 目前搜尋結果由「git grep」提供。如果網站管理員啟用程式碼索引,可能會有更好的結果。 +exact = 精確 diff --git a/package-lock.json b/package-lock.json index 6c628bd836..4f2c267139 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "forgejo", + "name": "forgejo-aneksajo", "lockfileVersion": 3, "requires": true, "packages": { @@ -7,7 +7,6 @@ "dependencies": { "@citation-js/core": "0.7.11", "@citation-js/plugin-bibtex": "0.7.11", - "@citation-js/plugin-csl": "0.7.11", "@citation-js/plugin-software-formats": "0.6.1", "@github/markdown-toolbar-element": "2.2.3", "@github/relative-time-element": "4.4.2", @@ -55,7 +54,6 @@ "uint8-to-base64": "0.2.0", "vanilla-colorful": "0.7.2", "vue": "3.4.31", - "vue-bar-graph": "2.0.0", "vue-chartjs": "5.3.1", "vue-loader": "17.4.2", "vue3-calendar-heatmap": "2.0.5", @@ -377,22 +375,6 @@ "node": ">=14.0.0" } }, - "node_modules/@citation-js/plugin-csl": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/@citation-js/plugin-csl/-/plugin-csl-0.7.11.tgz", - "integrity": "sha512-4OGZ9wHZDfpgiPU2cOXWGuKt7P+ndGWAeLG95nOG+DXe5U+f9EEZTXfaM4C99x8Ri+g6JklR96A3kuYZxYLllg==", - "license": "MIT", - "dependencies": { - "@citation-js/date": "^0.5.0", - "citeproc": "^2.4.6" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@citation-js/core": "^0.7.0" - } - }, "node_modules/@citation-js/plugin-github": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@citation-js/plugin-github/-/plugin-github-0.6.1.tgz", @@ -461,9 +443,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.0.tgz", - "integrity": "sha512-qvBMcOU/uWFCH/VO0MYe0AMs0BGMWAt6FTryMbFIKYtZtVnqTZtT8ktv5o718llkaGZWomJezJZjq3vJDHeJNQ==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", + "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", "dev": true, "funding": [ { @@ -480,13 +462,13 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.3.2" + "@csstools/css-tokenizer": "^2.4.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.2.tgz", - "integrity": "sha512-0xYOf4pQpAaE6Sm2Q0x3p25oRukzWQ/O8hWVvhIt9Iv98/uu053u2CGm/g3kJ+P0vOYTAYzoU8Evq2pg9ZPXtw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", + "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", "dev": true, "funding": [ { @@ -504,9 +486,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.12.tgz", - "integrity": "sha512-t1/CdyVJzOQUiGUcIBXRzTAkWTFPxiPnoKwowKW2z9Uj78c2bBWI/X94BeVfUwVq1xtCjD7dnO8kS6WONgp8Jw==", + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", + "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", "dev": true, "funding": [ { @@ -523,8 +505,8 @@ "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.0", - "@csstools/css-tokenizer": "^2.3.2" + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" } }, "node_modules/@csstools/selector-resolve-nested": { @@ -1337,9 +1319,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -1583,9 +1565,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", + "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", "cpu": [ "arm" ], @@ -1597,9 +1579,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", + "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", "cpu": [ "arm64" ], @@ -1611,9 +1593,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", + "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", "cpu": [ "arm64" ], @@ -1625,9 +1607,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", + "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", "cpu": [ "x64" ], @@ -1639,9 +1621,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", + "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", "cpu": [ "arm" ], @@ -1653,9 +1635,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", + "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", "cpu": [ "arm" ], @@ -1667,9 +1649,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", + "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", "cpu": [ "arm64" ], @@ -1681,9 +1663,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", + "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", "cpu": [ "arm64" ], @@ -1695,9 +1677,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", + "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", "cpu": [ "ppc64" ], @@ -1709,9 +1691,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", + "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", "cpu": [ "riscv64" ], @@ -1723,9 +1705,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", + "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", "cpu": [ "s390x" ], @@ -1737,9 +1719,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", + "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", "cpu": [ "x64" ], @@ -1751,9 +1733,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", + "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", "cpu": [ "x64" ], @@ -1765,9 +1747,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", + "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", "cpu": [ "arm64" ], @@ -1779,9 +1761,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", + "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", "cpu": [ "ia32" ], @@ -1793,9 +1775,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", + "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", "cpu": [ "x64" ], @@ -2512,9 +2494,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -2557,17 +2539,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", - "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz", + "integrity": "sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.16.0", + "@typescript-eslint/type-utils": "7.16.0", + "@typescript-eslint/utils": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -2591,16 +2573,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz", + "integrity": "sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.16.0", + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/typescript-estree": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0", "debug": "^4.3.4" }, "engines": { @@ -2620,14 +2602,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", - "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz", + "integrity": "sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2638,14 +2620,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", - "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz", + "integrity": "sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", + "@typescript-eslint/typescript-estree": "7.16.0", + "@typescript-eslint/utils": "7.16.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -2666,9 +2648,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", - "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz", + "integrity": "sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==", "dev": true, "license": "MIT", "engines": { @@ -2680,14 +2662,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", - "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz", + "integrity": "sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/visitor-keys": "7.16.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2709,16 +2691,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.0.tgz", + "integrity": "sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" + "@typescript-eslint/scope-manager": "7.16.0", + "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/typescript-estree": "7.16.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2732,13 +2714,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", - "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz", + "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.14.1", + "@typescript-eslint/types": "7.16.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -3284,9 +3266,9 @@ } }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -3820,9 +3802,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "funding": [ { "type": "opencollective", @@ -3839,10 +3821,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -3950,9 +3932,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001639", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz", - "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==", + "version": "1.0.30001641", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", + "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", "funding": [ { "type": "opencollective", @@ -4125,12 +4107,6 @@ "node": ">=8" } }, - "node_modules/citeproc": { - "version": "2.4.63", - "resolved": "https://registry.npmjs.org/citeproc/-/citeproc-2.4.63.tgz", - "integrity": "sha512-68F95Bp4UbgZU/DBUGQn0qV3HDZLCdI9+Bb2ByrTaNJDL5VEm9LqaiNaxljsvoaExSLEXe1/r6n2Z06SCzW3/Q==", - "license": "CPAL-1.0 OR AGPL-1.0" - }, "node_modules/clean-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", @@ -5357,9 +5333,9 @@ } }, "node_modules/dompurify": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz", - "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/domutils": { @@ -5442,9 +5418,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.815", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.815.tgz", - "integrity": "sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==", + "version": "1.4.825", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.825.tgz", + "integrity": "sha512-OCcF+LwdgFGcsYPYC5keEEFC2XT0gBhrYbeGzHCx7i9qRFbzO/AqTmc/C/1xNhJj+JA7rzlN7mpBuStshh96Cg==", "license": "ISC" }, "node_modules/elkjs": { @@ -6631,9 +6607,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -7301,12 +7277,6 @@ "dev": true, "license": "MIT" }, - "node_modules/gsap": { - "version": "3.12.5", - "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.12.5.tgz", - "integrity": "sha512-srBfnk4n+Oe/ZnMIOXt3gT605BX9x5+rh/prT2F1SsNJsU1XuMiP0E2aptW481OnonOGACZWBqseH5Z7csHxhQ==", - "license": "Standard 'no charge' license: https://gsap.com/standard-license. Club GSAP members get more: https://gsap.com/licensing/. Why GreenSock doesn't employ an MIT license: https://gsap.com/why-license/" - }, "node_modules/hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", @@ -8248,9 +8218,9 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", - "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8291,16 +8261,13 @@ } }, "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -8375,9 +8342,9 @@ } }, "node_modules/js-beautify/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { @@ -8391,9 +8358,6 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -8953,13 +8917,10 @@ } }, "node_modules/lru-cache": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", - "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/magic-string": { "version": "0.25.9", @@ -9071,9 +9032,9 @@ } }, "node_modules/markdownlint-cli/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { @@ -9087,9 +9048,6 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -10513,14 +10471,14 @@ } }, "node_modules/pkg-types": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz", - "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", + "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", "dev": true, "license": "MIT", "dependencies": { "confbox": "^0.1.7", - "mlly": "^1.7.0", + "mlly": "^1.7.1", "pathe": "^1.1.2" } }, @@ -12511,9 +12469,9 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -12526,9 +12484,6 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -12745,9 +12700,9 @@ "license": "ISC" }, "node_modules/terser": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "version": "5.31.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.2.tgz", + "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -13184,9 +13139,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "devOptional": true, "license": "Apache-2.0", "peer": true, @@ -13270,9 +13225,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -13390,14 +13345,14 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz", - "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "rollup": "^4.13.0" }, "bin": { @@ -13927,10 +13882,39 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/vite/node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/vite/node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", + "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", "dev": true, "license": "MIT", "dependencies": { @@ -13944,22 +13928,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@rollup/rollup-android-arm-eabi": "4.18.1", + "@rollup/rollup-android-arm64": "4.18.1", + "@rollup/rollup-darwin-arm64": "4.18.1", + "@rollup/rollup-darwin-x64": "4.18.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", + "@rollup/rollup-linux-arm-musleabihf": "4.18.1", + "@rollup/rollup-linux-arm64-gnu": "4.18.1", + "@rollup/rollup-linux-arm64-musl": "4.18.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", + "@rollup/rollup-linux-riscv64-gnu": "4.18.1", + "@rollup/rollup-linux-s390x-gnu": "4.18.1", + "@rollup/rollup-linux-x64-gnu": "4.18.1", + "@rollup/rollup-linux-x64-musl": "4.18.1", + "@rollup/rollup-win32-arm64-msvc": "4.18.1", + "@rollup/rollup-win32-ia32-msvc": "4.18.1", + "@rollup/rollup-win32-x64-msvc": "4.18.1", "fsevents": "~2.3.2" } }, @@ -14060,16 +14044,6 @@ } } }, - "node_modules/vue-bar-graph": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vue-bar-graph/-/vue-bar-graph-2.0.0.tgz", - "integrity": "sha512-IoYP+r5Ggjys6QdUNYFPh7qD41wi/uDOJj9nMawvDgvV6niOz3Dw8O2/98ZnUgjTpcgcGFDaaAaK6qa9x1jgpw==", - "license": "MIT", - "dependencies": { - "gsap": "^3.10.4", - "vue": "^3.2.37" - } - }, "node_modules/vue-chartjs": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.1.tgz", @@ -14081,9 +14055,9 @@ } }, "node_modules/vue-component-type-helpers": { - "version": "2.0.24", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.24.tgz", - "integrity": "sha512-Jr5N8QVYEcbQuMN1LRgvg61758G8HTnzUlQsAFOxx6Y6X8kmhJ7C+jOvWsQruYxi3uHhhS6BghyRlyiwO99DBg==", + "version": "2.0.26", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.26.tgz", + "integrity": "sha512-sO9qQ8oC520SW6kqlls0iqDak53gsTVSrYylajgjmkt1c0vcgjsGSy1KzlDrbEx8pm02IEYhlUkU5hCYf8rwtg==", "dev": true, "license": "MIT" }, @@ -14503,9 +14477,9 @@ } }, "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 3c4d79f6a1..0abf6fe8b9 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "dependencies": { "@citation-js/core": "0.7.11", "@citation-js/plugin-bibtex": "0.7.11", - "@citation-js/plugin-csl": "0.7.11", "@citation-js/plugin-software-formats": "0.6.1", "@github/markdown-toolbar-element": "2.2.3", "@github/relative-time-element": "4.4.2", @@ -54,7 +53,6 @@ "uint8-to-base64": "0.2.0", "vanilla-colorful": "0.7.2", "vue": "3.4.31", - "vue-bar-graph": "2.0.0", "vue-chartjs": "5.3.1", "vue-loader": "17.4.2", "vue3-calendar-heatmap": "2.0.5", diff --git a/public/.well-known/security.txt b/public/.well-known/security.txt index f301a00542..5e7f9b387b 100644 --- a/public/.well-known/security.txt +++ b/public/.well-known/security.txt @@ -1,6 +1,6 @@ # This site is running a Forgejo instance. # Forgejo-related security problems should be reported to the Forgejo security team. -# Site-related security problems should be reported to this site's admin. +# Security problems related to this instance should be reported to its administration. Policy: https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CONTRIBUTING.md Contact: mailto:security@forgejo.org Encryption: https://keys.openpgp.org/vks/v1/by-fingerprint/1B638BDF10969D627926B8D9F585D0F99E1FB56F diff --git a/release-notes/8.0.0/feat/31513.md b/release-notes/8.0.0/feat/31513.md new file mode 100644 index 0000000000..3c9baf5d70 --- /dev/null +++ b/release-notes/8.0.0/feat/31513.md @@ -0,0 +1 @@ +- add support for LFS server implementations which have batch API responses in an older/deprecated schema diff --git a/release-notes/8.0.0/fix/4253.md b/release-notes/8.0.0/fix/4253.md new file mode 100644 index 0000000000..1533c2a734 --- /dev/null +++ b/release-notes/8.0.0/fix/4253.md @@ -0,0 +1 @@ +- unknown git push options are rejected instead of being ignored diff --git a/routers/api/v1/repo/commits.go b/routers/api/v1/repo/commits.go index d06a3b4e49..5e7d10e6c2 100644 --- a/routers/api/v1/repo/commits.go +++ b/routers/api/v1/repo/commits.go @@ -354,7 +354,7 @@ func GetCommitPullRequest(ctx *context.APIContext) { // "404": // "$ref": "#/responses/notFound" - pr, err := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, ctx.Params(":sha")) + pr, err := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, ctx.Params("ref")) if err != nil { if issues_model.IsErrPullRequestNotExist(err) { ctx.Error(http.StatusNotFound, "GetPullRequestByMergedCommit", err) diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go index 8f9b598c0b..afcfbc00e3 100644 --- a/routers/api/v1/repo/issue.go +++ b/routers/api/v1/repo/issue.go @@ -893,13 +893,16 @@ func EditIssue(ctx *context.APIContext) { return } } - if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", api.StateClosed == api.StateType(*form.State)); err != nil { - if issues_model.IsErrDependenciesLeft(err) { - ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this issue because it still has open dependencies") + isClosed := api.StateClosed == api.StateType(*form.State) + if issue.IsClosed != isClosed { + if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", isClosed); err != nil { + if issues_model.IsErrDependenciesLeft(err) { + ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this issue because it still has open dependencies") + return + } + ctx.Error(http.StatusInternalServerError, "ChangeStatus", err) return } - ctx.Error(http.StatusInternalServerError, "ChangeStatus", err) - return } } diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index fbd37e00cb..1ff755c058 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -462,6 +462,11 @@ func GetIssueComment(ctx *context.APIContext) { return } + if err := comment.LoadAttachments(ctx); err != nil { + ctx.Error(http.StatusInternalServerError, "LoadAttachments", err) + return + } + ctx.JSON(http.StatusOK, convert.ToAPIComment(ctx, ctx.Repo.Repository, comment)) } diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index 725a33929f..d5bed1f640 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -711,13 +711,16 @@ func EditPullRequest(ctx *context.APIContext) { ctx.Error(http.StatusPreconditionFailed, "MergedPRState", "cannot change state of this pull request, it was already merged") return } - if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", api.StateClosed == api.StateType(*form.State)); err != nil { - if issues_model.IsErrDependenciesLeft(err) { - ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this pull request because it still has open dependencies") + isClosed := api.StateClosed == api.StateType(*form.State) + if issue.IsClosed != isClosed { + if err := issue_service.ChangeStatus(ctx, issue, ctx.Doer, "", isClosed); err != nil { + if issues_model.IsErrDependenciesLeft(err) { + ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this pull request because it still has open dependencies") + return + } + ctx.Error(http.StatusInternalServerError, "ChangeStatus", err) return } - ctx.Error(http.StatusInternalServerError, "ChangeStatus", err) - return } } diff --git a/routers/private/hook_post_receive.go b/routers/private/hook_post_receive.go index b78f19d51e..11d1161e85 100644 --- a/routers/private/hook_post_receive.go +++ b/routers/private/hook_post_receive.go @@ -18,6 +18,7 @@ import ( user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/git/pushoptions" "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/private" @@ -170,7 +171,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) { } // Handle Push Options - if len(opts.GitPushOptions) > 0 { + if !opts.GetGitPushOptions().Empty() { // load the repository if repo == nil { repo = loadRepository(ctx, ownerName, repoName) @@ -181,8 +182,8 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) { wasEmpty = repo.IsEmpty } - repo.IsPrivate = opts.GitPushOptions.Bool(private.GitPushOptionRepoPrivate, repo.IsPrivate) - repo.IsTemplate = opts.GitPushOptions.Bool(private.GitPushOptionRepoTemplate, repo.IsTemplate) + repo.IsPrivate = opts.GetGitPushOptions().GetBool(pushoptions.RepoPrivate, repo.IsPrivate) + repo.IsTemplate = opts.GetGitPushOptions().GetBool(pushoptions.RepoTemplate, repo.IsTemplate) if err := repo_model.UpdateRepositoryCols(ctx, repo, "is_private", "is_template"); err != nil { log.Error("Failed to Update: %s/%s Error: %v", ownerName, repoName, err) ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{ diff --git a/routers/private/hook_pre_receive.go b/routers/private/hook_pre_receive.go index 456a288b00..8f7575c1db 100644 --- a/routers/private/hook_pre_receive.go +++ b/routers/private/hook_pre_receive.go @@ -123,23 +123,7 @@ func (ctx *preReceiveContext) canChangeSettings() error { func (ctx *preReceiveContext) validatePushOptions() error { opts := web.GetForm(ctx).(*private.HookOptions) - if len(opts.GitPushOptions) == 0 { - return nil - } - - changesRepoSettings := false - for key := range opts.GitPushOptions { - switch key { - case private.GitPushOptionRepoPrivate, private.GitPushOptionRepoTemplate: - changesRepoSettings = true - case "topic", "force-push", "title", "description": - // Agit options - default: - return fmt.Errorf("unknown option %s", key) - } - } - - if changesRepoSettings { + if opts.GetGitPushOptions().ChangeRepoSettings() { return ctx.canChangeSettings() } diff --git a/routers/private/serv.go b/routers/private/serv.go index ef3920d359..a3a0c6961a 100644 --- a/routers/private/serv.go +++ b/routers/private/serv.go @@ -81,12 +81,14 @@ func ServCommand(ctx *context.PrivateContext) { ownerName := ctx.Params(":owner") repoName := ctx.Params(":repo") mode := perm.AccessMode(ctx.FormInt("mode")) + verbs := ctx.FormStrings("verb") // Set the basic parts of the results to return results := private.ServCommandResults{ RepoName: repoName, OwnerName: ownerName, KeyID: keyID, + UserMode: perm.AccessModeNone, } // Now because we're not translating things properly let's just default some English strings here @@ -287,8 +289,10 @@ func ServCommand(ctx *context.PrivateContext) { repo.IsPrivate || owner.Visibility.IsPrivate() || (user != nil && user.IsRestricted) || // user will be nil if the key is a deploykey + (setting.Annex.Enabled && len(verbs) > 0 && verbs[0] == "git-annex-shell") || // git-annex has its own permission enforcement, for which we expose results.UserMode setting.Service.RequireSignInView) { if key.Type == asymkey_model.KeyTypeDeploy { + results.UserMode = deployKey.Mode if deployKey.Mode < mode { ctx.JSON(http.StatusUnauthorized, private.Response{ UserMsg: fmt.Sprintf("Deploy Key: %d:%s is not authorized to %s %s/%s.", key.ID, key.Name, modeString, results.OwnerName, results.RepoName), @@ -310,9 +314,9 @@ func ServCommand(ctx *context.PrivateContext) { return } - userMode := perm.UnitAccessMode(unitType) + results.UserMode = perm.UnitAccessMode(unitType) - if userMode < mode { + if results.UserMode < mode { log.Warn("Failed authentication attempt for %s with key %s (not authorized to %s %s/%s) from %s", user.Name, key.Name, modeString, ownerName, repoName, ctx.RemoteAddr()) ctx.JSON(http.StatusUnauthorized, private.Response{ UserMsg: fmt.Sprintf("User: %d:%s with Key: %d:%s is not authorized to %s %s/%s.", user.ID, user.Name, key.ID, key.Name, modeString, ownerName, repoName), @@ -353,6 +357,7 @@ func ServCommand(ctx *context.PrivateContext) { }) return } + results.UserMode = perm.AccessModeWrite results.RepoID = repo.ID } @@ -381,13 +386,14 @@ func ServCommand(ctx *context.PrivateContext) { return } } - log.Debug("Serv Results:\nIsWiki: %t\nDeployKeyID: %d\nKeyID: %d\tKeyName: %s\nUserName: %s\nUserID: %d\nOwnerName: %s\nRepoName: %s\nRepoID: %d", + log.Debug("Serv Results:\nIsWiki: %t\nDeployKeyID: %d\nKeyID: %d\tKeyName: %s\nUserName: %s\nUserID: %d\nUserMode: %d\nOwnerName: %s\nRepoName: %s\nRepoID: %d", results.IsWiki, results.DeployKeyID, results.KeyID, results.KeyName, results.UserName, results.UserID, + results.UserMode, results.OwnerName, results.RepoName, results.RepoID) diff --git a/routers/web/repo/actions/actions.go b/routers/web/repo/actions/actions.go index 90d3226f2d..ff3b16159b 100644 --- a/routers/web/repo/actions/actions.go +++ b/routers/web/repo/actions/actions.go @@ -95,6 +95,8 @@ func List(ctx *context.Context) { allRunnerLabels.AddMultiple(r.AgentLabels...) } + canRun := ctx.Repo.CanWrite(unit.TypeActions) + workflows = make([]Workflow, 0, len(entries)) for _, entry := range entries { workflow := Workflow{Entry: *entry} @@ -146,7 +148,7 @@ func List(ctx *context.Context) { } workflows = append(workflows, workflow) - if workflow.Entry.Name() == curWorkflow { + if canRun && workflow.Entry.Name() == curWorkflow { config := wf.WorkflowDispatchConfig() if config != nil { keys := util.KeysOfMap(config.Inputs) diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 33491ec696..bf9a448ec5 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -242,6 +242,12 @@ func FileHistory(ctx *context.Context) { ctx.ServerError("CommitsByFileAndRange", err) return } + + if len(commits) == 0 { + ctx.NotFound("CommitsByFileAndRange", nil) + return + } + oldestCommit := commits[len(commits)-1] renamedFiles, err := git.GetCommitFileRenames(ctx, ctx.Repo.GitRepo.Path, oldestCommit.ID.String()) diff --git a/routers/web/repo/download.go b/routers/web/repo/download.go index c4a8baecca..b55d8d5046 100644 --- a/routers/web/repo/download.go +++ b/routers/web/repo/download.go @@ -9,6 +9,7 @@ import ( "time" git_model "code.gitea.io/gitea/models/git" + "code.gitea.io/gitea/modules/annex" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/httpcache" "code.gitea.io/gitea/modules/lfs" @@ -79,6 +80,26 @@ func ServeBlobOrLFS(ctx *context.Context, blob *git.Blob, lastModified *time.Tim } closed = true + // check for git-annex files + // (this code is weirdly redundant because I'm trying not to delete any lines in order to make merges easier) + isAnnexed, err := annex.IsAnnexed(blob) + if err != nil { + ctx.ServerError("annex.IsAnnexed", err) + return err + } + if isAnnexed { + content, err := annex.Content(blob) + if err != nil { + // XXX are there any other possible failure cases here? + // there are, there could be unrelated io errors; those should be ctx.ServerError()s + ctx.NotFound("annex.Content", err) + return err + } + defer content.Close() + common.ServeContentByReadSeeker(ctx.Base, ctx.Repo.TreePath, lastModified, content) + return nil + } + return common.ServeBlob(ctx.Base, ctx.Repo.TreePath, blob, lastModified) } diff --git a/routers/web/repo/githttp.go b/routers/web/repo/githttp.go index 9f3b63698a..0c27e28f99 100644 --- a/routers/web/repo/githttp.go +++ b/routers/web/repo/githttp.go @@ -596,3 +596,34 @@ func GetIdxFile(ctx *context.Context) { h.sendFile(ctx, "application/x-git-packed-objects-toc", "objects/pack/pack-"+ctx.Params("file")+".idx") } } + +// GetAnnexObject implements git-annex dumb HTTP +func GetAnnexObject(ctx *context.Context) { + h := httpBase(ctx) + if h != nil { + // git-annex objects are stored in .git/annex/objects/{hash1}/{hash2}/{key}/{key} + // where key is a string containing the size and (usually SHA256) checksum of the file, + // and hash1+hash2 are the first few bits of the md5sum of key itself. + // ({hash1}/{hash2}/ is just there to avoid putting too many files in one directory) + // ref: https://git-annex.branchable.com/internals/hashing/ + + // keyDir should = key, but we don't enforce that + object := filepath.Join(ctx.Params("hash1"), ctx.Params("hash2"), ctx.Params("keyDir"), ctx.Params("key")) + + // Sanitize the input against directory traversals. + // + // This works because at the filesystem root, "/.." = "/"; + // So if a path starts rooted ("/"), path.Clean(), which + // path.Join() calls internally, removes all '..' prefixes. + // After, this unroots the path unconditionally ([1:]), which + // works because we know the input is never supposed to be rooted. + // + // The router code probably also disallows "..", so this + // should be redundant, but it's defensive to keep it + // whenever touching filesystem paths with user input. + object = filepath.Join(string(filepath.Separator), object)[1:] + + setHeaderCacheForever(ctx) + h.sendFile(ctx, "application/octet-stream", "annex/objects/"+object) + } +} diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 5295bfdb2a..282ae459c7 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -33,6 +33,7 @@ import ( unit_model "code.gitea.io/gitea/models/unit" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/actions" + "code.gitea.io/gitea/modules/annex" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/git" @@ -208,14 +209,59 @@ func localizedExtensions(ext, languageCode string) (localizedExts []string) { } type fileInfo struct { - isTextFile bool - isLFSFile bool - fileSize int64 - lfsMeta *lfs.Pointer - st typesniffer.SniffedType + isTextFile bool + isLFSFile bool + isAnnexFile bool + isAnnexFilePresent bool + fileSize int64 + lfsMeta *lfs.Pointer + st typesniffer.SniffedType } func getFileReader(ctx gocontext.Context, repoID int64, blob *git.Blob) ([]byte, io.ReadCloser, *fileInfo, error) { + isAnnexed, err := annex.IsAnnexed(blob) + if err != nil { + return nil, nil, nil, err + } + if isAnnexed { + // TODO: this code could be merged with the LFS case, especially the redundant type sniffer, + // but it is *currently* written this way to make merging with the non-annex upstream easier: + // this way, the git-annex patch is (mostly) pure additions. + + annexContent, err := annex.Content(blob) + if err != nil { + // If annex.Content returns an error it can mean that the blob does not + // refer to an annexed file or that it is not present here. Since we already + // checked that it is annexed the latter must be the case. So we return the + // content of the blob instead and indicate that the file is indeed annexed, + // but not present here. The template can then communicate the situation. + dataRc, err := blob.DataAsync() + if err != nil { + return nil, nil, nil, err + } + + buf := make([]byte, 1024) + n, _ := util.ReadAtMost(dataRc, buf) + buf = buf[:n] + + st := typesniffer.DetectContentType(buf) + return buf, dataRc, &fileInfo{st.IsText(), false, true, false, blob.Size(), nil, st}, nil + } + + stat, err := annexContent.Stat() + if err != nil { + return nil, nil, nil, err + } + + buf := make([]byte, 1024) + n, _ := util.ReadAtMost(annexContent, buf) + buf = buf[:n] + + st := typesniffer.DetectContentType(buf) + + return buf, annexContent, &fileInfo{st.IsText(), false, true, true, stat.Size(), nil, st}, nil + } + dataRc, err := blob.DataAsync() if err != nil { return nil, nil, nil, err @@ -230,17 +276,17 @@ func getFileReader(ctx gocontext.Context, repoID int64, blob *git.Blob) ([]byte, // FIXME: what happens when README file is an image? if !isTextFile || !setting.LFS.StartServer { - return buf, dataRc, &fileInfo{isTextFile, false, blob.Size(), nil, st}, nil + return buf, dataRc, &fileInfo{isTextFile, false, false, false, blob.Size(), nil, st}, nil } pointer, _ := lfs.ReadPointerFromBuffer(buf) if !pointer.IsValid() { // fallback to plain file - return buf, dataRc, &fileInfo{isTextFile, false, blob.Size(), nil, st}, nil + return buf, dataRc, &fileInfo{isTextFile, false, false, false, blob.Size(), nil, st}, nil } meta, err := git_model.GetLFSMetaObjectByOid(ctx, repoID, pointer.Oid) if err != nil && err != git_model.ErrLFSObjectNotExist { // fallback to plain file - return buf, dataRc, &fileInfo{isTextFile, false, blob.Size(), nil, st}, nil + return buf, dataRc, &fileInfo{isTextFile, false, false, false, blob.Size(), nil, st}, nil } dataRc.Close() @@ -263,7 +309,7 @@ func getFileReader(ctx gocontext.Context, repoID int64, blob *git.Blob) ([]byte, st = typesniffer.DetectContentType(buf) - return buf, dataRc, &fileInfo{st.IsText(), true, meta.Size, &meta.Pointer, st}, nil + return buf, dataRc, &fileInfo{st.IsText(), true, false, false, meta.Size, &meta.Pointer, st}, nil } func renderReadmeFile(ctx *context.Context, subfolder string, readmeFile *git.TreeEntry) { @@ -445,10 +491,17 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry) { isDisplayingSource := ctx.FormString("display") == "source" isDisplayingRendered := !isDisplayingSource - if fInfo.isLFSFile { + if fInfo.isLFSFile || fInfo.isAnnexFile { ctx.Data["RawFileLink"] = ctx.Repo.RepoLink + "/media/" + ctx.Repo.BranchNameSubURL() + "/" + util.PathEscapeSegments(ctx.Repo.TreePath) } + if fInfo.isAnnexFile { + // pre-git-annex v7, all annexed files were represented in-repo as symlinks; + // but we pretend they aren't, since that's a distracting quirk of git-annex + // and not a meaningful choice on the user's part + ctx.Data["FileIsSymlink"] = false + } + isRepresentableAsText := fInfo.st.IsRepresentableAsText() if !isRepresentableAsText { // If we can't show plain text, always try to render. @@ -456,6 +509,8 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry) { isDisplayingRendered = true } ctx.Data["IsLFSFile"] = fInfo.isLFSFile + ctx.Data["IsAnnexFile"] = fInfo.isAnnexFile + ctx.Data["IsAnnexFilePresent"] = fInfo.isAnnexFilePresent ctx.Data["FileSize"] = fInfo.fileSize ctx.Data["IsTextFile"] = fInfo.isTextFile ctx.Data["IsRepresentableAsText"] = isRepresentableAsText @@ -490,6 +545,8 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry) { // Assume file is not editable first. if fInfo.isLFSFile { ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.cannot_edit_lfs_files") + } else if fInfo.isAnnexFile { + ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.cannot_edit_annex_files") } else if !isRepresentableAsText { ctx.Data["EditFileTooltip"] = ctx.Tr("repo.editor.cannot_edit_non_text_files") } @@ -589,7 +646,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry) { ctx.Data["FileContent"] = fileContent ctx.Data["LineEscapeStatus"] = statuses } - if !fInfo.isLFSFile { + if !fInfo.isLFSFile && !fInfo.isAnnexFile { if ctx.Repo.CanEnableEditor(ctx, ctx.Doer) { if lfsLock != nil && lfsLock.OwnerID != ctx.Doer.ID { ctx.Data["CanEditFile"] = false @@ -1142,6 +1199,15 @@ PostRecentBranchCheck: ctx.Data["TreeNames"] = treeNames ctx.Data["BranchLink"] = branchLink ctx.Data["CodeIndexerDisabled"] = !setting.Indexer.RepoIndexerEnabled + isAnnexFile, okAnnexFile := ctx.Data["IsAnnexFile"] + isAnnexFilePresent, okAnnexFilePresent := ctx.Data["IsAnnexFilePresent"] + if okAnnexFile && okAnnexFilePresent && isAnnexFile.(bool) && !isAnnexFilePresent.(bool) { + // If the file to be viewed is annexed but not present then render it normally + // (which will show the plain git blob content, i.e. the symlink or pointer target) + // but make the status code a 404. + ctx.HTML(http.StatusNotFound, tplRepoHome) + return + } ctx.HTML(http.StatusOK, tplRepoHome) } diff --git a/routers/web/web.go b/routers/web/web.go index 3480a18844..e822dc0f89 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -346,6 +346,13 @@ func registerRoutes(m *web.Route) { } } + annexEnabled := func(ctx *context.Context) { + if !setting.Annex.Enabled { + ctx.Error(http.StatusNotFound) + return + } + } + federationEnabled := func(ctx *context.Context) { if !setting.Federation.Enabled { ctx.Error(http.StatusNotFound) @@ -1610,6 +1617,12 @@ func registerRoutes(m *web.Route) { }) }, ignSignInAndCsrf, lfsServerEnabled) + m.Group("", func() { + // for git-annex + m.Methods("GET,OPTIONS", "/config", repo.GetTextFile("config")) // needed by clients reading annex.uuid during `git annex initremote` + m.Methods("GET,OPTIONS", "/annex/objects/{hash1}/{hash2}/{keyDir}/{key}", repo.GetAnnexObject) + }, ignSignInAndCsrf, annexEnabled, context.UserAssignmentWeb()) + gitHTTPRouters(m) }) }) diff --git a/services/actions/notifier.go b/services/actions/notifier.go index 3a6dd9db5b..1166bbbfd2 100644 --- a/services/actions/notifier.go +++ b/services/actions/notifier.go @@ -55,10 +55,20 @@ func (n *actionsNotifier) NewIssue(ctx context.Context, issue *issues_model.Issu }).Notify(withMethod(ctx, "NewIssue")) } +func (n *actionsNotifier) IssueChangeTitle(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, _ string) { + ctx = withMethod(ctx, "IssueChangeTitle") + + n.issueChange(ctx, doer, issue) +} + // IssueChangeContent notifies change content of issue -func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, oldContent string) { +func (n *actionsNotifier) IssueChangeContent(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, _ string) { ctx = withMethod(ctx, "IssueChangeContent") + n.issueChange(ctx, doer, issue) +} + +func (n *actionsNotifier) issueChange(ctx context.Context, doer *user_model.User, issue *issues_model.Issue) { var err error if err = issue.LoadRepo(ctx); err != nil { log.Error("LoadRepo: %v", err) diff --git a/services/agit/agit.go b/services/agit/agit.go index e46a5771e1..bd8cc82e55 100644 --- a/services/agit/agit.go +++ b/services/agit/agit.go @@ -13,6 +13,7 @@ import ( repo_model "code.gitea.io/gitea/models/repo" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/git/pushoptions" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/private" notify_service "code.gitea.io/gitea/services/notify" @@ -23,10 +24,10 @@ import ( func ProcReceive(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, opts *private.HookOptions) ([]private.HookProcReceiveRefResult, error) { results := make([]private.HookProcReceiveRefResult, 0, len(opts.OldCommitIDs)) - topicBranch := opts.GitPushOptions["topic"] - _, forcePush := opts.GitPushOptions["force-push"] - title, hasTitle := opts.GitPushOptions["title"] - description, hasDesc := opts.GitPushOptions["description"] + topicBranch, _ := opts.GetGitPushOptions().GetString(pushoptions.AgitTopic) + _, forcePush := opts.GetGitPushOptions().GetString(pushoptions.AgitForcePush) + title, hasTitle := opts.GetGitPushOptions().GetString(pushoptions.AgitTitle) + description, hasDesc := opts.GetGitPushOptions().GetString(pushoptions.AgitDescription) objectFormat := git.ObjectFormatFromName(repo.ObjectFormatName) diff --git a/services/auth/auth.go b/services/auth/auth.go index c10872313f..100e5b25a2 100644 --- a/services/auth/auth.go +++ b/services/auth/auth.go @@ -61,6 +61,17 @@ func isArchivePath(req *http.Request) bool { return archivePathRe.MatchString(req.URL.Path) } +var annexPathRe = regexp.MustCompile(`^/[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+/annex/`) + +func isAnnexPath(req *http.Request) bool { + if setting.Annex.Enabled { + // "/config" is git's config, not specifically git-annex's; but the only current + // user of it is when git-annex downloads the annex.uuid during 'git annex init'. + return strings.HasSuffix(req.URL.Path, "/config") || annexPathRe.MatchString(req.URL.Path) + } + return false +} + // handleSignIn clears existing session variables and stores new ones for the specified user object func handleSignIn(resp http.ResponseWriter, req *http.Request, sess SessionStore, user *user_model.User) { // We need to regenerate the session... diff --git a/services/auth/basic.go b/services/auth/basic.go index c8cb1735ee..562d8e747e 100644 --- a/services/auth/basic.go +++ b/services/auth/basic.go @@ -42,8 +42,8 @@ func (b *Basic) Name() string { // name/token on successful validation. // Returns nil if header is empty or validation fails. func (b *Basic) Verify(req *http.Request, w http.ResponseWriter, store DataStore, sess SessionStore) (*user_model.User, error) { - // Basic authentication should only fire on API, Download or on Git or LFSPaths - if !middleware.IsAPIPath(req) && !isContainerPath(req) && !isAttachmentDownload(req) && !isGitRawOrAttachOrLFSPath(req) { + // Basic authentication should only fire on API, Download or on Git, LFSPaths or Git-Annex paths + if !middleware.IsAPIPath(req) && !isContainerPath(req) && !isAttachmentDownload(req) && !isGitRawOrAttachOrLFSPath(req) && !isAnnexPath(req) { return nil, nil } diff --git a/services/doctor/paths.go b/services/doctor/paths.go index 3f62d587ab..8e37f01ef5 100644 --- a/services/doctor/paths.go +++ b/services/doctor/paths.go @@ -60,7 +60,7 @@ func checkConfigurationFile(logger log.Logger, autofix bool, fileOpts configurat func checkConfigurationFiles(ctx context.Context, logger log.Logger, autofix bool) error { if fi, err := os.Stat(setting.CustomConf); err != nil || !fi.Mode().IsRegular() { logger.Error("Failed to find configuration file at '%s'.", setting.CustomConf) - logger.Error("If you've never ran Gitea yet, this is normal and '%s' will be created for you on first run.", setting.CustomConf) + logger.Error("If you've never ran Forgejo yet, this is normal and '%s' will be created for you on first run.", setting.CustomConf) logger.Error("Otherwise check that you are running this command from the correct path and/or provide a `--config` parameter.") logger.Critical("Cannot proceed without a configuration file") return err diff --git a/services/mailer/mail.go b/services/mailer/mail.go index d86607295a..7bc37a37e8 100644 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -158,7 +158,7 @@ func SendRegisterNotifyMail(u *user_model.User) { return } - msg := NewMessage(u.Email, locale.TrString("mail.register_notify"), content.String()) + msg := NewMessage(u.Email, locale.TrString("mail.register_notify_prev9"), content.String()) msg.Info = fmt.Sprintf("UID: %d, registration notify", u.ID) SendAsync(msg) diff --git a/services/repository/files/temp_repo.go b/services/repository/files/temp_repo.go index 50b936cfa7..38539b774e 100644 --- a/services/repository/files/temp_repo.go +++ b/services/repository/files/temp_repo.go @@ -202,6 +202,26 @@ func (t *TemporaryUploadRepository) AddObjectToIndex(mode, objectHash, objectPat return nil } +// InitPrivateAnnex initializes a private annex in the repository +func (t *TemporaryUploadRepository) InitPrivateAnnex() error { + if _, _, err := git.NewCommand(t.ctx, "config", "annex.private", "true").RunStdString(&git.RunOpts{Dir: t.basePath}); err != nil { + return err + } + if _, _, err := git.NewCommand(t.ctx, "annex", "init").RunStdString(&git.RunOpts{Dir: t.basePath}); err != nil { + return err + } + return nil +} + +// AddAnnex adds the file at path to the repository using git annex add +// This requires a non-bare repository +func (t *TemporaryUploadRepository) AddAnnex(path string) error { + if _, _, err := git.NewCommand(t.ctx, "annex", "add").AddDynamicArguments(path).RunStdString(&git.RunOpts{Dir: t.basePath}); err != nil { + return err + } + return nil +} + // WriteTree writes the current index as a tree to the object db and returns its hash func (t *TemporaryUploadRepository) WriteTree() (string, error) { stdout, _, err := git.NewCommand(t.ctx, "write-tree").RunStdString(&git.RunOpts{Dir: t.basePath}) diff --git a/services/repository/files/upload.go b/services/repository/files/upload.go index 1330116889..30cd5035cc 100644 --- a/services/repository/files/upload.go +++ b/services/repository/files/upload.go @@ -8,11 +8,13 @@ import ( "fmt" "os" "path" + "path/filepath" "strings" git_model "code.gitea.io/gitea/models/git" repo_model "code.gitea.io/gitea/models/repo" user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/modules/annex" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/setting" @@ -89,7 +91,7 @@ func UploadRepoFiles(ctx context.Context, repo *repo_model.Repository, doer *use defer t.Close() hasOldBranch := true - if err = t.Clone(opts.OldBranch, true); err != nil { + if err = t.Clone(opts.OldBranch, false); err != nil { if !git.IsErrBranchNotExist(err) || !repo.IsEmpty { return err } @@ -105,10 +107,30 @@ func UploadRepoFiles(ctx context.Context, repo *repo_model.Repository, doer *use } } - // Copy uploaded files into repository. - if err := copyUploadedLFSFilesIntoRepository(infos, t, opts.TreePath); err != nil { + r, err := git.OpenRepository(ctx, repo.RepoPath()) + if err != nil { return err } + if annex.IsAnnexRepo(r) { + // Initialize annex privately in temporary clone + if err := t.InitPrivateAnnex(); err != nil { + return err + } + // Copy uploaded files into git-annex repository + if err := copyUploadedFilesIntoAnnexRepository(infos, t, opts.TreePath); err != nil { + return err + } + // Move all annexed content in the temporary repository, i.e. everything we have just added, to the origin + author, committer := GetAuthorAndCommitterUsers(opts.Author, opts.Committer, doer) + if err := moveAnnexedFilesToOrigin(t, author, committer); err != nil { + return err + } + } else { + // Copy uploaded files into repository. + if err := copyUploadedLFSFilesIntoRepository(infos, t, opts.TreePath); err != nil { + return err + } + } // Now write the tree treeHash, err := t.WriteTree() @@ -246,3 +268,38 @@ func uploadToLFSContentStore(info uploadInfo, contentStore *lfs.ContentStore) er } return nil } + +func copyUploadedFilesIntoAnnexRepository(infos []uploadInfo, t *TemporaryUploadRepository, treePath string) error { + for i := range len(infos) { + if err := copyUploadedFileIntoAnnexRepository(&infos[i], t, treePath); err != nil { + return err + } + } + return nil +} + +func copyUploadedFileIntoAnnexRepository(info *uploadInfo, t *TemporaryUploadRepository, treePath string) error { + pathInRepo := path.Join(t.basePath, treePath, info.upload.Name) + if err := os.MkdirAll(filepath.Dir(pathInRepo), 0o700); err != nil { + return err + } + if err := os.Rename(info.upload.LocalPath(), pathInRepo); err != nil { + return err + } + return t.AddAnnex(pathInRepo) +} + +func moveAnnexedFilesToOrigin(t *TemporaryUploadRepository, author, committer *user_model.User) error { + authorSig := author.NewGitSig() + committerSig := committer.NewGitSig() + env := append(os.Environ(), + "GIT_AUTHOR_NAME="+authorSig.Name, + "GIT_AUTHOR_EMAIL="+authorSig.Email, + "GIT_COMMITTER_NAME="+committerSig.Name, + "GIT_COMMITTER_EMAIL="+committerSig.Email, + ) + if _, _, err := git.NewCommand(t.ctx, "annex", "move", "--to", "origin").RunStdString(&git.RunOpts{Dir: t.basePath, Env: env}); err != nil { + return err + } + return nil +} diff --git a/services/webhook/telegram.go b/services/webhook/telegram.go index 724c41012f..74eb133922 100644 --- a/services/webhook/telegram.go +++ b/services/webhook/telegram.go @@ -15,6 +15,7 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/markup" api "code.gitea.io/gitea/modules/structs" webhook_module "code.gitea.io/gitea/modules/webhook" "code.gitea.io/gitea/services/forms" @@ -213,7 +214,7 @@ func (t telegramConvertor) Package(p *api.PackagePayload) (TelegramPayload, erro func createTelegramPayload(message string) TelegramPayload { return TelegramPayload{ - Message: strings.TrimSpace(message), + Message: markup.Sanitize(strings.TrimSpace(message)), ParseMode: "HTML", DisableWebPreview: true, } diff --git a/services/webhook/telegram_test.go b/services/webhook/telegram_test.go index ff6455e16b..65b767f0af 100644 --- a/services/webhook/telegram_test.go +++ b/services/webhook/telegram_test.go @@ -33,7 +33,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Create(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] branch test created`, pl.Message) + assert.Equal(t, `[test/repo] branch test created`, pl.Message) }) t.Run("Delete", func(t *testing.T) { @@ -42,7 +42,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Delete(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] branch test deleted`, pl.Message) + assert.Equal(t, `[test/repo] branch test deleted`, pl.Message) }) t.Run("Fork", func(t *testing.T) { @@ -51,7 +51,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Fork(p) require.NoError(t, err) - assert.Equal(t, `test/repo2 is forked to test/repo`, pl.Message) + assert.Equal(t, `test/repo2 is forked to test/repo`, pl.Message) }) t.Run("Push", func(t *testing.T) { @@ -60,7 +60,9 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Push(p) require.NoError(t, err) - assert.Equal(t, "[test/repo:test] 2 new commits\n[2020558] commit message - user1\n[2020558] commit message - user1", pl.Message) + assert.Equal(t, `[test/repo:test] 2 new commits +[2020558] commit message - user1 +[2020558] commit message - user1`, pl.Message) }) t.Run("Issue", func(t *testing.T) { @@ -70,13 +72,15 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Issue(p) require.NoError(t, err) - assert.Equal(t, "[test/repo] Issue opened: #2 crash by user1\n\nissue body", pl.Message) + assert.Equal(t, `[test/repo] Issue opened: #2 crash by user1 + +issue body`, pl.Message) p.Action = api.HookIssueClosed pl, err = tc.Issue(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Issue closed: #2 crash by user1`, pl.Message) + assert.Equal(t, `[test/repo] Issue closed: #2 crash by user1`, pl.Message) }) t.Run("IssueComment", func(t *testing.T) { @@ -85,7 +89,8 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.IssueComment(p) require.NoError(t, err) - assert.Equal(t, "[test/repo] New comment on issue #2 crash by user1\nmore info needed", pl.Message) + assert.Equal(t, `[test/repo] New comment on issue #2 crash by user1 +more info needed`, pl.Message) }) t.Run("PullRequest", func(t *testing.T) { @@ -94,7 +99,8 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.PullRequest(p) require.NoError(t, err) - assert.Equal(t, "[test/repo] Pull request opened: #12 Fix bug by user1\nfixes bug #2", pl.Message) + assert.Equal(t, `[test/repo] Pull request opened: #12 Fix bug by user1 +fixes bug #2`, pl.Message) }) t.Run("PullRequestComment", func(t *testing.T) { @@ -103,7 +109,8 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.IssueComment(p) require.NoError(t, err) - assert.Equal(t, "[test/repo] New comment on pull request #12 Fix bug by user1\nchanges requested", pl.Message) + assert.Equal(t, `[test/repo] New comment on pull request #12 Fix bug by user1 +changes requested`, pl.Message) }) t.Run("Review", func(t *testing.T) { @@ -113,7 +120,8 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Review(p, webhook_module.HookEventPullRequestReviewApproved) require.NoError(t, err) - assert.Equal(t, "[test/repo] Pull request review approved: #12 Fix bug\ngood job", pl.Message) + assert.Equal(t, `[test/repo] Pull request review approved: #12 Fix bug +good job`, pl.Message) }) t.Run("Repository", func(t *testing.T) { @@ -122,7 +130,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Repository(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Repository created`, pl.Message) + assert.Equal(t, `[test/repo] Repository created`, pl.Message) }) t.Run("Package", func(t *testing.T) { @@ -131,7 +139,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Package(p) require.NoError(t, err) - assert.Equal(t, `Package created: GiteaContainer:latest by user1`, pl.Message) + assert.Equal(t, `Package created: GiteaContainer:latest by user1`, pl.Message) }) t.Run("Wiki", func(t *testing.T) { @@ -141,19 +149,19 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Wiki(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.Message) + assert.Equal(t, `[test/repo] New wiki page 'index' (Wiki change comment) by user1`, pl.Message) p.Action = api.HookWikiEdited pl, err = tc.Wiki(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.Message) + assert.Equal(t, `[test/repo] Wiki page 'index' edited (Wiki change comment) by user1`, pl.Message) p.Action = api.HookWikiDeleted pl, err = tc.Wiki(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.Message) + assert.Equal(t, `[test/repo] Wiki page 'index' deleted by user1`, pl.Message) }) t.Run("Release", func(t *testing.T) { @@ -162,7 +170,7 @@ func TestTelegramPayload(t *testing.T) { pl, err := tc.Release(p) require.NoError(t, err) - assert.Equal(t, `[test/repo] Release created: v1.0 by user1`, pl.Message) + assert.Equal(t, `[test/repo] Release created: v1.0 by user1`, pl.Message) }) } @@ -198,5 +206,7 @@ func TestTelegramJSONPayload(t *testing.T) { var body TelegramPayload err = json.NewDecoder(req.Body).Decode(&body) assert.NoError(t, err) - assert.Equal(t, "[test/repo:test] 2 new commits\n[2020558] commit message - user1\n[2020558] commit message - user1", body.Message) + assert.Equal(t, `[test/repo:test] 2 new commits +[2020558] commit message - user1 +[2020558] commit message - user1`, body.Message) } diff --git a/templates/org/create.tmpl b/templates/org/create.tmpl index 004cd9be80..92be4a0adb 100644 --- a/templates/org/create.tmpl +++ b/templates/org/create.tmpl @@ -34,7 +34,7 @@
- +
diff --git a/templates/package/content/conan.tmpl b/templates/package/content/conan.tmpl index 13a7723fe4..8ebc258e31 100644 --- a/templates/package/content/conan.tmpl +++ b/templates/package/content/conan.tmpl @@ -4,7 +4,7 @@
-
conan remote add gitea 
+
conan remote add forgejo 
diff --git a/templates/repo/blame.tmpl b/templates/repo/blame.tmpl index 691f75dcad..58be0b17e1 100644 --- a/templates/repo/blame.tmpl +++ b/templates/repo/blame.tmpl @@ -78,7 +78,7 @@ {{end}} - {{$row.Code}} + {{$row.Code}} {{end}} diff --git a/templates/repo/cite/cite_buttons.tmpl b/templates/repo/cite/cite_buttons.tmpl index 426ca3858e..5a6de23c5c 100644 --- a/templates/repo/cite/cite_buttons.tmpl +++ b/templates/repo/cite/cite_buttons.tmpl @@ -1,9 +1,6 @@ - - +
{{end}}
-
+
{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived) (not .DiffNotAvailable)}}
-
+
{{if $showFileViewToggle}}
diff --git a/templates/repo/diff/conversation.tmpl b/templates/repo/diff/conversation.tmpl index ef92f3bdfc..c80d999f47 100644 --- a/templates/repo/diff/conversation.tmpl +++ b/templates/repo/diff/conversation.tmpl @@ -37,8 +37,8 @@ {{template "repo/diff/comments" dict "root" $ "comments" .comments}}
-
-
+
+
@@ -56,7 +56,7 @@ {{end}} {{if and $.SignedUserID (not $.Repository.IsArchived)}} - {{end}} diff --git a/templates/repo/file_info.tmpl b/templates/repo/file_info.tmpl index 61cb9f4b8a..829f6fccad 100644 --- a/templates/repo/file_info.tmpl +++ b/templates/repo/file_info.tmpl @@ -12,6 +12,7 @@ {{if .FileSize}}
{{ctx.Locale.TrSize .FileSize}}{{if .IsLFSFile}} ({{ctx.Locale.Tr "repo.stored_lfs"}}){{end}} + {{if .IsAnnexFile}} ({{ctx.Locale.Tr "repo.stored_annex"}}{{if not .IsAnnexFilePresent}} - {{ctx.Locale.Tr "repo.stored_annex_not_present"}}{{end}}){{end}}
{{end}} {{if .LFSLock}} diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl index d8c53d08be..e81e65bc7d 100644 --- a/templates/repo/header.tmpl +++ b/templates/repo/header.tmpl @@ -35,7 +35,7 @@
{{if not (or .IsBeingCreated .IsBroken)}} -
+
{{if $.RepoTransfer}}
{{$.CsrfTokenHtml}} diff --git a/templates/repo/issue/labels/labels_selector_field.tmpl b/templates/repo/issue/labels/labels_selector_field.tmpl index e5f15caca5..9e54e7a649 100644 --- a/templates/repo/issue/labels/labels_selector_field.tmpl +++ b/templates/repo/issue/labels/labels_selector_field.tmpl @@ -5,11 +5,11 @@ {{svg "octicon-gear" 16 "tw-ml-1"}} {{end}} - {{end}} diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl index dfbc45dd61..d127c2ef24 100644 --- a/templates/repo/view_file.tmpl +++ b/templates/repo/view_file.tmpl @@ -60,7 +60,7 @@ {{end}}
{{svg "octicon-download"}} - {{svg "octicon-copy" 14}} + {{svg "octicon-copy" 14}} {{if .EnableFeed}} {{if .IsViewBranch}} diff --git a/templates/user/settings/applications.tmpl b/templates/user/settings/applications.tmpl index 84541cb82e..04d4dcdb18 100644 --- a/templates/user/settings/applications.tmpl +++ b/templates/user/settings/applications.tmpl @@ -77,14 +77,12 @@

{{ctx.Locale.Tr "settings.access_token_desc" (HTMLFormat `href="%s/api/swagger" target="_blank"` AppSubUrl) (`href="https://forgejo.org/docs/latest/user/token-scope/" target="_blank"`|SafeHTML)}}

-
- -
+
- + diff --git a/web_src/js/components/RepoActivityTopAuthors.vue b/web_src/js/components/RepoActivityTopAuthors.vue index a41fb61d78..52986c0493 100644 --- a/web_src/js/components/RepoActivityTopAuthors.vue +++ b/web_src/js/components/RepoActivityTopAuthors.vue @@ -1,14 +1,36 @@