Compare commits
101 commits
b72593e7da
...
36d69e6608
Author | SHA1 | Date | |
---|---|---|---|
36d69e6608 | |||
|
b5c49a19d2 | ||
|
6771312133 | ||
|
07ad7dd8f6 | ||
|
6a472f90f8 | ||
|
f00123b893 | ||
|
0f61cb389a | ||
|
cbdef1792f | ||
|
ef4c6abbb9 | ||
|
0b01434aa3 | ||
|
487b2129aa | ||
|
b9674b3ee9 | ||
|
a5776cc883 | ||
|
972dd76eeb | ||
|
af32e3c09a | ||
|
ceb9d543b3 | ||
|
0d06f3c2dd | ||
|
b898370a04 | ||
|
7eb54dbfca | ||
|
055a403781 | ||
|
f7e9db75c4 | ||
|
4ecbb2ef1b | ||
|
7a8b2d8eb8 | ||
|
6bf1bcab57 | ||
|
4feb183d91 | ||
|
0f10d15dfa | ||
|
d877f18092 | ||
|
32a0e1e2b4 | ||
|
ab4570d0cb | ||
|
7c40672ddf | ||
|
aefe770255 | ||
|
40b639d2a0 | ||
|
3f9f6f1350 | ||
|
6de1f714f3 | ||
|
fa448e2293 | ||
|
161fca9007 | ||
|
08894a9335 | ||
|
56642554d1 | ||
|
10a9b6b806 | ||
|
6917b25ad3 | ||
|
37fc6cdaf6 | ||
|
65529bd334 | ||
|
d91839692f | ||
|
9934931f1f | ||
|
c6d2c18052 | ||
|
8f8d85da47 | ||
|
7e81775184 | ||
|
99bd29f02f | ||
|
e5f9482745 | ||
|
220594bacc | ||
|
1582b1e83a | ||
|
dbecdd2be2 | ||
|
98afc8fcdb | ||
|
679010f079 | ||
|
0dc681ed13 | ||
|
dc13eecc04 | ||
|
8a8718be4d | ||
|
50ac410e35 | ||
|
cbdf32126f | ||
|
1f08add260 | ||
|
8b86b6f1a0 | ||
|
564183bbbd | ||
|
9d6974d1f8 | ||
|
92867c76a7 | ||
|
186cb13b26 | ||
|
9673355bf3 | ||
|
0bba3e2158 | ||
|
6334a48043 | ||
|
ba1f73f550 | ||
|
00cfe9aef9 | ||
|
d8fda28dfc | ||
|
7afee47817 | ||
|
887c050ea3 | ||
|
9ba48419ba | ||
|
283b678146 | ||
|
b6be9fb901 | ||
|
767d292c83 | ||
|
8d3c6251a7 | ||
|
94ce24cf92 | ||
|
696ed328fb | ||
|
dd3487dbbf | ||
|
18249e58be | ||
|
f8a3482cdb | ||
|
da993b09ad | ||
|
6ae15bc15e | ||
|
f30c648037 | ||
|
248a5b8d7a | ||
|
5678e9ab20 | ||
|
a7124df0c5 | ||
|
abf40ee957 | ||
|
7be345f88e | ||
|
8b1d84797f | ||
|
ba0ed5823c | ||
|
e59f92dec8 | ||
|
10b919d3ca | ||
|
f45a6cb3b7 | ||
|
5b6a375d05 | ||
|
ac34a68a93 | ||
|
b23d4ec4bb | ||
|
b917571d81 | ||
|
c91f7d3599 |
172 changed files with 3106 additions and 1782 deletions
|
@ -179,7 +179,6 @@ package "code.gitea.io/gitea/modules/git"
|
|||
func (ErrExecTimeout).Error
|
||||
func (ErrUnsupportedVersion).Error
|
||||
func SetUpdateHook
|
||||
func GetObjectFormatOfRepo
|
||||
func openRepositoryWithDefaultContext
|
||||
func IsTagExist
|
||||
func ToEntryMode
|
||||
|
@ -315,8 +314,6 @@ package "code.gitea.io/gitea/routers/web"
|
|||
|
||||
package "code.gitea.io/gitea/routers/web/org"
|
||||
func MustEnableProjects
|
||||
func getActionIssues
|
||||
func UpdateIssueProject
|
||||
|
||||
package "code.gitea.io/gitea/services/context"
|
||||
func GetPrivateContext
|
||||
|
|
|
@ -26,3 +26,6 @@ indent_style = tab
|
|||
|
||||
[*.svg]
|
||||
insert_final_newline = false
|
||||
|
||||
[options/locale/locale_*.ini]
|
||||
insert_final_newline = false
|
||||
|
|
2
Makefile
2
Makefile
|
@ -82,7 +82,7 @@ endif
|
|||
STORED_VERSION_FILE := VERSION
|
||||
HUGO_VERSION ?= 0.111.3
|
||||
|
||||
GITEA_COMPATIBILITY ?= gitea-1.22.0
|
||||
GITEA_COMPATIBILITY ?= gitea-1.21.11
|
||||
|
||||
STORED_VERSION=$(shell cat $(STORED_VERSION_FILE) 2>/dev/null)
|
||||
ifneq ($(STORED_VERSION),)
|
||||
|
|
10
assets/go-licenses.json
generated
10
assets/go-licenses.json
generated
File diff suppressed because one or more lines are too long
17
cmd/hook.go
17
cmd/hook.go
|
@ -316,12 +316,12 @@ func runHookUpdate(c *cli.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Deletion of the ref means that the new commit ID is only composed of '0'.
|
||||
if strings.ContainsFunc(newCommitID, func(e rune) bool { return e != '0' }) {
|
||||
return nil
|
||||
// Empty new commit ID means deletion.
|
||||
if git.IsEmptyCommitID(newCommitID, nil) {
|
||||
return fail(ctx, fmt.Sprintf("The deletion of %s is skipped as it's an internal reference.", refFullName), "")
|
||||
}
|
||||
|
||||
return fail(ctx, fmt.Sprintf("The deletion of %s is skipped as it's an internal reference.", refFullName), "")
|
||||
return nil
|
||||
}
|
||||
|
||||
func runHookPostReceive(c *cli.Context) error {
|
||||
|
@ -366,6 +366,7 @@ Forgejo or set your environment appropriately.`, "")
|
|||
isWiki, _ := strconv.ParseBool(os.Getenv(repo_module.EnvRepoIsWiki))
|
||||
repoName := os.Getenv(repo_module.EnvRepoName)
|
||||
pusherID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPusherID), 10, 64)
|
||||
prID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPRID), 10, 64)
|
||||
pusherName := os.Getenv(repo_module.EnvPusherName)
|
||||
|
||||
hookOptions := private.HookOptions{
|
||||
|
@ -375,6 +376,8 @@ Forgejo or set your environment appropriately.`, "")
|
|||
GitObjectDirectory: os.Getenv(private.GitObjectDirectory),
|
||||
GitQuarantinePath: os.Getenv(private.GitQuarantinePath),
|
||||
GitPushOptions: pushOptions(),
|
||||
PullRequestID: prID,
|
||||
PushTrigger: repo_module.PushTrigger(os.Getenv(repo_module.EnvPushTrigger)),
|
||||
}
|
||||
oldCommitIDs := make([]string, hookBatchSize)
|
||||
newCommitIDs := make([]string, hookBatchSize)
|
||||
|
@ -402,8 +405,7 @@ Forgejo or set your environment appropriately.`, "")
|
|||
newCommitIDs[count] = string(fields[1])
|
||||
refFullNames[count] = git.RefName(fields[2])
|
||||
|
||||
commitID, _ := git.NewIDFromString(newCommitIDs[count])
|
||||
if refFullNames[count] == git.BranchPrefix+"master" && !commitID.IsZero() && count == total {
|
||||
if refFullNames[count] == git.BranchPrefix+"master" && !git.IsEmptyCommitID(newCommitIDs[count], nil) && count == total {
|
||||
masterPushed = true
|
||||
}
|
||||
count++
|
||||
|
@ -694,8 +696,7 @@ Forgejo or set your environment appropriately.`, "")
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
commitID, _ := git.NewIDFromString(rs.OldOID)
|
||||
if !commitID.IsZero() {
|
||||
if !git.IsEmptyCommitID(rs.OldOID, nil) {
|
||||
err = writeDataPktLine(ctx, os.Stdout, []byte("option old-oid "+rs.OldOID))
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -34,7 +34,7 @@ var CmdMigrateStorage = &cli.Command{
|
|||
Name: "type",
|
||||
Aliases: []string{"t"},
|
||||
Value: "",
|
||||
Usage: "Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log'",
|
||||
Usage: "Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log', 'actions-artifacts",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "storage",
|
||||
|
@ -160,6 +160,13 @@ func migrateActionsLog(ctx context.Context, dstStorage storage.ObjectStorage) er
|
|||
})
|
||||
}
|
||||
|
||||
func migrateActionsArtifacts(ctx context.Context, dstStorage storage.ObjectStorage) error {
|
||||
return db.Iterate(ctx, nil, func(ctx context.Context, artifact *actions_model.ActionArtifact) error {
|
||||
_, err := storage.Copy(dstStorage, artifact.ArtifactPath, storage.ActionsArtifacts, artifact.ArtifactPath)
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
func runMigrateStorage(ctx *cli.Context) error {
|
||||
stdCtx, cancel := installSignals()
|
||||
defer cancel()
|
||||
|
@ -223,13 +230,14 @@ func runMigrateStorage(ctx *cli.Context) error {
|
|||
}
|
||||
|
||||
migratedMethods := map[string]func(context.Context, storage.ObjectStorage) error{
|
||||
"attachments": migrateAttachments,
|
||||
"lfs": migrateLFS,
|
||||
"avatars": migrateAvatars,
|
||||
"repo-avatars": migrateRepoAvatars,
|
||||
"repo-archivers": migrateRepoArchivers,
|
||||
"packages": migratePackages,
|
||||
"actions-log": migrateActionsLog,
|
||||
"attachments": migrateAttachments,
|
||||
"lfs": migrateLFS,
|
||||
"avatars": migrateAvatars,
|
||||
"repo-avatars": migrateRepoAvatars,
|
||||
"repo-archivers": migrateRepoArchivers,
|
||||
"packages": migratePackages,
|
||||
"actions-log": migrateActionsLog,
|
||||
"actions-artifacts": migrateActionsArtifacts,
|
||||
}
|
||||
|
||||
tp := strings.ToLower(ctx.String("type"))
|
||||
|
|
6
go.mod
6
go.mod
|
@ -1,14 +1,15 @@
|
|||
module code.gitea.io/gitea
|
||||
|
||||
go 1.22.2
|
||||
go 1.22.3
|
||||
|
||||
require (
|
||||
code.forgejo.org/forgejo/reply v1.0.1
|
||||
code.gitea.io/actions-proto-go v0.4.0
|
||||
code.gitea.io/gitea-vet v0.2.3
|
||||
code.gitea.io/sdk/gitea v0.17.1
|
||||
codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570
|
||||
connectrpc.com/connect v1.15.0
|
||||
gitea.com/go-chi/binding v0.0.0-20230415142243-04b515c6d669
|
||||
gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed
|
||||
gitea.com/go-chi/cache v0.2.0
|
||||
gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098
|
||||
gitea.com/go-chi/session v0.0.0-20240316035857-16768d98ec96
|
||||
|
@ -23,7 +24,6 @@ require (
|
|||
github.com/caddyserver/certmagic v0.20.0
|
||||
github.com/chi-middleware/proxy v1.1.1
|
||||
github.com/denisenkom/go-mssqldb v0.12.3
|
||||
github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21
|
||||
github.com/djherbis/buffer v1.2.0
|
||||
github.com/djherbis/nio/v3 v3.0.1
|
||||
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5
|
||||
|
|
10
go.sum
10
go.sum
|
@ -35,6 +35,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
|||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
code.forgejo.org/forgejo/reply v1.0.1 h1:usZi5yx7/g0D+xtGPJEM6mCvoDNdWvmtJu5J9/B/KBI=
|
||||
code.forgejo.org/forgejo/reply v1.0.1/go.mod h1:RyZUfzQLc+fuLIGjTSQWDAJWPiL4WtKXB/FifT5fM7U=
|
||||
code.gitea.io/actions-proto-go v0.4.0 h1:OsPBPhodXuQnsspG1sQ4eRE1PeoZyofd7+i73zCwnsU=
|
||||
code.gitea.io/actions-proto-go v0.4.0/go.mod h1:mn7Wkqz6JbnTOHQpot3yDeHx+O5C9EGhMEE+htvHBas=
|
||||
code.gitea.io/gitea-vet v0.2.3 h1:gdFmm6WOTM65rE8FUBTRzeQZYzXePKSSB1+r574hWwI=
|
||||
|
@ -54,8 +56,8 @@ git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4H
|
|||
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs=
|
||||
gitea.com/gitea/act v0.259.1 h1:8GG1o/xtUHl3qjn5f0h/2FXrT5ubBn05TJOM5ry+FBw=
|
||||
gitea.com/gitea/act v0.259.1/go.mod h1:UxZWRYqQG2Yj4+4OqfGWW5a3HELwejyWFQyU7F1jUD8=
|
||||
gitea.com/go-chi/binding v0.0.0-20230415142243-04b515c6d669 h1:RUBX+MK/TsDxpHmymaOaydfigEbbzqUnG1OTZU/HAeo=
|
||||
gitea.com/go-chi/binding v0.0.0-20230415142243-04b515c6d669/go.mod h1:77TZu701zMXWJFvB8gvTbQ92zQ3DQq/H7l5wAEjQRKc=
|
||||
gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed h1:EZZBtilMLSZNWtHHcgq2mt6NSGhJSZBuduAlinMEmso=
|
||||
gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed/go.mod h1:E3i3cgB04dDx0v3CytCgRTTn9Z/9x891aet3r456RVw=
|
||||
gitea.com/go-chi/cache v0.2.0 h1:E0npuTfDW6CT1yD8NMDVc1SK6IeRjfmRL2zlEsCEd7w=
|
||||
gitea.com/go-chi/cache v0.2.0/go.mod h1:iQlVK2aKTZ/rE9UcHyz9pQWGvdP9i1eI2spOpzgCrtE=
|
||||
gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098 h1:p2ki+WK0cIeNQuqjR98IP2KZQKRzJJiV7aTeMAFwaWo=
|
||||
|
@ -224,8 +226,6 @@ github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+
|
|||
github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||
github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21 h1:PdsjTl0Cg+ZJgOx/CFV5NNgO1ThTreqdgKYiDCMHJwA=
|
||||
github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21/go.mod h1:xJvkyD6Y2rZapGvPJLYo9dyx1s5dxBEDPa8T3YTuOk0=
|
||||
github.com/djherbis/buffer v1.1.0/go.mod h1:VwN8VdFkMY0DCALdY8o00d3IZ6Amz/UNVMWcSaJT44o=
|
||||
github.com/djherbis/buffer v1.2.0 h1:PH5Dd2ss0C7CRRhQCZ2u7MssF+No9ide8Ye71nPHcrQ=
|
||||
github.com/djherbis/buffer v1.2.0/go.mod h1:fjnebbZjCUpPinBRD+TDwXSOeNQ7fPQWLfGQqiAiUyE=
|
||||
|
@ -287,7 +287,6 @@ github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73/go.mod h1:jyveZeGw5La
|
|||
github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
|
||||
github.com/go-chi/chi/v5 v5.0.1/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||
github.com/go-chi/chi/v5 v5.0.4/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||
github.com/go-chi/chi/v5 v5.0.11 h1:BnpYbFZ3T3S1WMpD79r7R5ThWX40TaFB7L31Y8xqSwA=
|
||||
github.com/go-chi/chi/v5 v5.0.11/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
|
||||
|
@ -362,7 +361,6 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA
|
|||
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
|
||||
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
|
||||
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
|
||||
github.com/goccy/go-json v0.9.5/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
github.com/goccy/go-json v0.9.6/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
|
|
|
@ -326,15 +326,18 @@ func GetLatestRun(ctx context.Context, repoID int64) (*ActionRun, error) {
|
|||
|
||||
func GetLatestRunForBranchAndWorkflow(ctx context.Context, repoID int64, branch, workflowFile, event string) (*ActionRun, error) {
|
||||
var run ActionRun
|
||||
q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("ref=?", branch).And("workflow_id=?", workflowFile)
|
||||
q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("workflow_id=?", workflowFile)
|
||||
if event != "" {
|
||||
q = q.And("event=?", event)
|
||||
}
|
||||
if branch != "" {
|
||||
q = q.And("ref=?", branch)
|
||||
}
|
||||
has, err := q.Desc("id").Get(&run)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, workflow_id %s", repoID, branch, workflowFile)
|
||||
return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, event %s, workflow_id %s", repoID, branch, event, workflowFile)
|
||||
}
|
||||
return &run, nil
|
||||
}
|
||||
|
|
|
@ -431,14 +431,15 @@ func (a *Action) GetIssueContent(ctx context.Context) string {
|
|||
// GetFeedsOptions options for retrieving feeds
|
||||
type GetFeedsOptions struct {
|
||||
db.ListOptions
|
||||
RequestedUser *user_model.User // the user we want activity for
|
||||
RequestedTeam *organization.Team // the team we want activity for
|
||||
RequestedRepo *repo_model.Repository // the repo we want activity for
|
||||
Actor *user_model.User // the user viewing the activity
|
||||
IncludePrivate bool // include private actions
|
||||
OnlyPerformedBy bool // only actions performed by requested user
|
||||
IncludeDeleted bool // include deleted actions
|
||||
Date string // the day we want activity for: YYYY-MM-DD
|
||||
RequestedUser *user_model.User // the user we want activity for
|
||||
RequestedTeam *organization.Team // the team we want activity for
|
||||
RequestedRepo *repo_model.Repository // the repo we want activity for
|
||||
Actor *user_model.User // the user viewing the activity
|
||||
IncludePrivate bool // include private actions
|
||||
OnlyPerformedBy bool // only actions performed by requested user
|
||||
OnlyPerformedByActor bool // only actions performed by the original actor
|
||||
IncludeDeleted bool // include deleted actions
|
||||
Date string // the day we want activity for: YYYY-MM-DD
|
||||
}
|
||||
|
||||
// GetFeeds returns actions according to the provided options
|
||||
|
@ -481,6 +482,10 @@ func ActivityReadable(user, doer *user_model.User) bool {
|
|||
func activityQueryCondition(ctx context.Context, opts GetFeedsOptions) (builder.Cond, error) {
|
||||
cond := builder.NewCond()
|
||||
|
||||
if opts.OnlyPerformedByActor {
|
||||
cond = cond.And(builder.Expr("`action`.user_id = `action`.act_user_id"))
|
||||
}
|
||||
|
||||
if opts.RequestedTeam != nil && opts.RequestedUser == nil {
|
||||
org, err := user_model.GetUserByID(ctx, opts.RequestedTeam.OrgID)
|
||||
if err != nil {
|
||||
|
|
|
@ -59,6 +59,7 @@ type Engine interface {
|
|||
SumInt(bean any, columnName string) (res int64, err error)
|
||||
Sync(...any) error
|
||||
Select(string) *xorm.Session
|
||||
SetExpr(string, any) *xorm.Session
|
||||
NotIn(string, ...any) *xorm.Session
|
||||
OrderBy(any, ...any) *xorm.Session
|
||||
Exist(...any) (bool, error)
|
||||
|
|
|
@ -5,11 +5,11 @@ package issues
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
project_model "code.gitea.io/gitea/models/project"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
)
|
||||
|
||||
// LoadProject load the project the issue was assigned to
|
||||
|
@ -90,58 +90,73 @@ func LoadIssuesFromBoardList(ctx context.Context, bs project_model.BoardList) (m
|
|||
return issuesMap, nil
|
||||
}
|
||||
|
||||
// ChangeProjectAssign changes the project associated with an issue
|
||||
func ChangeProjectAssign(ctx context.Context, issue *Issue, doer *user_model.User, newProjectID int64) error {
|
||||
ctx, committer, err := db.TxContext(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer committer.Close()
|
||||
// IssueAssignOrRemoveProject changes the project associated with an issue
|
||||
// If newProjectID is 0, the issue is removed from the project
|
||||
func IssueAssignOrRemoveProject(ctx context.Context, issue *Issue, doer *user_model.User, newProjectID, newColumnID int64) error {
|
||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||
oldProjectID := issue.projectID(ctx)
|
||||
|
||||
if err := addUpdateIssueProject(ctx, issue, doer, newProjectID); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return committer.Commit()
|
||||
}
|
||||
|
||||
func addUpdateIssueProject(ctx context.Context, issue *Issue, doer *user_model.User, newProjectID int64) error {
|
||||
oldProjectID := issue.projectID(ctx)
|
||||
|
||||
if err := issue.LoadRepo(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Only check if we add a new project and not remove it.
|
||||
if newProjectID > 0 {
|
||||
newProject, err := project_model.GetProjectByID(ctx, newProjectID)
|
||||
if err != nil {
|
||||
if err := issue.LoadRepo(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
if newProject.RepoID != issue.RepoID && newProject.OwnerID != issue.Repo.OwnerID {
|
||||
return fmt.Errorf("issue's repository is not the same as project's repository")
|
||||
|
||||
// Only check if we add a new project and not remove it.
|
||||
if newProjectID > 0 {
|
||||
newProject, err := project_model.GetProjectByID(ctx, newProjectID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !newProject.CanBeAccessedByOwnerRepo(issue.Repo.OwnerID, issue.Repo) {
|
||||
return util.NewPermissionDeniedErrorf("issue %d can't be accessed by project %d", issue.ID, newProject.ID)
|
||||
}
|
||||
if newColumnID == 0 {
|
||||
newDefaultColumn, err := newProject.GetDefaultBoard(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
newColumnID = newDefaultColumn.ID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := db.GetEngine(ctx).Where("project_issue.issue_id=?", issue.ID).Delete(&project_model.ProjectIssue{}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if oldProjectID > 0 || newProjectID > 0 {
|
||||
if _, err := CreateComment(ctx, &CreateCommentOptions{
|
||||
Type: CommentTypeProject,
|
||||
Doer: doer,
|
||||
Repo: issue.Repo,
|
||||
Issue: issue,
|
||||
OldProjectID: oldProjectID,
|
||||
ProjectID: newProjectID,
|
||||
}); err != nil {
|
||||
if _, err := db.GetEngine(ctx).Where("project_issue.issue_id=?", issue.ID).Delete(&project_model.ProjectIssue{}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return db.Insert(ctx, &project_model.ProjectIssue{
|
||||
IssueID: issue.ID,
|
||||
ProjectID: newProjectID,
|
||||
if oldProjectID > 0 || newProjectID > 0 {
|
||||
if _, err := CreateComment(ctx, &CreateCommentOptions{
|
||||
Type: CommentTypeProject,
|
||||
Doer: doer,
|
||||
Repo: issue.Repo,
|
||||
Issue: issue,
|
||||
OldProjectID: oldProjectID,
|
||||
ProjectID: newProjectID,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if newProjectID == 0 {
|
||||
return nil
|
||||
}
|
||||
if newColumnID == 0 {
|
||||
panic("newColumnID must not be zero") // shouldn't happen
|
||||
}
|
||||
|
||||
res := struct {
|
||||
MaxSorting int64
|
||||
IssueCount int64
|
||||
}{}
|
||||
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as issue_count").Table("project_issue").
|
||||
Where("project_id=?", newProjectID).
|
||||
And("project_board_id=?", newColumnID).
|
||||
Get(&res); err != nil {
|
||||
return err
|
||||
}
|
||||
newSorting := util.Iif(res.IssueCount > 0, res.MaxSorting+1, 0)
|
||||
return db.Insert(ctx, &project_model.ProjectIssue{
|
||||
IssueID: issue.ID,
|
||||
ProjectID: newProjectID,
|
||||
ProjectBoardID: newColumnID,
|
||||
Sorting: newSorting,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
@ -450,65 +450,6 @@ func UpdateIssueMentions(ctx context.Context, issueID int64, mentions []*user_mo
|
|||
return nil
|
||||
}
|
||||
|
||||
// UpdateIssueByAPI updates all allowed fields of given issue.
|
||||
// If the issue status is changed a statusChangeComment is returned
|
||||
// similarly if the title is changed the titleChanged bool is set to true
|
||||
func UpdateIssueByAPI(ctx context.Context, issue *Issue, doer *user_model.User) (statusChangeComment *Comment, titleChanged bool, err error) {
|
||||
ctx, committer, err := db.TxContext(ctx)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
defer committer.Close()
|
||||
|
||||
if err := issue.LoadRepo(ctx); err != nil {
|
||||
return nil, false, fmt.Errorf("loadRepo: %w", err)
|
||||
}
|
||||
|
||||
// Reload the issue
|
||||
currentIssue, err := GetIssueByID(ctx, issue.ID)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
sess := db.GetEngine(ctx).ID(issue.ID)
|
||||
cols := []string{"name", "content", "milestone_id", "priority", "deadline_unix", "is_locked"}
|
||||
if issue.NoAutoTime {
|
||||
cols = append(cols, "updated_unix")
|
||||
sess.NoAutoTime()
|
||||
}
|
||||
if _, err := sess.Cols(cols...).Update(issue); err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
titleChanged = currentIssue.Title != issue.Title
|
||||
if titleChanged {
|
||||
opts := &CreateCommentOptions{
|
||||
Type: CommentTypeChangeTitle,
|
||||
Doer: doer,
|
||||
Repo: issue.Repo,
|
||||
Issue: issue,
|
||||
OldTitle: currentIssue.Title,
|
||||
NewTitle: issue.Title,
|
||||
}
|
||||
_, err := CreateComment(ctx, opts)
|
||||
if err != nil {
|
||||
return nil, false, fmt.Errorf("createComment: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if currentIssue.IsClosed != issue.IsClosed {
|
||||
statusChangeComment, err = doChangeIssueStatus(ctx, issue, doer, false)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
}
|
||||
|
||||
if err := issue.AddCrossReferences(ctx, doer, true); err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
return statusChangeComment, titleChanged, committer.Commit()
|
||||
}
|
||||
|
||||
// UpdateIssueDeadline updates an issue deadline and adds comments. Setting a deadline to 0 means deleting it.
|
||||
func UpdateIssueDeadline(ctx context.Context, issue *Issue, deadlineUnix timeutil.TimeStamp, doer *user_model.User) (err error) {
|
||||
// if the deadline hasn't changed do nothing
|
||||
|
|
|
@ -5,12 +5,14 @@ package project
|
|||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"regexp"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
||||
"xorm.io/builder"
|
||||
)
|
||||
|
@ -82,6 +84,17 @@ func (b *Board) NumIssues(ctx context.Context) int {
|
|||
return int(c)
|
||||
}
|
||||
|
||||
func (b *Board) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
|
||||
issues := make([]*ProjectIssue, 0, 5)
|
||||
if err := db.GetEngine(ctx).Where("project_id=?", b.ProjectID).
|
||||
And("project_board_id=?", b.ID).
|
||||
OrderBy("sorting, id").
|
||||
Find(&issues); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return issues, nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
db.RegisterModel(new(Board))
|
||||
}
|
||||
|
@ -152,12 +165,27 @@ func createBoardsForProjectsType(ctx context.Context, project *Project) error {
|
|||
return db.Insert(ctx, boards)
|
||||
}
|
||||
|
||||
// maxProjectColumns max columns allowed in a project, this should not bigger than 127
|
||||
// because sorting is int8 in database
|
||||
const maxProjectColumns = 20
|
||||
|
||||
// NewBoard adds a new project board to a given project
|
||||
func NewBoard(ctx context.Context, board *Board) error {
|
||||
if len(board.Color) != 0 && !BoardColorPattern.MatchString(board.Color) {
|
||||
return fmt.Errorf("bad color code: %s", board.Color)
|
||||
}
|
||||
|
||||
res := struct {
|
||||
MaxSorting int64
|
||||
ColumnCount int64
|
||||
}{}
|
||||
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as column_count").Table("project_board").
|
||||
Where("project_id=?", board.ProjectID).Get(&res); err != nil {
|
||||
return err
|
||||
}
|
||||
if res.ColumnCount >= maxProjectColumns {
|
||||
return fmt.Errorf("NewBoard: maximum number of columns reached")
|
||||
}
|
||||
board.Sorting = int8(util.Iif(res.ColumnCount > 0, res.MaxSorting+1, 0))
|
||||
_, err := db.GetEngine(ctx).Insert(board)
|
||||
return err
|
||||
}
|
||||
|
@ -191,7 +219,17 @@ func deleteBoardByID(ctx context.Context, boardID int64) error {
|
|||
return fmt.Errorf("deleteBoardByID: cannot delete default board")
|
||||
}
|
||||
|
||||
if err = board.removeIssues(ctx); err != nil {
|
||||
// move all issues to the default column
|
||||
project, err := GetProjectByID(ctx, board.ProjectID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defaultColumn, err := project.GetDefaultBoard(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = board.moveIssuesToAnotherColumn(ctx, defaultColumn); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -244,21 +282,15 @@ func UpdateBoard(ctx context.Context, board *Board) error {
|
|||
// GetBoards fetches all boards related to a project
|
||||
func (p *Project) GetBoards(ctx context.Context) (BoardList, error) {
|
||||
boards := make([]*Board, 0, 5)
|
||||
|
||||
if err := db.GetEngine(ctx).Where("project_id=? AND `default`=?", p.ID, false).OrderBy("sorting").Find(&boards); err != nil {
|
||||
if err := db.GetEngine(ctx).Where("project_id=?", p.ID).OrderBy("sorting, id").Find(&boards); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defaultB, err := p.getDefaultBoard(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return append([]*Board{defaultB}, boards...), nil
|
||||
return boards, nil
|
||||
}
|
||||
|
||||
// getDefaultBoard return default board and ensure only one exists
|
||||
func (p *Project) getDefaultBoard(ctx context.Context) (*Board, error) {
|
||||
// GetDefaultBoard return default board and ensure only one exists
|
||||
func (p *Project) GetDefaultBoard(ctx context.Context) (*Board, error) {
|
||||
var board Board
|
||||
has, err := db.GetEngine(ctx).
|
||||
Where("project_id=? AND `default` = ?", p.ID, true).
|
||||
|
@ -318,3 +350,42 @@ func UpdateBoardSorting(ctx context.Context, bs BoardList) error {
|
|||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func GetColumnsByIDs(ctx context.Context, projectID int64, columnsIDs []int64) (BoardList, error) {
|
||||
columns := make([]*Board, 0, 5)
|
||||
if err := db.GetEngine(ctx).
|
||||
Where("project_id =?", projectID).
|
||||
In("id", columnsIDs).
|
||||
OrderBy("sorting").Find(&columns); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return columns, nil
|
||||
}
|
||||
|
||||
// MoveColumnsOnProject sorts columns in a project
|
||||
func MoveColumnsOnProject(ctx context.Context, project *Project, sortedColumnIDs map[int64]int64) error {
|
||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||
sess := db.GetEngine(ctx)
|
||||
columnIDs := util.ValuesOfMap(sortedColumnIDs)
|
||||
movedColumns, err := GetColumnsByIDs(ctx, project.ID, columnIDs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(movedColumns) != len(sortedColumnIDs) {
|
||||
return errors.New("some columns do not exist")
|
||||
}
|
||||
|
||||
for _, column := range movedColumns {
|
||||
if column.ProjectID != project.ID {
|
||||
return fmt.Errorf("column[%d]'s projectID is not equal to project's ID [%d]", column.ProjectID, project.ID)
|
||||
}
|
||||
}
|
||||
|
||||
for sorting, columnID := range sortedColumnIDs {
|
||||
if _, err := sess.Exec("UPDATE `project_board` SET sorting=? WHERE id=?", sorting, columnID); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
package project
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
|
@ -19,7 +21,7 @@ func TestGetDefaultBoard(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
// check if default board was added
|
||||
board, err := projectWithoutDefault.getDefaultBoard(db.DefaultContext)
|
||||
board, err := projectWithoutDefault.GetDefaultBoard(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, int64(5), board.ProjectID)
|
||||
assert.Equal(t, "Uncategorized", board.Title)
|
||||
|
@ -28,7 +30,7 @@ func TestGetDefaultBoard(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
// check if multiple defaults were removed
|
||||
board, err = projectWithMultipleDefaults.getDefaultBoard(db.DefaultContext)
|
||||
board, err = projectWithMultipleDefaults.GetDefaultBoard(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, int64(6), board.ProjectID)
|
||||
assert.Equal(t, int64(9), board.ID)
|
||||
|
@ -42,3 +44,84 @@ func TestGetDefaultBoard(t *testing.T) {
|
|||
assert.Equal(t, int64(6), board.ProjectID)
|
||||
assert.False(t, board.Default)
|
||||
}
|
||||
|
||||
func Test_moveIssuesToAnotherColumn(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
column1 := unittest.AssertExistsAndLoadBean(t, &Board{ID: 1, ProjectID: 1})
|
||||
|
||||
issues, err := column1.GetIssues(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, issues, 1)
|
||||
assert.EqualValues(t, 1, issues[0].ID)
|
||||
|
||||
column2 := unittest.AssertExistsAndLoadBean(t, &Board{ID: 2, ProjectID: 1})
|
||||
issues, err = column2.GetIssues(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, issues, 1)
|
||||
assert.EqualValues(t, 3, issues[0].ID)
|
||||
|
||||
err = column1.moveIssuesToAnotherColumn(db.DefaultContext, column2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
issues, err = column1.GetIssues(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, issues, 0)
|
||||
|
||||
issues, err = column2.GetIssues(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, issues, 2)
|
||||
assert.EqualValues(t, 3, issues[0].ID)
|
||||
assert.EqualValues(t, 0, issues[0].Sorting)
|
||||
assert.EqualValues(t, 1, issues[1].ID)
|
||||
assert.EqualValues(t, 1, issues[1].Sorting)
|
||||
}
|
||||
|
||||
func Test_MoveColumnsOnProject(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
project1 := unittest.AssertExistsAndLoadBean(t, &Project{ID: 1})
|
||||
columns, err := project1.GetBoards(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, columns, 3)
|
||||
assert.EqualValues(t, 0, columns[0].Sorting) // even if there is no default sorting, the code should also work
|
||||
assert.EqualValues(t, 0, columns[1].Sorting)
|
||||
assert.EqualValues(t, 0, columns[2].Sorting)
|
||||
|
||||
err = MoveColumnsOnProject(db.DefaultContext, project1, map[int64]int64{
|
||||
0: columns[1].ID,
|
||||
1: columns[2].ID,
|
||||
2: columns[0].ID,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
columnsAfter, err := project1.GetBoards(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, columnsAfter, 3)
|
||||
assert.EqualValues(t, columns[1].ID, columnsAfter[0].ID)
|
||||
assert.EqualValues(t, columns[2].ID, columnsAfter[1].ID)
|
||||
assert.EqualValues(t, columns[0].ID, columnsAfter[2].ID)
|
||||
}
|
||||
|
||||
func Test_NewBoard(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
project1 := unittest.AssertExistsAndLoadBean(t, &Project{ID: 1})
|
||||
columns, err := project1.GetBoards(db.DefaultContext)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, columns, 3)
|
||||
|
||||
for i := 0; i < maxProjectColumns-3; i++ {
|
||||
err := NewBoard(db.DefaultContext, &Board{
|
||||
Title: fmt.Sprintf("board-%d", i+4),
|
||||
ProjectID: project1.ID,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
err = NewBoard(db.DefaultContext, &Board{
|
||||
Title: "board-21",
|
||||
ProjectID: project1.ID,
|
||||
})
|
||||
assert.Error(t, err)
|
||||
assert.True(t, strings.Contains(err.Error(), "maximum number of columns reached"))
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
)
|
||||
|
||||
// ProjectIssue saves relation from issue to a project
|
||||
|
@ -17,7 +18,7 @@ type ProjectIssue struct { //revive:disable-line:exported
|
|||
IssueID int64 `xorm:"INDEX"`
|
||||
ProjectID int64 `xorm:"INDEX"`
|
||||
|
||||
// If 0, then it has not been added to a specific board in the project
|
||||
// ProjectBoardID should not be zero since 1.22. If it's zero, the issue will not be displayed on UI and it might result in errors.
|
||||
ProjectBoardID int64 `xorm:"INDEX"`
|
||||
|
||||
// the sorting order on the board
|
||||
|
@ -79,11 +80,8 @@ func (p *Project) NumOpenIssues(ctx context.Context) int {
|
|||
func MoveIssuesOnProjectBoard(ctx context.Context, board *Board, sortedIssueIDs map[int64]int64) error {
|
||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||
sess := db.GetEngine(ctx)
|
||||
issueIDs := util.ValuesOfMap(sortedIssueIDs)
|
||||
|
||||
issueIDs := make([]int64, 0, len(sortedIssueIDs))
|
||||
for _, issueID := range sortedIssueIDs {
|
||||
issueIDs = append(issueIDs, issueID)
|
||||
}
|
||||
count, err := sess.Table(new(ProjectIssue)).Where("project_id=?", board.ProjectID).In("issue_id", issueIDs).Count()
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -102,7 +100,44 @@ func MoveIssuesOnProjectBoard(ctx context.Context, board *Board, sortedIssueIDs
|
|||
})
|
||||
}
|
||||
|
||||
func (b *Board) removeIssues(ctx context.Context) error {
|
||||
_, err := db.GetEngine(ctx).Exec("UPDATE `project_issue` SET project_board_id = 0 WHERE project_board_id = ? ", b.ID)
|
||||
return err
|
||||
func (b *Board) moveIssuesToAnotherColumn(ctx context.Context, newColumn *Board) error {
|
||||
if b.ProjectID != newColumn.ProjectID {
|
||||
return fmt.Errorf("columns have to be in the same project")
|
||||
}
|
||||
|
||||
if b.ID == newColumn.ID {
|
||||
return nil
|
||||
}
|
||||
|
||||
res := struct {
|
||||
MaxSorting int64
|
||||
IssueCount int64
|
||||
}{}
|
||||
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as issue_count").
|
||||
Table("project_issue").
|
||||
Where("project_id=?", newColumn.ProjectID).
|
||||
And("project_board_id=?", newColumn.ID).
|
||||
Get(&res); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
issues, err := b.GetIssues(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(issues) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
nextSorting := util.Iif(res.IssueCount > 0, res.MaxSorting+1, 0)
|
||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||
for i, issue := range issues {
|
||||
issue.ProjectBoardID = newColumn.ID
|
||||
issue.Sorting = nextSorting + int64(i)
|
||||
if _, err := db.GetEngine(ctx).ID(issue.ID).Cols("project_board_id", "sorting").Update(issue); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
|
|
@ -161,6 +161,13 @@ func (p *Project) IsRepositoryProject() bool {
|
|||
return p.Type == TypeRepository
|
||||
}
|
||||
|
||||
func (p *Project) CanBeAccessedByOwnerRepo(ownerID int64, repo *repo_model.Repository) bool {
|
||||
if p.Type == TypeRepository {
|
||||
return repo != nil && p.RepoID == repo.ID // if a project belongs to a repository, then its OwnerID is 0 and can be ignored
|
||||
}
|
||||
return p.OwnerID == ownerID && p.RepoID == 0
|
||||
}
|
||||
|
||||
func init() {
|
||||
db.RegisterModel(new(Project))
|
||||
}
|
||||
|
|
|
@ -329,7 +329,7 @@ func (repo *Repository) HTMLURL() string {
|
|||
// CommitLink make link to by commit full ID
|
||||
// note: won't check whether it's an right id
|
||||
func (repo *Repository) CommitLink(commitID string) (result string) {
|
||||
if git.IsEmptyCommitID(commitID) {
|
||||
if git.IsEmptyCommitID(commitID, nil) {
|
||||
result = ""
|
||||
} else {
|
||||
result = repo.Link() + "/commit/" + url.PathEscape(commitID)
|
||||
|
|
|
@ -8,14 +8,14 @@ import "code.gitea.io/gitea/models/db"
|
|||
// SearchOrderByMap represents all possible search order
|
||||
var SearchOrderByMap = map[string]map[string]db.SearchOrderBy{
|
||||
"asc": {
|
||||
"alpha": db.SearchOrderByAlphabetically,
|
||||
"alpha": "owner_name ASC, name ASC",
|
||||
"created": db.SearchOrderByOldest,
|
||||
"updated": db.SearchOrderByLeastUpdated,
|
||||
"size": db.SearchOrderBySize,
|
||||
"id": db.SearchOrderByID,
|
||||
},
|
||||
"desc": {
|
||||
"alpha": db.SearchOrderByAlphabeticallyReverse,
|
||||
"alpha": "owner_name DESC, name DESC",
|
||||
"created": db.SearchOrderByNewest,
|
||||
"updated": db.SearchOrderByRecentUpdated,
|
||||
"size": db.SearchOrderBySizeReverse,
|
||||
|
|
|
@ -122,6 +122,7 @@ func (h Sha256ObjectFormatImpl) ComputeHash(t ObjectType, content []byte) Object
|
|||
var (
|
||||
Sha1ObjectFormat ObjectFormat = Sha1ObjectFormatImpl{}
|
||||
Sha256ObjectFormat ObjectFormat = Sha256ObjectFormatImpl{}
|
||||
// any addition must be reflected in IsEmptyCommitID
|
||||
)
|
||||
|
||||
var SupportedObjectFormats = []ObjectFormat{
|
||||
|
|
|
@ -79,17 +79,25 @@ func NewIDFromString(hexHash string) (ObjectID, error) {
|
|||
return theObjectFormat.MustID(b), nil
|
||||
}
|
||||
|
||||
func IsEmptyCommitID(commitID string) bool {
|
||||
// IsEmptyCommitID checks if an hexadecimal string represents an empty commit according to git (only '0').
|
||||
// If objectFormat is not nil, the length will be checked as well (otherwise the lenght must match the sha1 or sha256 length).
|
||||
func IsEmptyCommitID(commitID string, objectFormat ObjectFormat) bool {
|
||||
if commitID == "" {
|
||||
return true
|
||||
}
|
||||
|
||||
id, err := NewIDFromString(commitID)
|
||||
if err != nil {
|
||||
if objectFormat == nil {
|
||||
if Sha1ObjectFormat.FullLength() != len(commitID) && Sha256ObjectFormat.FullLength() != len(commitID) {
|
||||
return false
|
||||
}
|
||||
} else if objectFormat.FullLength() != len(commitID) {
|
||||
return false
|
||||
}
|
||||
|
||||
return id.IsZero()
|
||||
for _, c := range commitID {
|
||||
if c != '0' {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// ComputeBlobHash compute the hash for a given blob content
|
||||
|
|
|
@ -23,3 +23,27 @@ func TestIsValidSHAPattern(t *testing.T) {
|
|||
assert.Equal(t, "d5c6407415d85df49592672aa421aed39b9db5e3", ComputeBlobHash(Sha1ObjectFormat, []byte("same length blob")).String())
|
||||
assert.Equal(t, "df0b5174ed06ae65aea40d43316bcbc21d82c9e3158ce2661df2ad28d7931dd6", ComputeBlobHash(Sha256ObjectFormat, []byte("some random blob")).String())
|
||||
}
|
||||
|
||||
func TestIsEmptyCommitID(t *testing.T) {
|
||||
assert.True(t, IsEmptyCommitID("", nil))
|
||||
assert.True(t, IsEmptyCommitID("", Sha1ObjectFormat))
|
||||
assert.True(t, IsEmptyCommitID("", Sha256ObjectFormat))
|
||||
|
||||
assert.False(t, IsEmptyCommitID("79ee38a6416c1ede423ec7ee0a8639ceea4aad20", Sha1ObjectFormat))
|
||||
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000", nil))
|
||||
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000", Sha1ObjectFormat))
|
||||
assert.False(t, IsEmptyCommitID("0000000000000000000000000000000000000000", Sha256ObjectFormat))
|
||||
|
||||
assert.False(t, IsEmptyCommitID("00000000000000000000000000000000000000000", nil))
|
||||
|
||||
assert.False(t, IsEmptyCommitID("0f0b5174ed06ae65aea40d43316bcbc21d82c9e3158ce2661df2ad28d7931dd6", nil))
|
||||
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000000000000000000000000000", nil))
|
||||
assert.False(t, IsEmptyCommitID("0000000000000000000000000000000000000000000000000000000000000000", Sha1ObjectFormat))
|
||||
assert.True(t, IsEmptyCommitID("0000000000000000000000000000000000000000000000000000000000000000", Sha256ObjectFormat))
|
||||
|
||||
assert.False(t, IsEmptyCommitID("1", nil))
|
||||
assert.False(t, IsEmptyCommitID("0", nil))
|
||||
|
||||
assert.False(t, IsEmptyCommitID("010", nil))
|
||||
assert.False(t, IsEmptyCommitID("0 0", nil))
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ package git
|
|||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/url"
|
||||
|
@ -63,32 +62,6 @@ func IsRepoURLAccessible(ctx context.Context, url string) bool {
|
|||
return err == nil
|
||||
}
|
||||
|
||||
// GetObjectFormatOfRepo returns the hash type of repository at a given path
|
||||
func GetObjectFormatOfRepo(ctx context.Context, repoPath string) (ObjectFormat, error) {
|
||||
var stdout, stderr strings.Builder
|
||||
|
||||
err := NewCommand(ctx, "hash-object", "--stdin").Run(&RunOpts{
|
||||
Dir: repoPath,
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
Stdin: &strings.Reader{},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if stderr.Len() > 0 {
|
||||
return nil, errors.New(stderr.String())
|
||||
}
|
||||
|
||||
h, err := NewIDFromString(strings.TrimRight(stdout.String(), "\n"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return h.Type(), nil
|
||||
}
|
||||
|
||||
// InitRepository initializes a new Git repository.
|
||||
func InitRepository(ctx context.Context, repoPath string, bare bool, objectFormatName string) error {
|
||||
err := os.MkdirAll(repoPath, os.ModePerm)
|
||||
|
|
|
@ -17,11 +17,14 @@ import (
|
|||
"time"
|
||||
|
||||
charsetModule "code.gitea.io/gitea/modules/charset"
|
||||
"code.gitea.io/gitea/modules/container"
|
||||
"code.gitea.io/gitea/modules/httpcache"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/typesniffer"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
||||
"github.com/klauspost/compress/gzhttp"
|
||||
)
|
||||
|
||||
type ServeHeaderOptions struct {
|
||||
|
@ -38,6 +41,11 @@ type ServeHeaderOptions struct {
|
|||
func ServeSetHeaders(w http.ResponseWriter, opts *ServeHeaderOptions) {
|
||||
header := w.Header()
|
||||
|
||||
skipCompressionExts := container.SetOf(".gz", ".bz2", ".zip", ".xz", ".zst", ".deb", ".apk", ".jar", ".png", ".jpg", ".webp")
|
||||
if skipCompressionExts.Contains(strings.ToLower(path.Ext(opts.Filename))) {
|
||||
w.Header().Add(gzhttp.HeaderNoCompression, "1")
|
||||
}
|
||||
|
||||
contentType := typesniffer.ApplicationOctetStream
|
||||
if opts.ContentType != "" {
|
||||
if opts.ContentTypeCharset != "" {
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
"time"
|
||||
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/repository"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
)
|
||||
|
||||
|
@ -53,6 +54,7 @@ type HookOptions struct {
|
|||
GitQuarantinePath string
|
||||
GitPushOptions GitPushOptions
|
||||
PullRequestID int64
|
||||
PushTrigger repository.PushTrigger
|
||||
DeployKeyID int64 // if the pusher is a DeployKey, then UserID is the repo's org user.
|
||||
IsWiki bool
|
||||
ActionPerm int
|
||||
|
|
|
@ -5,6 +5,7 @@ package repository
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
git_model "code.gitea.io/gitea/models/git"
|
||||
|
@ -36,6 +37,15 @@ func SyncRepoBranches(ctx context.Context, repoID, doerID int64) (int64, error)
|
|||
}
|
||||
|
||||
func SyncRepoBranchesWithRepo(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, doerID int64) (int64, error) {
|
||||
objFmt, err := gitRepo.GetObjectFormat()
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("GetObjectFormat: %w", err)
|
||||
}
|
||||
_, err = db.GetEngine(ctx).ID(repo.ID).Update(&repo_model.Repository{ObjectFormatName: objFmt.Name()})
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("UpdateRepository: %w", err)
|
||||
}
|
||||
|
||||
allBranches := container.Set[string]{}
|
||||
{
|
||||
branches, _, err := gitRepo.GetBranchNames(0, 0)
|
||||
|
|
31
modules/repository/branch_test.go
Normal file
31
modules/repository/branch_test.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package repository
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
git_model "code.gitea.io/gitea/models/git"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestSyncRepoBranches(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
_, err := db.GetEngine(db.DefaultContext).ID(1).Update(&repo_model.Repository{ObjectFormatName: "bad-fmt"})
|
||||
assert.NoError(t, db.TruncateBeans(db.DefaultContext, &git_model.Branch{}))
|
||||
assert.NoError(t, err)
|
||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
||||
assert.Equal(t, "bad-fmt", repo.ObjectFormatName)
|
||||
_, err = SyncRepoBranches(db.DefaultContext, 1, 0)
|
||||
assert.NoError(t, err)
|
||||
repo = unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
||||
assert.Equal(t, "sha1", repo.ObjectFormatName)
|
||||
branch, err := git_model.GetBranch(db.DefaultContext, 1, "master")
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, "master", branch.Name)
|
||||
}
|
|
@ -25,11 +25,19 @@ const (
|
|||
EnvKeyID = "GITEA_KEY_ID" // public key ID
|
||||
EnvDeployKeyID = "GITEA_DEPLOY_KEY_ID"
|
||||
EnvPRID = "GITEA_PR_ID"
|
||||
EnvPushTrigger = "GITEA_PUSH_TRIGGER"
|
||||
EnvIsInternal = "GITEA_INTERNAL_PUSH"
|
||||
EnvAppURL = "GITEA_ROOT_URL"
|
||||
EnvActionPerm = "GITEA_ACTION_PERM"
|
||||
)
|
||||
|
||||
type PushTrigger string
|
||||
|
||||
const (
|
||||
PushTriggerPRMergeToBase PushTrigger = "pr-merge-to-base"
|
||||
PushTriggerPRUpdateWithBase PushTrigger = "pr-update-with-base"
|
||||
)
|
||||
|
||||
// InternalPushingEnvironment returns an os environment to switch off hooks on push
|
||||
// It is recommended to avoid using this unless you are pushing within a transaction
|
||||
// or if you absolutely are sure that post-receive and pre-receive will do nothing
|
||||
|
|
|
@ -21,14 +21,12 @@ type PushUpdateOptions struct {
|
|||
|
||||
// IsNewRef return true if it's a first-time push to a branch, tag or etc.
|
||||
func (opts *PushUpdateOptions) IsNewRef() bool {
|
||||
commitID, err := git.NewIDFromString(opts.OldCommitID)
|
||||
return err == nil && commitID.IsZero()
|
||||
return git.IsEmptyCommitID(opts.OldCommitID, nil)
|
||||
}
|
||||
|
||||
// IsDelRef return true if it's a deletion to a branch or tag
|
||||
func (opts *PushUpdateOptions) IsDelRef() bool {
|
||||
commitID, err := git.NewIDFromString(opts.NewCommitID)
|
||||
return err == nil && commitID.IsZero()
|
||||
return git.IsEmptyCommitID(opts.NewCommitID, nil)
|
||||
}
|
||||
|
||||
// IsUpdateRef return true if it's an update operation
|
||||
|
|
|
@ -85,7 +85,7 @@ type CreatePullRequestOption struct {
|
|||
// EditPullRequestOption options when modify pull request
|
||||
type EditPullRequestOption struct {
|
||||
Title string `json:"title"`
|
||||
Body string `json:"body"`
|
||||
Body *string `json:"body"`
|
||||
Base string `json:"base"`
|
||||
Assignee string `json:"assignee"`
|
||||
Assignees []string `json:"assignees"`
|
||||
|
|
|
@ -53,13 +53,13 @@ func NewFuncMap() template.FuncMap {
|
|||
"JsonUtils": NewJsonUtils,
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// svg / avatar / icon
|
||||
// svg / avatar / icon / color
|
||||
"svg": svg.RenderHTML,
|
||||
"EntryIcon": base.EntryIcon,
|
||||
"MigrationIcon": MigrationIcon,
|
||||
"ActionIcon": ActionIcon,
|
||||
|
||||
"SortArrow": SortArrow,
|
||||
"SortArrow": SortArrow,
|
||||
"ContrastColor": util.ContrastColor,
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// time / number / format
|
||||
|
|
|
@ -135,16 +135,9 @@ func RenderIssueTitle(ctx context.Context, text string, metas map[string]string)
|
|||
func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_model.Label) template.HTML {
|
||||
var (
|
||||
archivedCSSClass string
|
||||
textColor = "#111"
|
||||
textColor = util.ContrastColor(label.Color)
|
||||
labelScope = label.ExclusiveScope()
|
||||
)
|
||||
r, g, b := util.HexToRBGColor(label.Color)
|
||||
|
||||
// Determine if label text should be light or dark to be readable on background color
|
||||
// this doesn't account for saturation or transparency
|
||||
if util.UseLightTextOnBackground(r, g, b) {
|
||||
textColor = "#eee"
|
||||
}
|
||||
|
||||
description := emoji.ReplaceAliases(template.HTMLEscapeString(label.Description))
|
||||
|
||||
|
@ -168,7 +161,7 @@ func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_m
|
|||
|
||||
// Make scope and item background colors slightly darker and lighter respectively.
|
||||
// More contrast needed with higher luminance, empirically tweaked.
|
||||
luminance := util.GetLuminance(r, g, b)
|
||||
luminance := util.GetRelativeLuminance(label.Color)
|
||||
contrast := 0.01 + luminance*0.03
|
||||
// Ensure we add the same amount of contrast also near 0 and 1.
|
||||
darken := contrast + math.Max(luminance+contrast-1.0, 0.0)
|
||||
|
@ -178,6 +171,7 @@ func RenderLabel(ctx context.Context, locale translation.Locale, label *issues_m
|
|||
lightenFactor := math.Min(luminance+lighten, 1.0) / math.Max(luminance, 1.0/255.0)
|
||||
|
||||
opacity := GetLabelOpacityByte(label.IsArchived())
|
||||
r, g, b := util.HexToRBGColor(label.Color)
|
||||
scopeBytes := []byte{
|
||||
uint8(math.Min(math.Round(r*darkenFactor), 255)),
|
||||
uint8(math.Min(math.Round(g*darkenFactor), 255)),
|
||||
|
|
|
@ -4,22 +4,10 @@ package util
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Check similar implementation in web_src/js/utils/color.js and keep synchronization
|
||||
|
||||
// Return R, G, B values defined in reletive luminance
|
||||
func getLuminanceRGB(channel float64) float64 {
|
||||
sRGB := channel / 255
|
||||
if sRGB <= 0.03928 {
|
||||
return sRGB / 12.92
|
||||
}
|
||||
return math.Pow((sRGB+0.055)/1.055, 2.4)
|
||||
}
|
||||
|
||||
// Get color as RGB values in 0..255 range from the hex color string (with or without #)
|
||||
func HexToRBGColor(colorString string) (float64, float64, float64) {
|
||||
hexString := colorString
|
||||
|
@ -47,19 +35,23 @@ func HexToRBGColor(colorString string) (float64, float64, float64) {
|
|||
return r, g, b
|
||||
}
|
||||
|
||||
// return luminance given RGB channels
|
||||
// Reference from: https://www.w3.org/WAI/GL/wiki/Relative_luminance
|
||||
func GetLuminance(r, g, b float64) float64 {
|
||||
R := getLuminanceRGB(r)
|
||||
G := getLuminanceRGB(g)
|
||||
B := getLuminanceRGB(b)
|
||||
luminance := 0.2126*R + 0.7152*G + 0.0722*B
|
||||
return luminance
|
||||
// Returns relative luminance for a SRGB color - https://en.wikipedia.org/wiki/Relative_luminance
|
||||
// Keep this in sync with web_src/js/utils/color.js
|
||||
func GetRelativeLuminance(color string) float64 {
|
||||
r, g, b := HexToRBGColor(color)
|
||||
return (0.2126729*r + 0.7151522*g + 0.0721750*b) / 255
|
||||
}
|
||||
|
||||
// Reference from: https://firsching.ch/github_labels.html
|
||||
// In the future WCAG 3 APCA may be a better solution.
|
||||
// Check if text should use light color based on RGB of background
|
||||
func UseLightTextOnBackground(r, g, b float64) bool {
|
||||
return GetLuminance(r, g, b) < 0.453
|
||||
func UseLightText(backgroundColor string) bool {
|
||||
return GetRelativeLuminance(backgroundColor) < 0.453
|
||||
}
|
||||
|
||||
// Given a background color, returns a black or white foreground color that the highest
|
||||
// contrast ratio. In the future, the APCA contrast function, or CSS `contrast-color` will be better.
|
||||
// https://github.com/color-js/color.js/blob/eb7b53f7a13bb716ec8b28c7a56f052cd599acd9/src/contrast/APCA.js#L42
|
||||
func ContrastColor(backgroundColor string) string {
|
||||
if UseLightText(backgroundColor) {
|
||||
return "#fff"
|
||||
}
|
||||
return "#000"
|
||||
}
|
||||
|
|
|
@ -33,33 +33,31 @@ func Test_HexToRBGColor(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func Test_UseLightTextOnBackground(t *testing.T) {
|
||||
func Test_UseLightText(t *testing.T) {
|
||||
cases := []struct {
|
||||
r float64
|
||||
g float64
|
||||
b float64
|
||||
expected bool
|
||||
color string
|
||||
expected string
|
||||
}{
|
||||
{215, 58, 74, true},
|
||||
{0, 117, 202, true},
|
||||
{207, 211, 215, false},
|
||||
{162, 238, 239, false},
|
||||
{112, 87, 255, true},
|
||||
{0, 134, 114, true},
|
||||
{228, 230, 105, false},
|
||||
{216, 118, 227, true},
|
||||
{255, 255, 255, false},
|
||||
{43, 134, 133, true},
|
||||
{43, 135, 134, true},
|
||||
{44, 135, 134, true},
|
||||
{59, 182, 179, true},
|
||||
{124, 114, 104, true},
|
||||
{126, 113, 108, true},
|
||||
{129, 112, 109, true},
|
||||
{128, 112, 112, true},
|
||||
{"#d73a4a", "#fff"},
|
||||
{"#0075ca", "#fff"},
|
||||
{"#cfd3d7", "#000"},
|
||||
{"#a2eeef", "#000"},
|
||||
{"#7057ff", "#fff"},
|
||||
{"#008672", "#fff"},
|
||||
{"#e4e669", "#000"},
|
||||
{"#d876e3", "#000"},
|
||||
{"#ffffff", "#000"},
|
||||
{"#2b8684", "#fff"},
|
||||
{"#2b8786", "#fff"},
|
||||
{"#2c8786", "#000"},
|
||||
{"#3bb6b3", "#000"},
|
||||
{"#7c7268", "#fff"},
|
||||
{"#7e716c", "#fff"},
|
||||
{"#81706d", "#fff"},
|
||||
{"#807070", "#fff"},
|
||||
{"#84b6eb", "#000"},
|
||||
}
|
||||
for n, c := range cases {
|
||||
result := UseLightTextOnBackground(c.r, c.g, c.b)
|
||||
assert.Equal(t, c.expected, result, "case %d: error should match", n)
|
||||
assert.Equal(t, c.expected, ContrastColor(c.color), "case %d: error should match", n)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1214,7 +1214,7 @@ settings.pulls_desc = فعّل طلب الدمج في المستودع
|
|||
settings.pulls.ignore_whitespace = تجاهل المسافات في النزاعات
|
||||
settings.danger_zone = منطقة الخطر
|
||||
settings.new_owner_has_same_repo = المالك الجديد لديه مستودع بالاسم نفسه؛ برجاء اختيار اسم آخر.
|
||||
settings.transfer = نقل الملكية
|
||||
settings.transfer.title = نقل الملكية
|
||||
settings.transfer_abort = ألغِ نقل الملكية
|
||||
settings.transfer_abort_invalid = لا يمكنك إلغاء عملية غير موجودة لنقل ملكية مستودع.
|
||||
settings.transfer.success = نجح نقل ملكية المستودع.
|
||||
|
|
|
@ -49,7 +49,7 @@ manage_emails = Управление на адресите на ел. поща
|
|||
permission_read = Четене
|
||||
update_password = Обновяване на паролата
|
||||
biography_placeholder = Разкажете ни малко за себе си! (Можете да използвате Markdown)
|
||||
orgs = Управление на организациите
|
||||
orgs = Организации
|
||||
continue = Продължаване
|
||||
blocked_users = Блокирани потребители
|
||||
emails = Адреси на ел. поща
|
||||
|
@ -91,8 +91,8 @@ keep_activity_private_popup = Вашата дейност ще бъде види
|
|||
uploaded_avatar_not_a_image = Каченият файл не е изображение.
|
||||
uploaded_avatar_is_too_big = Размерът на качения файл (%d KiB) надвишава максималния размер (%d KiB).
|
||||
change_password_success = Паролата ви е обновена. Влизайте с новата си парола от сега нататък.
|
||||
manage_themes = Избор на тема по подразбиране
|
||||
manage_openid = Управление на OpenID адресите
|
||||
manage_themes = Тема по подразбиране
|
||||
manage_openid = OpenID адреси
|
||||
primary_email = Да е основен
|
||||
keep_email_private = Скриване на адреса на ел. поща
|
||||
theme_update_error = Избраната тема не съществува.
|
||||
|
@ -138,6 +138,7 @@ email_notifications.onmention = Ел. поща само при споменав
|
|||
pronouns_unspecified = Непосочени
|
||||
pronouns = Местоимения
|
||||
gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
|
||||
language.title = Език по подразбиране
|
||||
|
||||
[packages]
|
||||
container.labels.value = Стойност
|
||||
|
@ -156,7 +157,7 @@ empty.repo = Качихте ли пакет, но той не се показв
|
|||
keywords = Ключови думи
|
||||
details.author = Автор
|
||||
about = Относно този пакет
|
||||
settings.delete.success = Пакетът бе изтрит.
|
||||
settings.delete.success = Пакетът е изтрит.
|
||||
settings.delete = Изтриване на пакета
|
||||
container.details.platform = Платформа
|
||||
settings.delete.error = Неуспешно изтриване на пакет.
|
||||
|
@ -271,16 +272,17 @@ filter = Филтър
|
|||
filter.clear = Изчистване на филтрите
|
||||
filter.is_archived = Архивирани
|
||||
filter.not_archived = Не архивирани
|
||||
filter.is_fork = Разклонени
|
||||
filter.is_fork = Разклонения
|
||||
filter.public = Публични
|
||||
filter.not_fork = Не разклонени
|
||||
filter.not_fork = Не разклонения
|
||||
filter.is_template = Шаблони
|
||||
filter.not_template = Не шаблони
|
||||
filter.private = Частни
|
||||
filter.is_mirror = Огледални
|
||||
filter.not_mirror = Не огледални
|
||||
filter.is_mirror = Огледала
|
||||
filter.not_mirror = Не огледала
|
||||
copy_hash = Копиране на контролната сума
|
||||
artifacts = Артефакти
|
||||
show_log_seconds = Показване на секундите
|
||||
|
||||
[repo]
|
||||
issues.context.edit = Редактиране
|
||||
|
@ -507,7 +509,7 @@ wiki.page_title = Заглавие на страницата
|
|||
wiki.page_content = Съдържание на страницата
|
||||
wiki.filter_page = Филтриране на страница
|
||||
wiki.back_to_wiki = Обратно към уики страницата
|
||||
wiki.wiki_page_revisions = Ревизии на уики страницата
|
||||
wiki.wiki_page_revisions = Ревизии на страницата
|
||||
wiki.file_revision = Ревизия на страницата
|
||||
activity.title.issues_created_by = %s създадени от %s
|
||||
wiki.delete_page_notice_1 = Изтриването на уики страницата "%s" не може да бъде отменено. Продължаване?
|
||||
|
@ -570,7 +572,7 @@ issues.role.owner_helper = Този потребител е притежател
|
|||
settings.delete_notices_2 = - Тази операция ще изтрие перманентно хранилището <strong>%s</strong>, включително кода, задачите, коментарите, данните на уикито и настройките за сътрудници.
|
||||
settings.admin_settings = Администраторски настройки
|
||||
issues.role.owner = Притежател
|
||||
settings.transfer = Прехвърляне на притежанието
|
||||
settings.transfer.title = Прехвърляне на притежанието
|
||||
issues.author = Автор
|
||||
issues.closed_at = `затвори тази задача <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
settings.collaborator_deletion_desc = Премахването на сътрудник ще отнеме достъпа му до това хранилище. Продължаване?
|
||||
|
@ -783,7 +785,7 @@ issues.label.filter_sort.reverse_by_size = Най-голям размер
|
|||
issues.unlock = Отключване на обсъждането
|
||||
issues.due_date_form_add = Добавяне на краен срок
|
||||
release.save_draft = Запазване на чернова
|
||||
release.add_tag = Създаване само на маркер
|
||||
release.add_tag = Създаване на маркер
|
||||
release.publish = Публикуване на издание
|
||||
file_view_source = Преглед на изходния код
|
||||
diff.parent = родител
|
||||
|
@ -1062,7 +1064,7 @@ diff.review.reject = Поискване на промени
|
|||
diff.bin_not_shown = Двоичният файл не е показан.
|
||||
settings.units.units = Елементи на хранилището
|
||||
settings.delete_notices_fork_1 = - Разклоненията на това хранилище ще станат независими след изтриване.
|
||||
settings.actions_desc = Включване на действията за хранилището
|
||||
settings.actions_desc = Включване на интегрираните CI/CD pipelines с Forgejo Действия
|
||||
settings.packages_desc = Включване на регистъра на пакетите за хранилището
|
||||
settings.units.add_more = Добавяне...
|
||||
settings.use_external_issue_tracker = Използване на външен тракер за задачи
|
||||
|
@ -1126,7 +1128,7 @@ issues.ref_from = `от %[1]s`
|
|||
issues.ref_reopening_from = `<a href="%[3]s">спомена заявка за сливане %[4]s, която ще отвори наново тази задача</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.draft_title = Чернова
|
||||
pulls.reopen_to_merge = Моля, отворете наново тази заявка за сливане, за да извършите сливане.
|
||||
pulls.cant_reopen_deleted_branch = Тази заявка за сливане не може да бъде отворена наново, защото клонът бе изтрит.
|
||||
pulls.cant_reopen_deleted_branch = Тази заявка за сливане не може да бъде отворена наново, защото клонът е изтрит.
|
||||
pulls.status_checks_hide_all = Скриване на всички проверки
|
||||
pulls.status_checks_failure = Някои проверки са неуспешни
|
||||
issues.review.add_review_request = поиска рецензия от %s %s
|
||||
|
@ -1217,13 +1219,13 @@ teams.read_access_helper = Членовете могат да преглежда
|
|||
teams.invite.description = Моля, щракнете върху бутона по-долу, за да се присъедините към екипа.
|
||||
teams.invite.title = Поканени сте да се присъедините към екип <strong>%s</strong> в организация <strong>%s</strong>.
|
||||
team_permission_desc = Разрешение
|
||||
members.public_helper = да е скрит
|
||||
members.public_helper = Да е скрит
|
||||
teams.members = Членове на екипа
|
||||
teams.delete_team = Изтриване на екипа
|
||||
members.owner = Притежател
|
||||
members.member_role = Роля на участника:
|
||||
members.member = Участник
|
||||
members.private_helper = да е видим
|
||||
members.private_helper = Да е видим
|
||||
teams.no_desc = Този екип няма описание
|
||||
settings.delete_org_desc = Тази организация ще бъде изтрита перманентно. Продължаване?
|
||||
|
||||
|
@ -1366,9 +1368,9 @@ hooks = Уеб-куки
|
|||
systemhooks = Системни уеб-куки
|
||||
orgs.new_orga = Нова организация
|
||||
config.https_only = Само HTTPS
|
||||
users.update_profile_success = Потребителският акаунт бе обновен.
|
||||
users.new_success = Потребителският акаунт "%s" бе създаден.
|
||||
users.deletion_success = Потребителският акаунт бе изтрит.
|
||||
users.update_profile_success = Потребителският акаунт е обновен.
|
||||
users.new_success = Потребителският акаунт "%s" е създаден.
|
||||
users.deletion_success = Потребителският акаунт е изтрит.
|
||||
last_page = Последна
|
||||
config.test_email_placeholder = Ел. поща (напр. test@example.com)
|
||||
users.cannot_delete_self = Не можете да изтриете себе си
|
||||
|
|
31
options/locale/locale_ca.ini
Normal file
31
options/locale/locale_ca.ini
Normal file
|
@ -0,0 +1,31 @@
|
|||
|
||||
|
||||
|
||||
[common]
|
||||
home = inici
|
||||
dashboard = Panell de control
|
||||
explore = Explorar
|
||||
help = Ajuda
|
||||
logo = Logo
|
||||
sign_in = Entrar
|
||||
sign_in_with_provider = Entra amb %s
|
||||
sign_in_or = o
|
||||
sign_out = Sortir
|
||||
register = Registrar-se
|
||||
version = Versió
|
||||
powered_by = Creat amb %s
|
||||
page = Pàgina
|
||||
template = Plantilla
|
||||
language = Idioma
|
||||
notifications = Notificacions
|
||||
active_stopwatch = Registre de Temps Actiu
|
||||
create_new = Crear…
|
||||
user_profile_and_more = Perfil i configuració…
|
||||
signed_in_as = Entrat com
|
||||
enable_javascript = Aquest lloc web requereix Javascript.
|
||||
toc = Taula de Continguts
|
||||
licenses = Llicències
|
||||
sign_up = Registrar-se
|
||||
link_account = Vincular un compte
|
||||
tracked_time_summary = Resum del temps registrat basat en filtres del llistat de temes
|
||||
return_to_gitea = Tornar a Forgejo
|
|
@ -46,7 +46,7 @@ webauthn_unsupported_browser=Váš prohlížeč momentálně nepodporuje WebAuth
|
|||
webauthn_error_unknown=Došlo k neznámé chybě. Opakujte akci.
|
||||
webauthn_error_insecure=WebAuthn podporuje pouze zabezpečená připojení. Pro testování přes HTTP můžete použít výchozí „localhost“ nebo „127.0.0.1“
|
||||
webauthn_error_unable_to_process=Server nemohl zpracovat váš požadavek.
|
||||
webauthn_error_duplicated=Bezpečnostní klíč není pro tento požadavek povolen. Ujistěte se prosím, zda již klíč není registrován.
|
||||
webauthn_error_duplicated=Bezpečnostní klíč není pro tento požadavek povolen. Ujistěte se prosím, zda klíč již není registrován.
|
||||
webauthn_error_empty=Musíte nastavit název tohoto klíče.
|
||||
webauthn_error_timeout=Požadavek vypršel dříve, než se podařilo přečíst váš klíč. Znovu načtěte tuto stránku a akci opakujte.
|
||||
webauthn_reload=Znovu načíst
|
||||
|
@ -146,15 +146,15 @@ sign_in_with_provider = Přihlásit se přes %s
|
|||
confirm_delete_artifact = Opravdu chcete odstranit artefakt „%s“?
|
||||
toggle_menu = Přepnout nabídku
|
||||
filter = Filtr
|
||||
filter.is_fork = Forknuto
|
||||
filter.not_fork = Není forknuto
|
||||
filter.is_mirror = Zrcadleno
|
||||
filter.is_template = Šablona
|
||||
filter.not_template = Není šablona
|
||||
filter.is_fork = Forky
|
||||
filter.not_fork = Nejsou forky
|
||||
filter.is_mirror = Zrcadla
|
||||
filter.is_template = Šablony
|
||||
filter.not_template = Nejsou šablony
|
||||
filter.public = Veřejné
|
||||
filter.private = Soukromé
|
||||
filter.is_archived = Archivováno
|
||||
filter.not_mirror = Není zrcadleno
|
||||
filter.not_mirror = Nejsou zrcadla
|
||||
filter.not_archived = Není archivováno
|
||||
filter.clear = Vymazat filtry
|
||||
more_items = Další položky
|
||||
|
@ -688,7 +688,7 @@ avatar=Avatar
|
|||
ssh_gpg_keys=Klíče SSH / GPG
|
||||
social=Účty sociálních sítí
|
||||
applications=Aplikace
|
||||
orgs=Spravovat organizace
|
||||
orgs=Organizace
|
||||
repos=Repozitáře
|
||||
delete=Smazat účet
|
||||
twofa=Dvoufaktorové ověřování (TOTP)
|
||||
|
@ -762,8 +762,8 @@ password_change_disabled=Externě ověřovaní uživatelé nemohou aktualizovat
|
|||
|
||||
emails=E-mailové adresy
|
||||
manage_emails=Správa e-mailových adres
|
||||
manage_themes=Vyberte výchozí motiv vzhledu
|
||||
manage_openid=Správa adres OpenID
|
||||
manage_themes=Výchozí motiv
|
||||
manage_openid=Adresy OpenID
|
||||
email_desc=Vaše hlavní e-mailová adresa bude použita pro oznámení, obnovení hesla, a pokud není skrytá, pro operace Gitu.
|
||||
theme_desc=Toto bude váš výchozí motiv vzhledu napříč stránkou.
|
||||
primary=Hlavní
|
||||
|
@ -807,7 +807,7 @@ add_new_key=Přidat klíč SSH
|
|||
add_new_gpg_key=Přidat klíč GPG
|
||||
key_content_ssh_placeholder=Začíná s „ssh-ed25519“, „ssh-rsa“, „ecdsa-sha2-nistp256“, „ecdsa-sha2-nistp384“, „ecdsa-sha2-nistp521“, „sk-ecdsa-sha2-nistp256@openssh.com“ nebo „sk-ssh-ed25519@openssh.com“
|
||||
key_content_gpg_placeholder=Začíná s „-----BEGIN PGP PUBLIC KEY BLOCK-----“
|
||||
add_new_principal=Přidat SSH Principal certifikát
|
||||
add_new_principal=Přidat principal
|
||||
ssh_key_been_used=Tento SSH klíč byl na server již přidán.
|
||||
ssh_key_name_used=SSH klíč se stejným jménem již u vašeho účtu existuje.
|
||||
ssh_principal_been_used=Tento SSH Principal certifikát již byl přidán na server.
|
||||
|
@ -866,7 +866,7 @@ token_state_desc=Tento token byl použit během posledních 7 dní
|
|||
principal_state_desc=Tento SSH Principal certifikát byl použit během posledních 7 dní
|
||||
show_openid=Zobrazit na profilu
|
||||
hide_openid=Odstranit z profilu
|
||||
ssh_disabled=SSH zakázáno
|
||||
ssh_disabled=SSH je zakázáno
|
||||
ssh_signonly=SSH je v současné době zakázáno, proto jsou tyto klíče použity pouze pro ověření podpisu.
|
||||
ssh_externally_managed=Tento SSH klíč je spravován externě pro tohoto uživatele
|
||||
manage_social=Správa propojených účtů sociálních sítí
|
||||
|
@ -874,7 +874,7 @@ social_desc=Tyto účty sociálních sítí lze použít k přihlášení k vaš
|
|||
unbind=Odpojit
|
||||
unbind_success=Účet sociální sítě byl úspěšně odstraněn.
|
||||
|
||||
manage_access_token=Spravovat přístupové tokeny
|
||||
manage_access_token=Přístupové tokeny
|
||||
generate_new_token=Vygenerovat nový token
|
||||
tokens_desc=Tyto tokeny umožňují přístup k vašemu účtu pomocí Forgejo API.
|
||||
token_name=Název tokenu
|
||||
|
@ -955,7 +955,7 @@ webauthn_delete_key_desc=Pokud odstraníte bezpečnostní klíč, již se s ním
|
|||
webauthn_key_loss_warning=Pokud ztratíte své bezpečnostní klíče, ztratíte přístup k vašemu účtu.
|
||||
webauthn_alternative_tip=Možná budete chtít nakonfigurovat další metodu ověřování.
|
||||
|
||||
manage_account_links=Správa propojených účtů
|
||||
manage_account_links=Propojené účty
|
||||
manage_account_links_desc=Tyto externí účty jsou propojeny s vaším Forgejo účtem.
|
||||
account_links_not_available=K vašemu Forgejo účtu nejsou aktuálně připojené žádné externí účty.
|
||||
link_account=Propojit účet
|
||||
|
@ -996,13 +996,14 @@ access_token_desc = Oprávnění vybraného tokenu omezují autorizaci pouze na
|
|||
blocked_users_none = Nemáte žádné zablokované uživatele.
|
||||
blocked_since = Zablokován od %s
|
||||
hints = Nápovědy
|
||||
additional_repo_units_hint = Podíbnout k povolení dalších jednotek úložiště
|
||||
additional_repo_units_hint = Navrhnout povolení dalších jednotek úložiště
|
||||
update_hints = Aktualizovat nápovědy
|
||||
update_hints_success = Nápovědy byly aktualizovány.
|
||||
additional_repo_units_hint_description = Zobrazit tlačítko „Přidat další jednotky...“ u repozitářů, které nemají povolené všechny dostupné jednotky.
|
||||
pronouns = Zájmena
|
||||
pronouns_custom = Vlastní
|
||||
pronouns_unspecified = Neurčené
|
||||
pronouns_unspecified = Neurčená
|
||||
language.title = Výchozí jazyk
|
||||
|
||||
[repo]
|
||||
new_repo_helper=Repozitář obsahuje všechny projektové soubory, včetně historie revizí. Už jej hostujete jinde? <a href="%s">Migrovat repozitář.</a>
|
||||
|
@ -1160,7 +1161,7 @@ migrate.clone_address_desc=HTTP(S) nebo URL Git „clone“ existujícího repoz
|
|||
migrate.github_token_desc=Můžete sem vložit jeden nebo více tokenů oddělených čárkou, abyste urychlili migraci kvůli omezení rychlosti rozhraní GitHub API. VAROVÁNÍ: Zneužití této funkce může vést k porušení zásad poskytovatele služeb a zablokování účtu.
|
||||
migrate.clone_local_path=nebo místní cesta serveru
|
||||
migrate.permission_denied=Není dovoleno importovat místní repozitáře.
|
||||
migrate.permission_denied_blocked=Nelze importovat z nepovolených hostitelů, prosím požádejte správce, aby zkontroloval nastavení ALLOWED_DOMAINS/ALLOW_LOCALETWORKS/BLOCKED_DOMAINS.
|
||||
migrate.permission_denied_blocked=Nelze importovat z nepovolených hostitelů, prosím požádejte správce, aby zkontroloval nastavení ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
|
||||
migrate.invalid_local_path=Místní cesta je neplatná, buď neexistuje nebo není adresářem.
|
||||
migrate.invalid_lfs_endpoint=Koncový bod LFS není platný.
|
||||
migrate.failed=Přenesení selhalo: %v
|
||||
|
@ -1199,7 +1200,7 @@ watch_guest_user=Pro sledování tohoto repozitáře se přihlaste.
|
|||
star_guest_user=Pro hodnocení tohoto repozitáře se přihlaste.
|
||||
unwatch=Přestat sledovat
|
||||
watch=Sledovat
|
||||
unstar=Zrušit oblíbení
|
||||
unstar=Odebrat z oblíbených
|
||||
star=Oblíbit
|
||||
fork=Rozštěpit
|
||||
download_archive=Stáhnout repozitář
|
||||
|
@ -1334,10 +1335,10 @@ editor.commit_empty_file_header=Odevzdat prázdný soubor
|
|||
editor.commit_empty_file_text=Soubor, který se chystáte odevzdat, je prázdný. Pokračovat?
|
||||
editor.no_changes_to_show=Žádné změny k zobrazení.
|
||||
editor.fail_to_update_file=Nepodařilo se aktualizovat/vytvořit soubor „%s“.
|
||||
editor.fail_to_update_file_summary=Chybové hlášení:
|
||||
editor.fail_to_update_file_summary=Chybová zpráva:
|
||||
editor.push_rejected_no_message=Změna byla serverem zamítnuta bez zprávy. Zkontrolujte prosím Git hooks.
|
||||
editor.push_rejected=Změna byla serverem zamítnuta. Zkontrolujte prosím Git hooks.
|
||||
editor.push_rejected_summary=Úplná zpráva o odmítnutí:
|
||||
editor.push_rejected_summary=Úplná zpráva o zamítnutí:
|
||||
editor.add_subdir=Přidat adresář…
|
||||
editor.unable_to_upload_files=Nepodařilo se nahrát soubory do „%s“. Chyba: %v
|
||||
editor.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %s.
|
||||
|
@ -1853,16 +1854,16 @@ pulls.merge_commit_id=ID slučovacího commitu
|
|||
pulls.require_signed_wont_sign=Větev vyžaduje podepsané commity, ale toto sloučení nebude podepsáno
|
||||
|
||||
pulls.invalid_merge_option=Pro tuto žádost nemůžete použít tuto možnost sloučení.
|
||||
pulls.merge_conflict=Sloučení selhalo: Došlo ke konfliktu při sloučení. Tip: Zkuste jinou strategii
|
||||
pulls.merge_conflict=Sloučení selhalo: při slučování došlo ke konfliktu. Tip: zkuste jinou strategii
|
||||
pulls.merge_conflict_summary=Chybové hlášení
|
||||
pulls.rebase_conflict=Sloučení selhalo: Došlo ke konfliktu při rebase commitu: %[1]s. Tip: Zkuste jinou strategii
|
||||
pulls.rebase_conflict=Sloučení selhalo: došlo ke konfliktu při rebase commitu: %[1]s. Tip: zkuste jinou strategii
|
||||
pulls.rebase_conflict_summary=Chybové hlášení
|
||||
pulls.unrelated_histories=Sloučení selhalo: Hlavní a základní revize nesdílí společnou historii. Tip: Zkuste jinou strategii
|
||||
pulls.merge_out_of_date=Sloučení selhalo: Základ byl aktualizován při generování sloučení. Tip: Zkuste to znovu.
|
||||
pulls.head_out_of_date=Sloučení selhalo: Hlavní revize byla aktualizován při generování sloučení. Tip: Zkuste to znovu.
|
||||
pulls.unrelated_histories=Sloučení selhalo: hlava a základ revize nesdílí společnou historii. Tip: zkuste jinou strategii
|
||||
pulls.merge_out_of_date=Sloučení selhalo: základ byl aktualizován při generování sloučení. Tip: zkuste to znovu.
|
||||
pulls.head_out_of_date=Sloučení selhalo: hlava revize byla aktualizována při generování sloučení. Tip: zkuste to znovu.
|
||||
pulls.has_merged=Chyba: žádost byla sloučena, nelze ji znovu sloučit nebo změnit cílovou větev.
|
||||
pulls.push_rejected=Push selhal: nahrání bylo zamítnuto. Zkontrolujte Git hooky pro tento repozitář.
|
||||
pulls.push_rejected_summary=Úplná zpráva o odmítnutí
|
||||
pulls.push_rejected_summary=Úplná zpráva o zamítnutí
|
||||
pulls.push_rejected_no_message=Push selhal: nahrání bylo odmítnuto, ale nebyla nalezena žádná vzdálená zpráva. Zkontrolujte Git hooky pro tento repozitář
|
||||
pulls.open_unmerged_pull_exists=`Nemůžete provést operaci znovuotevření protože je tu čekající požadavek na natažení (#%d) s identickými vlastnostmi.`
|
||||
pulls.status_checking=Některé kontroly jsou nedořešeny
|
||||
|
@ -1969,7 +1970,7 @@ wiki.last_commit_info=%s upravil tuto stránku %s
|
|||
wiki.edit_page_button=Změnit stránku
|
||||
wiki.new_page_button=Nová stránka
|
||||
wiki.file_revision=Revize stránky
|
||||
wiki.wiki_page_revisions=Revize Wiki stránky
|
||||
wiki.wiki_page_revisions=Revize stránky
|
||||
wiki.back_to_wiki=Zpět na wiki stránku
|
||||
wiki.delete_page_button=Smazat stránku
|
||||
wiki.delete_page_notice_1=Odstranění Wiki stránky „%s“ nemůže být vráceno zpět. Pokračovat?
|
||||
|
@ -2131,12 +2132,12 @@ settings.pulls.default_allow_edits_from_maintainers=Ve výchozím nastavení pov
|
|||
settings.releases_desc=Povolit vydání v repozitáři
|
||||
settings.packages_desc=Povolit registr balíčků repozitáře
|
||||
settings.projects_desc=Povolit projekty v repozitáři
|
||||
settings.actions_desc=Povolit akce repozitáře
|
||||
settings.actions_desc=Povolit integrované pipeliny CI/CD pomocí služby Forgejo Actions
|
||||
settings.admin_settings=Administrátorská nastavení
|
||||
settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck)
|
||||
settings.admin_code_indexer=Indexování kódu
|
||||
settings.admin_stats_indexer=Index statistiky kódu
|
||||
settings.admin_indexer_commit_sha=Poslední indexovaná SHA
|
||||
settings.admin_indexer_commit_sha=Poslední indexovaný commit
|
||||
settings.admin_indexer_unindexed=Neindexováno
|
||||
settings.reindex_button=Přidat do fronty reindexace
|
||||
settings.reindex_requested=Požadováno reindexování
|
||||
|
@ -2153,7 +2154,7 @@ settings.convert_fork_desc=Tento fork můžete převést na běžný repozitář
|
|||
settings.convert_fork_notices_1=Tato operace převede fork na běžný repozitář a nelze ji vrátit zpět.
|
||||
settings.convert_fork_confirm=Převést repozitář
|
||||
settings.convert_fork_succeed=Fork bylo převeden na běžný repozitář.
|
||||
settings.transfer=Předat vlastnictví
|
||||
settings.transfer.title=Předat vlastnictví
|
||||
settings.transfer.rejected=Převod repozitáře byl zamítnut.
|
||||
settings.transfer.success=Převod repozitáře byl úspěšný.
|
||||
settings.transfer_abort=Zrušit převod
|
||||
|
@ -2178,7 +2179,7 @@ settings.trust_model.collaborator.long=Spolupracovník: Důvěřovat podpisům s
|
|||
settings.trust_model.collaborator.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“ - (ať se shodují s autorem, či nikoli). V opačném případě budou platné podpisy označeny jako „nedůvěryhodné“, pokud se podpis shoduje s přispěvatelem a „neodpovídající“, pokud ne.
|
||||
settings.trust_model.committer=Přispěvatel
|
||||
settings.trust_model.committer.long=Přispěvatel: Důvěřovat podpisům, které odpovídají autorům (což odpovídá GitHub a přinutí Giteu nastavit jako tvůrce pro Giteou podepsané revize)
|
||||
settings.trust_model.committer.desc=Platné podpisy budou označeny pouze jako „důvěryhodné“, pokud se shodují s přispěvatelem, jinak budou označeny jako „neodpovídající“. To přinutí Giteu, aby byla přispěvatelem podepsaných commitů se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci commitu. Výchozí klíč Gitea musí odpovídat uživateli v databázi.
|
||||
settings.trust_model.committer.desc=Platné podpisy budou označeny jako „důvěryhodné“ pouze, pokud se shodují s přispěvatelem, v opačném případě budou označeny jako „neodpovídající“. To přinutí Forgejo, aby bylo přispěvatelem podepsaných commitů se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
|
||||
settings.trust_model.collaboratorcommitter=Spolupracovník+Přispěvatel
|
||||
settings.trust_model.collaboratorcommitter.long=Spolupracovník+Přispěvatel: Důvěřovat podpisům od spolupracovníků, které odpovídají tvůrci revize
|
||||
settings.trust_model.collaboratorcommitter.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“, pokud se shodují s přispěvatelem. V opačném případě budou platné podpisy označeny jako "nedůvěryhodné", pokud se podpis shoduje s přispěvatelem a „neodpovídajícím“ v opačném případě. To přinutí Giteu, aby byla označena jako přispěvatel podepsaných commitů se skutečným přispěvatelem označeným jako Co-Authored-By: a Co-Committed-By: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
|
||||
|
@ -2559,7 +2560,7 @@ release.tag_helper_existing=Stávající značka.
|
|||
release.title=Název vydání
|
||||
release.title_empty=Název nesmí být prázdný.
|
||||
release.message=Popište toto vydání
|
||||
release.prerelease_desc=Označit jako předběžná verze
|
||||
release.prerelease_desc=Označit jako předběžnou verzi
|
||||
release.prerelease_helper=Označit vydání jako nevhodné pro produkční nasazení.
|
||||
release.cancel=Zrušit
|
||||
release.publish=Zveřejnit vydání
|
||||
|
@ -2579,7 +2580,7 @@ release.tag_already_exist=Tato značka již existuje.
|
|||
release.downloads=Soubory ke stažení
|
||||
release.download_count=Stažení: %s
|
||||
release.add_tag_msg=Použít název a obsah vydání jako zprávu značky.
|
||||
release.add_tag=Vytvořit pouze značku
|
||||
release.add_tag=Vytvořit značku
|
||||
release.releases_for=Vydání pro %s
|
||||
release.tags_for=Značky pro %s
|
||||
|
||||
|
@ -2721,7 +2722,7 @@ pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> d
|
|||
pulls.merged_title_desc_one = sloučil %[1]d commit z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
|
||||
open_with_editor = Otevřít pomocí %s
|
||||
commits.search_branch = Tato větev
|
||||
editor.commit_id_not_matching = ID commitu se neshoduje s ID commitu, který jste upravovali. Proveďte commit do nové větve a poté je slučte.
|
||||
editor.commit_id_not_matching = Tento soubor se během úpravy změnil. Proveďte commit do nové větve a poté je slučte.
|
||||
pulls.ready_for_review = Připraveni na posouzení?
|
||||
settings.rename_branch_failed_protected = Nepodařilo se přejmenovat větev %s, jelikož se jedná o chráněnou větev.
|
||||
editor.push_out_of_date = Push je nejspíše zastaralý.
|
||||
|
@ -2754,6 +2755,8 @@ settings.matrix.room_id_helper = ID místnosti lze získat z webového klienta E
|
|||
settings.matrix.access_token_helper = Pro tuto akci je doporučeno vytvořit oddělený účet Matrix. Přístupový token lze získat z webového klienta Element (v soukromé/anonymní kartě) > Uživatelské menu (vlevo nahoře) > Všechna nastavení > O aplikaci a pomoc > Rozšířené > Přístupový token (přímo pod adresou domovského serveru). Soukromou/anonymní kartu zavřete (odhlášením token zneplatníte).
|
||||
release.hide_archive_links = Skrýt automaticky generované archivy
|
||||
release.hide_archive_links_helper = Pro toto vydání skrýt automaticky generované archivy zdrojového kódu. Užitečné například pokud nahráváte své vlastní.
|
||||
settings.transfer.button = Převést vlastnictví
|
||||
settings.transfer.modal.title = Převést vlastnictví
|
||||
|
||||
[graphs]
|
||||
component_loading_info = Tohle může chvíli trvat…
|
||||
|
@ -2823,9 +2826,9 @@ settings.labels_desc=Přidejte štítky, které mohou být použity pro problém
|
|||
|
||||
members.membership_visibility=Viditelnost členství:
|
||||
members.public=Viditelný
|
||||
members.public_helper=skrýt
|
||||
members.public_helper=Skrýt
|
||||
members.private=Skrytý
|
||||
members.private_helper=zviditělnit
|
||||
members.private_helper=Zviditelnit
|
||||
members.member_role=Role člena:
|
||||
members.owner=Vlastník
|
||||
members.member=Člen
|
||||
|
@ -2888,6 +2891,7 @@ teams.invite.title=Byli jste pozváni do týmu <strong>%s</strong> v organizaci
|
|||
teams.invite.by=Pozvání od %s
|
||||
teams.invite.description=Pro připojení k týmu klikněte na tlačítko níže.
|
||||
follow_blocked_user = Tuto organizaci nemůžete sledovat, protože jste v ní zablokovaní.
|
||||
open_dashboard = Otevřít nástěnku
|
||||
|
||||
[admin]
|
||||
dashboard=Přehled
|
||||
|
@ -2978,8 +2982,8 @@ dashboard.total_gc_time=Celková pauza GC
|
|||
dashboard.total_gc_pause=Celková pauza GC
|
||||
dashboard.last_gc_pause=Poslední pauza GC
|
||||
dashboard.gc_times=Časy GC
|
||||
dashboard.delete_old_actions=Odstranit všechny staré akce z databáze
|
||||
dashboard.delete_old_actions.started=Začalo odstraňování všech starých akcí z databáze.
|
||||
dashboard.delete_old_actions=Odstranit všechny staré aktivity z databáze
|
||||
dashboard.delete_old_actions.started=Spuštěno odstraňování všech starých aktivit z databáze.
|
||||
dashboard.update_checker=Kontrola aktualizací
|
||||
dashboard.delete_old_system_notices=Odstranit všechna stará systémová upozornění z databáze
|
||||
dashboard.gc_lfs=Úklid LFS meta objektů
|
||||
|
@ -2987,7 +2991,7 @@ dashboard.stop_zombie_tasks=Zastavit zombie úlohy
|
|||
dashboard.stop_endless_tasks=Zastavit nekonečné úlohy
|
||||
dashboard.cancel_abandoned_jobs=Zrušit opuštěné úlohy
|
||||
dashboard.start_schedule_tasks=Spustit naplánované úlohy
|
||||
dashboard.sync_branch.started=Synchronizace větví byla spuštěna
|
||||
dashboard.sync_branch.started=Synchronizace větví spuštěna
|
||||
dashboard.sync_tag.started=Synchronizace značek spuštěna
|
||||
dashboard.rebuild_issue_indexer=Znovu sestavit index úkolů
|
||||
|
||||
|
@ -3006,7 +3010,7 @@ users.repos=Repozitáře
|
|||
users.created=Vytvořen
|
||||
users.last_login=Poslední přihlášení
|
||||
users.never_login=Nikdy nepřihlášen
|
||||
users.send_register_notify=Odeslat upozornění při registraci uživatele
|
||||
users.send_register_notify=Poslat oznámení o registraci e-mailem
|
||||
users.new_success=Uživatelský účet „%s“ byl vytvořen.
|
||||
users.edit=Upravit
|
||||
users.auth_source=Zdroj ověřování
|
||||
|
@ -3441,6 +3445,7 @@ config_summary = Souhrn
|
|||
config.open_with_editor_app_help = Editory v nabídce „Otevřít pomocí“ v nabídce klonování. Ponechte prázdné pro použití výchozího editoru (zobrazíte jej rozšířením).
|
||||
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
|
||||
|
||||
[action]
|
||||
create_repo=vytvořil/a repozitář <a href="%s">%s</a>
|
||||
|
@ -3658,7 +3663,7 @@ owner.settings.cargo.initialize.success=Index Cargo byl úspěšně vytvořen.
|
|||
owner.settings.cargo.rebuild=Znovu vytvořit index
|
||||
owner.settings.cargo.rebuild.error=Obnovení Cargo indexu se nezdařilo: %v
|
||||
owner.settings.cargo.rebuild.success=Cargo Index byl úspěšně obnoven.
|
||||
owner.settings.cleanuprules.title=Správa pravidel čištění
|
||||
owner.settings.cleanuprules.title=Pravidla čištění
|
||||
owner.settings.cleanuprules.add=Přidat pravidlo pro čištění
|
||||
owner.settings.cleanuprules.edit=Upravit pravidlo pro čištění
|
||||
owner.settings.cleanuprules.none=Zatím nejsou k dispozici žádná pravidla čištění.
|
||||
|
@ -3684,6 +3689,7 @@ owner.settings.chef.keypair.description=Pro autentizaci do registru Chef je zapo
|
|||
rpm.repository.multiple_groups = Tento balíček je dostupný v několika skupinách.
|
||||
owner.settings.cargo.rebuild.description = Opětovné sestavení může být užitečné, pokud není index synchronizován s uloženými balíčky Cargo.
|
||||
owner.settings.cargo.rebuild.no_index = Opětovné vytvoření selhalo, nebyl inicializován žádný index.
|
||||
npm.dependencies.bundle = Přidružené závislosti
|
||||
|
||||
[secrets]
|
||||
secrets=Tajné klíče
|
||||
|
@ -3703,7 +3709,7 @@ management=Správa tajných klíčů
|
|||
[actions]
|
||||
actions=Akce
|
||||
|
||||
unit.desc=Spravovat akce
|
||||
unit.desc=Spravovat integrované pipeliny CI/CD pomocí funkce Forgejo Actions
|
||||
|
||||
status.unknown=Neznámý
|
||||
status.waiting=Čekání
|
||||
|
|
|
@ -149,10 +149,10 @@ filter.is_archived = Archiviert
|
|||
filter.not_archived = Nicht archiviert
|
||||
filter.is_fork = Geforkt
|
||||
filter.not_fork = Nicht geforkt
|
||||
filter.is_mirror = Gemirrort
|
||||
filter.not_mirror = Nicht gemirrort
|
||||
filter.is_template = Vorlage
|
||||
filter.not_template = Keine Vorlage
|
||||
filter.is_mirror = Gespiegelt
|
||||
filter.not_mirror = Nicht gespiegelt
|
||||
filter.is_template = Vorlagen
|
||||
filter.not_template = Keine Vorlagen
|
||||
filter.public = Öffentlich
|
||||
filter.private = Privat
|
||||
more_items = Mehr Einträge
|
||||
|
@ -426,7 +426,7 @@ tab_openid=OpenID
|
|||
oauth_signup_tab=Neues Konto registrieren
|
||||
oauth_signup_title=Neuen Account fertigstellen
|
||||
oauth_signup_submit=Konto vervollständigen
|
||||
oauth_signin_tab=Mit existierendem Konto verbinden
|
||||
oauth_signin_tab=Mit einem existierenden Konto verbinden
|
||||
oauth_signin_title=Anmelden um verbundenes Konto zu autorisieren
|
||||
oauth_signin_submit=Konto verbinden
|
||||
oauth.signin.error=Beim Verarbeiten der Autorisierungsanfrage ist ein Fehler aufgetreten. Wenn dieser Fehler weiterhin besteht, wende dich bitte an deinen Administrator.
|
||||
|
@ -685,7 +685,7 @@ avatar=Profilbild
|
|||
ssh_gpg_keys=SSH- / GPG-Schlüssel
|
||||
social=Soziale Konten
|
||||
applications=Anwendungen
|
||||
orgs=Organisationen verwalten
|
||||
orgs=Organisationen
|
||||
repos=Repositorys
|
||||
delete=Konto löschen
|
||||
twofa=Zwei-Faktor-Authentifizierung (TOTP)
|
||||
|
@ -759,8 +759,8 @@ password_change_disabled=Benutzer, die nicht von Forgejo verwaltet werden, könn
|
|||
|
||||
emails=E-Mail-Adressen
|
||||
manage_emails=E-Mail-Adressen verwalten
|
||||
manage_themes=Standard-Theme auswählen
|
||||
manage_openid=OpenID-Adressen verwalten
|
||||
manage_themes=Standard-Theme
|
||||
manage_openid=OpenID-Adressen
|
||||
email_desc=Deine primäre E-Mail-Adresse wird für Benachrichtigungen, Passwort-Wiederherstellung und, sofern sie nicht versteckt ist, web-basierte Git-Operationen verwendet.
|
||||
theme_desc=Dies wird dein Standard-Theme auf der Seite sein.
|
||||
primary=Primär
|
||||
|
@ -871,7 +871,7 @@ social_desc=Diese sozialen Konten können verwendet werden, um sich bei deinem K
|
|||
unbind=Trennen
|
||||
unbind_success=Das soziale Konto wurde erfolgreich entfernt.
|
||||
|
||||
manage_access_token=Zugriffstokens verwalten
|
||||
manage_access_token=Zugriffstokens
|
||||
generate_new_token=Neuen Token erzeugen
|
||||
tokens_desc=Diese Tokens gewähren vollen Zugriff auf dein Konto via die Forgejo-API.
|
||||
token_name=Token-Name
|
||||
|
@ -950,7 +950,7 @@ webauthn_nickname=Nickname
|
|||
webauthn_delete_key=Sicherheitsschlüssel entfernen
|
||||
webauthn_delete_key_desc=Wenn du einen Sicherheitsschlüssel entfernst, kannst du dich nicht mehr mit ihm anmelden. Fortfahren?
|
||||
|
||||
manage_account_links=Verknüpfte Accounts verwalten
|
||||
manage_account_links=Verknüpfte Accounts
|
||||
manage_account_links_desc=Diese externen Accounts sind mit deinem Forgejo-Account verknüpft.
|
||||
account_links_not_available=Es sind keine externen Accounts mit diesem Forgejo-Account verknüpft.
|
||||
link_account=Account verbinden
|
||||
|
@ -993,13 +993,14 @@ blocked_users = Blockierte Benutzer
|
|||
blocked_since = Blockiert seit %s
|
||||
change_password = Passwort ändern
|
||||
hints = Hinweise
|
||||
additional_repo_units_hint = Zur Aktivierung zusätzlicher Repository-Einheiten ermutigen
|
||||
additional_repo_units_hint = Aktivierung zusätzlicher Repository-Einheiten vorschlagen
|
||||
update_hints = Hinweise aktualisieren
|
||||
update_hints_success = Hinweise wurden aktualisiert.
|
||||
additional_repo_units_hint_description = Einen „Mehr Einheiten hinzufügen …“-Button für Repositorys, welche nicht alle verfügbaren Einheiten aktiviert haben, anzeigen.
|
||||
pronouns = Pronomen
|
||||
pronouns_custom = Eigene
|
||||
pronouns_unspecified = Nicht spezifiziert
|
||||
language.title = Standardsprache
|
||||
|
||||
[repo]
|
||||
owner=Besitzer
|
||||
|
@ -1957,7 +1958,7 @@ wiki.last_commit_info=%s hat diese Seite %s bearbeitet
|
|||
wiki.edit_page_button=Bearbeiten
|
||||
wiki.new_page_button=Neue Seite
|
||||
wiki.file_revision=Seitenversion
|
||||
wiki.wiki_page_revisions=Wiki Änderungsverlauf
|
||||
wiki.wiki_page_revisions=Seiten-Änderungsverlauf
|
||||
wiki.back_to_wiki=Zurück zur Wiki-Seite
|
||||
wiki.delete_page_button=Seite löschen
|
||||
wiki.delete_page_notice_1=Das Löschen der Wiki-Seite „%s“ kann nicht rückgängig gemacht werden. Fortfahren?
|
||||
|
@ -2124,12 +2125,12 @@ settings.pulls.default_allow_edits_from_maintainers=Änderungen von Maintainern
|
|||
settings.releases_desc=Repository-Releases aktivieren
|
||||
settings.packages_desc=Repository Packages Registry aktivieren
|
||||
settings.projects_desc=Repository-Projekte aktivieren
|
||||
settings.actions_desc=Repository-Actions aktivieren
|
||||
settings.actions_desc=Aktiviere integrierte CI/CD-Pipelines mit Forgejo-Actions
|
||||
settings.admin_settings=Administratoreinstellungen
|
||||
settings.admin_enable_health_check=Repository-Health-Checks aktivieren (git fsck)
|
||||
settings.admin_code_indexer=Code-Indexer
|
||||
settings.admin_stats_indexer=Code-Statistik-Indexer
|
||||
settings.admin_indexer_commit_sha=Zuletzt indizierter SHA
|
||||
settings.admin_indexer_commit_sha=Zuletzt indizierter Commit
|
||||
settings.admin_indexer_unindexed=Unindiziert
|
||||
settings.reindex_button=Zur Warteschlange für erneutes Indizieren hinzufügen
|
||||
settings.reindex_requested=Erneutes Indizieren angefordert
|
||||
|
@ -2146,7 +2147,7 @@ settings.convert_fork_desc=Du kannst diesen Fork in ein normales Repository umwa
|
|||
settings.convert_fork_notices_1=Dieser Vorgang konvertiert den Fork in ein normales Repository und kann nicht rückgängig gemacht werden.
|
||||
settings.convert_fork_confirm=Repository umwandeln
|
||||
settings.convert_fork_succeed=Der Fork wurde in ein normales Repository konvertiert.
|
||||
settings.transfer=Besitz übertragen
|
||||
settings.transfer.title=Besitz übertragen
|
||||
settings.transfer.rejected=Repository-Übertragung wurde abgelehnt.
|
||||
settings.transfer.success=Repository-Übertragung war erfolgreich.
|
||||
settings.transfer_abort=Übertragung abbrechen
|
||||
|
@ -2576,7 +2577,7 @@ release.tag_already_exist=Dieser Tag-Name existiert bereits.
|
|||
release.downloads=Downloads
|
||||
release.download_count=Downloads: %s
|
||||
release.add_tag_msg=Titel und Beschreibung des Releases als Tag Nachricht verwenden.
|
||||
release.add_tag=Nur Tag erstellen
|
||||
release.add_tag=Tag erstellen
|
||||
release.releases_for=Releases für %s
|
||||
release.tags_for=Tags für %s
|
||||
|
||||
|
@ -2702,12 +2703,12 @@ activity.navbar.code_frequency = Code-Frequenz
|
|||
file_follow = Symlink folgen
|
||||
error.broken_git_hook = Die Git-Hooks des Repositorys scheinen kaputt zu sein. Bitte folge der <a target="_blank" rel="noreferrer" href="%s">Dokumentation</a> um sie zu reparieren, dann pushe einige Commits um den Status zu aktualisieren.
|
||||
pulls.merged_title_desc_one = hat %[1]d Commit von <code>%[2]s</code> nach <code>%[3]s</code> %[4]s zusammengeführt
|
||||
pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammengeführen
|
||||
pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammenführen
|
||||
open_with_editor = Öffnen mit %s
|
||||
commits.search_branch = Dieser Branch
|
||||
pulls.ready_for_review = Bereit zum Review?
|
||||
settings.rename_branch_failed_protected = Branch %s kann nicht umbenannt werden, weil er ein geschützter Branch ist.
|
||||
editor.commit_id_not_matching = Die Commit-ID passt nicht zur ID die du bearbeitet hast hast. Committe in einen neuen Branch, dann führe einen Merge durch.
|
||||
editor.commit_id_not_matching = Die Datei wurde geändert, während du sie bearbeitet hast. Committe in einen neuen Branch, dann führe einen Merge durch.
|
||||
editor.push_out_of_date = Der Push scheint veraltet zu sein.
|
||||
n_commit_few = %s Commits
|
||||
n_branch_one = %s Branch
|
||||
|
@ -2738,6 +2739,8 @@ settings.sourcehut_builds.access_token_helper = Zugangstoken der die JOBS:RW-Fre
|
|||
settings.matrix.access_token_helper = Es wird empfohlen, einen dedizierten Matrix-Account hierfür anzulegen. Der Zugangstoken kann in einem Incognito-Tab über den Element-Webclient geholt werden: Benutzermenü (oben links) > Alle Einstellungen > Hilfe & Über > Erweitert > Zugangstoken (direkt unter der Homeserver-URL). Schließe das Incognito-Tab dann (Abmelden würde den Token ungültig werden lassen).
|
||||
release.hide_archive_links = Automatisch generierte Archive verstecken
|
||||
release.hide_archive_links_helper = Verstecke automatisch generierte Quellcodearchive für diesen Release. Zum Beispiel, wenn du deine eigenen hochlädst.
|
||||
settings.transfer.button = Besitz übertragen
|
||||
settings.transfer.modal.title = Besitz übertragen
|
||||
|
||||
[graphs]
|
||||
|
||||
|
@ -2865,6 +2868,7 @@ teams.invite.title=Du wurdest eingeladen, dem Team <strong>%s</strong> in der Or
|
|||
teams.invite.by=Von %s eingeladen
|
||||
teams.invite.description=Bitte klicke auf die folgende Schaltfläche, um dem Team beizutreten.
|
||||
follow_blocked_user = Du kannst dieser Organisation nicht folgen, weil diese Organisation dich blockiert hat.
|
||||
open_dashboard = Übersicht öffnen
|
||||
|
||||
[admin]
|
||||
dashboard=Übersicht
|
||||
|
@ -2957,8 +2961,8 @@ dashboard.total_gc_time=Gesamte GC-Pause
|
|||
dashboard.total_gc_pause=Gesamte GC-Pause
|
||||
dashboard.last_gc_pause=Letzte GC-Pause
|
||||
dashboard.gc_times=GC-Zeiten
|
||||
dashboard.delete_old_actions=Alle alten Aktionen aus der Datenbank löschen
|
||||
dashboard.delete_old_actions.started=Löschen aller alten Aktionen in der Datenbank gestartet.
|
||||
dashboard.delete_old_actions=Alle alten Aktivitäten aus der Datenbank löschen
|
||||
dashboard.delete_old_actions.started=Löschen aller alten Aktivitäten aus der Datenbank gestartet.
|
||||
dashboard.update_checker=Update-Checker
|
||||
dashboard.delete_old_system_notices=Alle alten Systemmeldungen aus der Datenbank löschen
|
||||
dashboard.gc_lfs=Garbage-Collection für LFS Meta-Objekte ausführen
|
||||
|
@ -2984,7 +2988,7 @@ users.repos=Repos
|
|||
users.created=Registriert am
|
||||
users.last_login=Letzte Anmeldung
|
||||
users.never_login=Hat sich noch nie eingeloggt
|
||||
users.send_register_notify=Benutzer-Registrierungsbenachrichtigung senden
|
||||
users.send_register_notify=Benachrichtigung über Registrierung per E-Mail
|
||||
users.new_success=Der Account „%s“ wurde erstellt.
|
||||
users.edit=Bearbeiten
|
||||
users.auth_source=Authentifizierungsquelle
|
||||
|
@ -3392,7 +3396,7 @@ notices.desc=Beschreibung
|
|||
notices.op=Aktion
|
||||
notices.delete_success=Diese Systemmeldung wurde gelöscht.
|
||||
self_check.database_fix_mysql = Für MySQL-/MariaDB-Benutzer: Du kannst den Befehl „gitea doctor convert“ verwenden, um die Collation-Probleme zu lösen, oder du kannst das Problem mit „ALTER … COLLATE …“-SQLs manuell lösen.
|
||||
dashboard.sync_tag.started = Tags-Synchronisierung gestartet
|
||||
dashboard.sync_tag.started = Tag-Synchronisierung gestartet
|
||||
self_check.database_collation_case_insensitive = Datenbank benutzt eine Collation %s, welcher der Groß-/Kleinschreibung egal ist. Obwohl Forgejo damit arbeiten könnte, könnte es ein paar seltene Fälle geben, bei denen es nicht wie erwartet funktioniert.
|
||||
self_check = Selbstprüfung
|
||||
dashboard.sync_repo_tags = Tags aus Git-Daten zu Datenbank synchronisieren
|
||||
|
@ -3407,6 +3411,7 @@ config_settings = Einstellungen
|
|||
config.open_with_editor_app_help = Die „Öffnen mit“-Editoren für das Klonmenü. Falls es leer gelassen wird, wird der Standardwert benutzt. Erweitern, um den Standardwert zu sehen.
|
||||
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
|
||||
|
||||
|
||||
[action]
|
||||
|
@ -3625,7 +3630,7 @@ owner.settings.cargo.rebuild=Index neu erstellen
|
|||
owner.settings.cargo.rebuild.description=Neubauen kann hilfreich sein, wenn der Index nicht mit den gespeicherten Cargo-Paketen synchronisiert ist.
|
||||
owner.settings.cargo.rebuild.error=Cargo-Index konnte nicht neu erstellt werden: %v
|
||||
owner.settings.cargo.rebuild.success=Der Cargo-Index wurde erfolgreich neu erstellt.
|
||||
owner.settings.cleanuprules.title=Bereinigungsregeln verwalten
|
||||
owner.settings.cleanuprules.title=Bereinigungsregeln
|
||||
owner.settings.cleanuprules.add=Bereinigungsregel hinzufügen
|
||||
owner.settings.cleanuprules.edit=Bereinigungsregel bearbeiten
|
||||
owner.settings.cleanuprules.none=Es bestehen derzeit keine Bereinigungsregeln.
|
||||
|
@ -3652,6 +3657,7 @@ rpm.repository = Repository-Info
|
|||
rpm.repository.multiple_groups = Dieses Paket ist in mehreren Gruppen verfügbar.
|
||||
rpm.repository.architectures = Architekturen
|
||||
owner.settings.cargo.rebuild.no_index = Kann nicht erneut erzeugen, es wurde kein Index initialisiert.
|
||||
npm.dependencies.bundle = Gebündelte Abhängigkeiten
|
||||
|
||||
[secrets]
|
||||
secrets=Secrets
|
||||
|
@ -3671,7 +3677,7 @@ management=Secrets verwalten
|
|||
[actions]
|
||||
actions=Actions
|
||||
|
||||
unit.desc=Actions verwalten
|
||||
unit.desc=Integrierte CI/CD-Pipelines mit Forgejo-Actions verwalten
|
||||
|
||||
status.unknown=Unbekannt
|
||||
status.waiting=Wartend
|
||||
|
|
|
@ -144,12 +144,12 @@ value=Τιμή
|
|||
toggle_menu = Μενού
|
||||
confirm_delete_artifact = Είστε βέβαιοι πως θέλετε να διαγράψετε το προϊόν «%s»;
|
||||
filter = Φίλτρο
|
||||
filter.is_archived = Αρχειοθετημένο
|
||||
filter.is_archived = Αρχειοθετημένα
|
||||
filter.clear = Απενεργοποίηση φίλτρου
|
||||
filter.not_archived = Μη αρχειοθετημένα
|
||||
filter.is_template = Πρότυπο
|
||||
filter.public = Δημόσιο
|
||||
filter.private = Ιδιωτικό
|
||||
filter.is_template = Πρότυπα
|
||||
filter.public = Δημόσια
|
||||
filter.private = Ιδιωτικά
|
||||
filter.not_fork = Εξαίρεση fork
|
||||
filter.is_mirror = Είδωλα
|
||||
filter.not_mirror = Εξαίρεση ειδώλων
|
||||
|
@ -169,7 +169,7 @@ number_of_contributions_in_the_last_12_months=%s συνεισφορές τους
|
|||
contributions_zero=Χωρίς συνεισφορές
|
||||
less=Λιγότερα
|
||||
more=Περισσότερα
|
||||
contributions_format = {contributions} στις {day} του μήνα {month} του έτους {year}
|
||||
contributions_format = {contributions} στις {day} {month} του έτους {year}
|
||||
contributions_one = συνεισφορά
|
||||
contributions_few = συνεισφορές
|
||||
|
||||
|
@ -497,7 +497,7 @@ issue.action.reopen=Ο/Η <b>@%[1]s</b> άνοιξε ξανά το #%[2]d.
|
|||
issue.action.merge=Ο/Η <b>@%[1]s</b> συγχώνευσε το #%[2]d στο %[3]s.
|
||||
issue.action.approve=<b>@%[1]s</b> ενέκρινε αυτό το pull request.
|
||||
issue.action.reject=<b>@%[1]s</b> ζήτησε αλλαγές σε αυτό το pull request.
|
||||
issue.action.review=<b>@%[1]s</b> σχολίασε αυτό το pull request.
|
||||
issue.action.review=<b>@%[1]s</b> άφησε σχόλιο σε αυτό το pull request.
|
||||
issue.action.review_dismissed=<b>@%[1]s</b> απέρριψε την τελευταία αναθεώρηση από %[2]s για αυτό το pull request.
|
||||
issue.action.ready_for_review=Ο/Η <b>@%[1]s</b> επισήμανε πως αυτό το pull request είναι έτοιμο για αξιολόγηση.
|
||||
issue.action.new=Ο/Η <b>@%[1]s</b> δημιούργησε το #%[2]d.
|
||||
|
@ -645,11 +645,11 @@ overview=Επισκόπηση
|
|||
following_few=%d ακολουθεί
|
||||
follow=Ακολούθηση
|
||||
unfollow=Να μην ακολουθώ
|
||||
user_bio=Βιογραφικό
|
||||
user_bio=Περιγραφή
|
||||
disabled_public_activity=Αυτός ο χρήστης έχει απενεργοποιήσει τη δημόσια προβολή της δραστηριότητας του.
|
||||
email_visibility.limited=Η διεύθυνση email σας είναι ορατή σε όλους τους ταυτοποιημένους χρήστες
|
||||
email_visibility.limited=Η διεύθυνση email σας είναι ορατή σε κάθε ταυτοποιημένο χρήστη
|
||||
email_visibility.private=Η διεύθυνση email σας είναι ορατή μόνο σε εσάς και στους διαχειριστές
|
||||
show_on_map=Δείτε το μέρος αυτό σε έναν χάρτη
|
||||
show_on_map=Προβολή σε χάρτη
|
||||
settings=Ρυθμίσεις χρήστη
|
||||
|
||||
form.name_reserved=Το όνομα χρήστη «%s» είναι δεσμευμένο.
|
||||
|
@ -945,7 +945,7 @@ webauthn_key_loss_warning=Αν χάσετε τα κλειδιά ασφαλεία
|
|||
webauthn_alternative_tip=Μπορεί να θέλετε να ρυθμίσετε μια πρόσθετη μέθοδο ταυτοποίησης.
|
||||
|
||||
manage_account_links=Διαχείριση Συνδεδεμένων Λογαριασμών
|
||||
manage_account_links_desc=Αυτοί οι εξωτερικοί λογαριασμοί είναι συνδεδεμένοι στον Forgejo λογαριασμό σας.
|
||||
manage_account_links_desc=Αυτοί οι εξωτερικοί λογαριασμοί είναι συνδεδεμένοι στον λογαριασμό Forgejo σας.
|
||||
account_links_not_available=Προς το παρόν δεν υπάρχουν εξωτερικοί λογαριασμοί συνδεδεμένοι με τον λογαριασμό σας στο Forgejo.
|
||||
link_account=Σύνδεση Λογαριασμού
|
||||
remove_account_link=Αφαίρεση συνδεδεμένου λογαριασμού
|
||||
|
@ -965,7 +965,7 @@ delete_account_title=Διαγραφή λογαριασμού χρήστη
|
|||
delete_account_desc=Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα αυτό τον λογαριασμό;
|
||||
|
||||
email_notifications.enable=Ενεργοποίηση ειδοποιήσεων email
|
||||
email_notifications.onmention=Να λαμβάνω email μόνο όταν με αναφέρουν
|
||||
email_notifications.onmention=Να λαμβάνω email μόνο όταν αναφέρομαι
|
||||
email_notifications.disable=Απενεργοποίηση ειδοποιήσεων email
|
||||
email_notifications.submit=Ορισμός κύριου email
|
||||
email_notifications.andyourown=Και τις δικιές σας ειδοποιήσεις
|
||||
|
@ -980,12 +980,12 @@ visibility.private_tooltip=Ορατό μόνο στα μέλη των οργαν
|
|||
blocked_users_none = Δεν έχετε αποκλείσει κανέναν χρήστη.
|
||||
blocked_since = Αποκλεισμένος από %s
|
||||
user_unblock_success = Η άρση αποκλεισμού του χρήστη ήταν επιτυχής.
|
||||
change_password = Αλλαγή κωδικού πρόσβασης
|
||||
change_password = Αλλαγή κωδικού
|
||||
blocked_users = Αποκλεισμένοι χρήστες
|
||||
user_block_success = Ο αποκλεισμός του χρήστη ήταν επιτυχής.
|
||||
additional_repo_units_hint = Να γίνεται ενθάρρυνση προσθήκης μονάδων σε αποθετήρια
|
||||
pronouns = Αντωνυμίες
|
||||
pronouns_custom = Κάποια άλλη προτίμηση
|
||||
pronouns_custom = κάτι άλλο
|
||||
pronouns_unspecified = Απροσδιόριστες
|
||||
hints = Συμβουλές
|
||||
additional_repo_units_hint_description = Εμφάνιση κουμπιού «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
|
||||
|
@ -1042,7 +1042,7 @@ trust_model_helper=Επιλέξτε ένα μοντέλο εμπιστοσύνη
|
|||
trust_model_helper_collaborator=Συνεργάτης: Εμπιστοσύνη υπογραφών από συνεργάτες
|
||||
trust_model_helper_committer=Υποβολέας: Εμπιστοσύνη των υπογραφών που ταιριάζουν με τους υποβολείς
|
||||
trust_model_helper_collaborator_committer=Συνεργάτης+Υποβολέας: Εμπιστοσύνη των υπογραφών από συνεργάτες που ταιριάζουν με τον υποβολέα
|
||||
trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμένου μοντέλου εμπιστοσύνης για αυτήν την εγκατάσταση
|
||||
trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμένου μοντέλου εμπιστοσύνης της υπηρεσίας
|
||||
create_repo=Δημιουργία αποθετηρίου
|
||||
default_branch=Προεπιλεγμένος κλάδος
|
||||
default_branch_label=προεπιλογή
|
||||
|
@ -1183,9 +1183,9 @@ fork_from_self=Δεν μπορείτε να κάνετε fork σε ένα απο
|
|||
fork_guest_user=Συνδεθείτε για να κάνετε fork αυτό το αποθετήριο.
|
||||
watch_guest_user=Συνδεθείτε για να παρακολουθήσετε αυτό το αποθετήριο.
|
||||
star_guest_user=Συνδεθείτε για να δώσετε ένα αστέρι σε αυτό το αποθετήριο.
|
||||
unwatch=Μη Παρακολούθηση
|
||||
unwatch=Παύση ακολούθησης
|
||||
watch=Παρακολούθηση
|
||||
unstar=Όχι Αστέρι
|
||||
unstar=Αφαίρεση αστεριού
|
||||
star=Αστέρι
|
||||
fork=Fork
|
||||
download_archive=Λήψη αποθετηρίου
|
||||
|
@ -1340,7 +1340,7 @@ commits.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι.
|
|||
commits.search=Αναζήτηση υποβολών…
|
||||
commits.search.tooltip=Μπορείτε να προθέτετε τις λέξεις-κλειδιά με "author:", "committer:", "after:", ή "before:", π.χ. "επαναφορά author:Alice before:2019-01-13".
|
||||
commits.find=Αναζήτηση
|
||||
commits.search_all=Όλοι Οι Κλάδοι
|
||||
commits.search_all=Όλοι οι κλάδοι
|
||||
commits.author=Συγγραφέας
|
||||
commits.message=Μήνυμα
|
||||
commits.date=Ημερομηνία
|
||||
|
@ -1475,7 +1475,7 @@ issues.change_title_at=`άλλαξε το τίτλο από <b><strike>%s</strik
|
|||
issues.change_ref_at=`άλλαξε την αναφορά από <b><strike>%s</strike></b> σε <b>%s</b> %s`
|
||||
issues.remove_ref_at=`αφαίρεση την αναφορά <b>%s</b> %s`
|
||||
issues.add_ref_at=`πρόσθεσε την αναφορά <b>%s</b> %s`
|
||||
issues.delete_branch_at=`διέγραψε το κλάδο <b>%s</b> %s`
|
||||
issues.delete_branch_at=`διέγραψε τον κλάδο <b>%s</b> %s`
|
||||
issues.filter_label=Σήμα
|
||||
issues.filter_label_exclude=`Χρησιμοποιήστε <code>alt</code> + <code>κάντε κλικ/Enter</code> για να εξαιρέσετε τις σημάνσεις`
|
||||
issues.filter_label_no_select=Όλα τα σήματα
|
||||
|
@ -1503,8 +1503,8 @@ issues.filter_type.reviewed_by_you=Ελέγχθηκε από εσάς
|
|||
issues.filter_sort=Ταξινόμηση
|
||||
issues.filter_sort.latest=Νεότερα
|
||||
issues.filter_sort.oldest=Παλαιότερα
|
||||
issues.filter_sort.recentupdate=Ενημερώθηκαν πρόσφατα
|
||||
issues.filter_sort.leastupdate=Ενημερώθηκαν παλαιότερα
|
||||
issues.filter_sort.recentupdate=Πρόσφατη δραστηριότητα
|
||||
issues.filter_sort.leastupdate=Ανενεργή δραστηριότητα
|
||||
issues.filter_sort.mostcomment=Περισσότερα σχόλια
|
||||
issues.filter_sort.leastcomment=Λιγότερα σχόλια
|
||||
issues.filter_sort.nearduedate=Πλησιέστερη ημερομηνία παράδοσης
|
||||
|
@ -1529,9 +1529,9 @@ pulls.merged_by_fake=από %[2]s συγχωνεύθηκε %[1]s
|
|||
issues.closed_by=από <a href="%[2]s">%[3]s</a> έκλεισαν %[1]s
|
||||
issues.opened_by_fake=άνοιξε το %[1]s από %[2]s
|
||||
issues.closed_by_fake=από %[2]s έκλεισαν %[1]s
|
||||
issues.previous=Προηγούμενο
|
||||
issues.next=Επόμενο
|
||||
issues.open_title=Ανοικτό
|
||||
issues.previous=Προηγούμενη
|
||||
issues.next=Επόμενη
|
||||
issues.open_title=Ανοιχτά
|
||||
issues.closed_title=Κλειστά
|
||||
issues.draft_title=Προσχέδιο
|
||||
issues.num_comments_1=%d σχόλιο
|
||||
|
@ -1602,8 +1602,8 @@ issues.label_deletion_desc=Η διαγραφή ενός σήματος θα το
|
|||
issues.label_deletion_success=Το σήμα έχει διαγραφεί.
|
||||
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.label.filter_sort.by_size=Μικρότερου μεγέθους
|
||||
issues.label.filter_sort.reverse_by_size=Μεγαλύτερου μεγέθους
|
||||
issues.num_participants_few=%d Συμμετέχοντες
|
||||
issues.attachment.open_tab=`Πατήστε εδώ για να ανοίξετε το «%s» σε μια νέα καρτέλα`
|
||||
issues.attachment.download=`Πατήστε εδώ για να κατεβάσετε το «%s»`
|
||||
|
@ -1708,7 +1708,7 @@ issues.dependency.add_error_cannot_create_circular=Δεν μπορείτε να
|
|||
issues.dependency.add_error_dep_not_same_repo=Και τα δύο ζητήματα πρέπει να βρίσκονται στο ίδιο αποθετήριο.
|
||||
issues.review.self.approval=Δεν μπορείτε να εγκρίνετε το δικό σας pull request.
|
||||
issues.review.self.rejection=Δεν μπορείτε να ζητήσετε αλλαγές στο δικό σας pull request.
|
||||
issues.review.approve=ενέκρινε αυτές τις αλλαγές %s
|
||||
issues.review.approve=ενέκρινε τις αλλαγές %s
|
||||
issues.review.comment=αξιολόγησε %s
|
||||
issues.review.dismissed=απέρριψε την αξιολόγηση του/της %s %s
|
||||
issues.review.dismissed_label=Απορρίφθηκε
|
||||
|
@ -1773,8 +1773,8 @@ pulls.showing_specified_commit_range=Εμφάνιση μόνο των αλλαγ
|
|||
pulls.select_commit_hold_shift_for_range=Επιλέξτε υποβολή. Κρατήστε πατημένο το shift + κάντε κλικ για να επιλέξετε ένα εύρος
|
||||
pulls.review_only_possible_for_full_diff=Η αξιολόγηση είναι δυνατή μόνο κατά την προβολή της πλήρης διαφοράς
|
||||
pulls.filter_changes_by_commit=Φιλτράρισμα κατά υποβολή
|
||||
pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι. Δεν υπάρχει ανάγκη να δημιουργήσετε ένα pull request.
|
||||
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίσοι. Αυτό το PR θα είναι κενό.
|
||||
pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι ίδιοι. Δεν χρειάζεται να δημιουργήσετε ένα pull request.
|
||||
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίδιοι. Αυτό το PR θα είναι κενό.
|
||||
pulls.has_pull_request=`Υπάρχει ήδη pull request μεταξύ αυτών των κλάδων: <a href="%[1]s">%[2]s#%[3]d</a>`
|
||||
pulls.create=Δημιουργία pull request
|
||||
pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από <code>%[2]s</code> σε <code id="branch_target">%[3]s</code>
|
||||
|
@ -1877,7 +1877,7 @@ pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος
|
|||
pulls.auto_merge_button_when_succeed=(Όταν οι έλεγχοι πετύχουν)
|
||||
pulls.auto_merge_when_succeed=Αυτόματη συγχώνευση όταν όλοι οι έλεγχοι πετύχουν
|
||||
pulls.auto_merge_newly_scheduled=Το pull request προγραμματίστηκε για συγχώνευση όταν όλοι οι έλεγχοι πετύχουν.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s προγραμμάτισε αυτό το pull request για αυτόματη συγχώνευση όταν όλοι οι έλεγχοι πετύχουν %[2]s.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s προγραμμάτισε την αυτόματη συγχώνευση του pull request όταν όλοι οι έλεγχοι πετύχουν %[2]s.
|
||||
|
||||
pulls.auto_merge_cancel_schedule=Ακύρωση αυτόματης συγχώνευσης
|
||||
pulls.auto_merge_not_scheduled=Αυτό το pull request δεν έχει προγραμματιστεί να συγχωνευτεί αυτόματα.
|
||||
|
@ -1944,7 +1944,7 @@ 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=Σελίδα
|
||||
|
@ -1981,7 +1981,7 @@ activity.active_prs_count_1=<strong>%d</strong> ενεργό pull request
|
|||
activity.active_prs_count_n=<strong>%d</strong> ενεργά pull request
|
||||
activity.merged_prs_count_1=Συγχωνευμένο pull request
|
||||
activity.merged_prs_count_n=Συγχωνευμένα pull request
|
||||
activity.opened_prs_count_1=Συνιστώμενο pull request
|
||||
activity.opened_prs_count_1=Νέα pull request
|
||||
activity.opened_prs_count_n=Συνιστώμενα pull requests
|
||||
activity.title.user_1=%d χρήστη
|
||||
activity.title.user_n=%d χρήστες
|
||||
|
@ -1993,12 +1993,12 @@ activity.merged_prs_label=Συγχωνευμένο
|
|||
activity.opened_prs_label=Προτεινόμενα
|
||||
activity.active_issues_count_1=<strong>%d</strong> ενεργό ζήτημα
|
||||
activity.active_issues_count_n=<strong>%d</strong> ενεργά ζητήματα
|
||||
activity.closed_issues_count_1=Κλειστό ζήτημα
|
||||
activity.closed_issues_count_1=Κλεισμένα ζητήματα
|
||||
activity.closed_issues_count_n=Κλειστά ζητήματα
|
||||
activity.title.issues_1=%d ζήτημα
|
||||
activity.title.issues_n=%d ζητήματα
|
||||
activity.title.issues_closed_from=%s έκλεισε από %s
|
||||
activity.title.issues_created_by=%s δημιουργήθηκε από %s
|
||||
activity.title.issues_closed_from=%s κλείστηκαν από %s
|
||||
activity.title.issues_created_by=%s δημιουργήθηκαν από %s
|
||||
activity.closed_issue_label=Κλειστό
|
||||
activity.new_issues_count_1=Νέο ζήτημα
|
||||
activity.new_issues_count_n=Νέα ζητήματα
|
||||
|
@ -2059,9 +2059,9 @@ settings.hooks=Webhooks
|
|||
settings.githooks=Git hooks
|
||||
settings.basic_settings=Βασικές ρυθμίσεις
|
||||
settings.mirror_settings=Ρυθμίσεις ειδώλου
|
||||
settings.mirror_settings.docs=Ρυθμίστε το αποθετήριο σας ώστε να συγχρονίζονται αυτόματα οι υποβολές, ετικέτες και κλάδοι με ένα άλλο αποθετήριο.
|
||||
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε το έργο σας για να ωθούνται αυτόματα οι υποβολές, ετικέτες και κλάδοι σε ένα άλλο αποθετήριο. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
|
||||
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε το έργο σας να τραβά αυτόματα υποβολές, ετικέτες και κλάδους από ένα άλλο αποθετήριο.
|
||||
settings.mirror_settings.docs=Ρυθμίστε τον αυτόματο συγχρονισμό των υποβολών, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο αποθετήριο.
|
||||
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε τον αυτόματο συγχρονισμό των υποβολών, ετικετών και κλάδων του έργου σας με ένα άλλο αποθετήριο. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
|
||||
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε την αυτόματη λήψη υποβολών, ετικετών και κλάδων από ένα άλλο αποθετήριο.
|
||||
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Αυτή τη στιγμή, αυτό μπορεί να γίνει μόνο στο μενού "Νέα Μεταφορά". Για περισσότερες πληροφορίες, συμβουλευτείτε το:
|
||||
settings.mirror_settings.docs.disabled_push_mirror.info=Τα είδωλα ώθησης έχουν απενεργοποιηθεί από το διαχειριστή σας.
|
||||
settings.mirror_settings.docs.no_new_mirrors=Το αποθετήριο σας αντιγράφει τις αλλαγές προς ή από ένα άλλο αποθετήριο. Λάβετε υπόψη ότι δεν μπορείτε να δημιουργήσετε νέα είδωλα αυτή τη στιγμή.
|
||||
|
@ -2145,7 +2145,7 @@ settings.convert_fork_desc=Μπορείτε να μετατρέψετε αυτό
|
|||
settings.convert_fork_notices_1=Αυτή η λειτουργία θα μετατρέψει το fork σε ένα κανονικό αποθετήριο και δεν μπορεί να αναιρεθεί.
|
||||
settings.convert_fork_confirm=Μετατροπή αποθετηρίου
|
||||
settings.convert_fork_succeed=Το fork έχει μετατραπεί σε κανονικό αποθετήριο.
|
||||
settings.transfer=Μεταβίβαση ιδιοκτησίας
|
||||
settings.transfer.title=Μεταβίβαση ιδιοκτησίας
|
||||
settings.transfer.rejected=Η μεταβίβαση του αποθετηρίου απορρίφθηκε.
|
||||
settings.transfer.success=Η μεταβίβαση του αποθετηρίου ήταν επιτυχής.
|
||||
settings.transfer_abort=Ακύρωση μεταβίβασης
|
||||
|
@ -2169,7 +2169,7 @@ settings.trust_model.collaborator=Συνεργάτης
|
|||
settings.trust_model.collaborator.long=Συνεργάτης: Εμπιστοσύνη υπογραφών από συνεργάτες
|
||||
settings.trust_model.collaborator.desc=Οι έγκυρες υπογραφές που προέρχονται από συνεργάτες του αποθετηρίου θα επισημαίνονται ως "αξιόπιστες" - (ανεξάρτητα αν ο υπογραφόμενος συνεργάτης είναι και ο υποβολέας ή όχι). Διαφορετικά, οι έγκυρες υπογραφές θα επισημανθούν ως "αξιόπιστες" μόνο αν η υπογραφή ταιριάζει με τον υποβολέα και, αλλιώς θα χαρακτηριστούν ως "αταίριαστες".
|
||||
settings.trust_model.committer=Υποβολέας
|
||||
settings.trust_model.committer.long=Υποβολέας: Οι υπογραφές εμπιστοσύνης που ταιριάζουν σε υποβολείς (Αυτό ταιριάζει με το GitHub και θα αναγκάσει τις υπογεγραμμένες υποβολές από το Forgejo να το έχουν ως υποβολέα)
|
||||
settings.trust_model.committer.long=Υποβολέας: Οι υπογραφές εμπιστοσύνης που ταιριάζουν σε υποβολείς (όπως και στο GitHub, θα αναγκάσει τις υπογεγραμμένες υποβολές του Forgejo να έχουν το Forgejo ως υποβολέα)
|
||||
settings.trust_model.committer.desc=Οι έγκυρες υπογραφές θα σημαίνονται ώς "αξιόπιστη" μόνο εάν ταιριάζουν με τον υποβολέα, διαφορετικά θα σημαίνωνται ως "δεν ταιριάζει". Αυτό αναγκάζει το Forgejo να είναι ο υποβολέας στις υπογεγραμμένες υποβολές με τον πραγματικό υποβολέα να αναφέρεται στην σημείωση Co-authored-by: και Co-committed-by: στην υποβολή. Το προεπιλεγμένο κλειδί Forgejo πρέπει να ταιριάζει σε ένα Χρήστη στη βάση δεδομένων.
|
||||
settings.trust_model.collaboratorcommitter=Συνεργάτης+Υποβολέας
|
||||
settings.trust_model.collaboratorcommitter.long=Συνεργάτης+Υποβολέας: Εμπιστοσύνη υπογραφών από συνεργάτες που ταιριάζουν με τον υποβολέα
|
||||
|
@ -2691,7 +2691,7 @@ stars = Αστέρια
|
|||
n_branch_one = %s κλάδος
|
||||
commits.search_branch = Αυτός ο κλάδος
|
||||
pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="branch_target">%[3]s</code>
|
||||
pulls.merged_title_desc_one = : συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
|
||||
pulls.merged_title_desc_one = συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
|
||||
n_commit_few = %s υποβολές
|
||||
settings.sourcehut_builds.secrets = Μυστικά
|
||||
settings.add_webhook.invalid_path = Η τοποθεσία του αρχείου δεν μπορεί να περιέχει κενά, «.» ή «..». Δεν μπορεί να αρχίζει ή να τελειώνει με μία κάθετο.
|
||||
|
@ -2871,8 +2871,8 @@ emails=Email χρήστη
|
|||
config=Διαμόρφωση
|
||||
notices=Ειδοποιήσεις συστήματος
|
||||
monitor=Παρακολούθηση
|
||||
first_page=Πρώτο
|
||||
last_page=Τελευταίο
|
||||
first_page=Πρώτη
|
||||
last_page=Τελευταία
|
||||
total=Σύνολο: %d
|
||||
settings=Ρυθμίσεις διαχειριστή
|
||||
|
||||
|
@ -3403,14 +3403,14 @@ self_check.database_collation_case_insensitive = Η βάση δεδομένων
|
|||
[action]
|
||||
create_repo=δημιούργησε το αποθετήριο <a href="%s">%s</a>
|
||||
rename_repo=μετονόμασε το αποθετήριο από <code>%[1]s</code> σε <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=έκανε push στο <a href="%[2]s">%[3]s</a> σε <a href="%[1]s">%[4]s</a>
|
||||
commit_repo=έκανε push στο <a href="%[2]s">%[3]s</a> του <a href="%[1]s">%[4]s</a>
|
||||
create_issue=`άνοιξε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_issue=`έκλεισε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_issue=`άνοιξε ξανά το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
create_pull_request=`δημιούργησε το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_pull_request=`έκλεισε pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_pull_request=`άνοιξε ξανά το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_issue=`σχολίασε το ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_issue=`άφησε σχόλιο στο ζήτημα <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_pull=`σχολίασε στο pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
merge_pull_request=`συγχώνευσε το pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
auto_merge_pull_request=`αυτόματη συγχώνευση του pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3771,7 +3771,7 @@ submodule=Υπομονάδα
|
|||
code_search_unavailable = Η αναζήτηση κώδικα δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
|
||||
keyword_search_unavailable = Η αναζήτηση με την χρήση λέξεων-κλειδιών δεν είναι επί του παρόντος διαθέσιμη. Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
|
||||
runner_kind = Αναζήτηση runner...
|
||||
code_search_by_git_grep = Η αναζήτηση κώδικα εκτελείται με την χρήση της εντολής «git grep». Αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»), ίσως να παρουσιαστούν καλύτερα αποτελέσματα.
|
||||
code_search_by_git_grep = Για την αναζήτηση κώδικα, χρησιμοποιείται η εντολή «git grep». Ίσως να παρουσιαστούν καλύτερα αποτελέσματα, αν ο διαχειριστής σας ενεργοποιήσει ένα ευρετήριο για αποθετήρια («Repository Indexer»).
|
||||
package_kind = Αναζήτηση πακέτων...
|
||||
project_kind = Αναζήτηση έργων...
|
||||
branch_kind = Αναζήτηση κλάδων...
|
||||
|
@ -3781,7 +3781,7 @@ search = Αναζήτηση...
|
|||
type_tooltip = Είδος αναζήτησης
|
||||
fuzzy = Στο περίπου
|
||||
fuzzy_tooltip = Να συμπεριληφθούν αποτελέσματα που μοιάζουν με τον όρο αναζήτησης
|
||||
match = Ταιριαστά
|
||||
match = Ακριβής
|
||||
match_tooltip = Να συμπεριληφθούν αποτελέσματα που ταιριάζουν με τον όρο αναζήτησης
|
||||
repo_kind = Αναζήτηση αποθετηρίων...
|
||||
user_kind = Αναζήτηση χρηστών...
|
||||
|
|
|
@ -149,12 +149,12 @@ filter = Filter
|
|||
filter.clear = Clear filters
|
||||
filter.is_archived = Archived
|
||||
filter.not_archived = Not archived
|
||||
filter.is_fork = Forked
|
||||
filter.not_fork = Not forked
|
||||
filter.is_mirror = Mirrored
|
||||
filter.not_mirror = Not mirrored
|
||||
filter.is_template = Template
|
||||
filter.not_template = Not template
|
||||
filter.is_fork = Forks
|
||||
filter.not_fork = Not forks
|
||||
filter.is_mirror = Mirrors
|
||||
filter.not_mirror = Not mirrors
|
||||
filter.is_template = Templates
|
||||
filter.not_template = Not templates
|
||||
filter.public = Public
|
||||
filter.private = Private
|
||||
|
||||
|
@ -439,8 +439,8 @@ tab_openid = OpenID
|
|||
oauth_signup_tab = Register New Account
|
||||
oauth_signup_title = Complete New Account
|
||||
oauth_signup_submit = Complete Account
|
||||
oauth_signin_tab = Link to Existing Account
|
||||
oauth_signin_title = Sign In to Authorize Linked Account
|
||||
oauth_signin_tab = Link to an existing account
|
||||
oauth_signin_title = Sign in to authorize linked account
|
||||
oauth_signin_submit = Link Account
|
||||
oauth.signin.error = There was an error processing the authorization request. If this error persists, please contact the site administrator.
|
||||
oauth.signin.error.access_denied = The authorization request was denied.
|
||||
|
@ -571,7 +571,7 @@ TreeName = File path
|
|||
Content = Content
|
||||
|
||||
SSPISeparatorReplacement = Separator
|
||||
SSPIDefaultLanguage = Default Language
|
||||
SSPIDefaultLanguage = Default language
|
||||
|
||||
require_error = ` cannot be empty.`
|
||||
alpha_dash_error = ` should contain only alphanumeric, dash ("-") and underscore ("_") characters.`
|
||||
|
@ -691,13 +691,13 @@ password = Password
|
|||
security = Security
|
||||
avatar = Avatar
|
||||
ssh_gpg_keys = SSH / GPG keys
|
||||
social = Social Accounts
|
||||
social = Social accounts
|
||||
applications = Applications
|
||||
orgs = Manage organizations
|
||||
orgs = Organizations
|
||||
repos = Repositories
|
||||
delete = Delete Account
|
||||
twofa = Two-factor authentication (TOTP)
|
||||
account_link = Linked Accounts
|
||||
account_link = Linked accounts
|
||||
organization = Organizations
|
||||
uid = UID
|
||||
webauthn = Two-factor authentication (Security keys)
|
||||
|
@ -726,10 +726,11 @@ change_username_redirect_prompt = The old username will redirect until someone c
|
|||
continue = Continue
|
||||
cancel = Cancel
|
||||
language = Language
|
||||
language.title = Default language
|
||||
ui = Theme
|
||||
hints = Hints
|
||||
additional_repo_units_hint = Suggest to enable additional repository units
|
||||
additional_repo_units_hint_description = Display an "Add more units..." button for repositories that do not have all available units enabled.
|
||||
additional_repo_units_hint = Encourage enabling additional repository units
|
||||
update_hints = Update hints
|
||||
update_hints_success = Hints have been updated.
|
||||
hidden_comment_types = Hidden comment types
|
||||
|
@ -776,19 +777,19 @@ change_password_success = Your password has been updated. Sign in using your new
|
|||
password_change_disabled = Non-local users cannot update their password through the Forgejo web interface.
|
||||
|
||||
manage_emails = Manage email addresses
|
||||
manage_themes = Select default theme
|
||||
manage_openid = Manage OpenID addresses
|
||||
manage_themes = Default theme
|
||||
manage_openid = OpenID addresses
|
||||
email_desc = Your primary email address will be used for notifications, password recovery and, provided that it is not hidden, web-based Git operations.
|
||||
theme_desc = This will be your default theme across the site.
|
||||
primary = Primary
|
||||
activated = Activated
|
||||
requires_activation = Requires activation
|
||||
primary_email = Make Primary
|
||||
activate_email = Send Activation
|
||||
activations_pending = Activations Pending
|
||||
primary_email = Make primary
|
||||
activate_email = Send activation
|
||||
activations_pending = Activations pending
|
||||
can_not_add_email_activations_pending = There is a pending activation, try again in a few minutes if you want to add a new email.
|
||||
delete_email = Remove
|
||||
email_deletion = Remove Email Address
|
||||
email_deletion = Remove email address
|
||||
email_deletion_desc = The email address and related information will be removed from your account. Git commits by this email address will remain unchanged. Continue?
|
||||
email_deletion_success = The email address has been removed.
|
||||
theme_update_success = Your theme was updated.
|
||||
|
@ -797,7 +798,7 @@ openid_deletion = Remove OpenID Address
|
|||
openid_deletion_desc = Removing this OpenID address from your account will prevent you from signing in with it. Continue?
|
||||
openid_deletion_success = The OpenID address has been removed.
|
||||
add_new_email = Add email address
|
||||
add_new_openid = Add New OpenID URI
|
||||
add_new_openid = Add new OpenID URI
|
||||
add_email = Add email address
|
||||
add_openid = Add OpenID URI
|
||||
add_email_confirmation_sent = A confirmation email has been sent to "%s". Please check your inbox within the next %s to confirm your email address.
|
||||
|
@ -821,7 +822,7 @@ add_new_key = Add SSH key
|
|||
add_new_gpg_key = Add GPG key
|
||||
key_content_ssh_placeholder = Begins with "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", or "sk-ssh-ed25519@openssh.com"
|
||||
key_content_gpg_placeholder = Begins with "-----BEGIN PGP PUBLIC KEY BLOCK-----"
|
||||
add_new_principal = Add Principal
|
||||
add_new_principal = Add principal
|
||||
ssh_key_been_used = This SSH key has already been added to the server.
|
||||
ssh_key_name_used = An SSH key with same name already exists on your account.
|
||||
ssh_principal_been_used = This principal has already been added to the server.
|
||||
|
@ -880,7 +881,7 @@ token_state_desc = This token has been used in the last 7 days
|
|||
principal_state_desc = This principal has been used in the last 7 days
|
||||
show_openid = Show on profile
|
||||
hide_openid = Hide from profile
|
||||
ssh_disabled = SSH Disabled
|
||||
ssh_disabled = SSH is disabled
|
||||
ssh_signonly = SSH is currently disabled so these keys are only used for commit signature verification.
|
||||
ssh_externally_managed = This SSH key is externally managed for this user
|
||||
manage_social = Manage Associated Social Accounts
|
||||
|
@ -888,7 +889,7 @@ social_desc = These social accounts can be used to sign in to your account. Make
|
|||
unbind = Unlink
|
||||
unbind_success = The social account has been removed successfully.
|
||||
|
||||
manage_access_token = Manage access tokens
|
||||
manage_access_token = Access tokens
|
||||
generate_new_token = Generate new token
|
||||
tokens_desc = These tokens grant access to your account using the Forgejo API.
|
||||
token_name = Token name
|
||||
|
@ -970,11 +971,11 @@ webauthn_delete_key_desc = If you remove a security key you can no longer sign i
|
|||
webauthn_key_loss_warning = If you lose your security keys, you will lose access to your account.
|
||||
webauthn_alternative_tip = You may want to configure an additional authentication method.
|
||||
|
||||
manage_account_links = Manage Linked Accounts
|
||||
manage_account_links = Linked accounts
|
||||
manage_account_links_desc = These external accounts are linked to your Forgejo account.
|
||||
account_links_not_available = There are currently no external accounts linked to your Forgejo account.
|
||||
link_account = Link Account
|
||||
remove_account_link = Remove Linked Account
|
||||
link_account = Link account
|
||||
remove_account_link = Remove linked account
|
||||
remove_account_link_desc = Removing a linked account will revoke its access to your Forgejo account. Continue?
|
||||
remove_account_link_success = The linked account has been removed.
|
||||
|
||||
|
@ -1326,10 +1327,10 @@ editor.add_tmpl = Add "<filename>"
|
|||
editor.add = Add %s
|
||||
editor.update = Update %s
|
||||
editor.delete = Delete %s
|
||||
editor.patch = Apply Patch
|
||||
editor.patch = Apply patch
|
||||
editor.patching = Patching:
|
||||
editor.fail_to_apply_patch = Unable to apply patch "%s"
|
||||
editor.new_patch = New Patch
|
||||
editor.new_patch = New patch
|
||||
editor.commit_message_desc = Add an optional extended description…
|
||||
editor.signoff_desc = Add a Signed-off-by trailer by the committer at the end of the commit log message.
|
||||
editor.commit_directly_to_this_branch = Commit directly to the <strong class="branch-name">%s</strong> branch.
|
||||
|
@ -1351,16 +1352,16 @@ editor.file_editing_no_longer_exists = The file being edited, "%s", no longer ex
|
|||
editor.file_deleting_no_longer_exists = The file being deleted, "%s", no longer exists in this repository.
|
||||
editor.file_changed_while_editing = The file contents have changed since you started editing. <a target="_blank" rel="noopener noreferrer" href="%s">Click here</a> to see them or <strong>Commit changes again</strong> to overwrite them.
|
||||
editor.file_already_exists = A file named "%s" already exists in this repository.
|
||||
editor.commit_id_not_matching = The commit ID does not match the one you was editing. Commit to a new branch and then merge.
|
||||
editor.commit_id_not_matching = The file was changed while you were editing it. Commit to a new branch and then merge.
|
||||
editor.push_out_of_date = The push appears to be out of date.
|
||||
editor.commit_empty_file_header = Commit an empty file
|
||||
editor.commit_empty_file_text = The file you're about to commit is empty. Proceed?
|
||||
editor.no_changes_to_show = There are no changes to show.
|
||||
editor.fail_to_update_file = Failed to update/create file "%s".
|
||||
editor.fail_to_update_file_summary = Error Message:
|
||||
editor.fail_to_update_file_summary = Error message:
|
||||
editor.push_rejected_no_message = The change was rejected by the server without a message. Please check Git hooks.
|
||||
editor.push_rejected = The change was rejected by the server. Please check Git hooks.
|
||||
editor.push_rejected_summary = Full Rejection Message:
|
||||
editor.push_rejected_summary = Full rejection message:
|
||||
editor.add_subdir = Add a directory…
|
||||
editor.unable_to_upload_files = Failed to upload files to "%s" with error: %v
|
||||
editor.upload_file_is_locked = File "%s" is locked by %s.
|
||||
|
@ -1377,8 +1378,8 @@ commits.commits = Commits
|
|||
commits.no_commits = No commits in common. "%s" and "%s" have entirely different histories.
|
||||
commits.nothing_to_compare = These branches are equal.
|
||||
commits.search.tooltip = You can prefix keywords with "author:", "committer:", "after:", or "before:", e.g. "revert author:Alice before:2019-01-13".
|
||||
commits.search_branch = This Branch
|
||||
commits.search_all = All Branches
|
||||
commits.search_branch = This branch
|
||||
commits.search_all = All branches
|
||||
commits.author = Author
|
||||
commits.message = Message
|
||||
commits.browse_further = Browse further
|
||||
|
@ -1883,16 +1884,16 @@ pulls.merge_commit_id = The merge commit ID
|
|||
pulls.require_signed_wont_sign = The branch requires signed commits but this merge will not be signed
|
||||
|
||||
pulls.invalid_merge_option = You cannot use this merge option for this pull request.
|
||||
pulls.merge_conflict = Merge Failed: There was a conflict whilst merging. Hint: Try a different strategy
|
||||
pulls.merge_conflict_summary = Error Message
|
||||
pulls.rebase_conflict = Merge Failed: There was a conflict whilst rebasing commit: %[1]s. Hint: Try a different strategy
|
||||
pulls.rebase_conflict_summary = Error Message
|
||||
pulls.unrelated_histories = Merge Failed: The merge head and base do not share a common history. Hint: Try a different strategy
|
||||
pulls.merge_out_of_date = Merge Failed: Whilst generating the merge, the base was updated. Hint: Try again.
|
||||
pulls.head_out_of_date = Merge Failed: Whilst generating the merge, the head was updated. Hint: Try again.
|
||||
pulls.merge_conflict = Merge failed: There was a conflict whilst merging. Hint: Try a different strategy
|
||||
pulls.merge_conflict_summary = Error message
|
||||
pulls.rebase_conflict = Merge failed: There was a conflict whilst rebasing commit: %[1]s. Hint: Try a different strategy
|
||||
pulls.rebase_conflict_summary = Error message
|
||||
pulls.unrelated_histories = Merge failed: The merge head and base do not share a common history. Hint: Try a different strategy
|
||||
pulls.merge_out_of_date = Merge failed: Whilst generating the merge, the base was updated. Hint: Try again.
|
||||
pulls.head_out_of_date = Merge failed: Whilst generating the merge, the head was updated. Hint: Try again.
|
||||
pulls.has_merged = Failed: The pull request has been merged, you cannot merge again or change the target branch.
|
||||
pulls.push_rejected = Push Failed: The push was rejected. Review the Git hooks for this repository.
|
||||
pulls.push_rejected_summary = Full Rejection Message
|
||||
pulls.push_rejected_summary = Full rejection message
|
||||
pulls.push_rejected_no_message = Push Failed: The push was rejected but there was no remote message. Review the Git hooks for this repository
|
||||
pulls.open_unmerged_pull_exists = `You cannot perform a reopen operation because there is a pending pull request (#%d) with identical properties.`
|
||||
pulls.status_checking = Some checks are pending
|
||||
|
@ -2201,7 +2202,9 @@ settings.convert_fork_desc = You can convert this fork into a regular repository
|
|||
settings.convert_fork_notices_1 = This operation will convert the fork into a regular repository and cannot be undone.
|
||||
settings.convert_fork_confirm = Convert repository
|
||||
settings.convert_fork_succeed = The fork has been converted into a regular repository.
|
||||
settings.transfer = Transfer ownership
|
||||
settings.transfer.title = Transfer ownership
|
||||
settings.transfer.button = Transfer ownership
|
||||
settings.transfer.modal.title = Transfer ownership
|
||||
settings.transfer.rejected = Repository transfer was rejected.
|
||||
settings.transfer.success = Repository transfer was successful.
|
||||
settings.transfer_abort = Cancel transfer
|
||||
|
@ -3611,7 +3614,7 @@ owner.settings.cargo.rebuild.description = Rebuilding can be useful if the index
|
|||
owner.settings.cargo.rebuild.error = Failed to rebuild Cargo index: %v
|
||||
owner.settings.cargo.rebuild.success = The Cargo index was successfully rebuild.
|
||||
owner.settings.cargo.rebuild.no_index = Cannot rebuild, no index is initialized.
|
||||
owner.settings.cleanuprules.title = Manage cleanup rules
|
||||
owner.settings.cleanuprules.title = Cleanup rules
|
||||
owner.settings.cleanuprules.add = Add cleanup rule
|
||||
owner.settings.cleanuprules.edit = Edit cleanup rule
|
||||
owner.settings.cleanuprules.none = There are no cleanup rules yet.
|
||||
|
|
|
@ -803,3 +803,7 @@ teams.settings = Agordoj
|
|||
|
||||
[packages]
|
||||
npm.details.tag = Etikedo
|
||||
|
||||
|
||||
[search]
|
||||
search = Serĉi...
|
|
@ -2109,7 +2109,7 @@ settings.convert_fork_desc=Puede convertir este fork en un repositorio normal. E
|
|||
settings.convert_fork_notices_1=Esta operación convertirá el fork en un repositorio regular y no se puede deshacer.
|
||||
settings.convert_fork_confirm=Convertir repositorio
|
||||
settings.convert_fork_succeed=El fork se ha convertido en un repositorio normal.
|
||||
settings.transfer=Transferir la propiedad
|
||||
settings.transfer.title=Transferir la propiedad
|
||||
settings.transfer.rejected=La transferencia de repositorio fue rechazada.
|
||||
settings.transfer.success=La transferencia del repositorio fue exitosa.
|
||||
settings.transfer_abort=Cancelar transferencia
|
||||
|
|
|
@ -1595,7 +1595,7 @@ settings.convert_fork_desc=شما می توانید این انشعاب را ب
|
|||
settings.convert_fork_notices_1=این عملیات، انشعاب را تبدیل به مخزن عادی خواهد کرد و بازگشت ناپذیر است.
|
||||
settings.convert_fork_confirm=تبدیل مخزن
|
||||
settings.convert_fork_succeed=انشعاب به یک مخزن عادی تبدیل شده است.
|
||||
settings.transfer=انتقال مالکیت
|
||||
settings.transfer.title=انتقال مالکیت
|
||||
settings.transfer.rejected=انتقال انبار رد شده است.
|
||||
settings.transfer.success=انتقال انبار موفق بود.
|
||||
settings.transfer_abort=لغو انتقال
|
||||
|
|
|
@ -1133,7 +1133,7 @@ settings.tracker_issue_style.alphanumeric=Aakkosnumeerinen
|
|||
settings.enable_timetracker=Ota käyttöön ajan seuranta
|
||||
settings.danger_zone=Vaaravyöhyke
|
||||
settings.new_owner_has_same_repo=Uudella omistajalla on jo samanniminen repo. Ole hyvä ja valitse toinen nimi.
|
||||
settings.transfer=Siirrä omistajuus
|
||||
settings.transfer.title=Siirrä omistajuus
|
||||
settings.transfer_form_title=Syötä repon nimi vahvistuksena:
|
||||
settings.transfer_notices_3=- Jos arkisto on yksityinen ja se siirretään yksittäiselle käyttäjälle, tämä toiminto varmistaa, että käyttäjällä on ainakin lukuoikeudet (ja muuttaa käyttöoikeuksia tarvittaessa).
|
||||
settings.transfer_owner=Uusi omistaja
|
||||
|
|
|
@ -7,7 +7,7 @@ language = Wika
|
|||
mirrors = Mga Mirror
|
||||
forks = Mga Fork
|
||||
activities = Mga Aktibidad
|
||||
pull_requests = Mga hiling sa paghatak
|
||||
pull_requests = Mga hiling sa paghila
|
||||
issues = Mga Isyu
|
||||
milestones = Mga Milestone
|
||||
ok = OK
|
||||
|
@ -116,12 +116,12 @@ filter = I-filter
|
|||
filter.clear = I-clear ang mga filter
|
||||
filter.is_archived = Naka-archive
|
||||
filter.not_archived = Hindi naka-archive
|
||||
filter.is_fork = Naka-fork
|
||||
filter.not_fork = Hindi naka-fork
|
||||
filter.is_mirror = Naka-mirror
|
||||
filter.not_mirror = Hindi naka-mirror
|
||||
filter.is_template = Template
|
||||
filter.not_template = Hindi template
|
||||
filter.is_fork = Mga fork
|
||||
filter.not_fork = Hindi mga fork
|
||||
filter.is_mirror = Mga mirror
|
||||
filter.not_mirror = Hindi mga mirror
|
||||
filter.is_template = Mga template
|
||||
filter.not_template = Hindi mga template
|
||||
filter.public = Publiko
|
||||
filter.private = Pribado
|
||||
notifications = Mga Abiso
|
||||
|
@ -401,7 +401,7 @@ login_openid = OpenID
|
|||
oauth_signup_tab = Mag-rehistro ng Bagong Account
|
||||
oauth_signup_title = Kumpletuhin ang Bagong Account
|
||||
oauth_signup_submit = Kumpletuhin ang Account
|
||||
oauth_signin_tab = I-link sa Umiiral na Account
|
||||
oauth_signin_tab = Mag-link sa umiiral na account
|
||||
oauth_signin_submit = I-link ang Account
|
||||
oauth.signin.error.access_denied = Tinanggihan ang hiling ng pahintulutan.
|
||||
oauth.signin.error.temporarily_unavailable = Nabigo ang awtorisasyon dahil pansamantalang hindi available ang authentication server. Mangyaring subukan muli sa ibang pagkakataon.
|
||||
|
@ -409,7 +409,7 @@ openid_connect_submit = Kumonekta
|
|||
openid_connect_title = Kumonekta sa umiiral na account
|
||||
openid_connect_desc = Ang piniling OpenID URI ay hindi alam. Iugnay iyan sa bagong account dito.
|
||||
invalid_code = Ang iyong confirmation code ay hindi wasto o nag-expire na.
|
||||
oauth_signin_title = Mag-sign In para Pahintulutan ang Naka-link na Account
|
||||
oauth_signin_title = Mag-sign in para pahintulutan ang naka-link na account
|
||||
invalid_code_forgot_password = Ang iyong confirmation code ay hindi wasto o nag-expire na. Mag-click <a href="%s">dito</a> para magsimula ng bagong session.
|
||||
confirmation_mail_sent_prompt = Ang isang bagong email pang-kumpirma ay ipinadala sa <b>%s</b>. Pakisuri ang iyong inbox sa loob ng %s para tapusin ang proseso ng pagrehistro. Kung mali ang email, maari kang mag-log in, at humingi ng isa pang email pang-kumpirma na ipapadala sa ibang address.
|
||||
invalid_password = Ang iyong password ay hindi tugma sa password na ginamit para gawin ang account.
|
||||
|
@ -522,7 +522,7 @@ CommitChoice = Pagpili ng commit
|
|||
TreeName = Path ng file
|
||||
Content = Nilalaman
|
||||
SSPISeparatorReplacement = Pang-hiwalay
|
||||
SSPIDefaultLanguage = Default na Wika
|
||||
SSPIDefaultLanguage = Default na wika
|
||||
CommitSummary = Pangkalahatang-ideya ng commit
|
||||
glob_pattern_error = ` hindi angkop ang glob pattern: %s`
|
||||
require_error = ` hindi maaring walang laman.`
|
||||
|
@ -604,7 +604,7 @@ Location = Lokasyon
|
|||
joined_on = Sumali noong %s
|
||||
repositories = Mga Repositoryo
|
||||
activity = Pampublikong aktibidad
|
||||
followers_few = %d Mga tagasunod
|
||||
followers_few = %d mga tagasunod
|
||||
block_user = I-block ang user
|
||||
change_avatar = Palitan ang iyong avatar…
|
||||
block_user.detail = Pakiunawa na kung i-block mo ang user na ito, isasagawa ang iba pang mga aksyon. Gaya ng:
|
||||
|
@ -617,7 +617,7 @@ watched = Mga sinusubaybayan na repositoryo
|
|||
code = Code
|
||||
projects = Mga Proyekto
|
||||
overview = Pangkalahatang Ideya
|
||||
following_few = %d Sinusundan
|
||||
following_few = %d sinusundan
|
||||
follow = Sundan
|
||||
unfollow = I-unfollow
|
||||
block = Harangan
|
||||
|
@ -643,11 +643,11 @@ security = Seguridad
|
|||
avatar = Avatar
|
||||
ssh_gpg_keys = Mga SSH / GPG key
|
||||
applications = Mga Aplikasyon
|
||||
orgs = Pamahalaan ng mga organisasyon
|
||||
orgs = Ipamahala ang mga organisasyon
|
||||
repos = Mga Repositoryo
|
||||
delete = Burahin ang Account
|
||||
twofa = Authentikasyong two-factor (TOTP)
|
||||
account_link = Mga Naka-link na Account
|
||||
account_link = Mga naka-link na account
|
||||
uid = UID
|
||||
webauthn = Authentikasyong two-factor (Mga security key)
|
||||
blocked_users = Mga na-block na user
|
||||
|
@ -694,7 +694,7 @@ update_avatar = I-update ang avatar
|
|||
delete_current_avatar = Burahin ang kasalukuyang avatar
|
||||
uploaded_avatar_not_a_image = Ang na-upload na file ay hindi isang larawan.
|
||||
comment_type_group_assignee = Mangangasiwa
|
||||
social = Mga Social Account
|
||||
social = Mga social account
|
||||
biography_placeholder = Sabihin sa amin ng kaunti tungkol sa iyong sarili! (Maaari mong gamitin ang Markdown)
|
||||
change_username_prompt = Tandaan: Ang pagpalit ng username ay papalitan din ang URL ng iyong account.
|
||||
organization = Mga Organisasyon
|
||||
|
@ -738,18 +738,18 @@ change_password_success = Na-update na ang iyong password. Mag-sign in gamit ng
|
|||
password_change_disabled = Hindi mababago ng mga di-lokal na gumagamit ang kanilang password sa pamamagitan ng Forgejo web interface.
|
||||
emails = Mga email address
|
||||
manage_emails = Ipamahala ang mga email address
|
||||
manage_themes = Piliin ang default na tema
|
||||
manage_openid = Ipamahala ang mga OpenID address
|
||||
manage_themes = Default na tema
|
||||
manage_openid = Mga OpenID address
|
||||
email_desc = Ang iyong pangunahing email address ay gagamitin para sa mga notification, pag-recover ng password at, kung hindi tinago, mga Git operation na batay sa web.
|
||||
theme_desc = Ito ang iyong magiging default na tema sa buong site.
|
||||
primary = Panguna
|
||||
activated = Naka-activate
|
||||
requires_activation = Nangangailangan ng activation
|
||||
primary_email = Gawing Pangunahin
|
||||
activate_email = Ipadala ang Activation
|
||||
activations_pending = Nakabinbin ang mga Activation
|
||||
primary_email = Gawing pangunahin
|
||||
activate_email = Ipadala ang activation
|
||||
activations_pending = Nakabinbin ang mga activation
|
||||
delete_email = Tanggalin
|
||||
email_deletion = Tanggalin ang Email Address
|
||||
email_deletion = Tanggalin ang email address
|
||||
email_deletion_success = Tinanggal na ang email address.
|
||||
theme_update_success = Binago na ang iyong tema.
|
||||
theme_update_error = Hindi umiiral ang piniling tema.
|
||||
|
@ -775,7 +775,7 @@ gpg_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide <a href="%s"
|
|||
add_new_key = Magdagdag ng SSH key
|
||||
add_new_gpg_key = Magdagdag ng GPG key
|
||||
key_content_gpg_placeholder = Nagsisimula sa "-----BEGIN PGP PUBLIC KEY BLOCK-----"
|
||||
add_new_principal = Magdagdag ng Principal
|
||||
add_new_principal = Magdagdag ng principal
|
||||
ssh_key_been_used = Dinagdag na ang SSH key na ito sa server.
|
||||
ssh_key_name_used = Ang isang SSH key na may katulad na pangalan ay umiiral na sa iyong account.
|
||||
ssh_principal_been_used = Dinagdag na ang principal na ito sa server.
|
||||
|
@ -830,7 +830,7 @@ manage_social = Ipamahala ang mga Nauugnay na Social Account
|
|||
social_desc = Ang mga social account na ito ay magagamit para mag-sign in sa iyong account. Siguraduhing kilala mo silang lahat.
|
||||
unbind = I-unlink
|
||||
unbind_success = Matagumpay na tinanggal ang social account.
|
||||
manage_access_token = Ipamahala ang mga access token
|
||||
manage_access_token = Mga access token
|
||||
generate_new_token = Gumawa ng bagong token
|
||||
token_name = Pangalan ng token
|
||||
generate_token = I-generate ang token
|
||||
|
@ -913,10 +913,10 @@ webauthn_nickname = Palayaw
|
|||
webauthn_delete_key = Tanggalin ang security key
|
||||
webauthn_key_loss_warning = Kung mawala mo ang iyong mga security key, mawawalan ka ng access sa iyong account.
|
||||
webauthn_alternative_tip = Baka gusto mong mag-configure ng isa pang paraan ng authentikasyon.
|
||||
manage_account_links = Ipamahala ang mga Naka-link na Account
|
||||
manage_account_links = Mga naka-link na account
|
||||
account_links_not_available = Kasalukuyang walang mga naka-link na panlabas na account sa iyong Forgejo account.
|
||||
link_account = Mag-link ng Account
|
||||
remove_account_link = Tanggalin ang Naka-link na Account
|
||||
link_account = Mag-link ng account
|
||||
remove_account_link = Tanggalin ang naka-link na account
|
||||
visibility.limited = Limitado
|
||||
visibility.private = Pribado
|
||||
visibility.private_tooltip = Makikita lang ng mga miyembro ng mga organisasyon na sinali mo
|
||||
|
@ -937,12 +937,13 @@ remove_account_link_desc = Ang pagtanggal ng naka-link na account ay babawiin an
|
|||
visibility.public_tooltip = Makikita ng lahat
|
||||
hints = Mga Pahiwatig
|
||||
additional_repo_units_hint_description = Magpakita ng "Magdagdag pa ng mga unit..." na button para sa mga repositoryo na hindi naka-enable ang lahat ng mga available na unit.
|
||||
additional_repo_units_hint = Hikayatin ang pag-enable ng karagdagang mga unit ng repositoryo
|
||||
additional_repo_units_hint = Imungkahi na i-enable ng karagdagang mga unit ng repositoryo
|
||||
update_hints = I-update ang mga pahiwatig
|
||||
update_hints_success = Na-update na ang mga pahiwatig.
|
||||
pronouns_custom = Pasadya
|
||||
pronouns_unspecified = Hindi natakda
|
||||
pronouns = Mga panghalip
|
||||
language.title = Default na wika
|
||||
|
||||
[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.
|
||||
|
@ -1076,7 +1077,7 @@ migrate_items_pullrequests = Mga hiling sa pagtulak
|
|||
archive.pull.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga pull request.
|
||||
archive.title = Naka-archive ang repo na ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
||||
archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
||||
pulls = Mga hiling sa paghatak
|
||||
pulls = Mga hiling sa paghila
|
||||
activity.merged_prs_count_n = Mga naisamang hiling sa paghatak
|
||||
wiki.last_updated = Huling binago %s
|
||||
file.title = %s sa %s
|
||||
|
@ -1393,8 +1394,8 @@ 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.
|
||||
issues.new = Bagong isyu
|
||||
issues.commented_at = `iniwan ang komento <a href="#%s">%s</a>`
|
||||
editor.patch = Ilapat ang Patch
|
||||
editor.new_patch = Bagong Patch
|
||||
editor.patch = Ilapat ang patch
|
||||
editor.new_patch = Bagong patch
|
||||
editor.create_new_branch = Gumawa ng <strong>bagong branch</strong> para sa commit na ito at simulan ang hiling sa paghatak.
|
||||
editor.create_new_branch_np = Gumawa ng <strong>bagong branch</strong> para sa commit na ito.
|
||||
editor.invalid_commit_mail = Hindi wastong mail para sa paggawa ng commit.
|
||||
|
@ -1442,6 +1443,102 @@ editor.file_editing_no_longer_exists = Ang file na ine-edit, "%s", ay hindi na u
|
|||
editor.filename_is_a_directory = Ang pangalan ng file "%s" ay ginagamit na bilang pangalan ng direktoryo sa repositoryo na ito.
|
||||
editor.file_is_a_symlink = `Ang %s ay isang symbolink link. Hindi mae-edit ang mga symbolic link sa web editor`
|
||||
editor.directory_is_a_file = Ang pangalan ng direktoryo "%s" ay ginagamit na bilang pangalan ng file sa repositoryo na ito.
|
||||
pulls.merged_by =
|
||||
commitstatus.pending = Nakabinbin
|
||||
issues.review.pending = Nakabinbin
|
||||
pulls.status_checking = Nakabinbin ang ilang mga [pagsusuri]
|
||||
editor.file_changed_while_editing = Ang nilalaman ng file ay nagbago mula noong nagsimula kang mag-edit. <a target="_blank" rel="noopener noreferrer" href="%s">Mag-click dito</a> upang makita ang mga pagbabago o <strong>Mag-commit ng mga pagbabago muli</strong> para i-overwrite sila.
|
||||
editor.file_already_exists = Umiiral na ang file na may pangalang "%s" sa repositoryong ito.
|
||||
issues.review.review = Suriin
|
||||
activity.git_stats_push_to_branch = sa %s at
|
||||
activity.git_stats_and_deletions = at
|
||||
issues.new.no_projects = Walang mga proyekto
|
||||
pulls.auto_merge_button_when_succeed = (Kung nagtagumpay ang mga [check])
|
||||
activity.git_stats_on_default_branch = Sa %s,
|
||||
activity.period.quarterly = 3 buwan
|
||||
issues.review.left_comment = iniwan ang [comment]
|
||||
pulls.compare_base = isama sa
|
||||
activity.git_stats_additions = at mayroong
|
||||
issues.reopen_comment_issue = [Comment] at buksang muli
|
||||
issues.close_comment_issue = [Comment] at isara
|
||||
pulls.compare_compare = hilain mula sa
|
||||
pulls.waiting_count_n = %d mga hinihintay na pagsusuri
|
||||
pulls.waiting_count_1 = %d hinihintay na pagsusuri
|
||||
contributors.contribution_type.deletions = Mga pagbura
|
||||
pulls.ready_for_review = Handa ba para sa pagsuri?
|
||||
activity.period.daily = 1 araw
|
||||
activity.period.halfweekly = 3 araw
|
||||
activity.period.weekly = 1 linggo
|
||||
activity.period.monthly = 1 buwan
|
||||
activity.period.semiyearly = 6 na buwan
|
||||
activity.period.yearly = 1 taon
|
||||
issues.new.title_empty = Hindi maaaring walang laman ang pamagat
|
||||
issues.new.projects = Mga proyeko
|
||||
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
|
||||
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].
|
||||
settings.transfer.modal.title = Ilipat ang [ownership]
|
||||
diff.view_file = Tingnan ang file
|
||||
diff.parent =magulang
|
||||
diff.stats_desc = <strong>%d nabagong mga file</strong> na may <strong> %d mga pagdagdag</strong> at <strong> %d mga pagtanggal</strong>
|
||||
commits.commits = Mga commit
|
||||
commits.ssh_key_fingerprint = Fingerprint ng SSH key
|
||||
commits.signed_by_untrusted_user_unmatched = Nilagdaan ng hindi pinagkakatiwalaan na user na hindi tumutugma sa taga-commit
|
||||
commits.view_path = Tignan sa puntong ito sa kasaysayan
|
||||
commit.operations = Mga operasyon
|
||||
commit.revert-content = Piliin ang branch na ibabalik sa:
|
||||
commit.cherry-pick = I-cherry-pick
|
||||
commit.cherry-pick-header = I-cherry-pick: %s
|
||||
commit.cherry-pick-content = Piliin ang branch na iche-cherry-pick sa:
|
||||
editor.fail_to_update_file = Nabigong baguhin/gawin ang file na "%s".
|
||||
commitstatus.error = Error
|
||||
projects.deletion_desc = Ang pagbura ng proyekto ay tatanggalin ito sa lahat ng mga kaugnay na isyu. Magpatuloy?
|
||||
projects.template.desc = Template
|
||||
projects.template.desc_helper = Pumili ng template ng proyekto para magsimula
|
||||
editor.cannot_commit_to_protected_branch = Hindi makaka-commit sa naka-protekta na branch na "%s".
|
||||
editor.add_subdir = Magdagdag ng direktoryo…
|
||||
editor.unable_to_upload_files = Nabigong i-upload ang mga file sa "%s" na may error: %v
|
||||
editor.upload_file_is_locked = Ang file na "%s" ay na lock ng %s.
|
||||
editor.push_rejected = Tinanggihan ng server ang pagbabago. Pakisuri ang mga Git hook.
|
||||
editor.commit_id_not_matching = Nabago ang file habang ine-edit mo. I-commit sa bagong branch at i-merge.
|
||||
editor.push_out_of_date = Mukhang luma ang push.
|
||||
editor.push_rejected_no_message = Hindi tinanggap ng server ang pagbabago nang walang mensahe. Pakisuri ang mga Git hook.
|
||||
projects.column.new_submit = Gumawa ng column
|
||||
projects.column.new = Bagong column
|
||||
projects.column.delete = Burahin ang column
|
||||
projects.column.deletion_desc = Ang pagbura ng column ng proyekto ay ililipat ang lahat ng mga kaugnay na isyu sa default na column. Magpatuloy?
|
||||
projects.column.set_default = Itakda bilang default
|
||||
projects.column.set_default_desc = Itakda ang column na ito bilang default para sa mga hindi nakategorya na isyu at mga pull
|
||||
editor.commit_empty_file_header = Mag-commit ng walang lamang file
|
||||
editor.commit_empty_file_text = Walang laman ang file na iko-commit mo. Magpatuloy?
|
||||
editor.upload_files_to_dir = I-upload ang mga file sa "%s"
|
||||
commits.no_commits = Walang mga karaniwang commit. Ang "%s" at "%s" ay may ganap na magkakaibang kasaysayan.
|
||||
editor.fail_to_update_file_summary = Mensahe ng error:
|
||||
editor.no_commit_to_branch = Hindi direktang maka-commit sa branch dahil:
|
||||
editor.user_no_push_to_branch = Hindi makaka-push ang user sa branch
|
||||
editor.require_signed_commit = Nangangailangan ng branch ng naka-sign na commit
|
||||
editor.cherry_pick = I-cherry-pick ang %s sa:
|
||||
commits.search_branch = Itong branch
|
||||
commits.browse_further = Higit pang mag-browse
|
||||
commits.renamed_from = Na-rename mula sa %s
|
||||
ext_issues = Access sa mga external na isyu
|
||||
ext_issues.desc = Mag-link sa external na issue tracker.
|
||||
projects.new_subheader = I-coordinate, subaybayan, at i-update ang iyong trabaho sa isang lugar, para manatiling transparent at nasa iskedyul ang mga proyekto.
|
||||
projects.edit_subheader = Inaayos ng mga proyekto ang mga isyu at sinusubaybayan ang pag-unlad.
|
||||
projects.edit_success = Na-update na ang proyekto na "%s".
|
||||
projects.type.basic_kanban = Basic na kanban
|
||||
projects.type.bug_triage = Pag-uuri ng bug
|
||||
projects.column.edit = I-edit ang column
|
||||
projects.column.edit_title = Pangalan
|
||||
projects.column.new_title = Pangalan
|
||||
projects.card_type.desc = Mga preview ng card
|
||||
commits.desc = I-browse ang history ng pagbabago ng source code.
|
||||
commits.search.tooltip = Maari kang mag-prefix ng mga keyword gamit ang "author:", "committer:", "after:", o "before:", hal. "revert author:Nijika before:2022-10-09".
|
||||
|
||||
[search]
|
||||
commit_kind = Maghanap ng mga commit...
|
||||
|
|
|
@ -146,15 +146,15 @@ confirm_delete_artifact = Êtes-vous certain de vouloir supprimer l'artefect "%s
|
|||
filter.clear = Effacer le filtre
|
||||
filter.is_archived = Archivé
|
||||
filter.not_archived = Non archivé
|
||||
filter.is_fork = Dupliqué
|
||||
filter.not_fork = Non dupliqué
|
||||
filter.not_mirror = Non répliqué
|
||||
filter.is_template = Modèle
|
||||
filter.not_template = Pas un modèle
|
||||
filter.is_fork = Bifurcations
|
||||
filter.not_fork = Non bifurqué
|
||||
filter.not_mirror = Non miroirs
|
||||
filter.is_template = Modèles
|
||||
filter.not_template = Non modèles
|
||||
filter.public = Publique
|
||||
filter.private = Privé
|
||||
filter = Filtre
|
||||
filter.is_mirror = Répliqué
|
||||
filter.is_mirror = Miroirs
|
||||
toggle_menu = Menu va-et-vient
|
||||
more_items = Plus d'éléments
|
||||
invalid_data = Données invalides : %v
|
||||
|
@ -479,7 +479,7 @@ activate_email.text=Veuillez cliquer sur le lien suivant pour vérifier votre ad
|
|||
register_notify=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.
|
||||
register_notify.text_2=Vous pouvez maintenant vous connecter avec le nom d'utilisateur : %s
|
||||
register_notify.text_3=Si ce compte a été créé pour vous par une autre personne, veuillez <a href="%s">définir votre mot de passe</a> d'abord.
|
||||
|
||||
reset_password=Récupérer votre compte
|
||||
|
@ -637,7 +637,7 @@ required_prefix = Le texte entré doit commencer par "%s"
|
|||
AccessToken = Jeton d'accès
|
||||
FullName = Nom complet
|
||||
Description = Description
|
||||
Pronouns = Qualités
|
||||
Pronouns = Pronoms
|
||||
Biography = Biographie
|
||||
Website = Site web
|
||||
Location = Emplacement
|
||||
|
@ -686,9 +686,9 @@ password=Mot de passe
|
|||
security=Sécurité
|
||||
avatar=Avatar
|
||||
ssh_gpg_keys=Clés SSH / GPG
|
||||
social=Réseaux Sociaux
|
||||
social=Réseaux sociaux
|
||||
applications=Applications
|
||||
orgs=Gérer les organisations
|
||||
orgs=Organisations
|
||||
repos=Dépôts
|
||||
delete=Supprimer le compte
|
||||
twofa=Authentification à deux facteurs
|
||||
|
@ -762,8 +762,8 @@ password_change_disabled=Les mots de passes des comptes utilisateurs externes ne
|
|||
|
||||
emails=Adresses courriels
|
||||
manage_emails=Gérer les adresses courriels
|
||||
manage_themes=Sélectionner le thème par défaut
|
||||
manage_openid=Gérer les adresses OpenID
|
||||
manage_themes=Thème par défaut
|
||||
manage_openid=Adresses OpenID
|
||||
email_desc=Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et, à condition qu'elle ne soit pas cachée, les opérations Git basées sur le Web.
|
||||
theme_desc=Ce sera votre thème par défaut sur le site.
|
||||
primary=Principale
|
||||
|
@ -874,7 +874,7 @@ social_desc=Ces comptes sociaux peuvent être utilisés pour vous connecter à v
|
|||
unbind=Dissocier
|
||||
unbind_success=Le compte social a été supprimé avec succès.
|
||||
|
||||
manage_access_token=Gérer les jetons d'accès
|
||||
manage_access_token=Jetons d'accès
|
||||
generate_new_token=Générer un nouveau jeton
|
||||
tokens_desc=Ces jetons permettent l'accès à votre compte à travers l'API Forgejo.
|
||||
token_name=Nom du jeton
|
||||
|
@ -956,10 +956,10 @@ webauthn_delete_key_desc=Si vous retirez une clé de sécurité, vous ne pourrez
|
|||
webauthn_key_loss_warning=Si vous perdez vos clés de sécurité, vous perdrez l’accès à votre compte.
|
||||
webauthn_alternative_tip=Vous devriez configurer une méthode d’authentification supplémentaire.
|
||||
|
||||
manage_account_links=Gérer les comptes liés
|
||||
manage_account_links=Comptes liés
|
||||
manage_account_links_desc=Ces comptes externes sont liés à votre compte Forgejo.
|
||||
account_links_not_available=Il n'y a pour l'instant pas de compte externe connecté à votre compte Forgejo.
|
||||
link_account=Lier un Compte
|
||||
link_account=Lier un compte
|
||||
remove_account_link=Supprimer un compte lié
|
||||
remove_account_link_desc=La suppression d'un compte lié révoquera son accès à votre compte Forgejo. Continuer ?
|
||||
remove_account_link_success=Le compte lié a été supprimé.
|
||||
|
@ -997,12 +997,13 @@ user_block_success = Cet utilisateur a été bloqué avec succès.
|
|||
change_password = Modifier le mot de passe
|
||||
hints = Suggestions
|
||||
additional_repo_units_hint_description = Afficher un bouton "Ajouter plus d'unités..." pour les dépôts qui n'ont pas toutes les unités disponibles activées.
|
||||
additional_repo_units_hint = Encourager l'ajout de nouvelles unités pour le dépôt
|
||||
additional_repo_units_hint = Suggérer l'ajout de nouvelles unités pour le dépôt
|
||||
update_hints = Mettre à jour les suggestions
|
||||
update_hints_success = Les suggestions ont été mises à jour.
|
||||
pronouns_custom = Sur mesure
|
||||
pronouns = Qualités
|
||||
pronouns_custom = Personnalisés
|
||||
pronouns = Pronoms
|
||||
pronouns_unspecified = Non spécifié
|
||||
language.title = Langue par défaut
|
||||
|
||||
[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 ? <a href="%s">Migrez-le ici.</a>
|
||||
|
@ -1012,7 +1013,7 @@ repo_name=Nom du dépôt
|
|||
repo_name_helper=Idéalement, le nom d'un dépôt devrait être court, mémorisable et unique.
|
||||
repo_size=Taille du dépôt
|
||||
template=Modèle
|
||||
template_select=Sélectionner un modèle
|
||||
template_select=Sélectionner un modèle.
|
||||
template_helper=Faire de ce dépôt un modèle
|
||||
template_description=Les référentiels de modèles permettent aux utilisateurs de générer de nouveaux référentiels avec la même structure de répertoire, fichiers et paramètres optionnels.
|
||||
visibility=Visibilité
|
||||
|
@ -1087,20 +1088,20 @@ language_other=Autre
|
|||
adopt_search=Entrez un nom d’utilisateur pour rechercher les dépôts dépossédés… (laissez vide pour tous trouver)
|
||||
adopt_preexisting_label=Adopter les fichiers
|
||||
adopt_preexisting=Adopter les fichiers préexistants
|
||||
adopt_preexisting_content=Créer un dépôt à partir de %s.
|
||||
adopt_preexisting_content=Créer un dépôt à partir de %s
|
||||
adopt_preexisting_success=Fichiers adoptés et dépôt créé depuis %s
|
||||
delete_preexisting_label=Supprimer
|
||||
delete_preexisting=Supprimer les fichiers préexistants
|
||||
delete_preexisting_content=Supprimer les fichiers dans %s
|
||||
delete_preexisting_success=Fichiers dépossédés supprimés dans %s.
|
||||
delete_preexisting_success=Fichiers dépossédés supprimés dans %s
|
||||
blame_prior=Voir le blame avant cette modification
|
||||
blame.ignore_revs=Les révisions dans <a href="%s">.git-blame-ignore-revs</a> sont ignorées. Vous pouvez quand même <a href="%s">voir ces blâmes</a>.
|
||||
blame.ignore_revs.failed=Impossible d'ignorer les révisions dans <a href="%s">.git-blame-ignore-revs</a>.
|
||||
author_search_tooltip=Affiche un maximum de 30 utilisateurs
|
||||
|
||||
tree_path_not_found_commit=Le chemin %[1]s n’existe pas dans la révision %[2]s.
|
||||
tree_path_not_found_branch=Le chemin %[1]s n’existe pas dans la branche %[2]s.
|
||||
tree_path_not_found_tag=Le chemin %[1]s n’existe pas dans l’étiquette %[2]s.
|
||||
tree_path_not_found_commit=Le chemin %[1]s n’existe pas dans la révision %[2]s
|
||||
tree_path_not_found_branch=Le chemin %[1]s n’existe pas dans la branche %[2]s
|
||||
tree_path_not_found_tag=Le chemin %[1]s n’existe pas dans l’étiquette %[2]s
|
||||
|
||||
transfer.accept=Accepter le transfert
|
||||
transfer.accept_desc=`Transférer à "%s"`
|
||||
|
@ -1163,7 +1164,7 @@ migrate.permission_denied=Vous n'êtes pas autorisé à importer des dépôts lo
|
|||
migrate.permission_denied_blocked=Vous ne pouvez pas importer depuis des hôtes interdits, veuillez demander à l'administrateur de vérifier les paramètres ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
|
||||
migrate.invalid_local_path=Le chemin local n’est pas valide, n’existe pas ou n’est pas un dossier.
|
||||
migrate.invalid_lfs_endpoint=Le point d'accès LFS n'est pas valide.
|
||||
migrate.failed=Echec de migration: %v
|
||||
migrate.failed=Échec de migration : %v
|
||||
migrate.migrate_items_options=Un jeton d'accès est requis pour migrer des éléments supplémentaires
|
||||
migrated_from=Migré de <a href="%[1]s">%[2]s</a>
|
||||
migrated_from_fake=Migré de %[1]s
|
||||
|
@ -1184,7 +1185,7 @@ migrate.migrating_git=Migration des données Git
|
|||
migrate.migrating_topics=Migration des sujets
|
||||
migrate.migrating_milestones=Migration des jalons
|
||||
migrate.migrating_labels=Migration des labels
|
||||
migrate.migrating_releases=Migration des publications.
|
||||
migrate.migrating_releases=Migration des publications
|
||||
migrate.migrating_issues=Migration des tickets
|
||||
migrate.migrating_pulls=Migration des demandes d'ajout
|
||||
migrate.cancel_migrating_title=Annuler la migration
|
||||
|
@ -1229,7 +1230,7 @@ project_board=Projets
|
|||
packages=Paquets
|
||||
actions=Actions
|
||||
labels=Labels
|
||||
org_labels_desc=Les labels d'une organisation peuvent être utilisés avec <strong>tous les dépôts</strong> de cette organisation.
|
||||
org_labels_desc=Les labels d'une organisation peuvent être utilisés avec <strong>tous les dépôts</strong> de cette organisation
|
||||
org_labels_desc_manage=gérer
|
||||
|
||||
milestones=Jalons
|
||||
|
@ -1307,7 +1308,7 @@ editor.add=Ajouter %s
|
|||
editor.update=Actualiser %s
|
||||
editor.delete=Supprimer %s
|
||||
editor.patch=Appliquer le correctif
|
||||
editor.patching=Correction:
|
||||
editor.patching=Correction :
|
||||
editor.fail_to_apply_patch=`Impossible d'appliquer le correctif "%s"`
|
||||
editor.new_patch=Nouveau correctif
|
||||
editor.commit_message_desc=Ajouter une description détaillée facultative…
|
||||
|
@ -1346,15 +1347,15 @@ editor.cannot_commit_to_protected_branch=Impossible de créer une révision sur
|
|||
editor.no_commit_to_branch=Impossible d'enregistrer la révision directement sur la branche parce que :
|
||||
editor.user_no_push_to_branch=L'utilisateur ne peut pas pousser vers la branche
|
||||
editor.require_signed_commit=Cette branche nécessite une révision signée
|
||||
editor.cherry_pick=Picorer %s vers:
|
||||
editor.revert=Rétablir %s sur:
|
||||
editor.cherry_pick=Picorer %s vers :
|
||||
editor.revert=Rétablir %s sur :
|
||||
|
||||
commits.desc=Naviguer dans l'historique des modifications.
|
||||
commits.commits=Révisions
|
||||
commits.no_commits=Pas de révisions en commun. "%s" et "%s" ont des historiques entièrement différents.
|
||||
commits.nothing_to_compare=Ces branches sont égales.
|
||||
commits.search=Rechercher des révisions…
|
||||
commits.search.tooltip=Vous pouvez utiliser les mots-clés "author:", "committer:", "after:", ou "before:" pour filtrer votre recherche, ex.: "revert author:Alice before:2019-01-13".
|
||||
commits.search.tooltip=Vous pouvez utiliser les mots-clés "author :", "committer :", "after :", ou "before :" pour filtrer votre recherche, ex. : "revert author :Alice before :2019-01-13".
|
||||
commits.find=Chercher
|
||||
commits.search_all=Toutes les branches
|
||||
commits.author=Auteur
|
||||
|
@ -1395,7 +1396,7 @@ projects.new=Nouveau projet
|
|||
projects.new_subheader=Coordonnez, surveillez, et mettez à jour votre travail en un seul endroit, afin que les projets restent transparents et dans les délais.
|
||||
projects.create_success=Le projet "%s" a été créé.
|
||||
projects.deletion=Supprimer le projet
|
||||
projects.deletion_desc=Supprimer un projet efface également de tous les tickets liés. Voulez vous continuer?
|
||||
projects.deletion_desc=Supprimer un projet efface également de tous les tickets liés. Voulez vous continuer ?
|
||||
projects.deletion_success=Le projet a été supprimé.
|
||||
projects.edit=Modifier les projets
|
||||
projects.edit_subheader=Les projets organisent les tickets et la progression.
|
||||
|
@ -1413,7 +1414,7 @@ projects.column.new_title=Nom
|
|||
projects.column.new_submit=Créer une colonne
|
||||
projects.column.new=Nouvelle colonne
|
||||
projects.column.set_default=Définir par défaut
|
||||
projects.column.set_default_desc=Les tickets et demandes d’ajout non-catégorisés seront placés dans cette colonne.
|
||||
projects.column.set_default_desc=Les tickets et demandes d’ajout non-catégorisés seront placés dans cette colonne
|
||||
projects.column.unset_default=Défaire par défaut
|
||||
projects.column.unset_default_desc=Les tickets et demandes d'ajouts non-catégorisés seront placés dans une colonne idoine.
|
||||
projects.column.delete=Supprimer la colonne
|
||||
|
@ -1470,15 +1471,15 @@ issues.label_templates.info=Il n'existe pas encore de label. Créez-en un avec
|
|||
issues.label_templates.helper=Sélectionnez un jeu de label
|
||||
issues.label_templates.use=Utiliser le jeu de labels
|
||||
issues.label_templates.fail_to_load_file=Impossible de charger le fichier de modèle de label « %s » : %v
|
||||
issues.add_label=a ajouté le label %s %s.
|
||||
issues.add_labels=a ajouté les labels %s %s.
|
||||
issues.remove_label=a retiré le label %s %s.
|
||||
issues.remove_labels=a supprimé les labels %s %s.
|
||||
issues.add_remove_labels=a ajouté le label %s et supprimé %s %s.
|
||||
issues.add_label=a ajouté le label %s %s
|
||||
issues.add_labels=a ajouté les labels %s %s
|
||||
issues.remove_label=a retiré le label %s %s
|
||||
issues.remove_labels=a supprimé les labels %s %s
|
||||
issues.add_remove_labels=a ajouté le label %s et supprimé %s %s
|
||||
issues.add_milestone_at=`a ajouté ça au jalon <b>%s</b> %s.`
|
||||
issues.add_project_at=`a ajouté ça au projet <b>%s</b> %s.`
|
||||
issues.change_milestone_at=`a remplacé le jalon <b><strike>%s</strike></b> par <b>%s</b> %s.`
|
||||
issues.change_project_at=`a remplacé le projet <b><strike>%s</strike></b> par <b>%s</b> %s.`
|
||||
issues.change_milestone_at=`a remplacé le jalon <b>%s</b> par <b>%s</b> %s`
|
||||
issues.change_project_at=`a remplacé le projet <b>%s</b> par <b>%s</b> %s`
|
||||
issues.remove_milestone_at=`a supprimé ça du jalon <b>%s</b> %s.`
|
||||
issues.remove_project_at=`a supprimé ça du projet <b>%s</b> %s.`
|
||||
issues.deleted_milestone=`(supprimé)`
|
||||
|
@ -1540,8 +1541,8 @@ issues.action_assignee_no_select=Pas d'assignataire
|
|||
issues.action_check=Cocher/Décocher
|
||||
issues.action_check_all=Cocher/Décocher tous les éléments
|
||||
issues.opened_by=créé %[1]s par <a href="%[2]s">%[3]s</a>
|
||||
pulls.merged_by=par <a href="%[2]s">%[3]s</a> fusionné %[1]s.
|
||||
pulls.merged_by_fake=par %[2]s fusionné %[1]s.
|
||||
pulls.merged_by=par <a href="%[2]s">%[3]s</a> fusionné %[1]s
|
||||
pulls.merged_by_fake=par %[2]s fusionné %[1]s
|
||||
issues.closed_by=de <a href="%[2]s">%[3]s</a>, clôt %[1]s
|
||||
issues.opened_by_fake=%[1]s ouvert par %[2]s
|
||||
issues.closed_by_fake=de %[2]s, clôt %[1]s
|
||||
|
@ -1553,7 +1554,7 @@ issues.draft_title=Brouillon
|
|||
issues.num_comments_1=%d commentaire
|
||||
issues.num_comments=%d commentaires
|
||||
issues.commented_at=`a commenté <a href="#%s"> %s</a>.`
|
||||
issues.delete_comment_confirm=Êtes-vous certain de vouloir supprimer ce commentaire?
|
||||
issues.delete_comment_confirm=Êtes-vous certain de vouloir supprimer ce commentaire ?
|
||||
issues.context.copy_link=Copier le lien
|
||||
issues.context.quote_reply=Citer et répondre
|
||||
issues.context.reference_issue=Référencer dans un nouveau ticket
|
||||
|
@ -1590,7 +1591,7 @@ issues.role.first_time_contributor_helper=C'est la première contribution de cet
|
|||
issues.role.contributor=Contributeur
|
||||
issues.role.contributor_helper=Cet utilisateur a déjà des révisions dans le dépôt.
|
||||
issues.re_request_review=Redemander une évaluation
|
||||
issues.is_stale=Cette demande d’ajout a été corrigée depuis sa dernière évaluation.
|
||||
issues.is_stale=Cette demande d’ajout a été corrigée depuis sa dernière évaluation
|
||||
issues.remove_request_review=Retirer la demande d’évaluation
|
||||
issues.remove_request_review_block=Impossible de retirer la demande d’évaluation
|
||||
issues.dismiss_review=Révoquer l’évaluation
|
||||
|
@ -1655,7 +1656,7 @@ issues.tracker=Minuteur
|
|||
issues.start_tracking_short=Démarrer le chronomètre
|
||||
issues.start_tracking=Démarrer le suivi du temps
|
||||
issues.start_tracking_history=`a commencé son travail %s.`
|
||||
issues.tracker_auto_close=Le minuteur sera automatiquement arrêté quand le ticket sera fermé.
|
||||
issues.tracker_auto_close=Le minuteur sera automatiquement arrêté quand le ticket sera fermé
|
||||
issues.tracking_already_started=`Vous avez déjà un minuteur en cours sur <a href="%s">un autre ticket</a> !`
|
||||
issues.stop_tracking=Arrêter le chronomètre
|
||||
issues.stop_tracking_history=`a fini de travailler %s.`
|
||||
|
@ -1724,23 +1725,23 @@ issues.dependency.add_error_cannot_create_circular=Vous ne pouvez pas créer une
|
|||
issues.dependency.add_error_dep_not_same_repo=Les deux tickets doivent être dans le même dépôt.
|
||||
issues.review.self.approval=Vous ne pouvez approuver vos propres demandes d'ajout.
|
||||
issues.review.self.rejection=Vous ne pouvez demander de changements sur vos propres demandes de changement.
|
||||
issues.review.approve=a approuvé ces modifications %s.
|
||||
issues.review.comment=a évalué cette demande d’ajout %s.
|
||||
issues.review.approve=a approuvé ces modifications %s
|
||||
issues.review.comment=a évalué cette demande d’ajout %s
|
||||
issues.review.dismissed=a révoqué l’évaluation de %s %s
|
||||
issues.review.dismissed_label=Révoquée
|
||||
issues.review.left_comment=laisser un commentaire
|
||||
issues.review.content.empty=Vous devez laisser un commentaire indiquant le(s) changement(s) demandé(s).
|
||||
issues.review.reject=a requis les changements %s
|
||||
issues.review.wait=a été sollicité pour évaluer cette demande d’ajout %s.
|
||||
issues.review.add_review_request=a demandé à %s une évaluation %s.
|
||||
issues.review.remove_review_request=a retiré la demande d’évaluation pour %s %s.
|
||||
issues.review.remove_review_request_self=a refusé d’évaluer cette demande d’ajout %s.
|
||||
issues.review.wait=a été sollicité pour évaluer cette demande d’ajout %s
|
||||
issues.review.add_review_request=a demandé à %s une évaluation %s
|
||||
issues.review.remove_review_request=a retiré la demande d’évaluation pour %s %s
|
||||
issues.review.remove_review_request_self=a refusé d’évaluer cette demande d’ajout %s
|
||||
issues.review.pending=En attente
|
||||
issues.review.pending.tooltip=Ce commentaire n'est pas encore visible par les autres utilisateurs. Pour soumettre vos commentaires en attente, sélectionnez "%s" → "%s/%s/%s" en haut de la page.
|
||||
issues.review.review=Évaluation
|
||||
issues.review.reviewers=Évaluateurs
|
||||
issues.review.outdated=Périmé
|
||||
issues.review.outdated_description=Le contenu a changé depuis que ce commentaire a été fait.
|
||||
issues.review.outdated_description=Le contenu a changé depuis que ce commentaire a été fait
|
||||
issues.review.option.show_outdated_comments=Afficher les commentaires obsolètes
|
||||
issues.review.option.hide_outdated_comments=Masquer les commentaires obsolètes
|
||||
issues.review.show_outdated=Afficher les révisions périmées
|
||||
|
@ -1749,7 +1750,7 @@ issues.review.show_resolved=Développer
|
|||
issues.review.hide_resolved=Réduire
|
||||
issues.review.resolve_conversation=Clore la conversation
|
||||
issues.review.un_resolve_conversation=Rouvrir la conversation
|
||||
issues.review.resolved_by=a marqué cette conversation comme résolue.
|
||||
issues.review.resolved_by=a marqué cette conversation comme résolue
|
||||
issues.assignee.error=Tous les assignés n'ont pas été ajoutés en raison d'une erreur inattendue.
|
||||
issues.reference_issue.body=Corps
|
||||
issues.content_history.deleted=a supprimé
|
||||
|
@ -1783,11 +1784,11 @@ pulls.switch_head_and_base=Passez de head à base
|
|||
pulls.filter_branch=Filtre de branche
|
||||
pulls.no_results=Aucun résultat trouvé.
|
||||
pulls.show_all_commits=Afficher toutes les révisions
|
||||
pulls.show_changes_since_your_last_review=Affiche les modifications depuis votre dernière évaluation.
|
||||
pulls.show_changes_since_your_last_review=Affiche les modifications depuis votre dernière évaluation
|
||||
pulls.showing_only_single_commit=Affiche uniquement les changements de la révision %[1]s
|
||||
pulls.showing_specified_commit_range=Affichage des changements filtré entre %[1]s..%[2]s
|
||||
pulls.select_commit_hold_shift_for_range=Maintenir Maj et cliquer sur des révisions pour faire un intervalle
|
||||
pulls.review_only_possible_for_full_diff=Une évaluation n'est possible que lorsque vous affichez le différentiel complet.
|
||||
pulls.review_only_possible_for_full_diff=Une évaluation n'est possible que lorsque vous affichez le différentiel complet
|
||||
pulls.filter_changes_by_commit=Filtrer par révision
|
||||
pulls.nothing_to_compare=Ces branches sont identiques. Il n’y a pas besoin de créer une demande d'ajout.
|
||||
pulls.nothing_to_compare_and_allow_empty_pr=Ces branches sont égales. Cette demande d'ajout sera vide.
|
||||
|
@ -1795,7 +1796,7 @@ pulls.has_pull_request='Il existe déjà une demande d'ajout entre ces deux bran
|
|||
pulls.create=Créer une demande d'ajout
|
||||
pulls.title_desc_few=souhaite fusionner %[1]d révision(s) depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
|
||||
pulls.merged_title_desc_few=a fusionné %[1]d révision(s) à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
|
||||
pulls.change_target_branch_at=`a remplacée la branche cible <b><strike>%s</strike></b> par <b>%s</b> %s.`
|
||||
pulls.change_target_branch_at=`a remplacée la branche cible <b>%s</b> par <b>%s</b> %s`
|
||||
pulls.tab_conversation=Discussion
|
||||
pulls.tab_commits=Révisions
|
||||
pulls.tab_files=Fichiers Modifiés
|
||||
|
@ -1858,8 +1859,8 @@ pulls.merge_conflict=Échec de la fusion : il y a eu un conflit lors de la fusio
|
|||
pulls.merge_conflict_summary=Message d'erreur
|
||||
pulls.rebase_conflict=Fusion échouée : il y a eu un conflit lors du rebasage de la révision %[1]s. Astuce : Essayez une stratégie différente
|
||||
pulls.rebase_conflict_summary=Message d'erreur
|
||||
pulls.unrelated_histories=Échec de la fusion: La tête de fusion et la base ne partagent pas d'historique commun. Indice : Essayez une stratégie différente
|
||||
pulls.merge_out_of_date=Échec de la fusion: La base a été mise à jour en cours de fusion. Indice : Réessayez.
|
||||
pulls.unrelated_histories=Échec de la fusion : La tête de fusion et la base ne partagent pas d'historique commun. Indice : Essayez une stratégie différente
|
||||
pulls.merge_out_of_date=Échec de la fusion : La base a été mise à jour en cours de fusion. Indice : Réessayez.
|
||||
pulls.head_out_of_date=Échec de la fusion : L’en-tête a été mis à jour pendant la fusion. Conseil : réessayez.
|
||||
pulls.has_merged=Échec : La demande d’ajout est déjà fusionnée, vous ne pouvez plus la fusionner, ni modifier sa branche cible.
|
||||
pulls.push_rejected=Échec du push : la soumission a été rejetée. Revoyez les Git hook pour ce dépôt.
|
||||
|
@ -1892,7 +1893,7 @@ pulls.clear_merge_message=Effacer le message de fusion
|
|||
pulls.clear_merge_message_hint=Effacer le message de fusion ne supprimera que le message de la révision, mais pas les pieds de révision générés tels que "Co-Authored-By:".
|
||||
|
||||
pulls.auto_merge_button_when_succeed=(Lorsque les vérifications ont réussi)
|
||||
pulls.auto_merge_when_succeed=Fusionner automatiquement si toutes les vérifications passent.
|
||||
pulls.auto_merge_when_succeed=Fusionner automatiquement si toutes les vérifications passent
|
||||
pulls.auto_merge_newly_scheduled=La demande d'ajout était programmée pour fusionner lorsque toutes les vérifications aurait réussi.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s Ont planifié cette demande d'ajout pour fusionner automatiquement lorsque toutes les vérifications réussissent %[2]s.
|
||||
|
||||
|
@ -1906,7 +1907,7 @@ pulls.auto_merge_canceled_schedule_comment=`a annulé la fusion automatique de c
|
|||
pulls.delete.title=Supprimer cette demande d'ajout ?
|
||||
pulls.delete.text=Voulez-vous vraiment supprimer cet demande d'ajout ? (Cela supprimera définitivement tout le contenu. Envisagez de le fermer à la place, si vous avez l'intention de le garder archivé)
|
||||
|
||||
pulls.recently_pushed_new_branches=Vous avez soumis sur la branche <strong>%[1]s</strong> %[2]s
|
||||
pulls.recently_pushed_new_branches=Vous avez soumis sur la branche <a href="%[3]s"><strong>%[1]s</strong></a> %[2]s
|
||||
|
||||
pull.deleted_branch=(supprimé) : %s
|
||||
|
||||
|
@ -1917,7 +1918,7 @@ milestones.no_due_date=Aucune date d'échéance
|
|||
milestones.open=Ouvrir
|
||||
milestones.close=Fermer
|
||||
milestones.new_subheader=Les jalons peuvent vous aider à organiser vos tickets et à suivre leurs progrès.
|
||||
milestones.completeness=%d%% complété
|
||||
milestones.completeness=<strong>%d%%</strong> Complété
|
||||
milestones.create=Créer un Jalon
|
||||
milestones.title=Titre
|
||||
milestones.desc=Description
|
||||
|
@ -1971,7 +1972,7 @@ wiki.default_commit_message=Écrire une note concernant cette mise à jour (opti
|
|||
wiki.save_page=Enregistrer la page
|
||||
wiki.last_commit_info=%s a édité cette page %s
|
||||
wiki.edit_page_button=Modifier
|
||||
wiki.new_page_button=Nouvelle Page
|
||||
wiki.new_page_button=Nouvelle page
|
||||
wiki.file_revision=Révisions de la page
|
||||
wiki.wiki_page_revisions=Révisions de la page wiki
|
||||
wiki.back_to_wiki=Retour à la page wiki
|
||||
|
@ -1980,7 +1981,7 @@ wiki.delete_page_notice_1=Supprimer la page de wiki "%s" est irréversible. Cont
|
|||
wiki.page_already_exists=Une page de wiki avec le même nom existe déjà.
|
||||
wiki.reserved_page=Le nom de page de wiki "%s" est réservé.
|
||||
wiki.pages=Pages
|
||||
wiki.last_updated=Dernière mise à jour: %s
|
||||
wiki.last_updated=Dernière mise à jour : %s
|
||||
wiki.page_name_desc=Entrez un nom pour cette page Wiki. Certains noms spéciaux sont « Home », « _Sidebar » et « _Footer ».
|
||||
wiki.original_git_entry_tooltip=Voir le fichier Git original au lieu d'utiliser un lien convivial.
|
||||
|
||||
|
@ -2144,12 +2145,12 @@ settings.pulls.default_allow_edits_from_maintainers=Autoriser les modifications
|
|||
settings.releases_desc=Activer les publications du dépôt
|
||||
settings.packages_desc=Activer le registre des paquets du dépôt
|
||||
settings.projects_desc=Activer les projets de dépôt
|
||||
settings.actions_desc=Activer les actions du dépôt
|
||||
settings.actions_desc=Activer l'intégration continue avec Forgejo Actions
|
||||
settings.admin_settings=Paramètres administrateur
|
||||
settings.admin_enable_health_check=Activer les vérifications de santé du dépôt (git fsck)
|
||||
settings.admin_code_indexer=Indexeur de code
|
||||
settings.admin_stats_indexer=Indexeur des statistiques de code
|
||||
settings.admin_indexer_commit_sha=Dernier SHA indexé
|
||||
settings.admin_indexer_commit_sha=Dernier commit indexé
|
||||
settings.admin_indexer_unindexed=Non indexé
|
||||
settings.reindex_button=Ajouter à queue de réindexation
|
||||
settings.reindex_requested=Réindexation demandée
|
||||
|
@ -2166,7 +2167,7 @@ settings.convert_fork_desc=Vous pouvez convertir cette bifurcation en dépôt st
|
|||
settings.convert_fork_notices_1=Cette opération convertira la bifurcation en dépôt standard. Cette action est irréversible.
|
||||
settings.convert_fork_confirm=Convertir le dépôt
|
||||
settings.convert_fork_succeed=La bifurcation a été convertie en dépôt standard.
|
||||
settings.transfer=Changer de propriétaire
|
||||
settings.transfer.title=Changer de propriétaire
|
||||
settings.transfer.rejected=Le transfert du dépôt a été rejeté.
|
||||
settings.transfer.success=Le transfert du dépôt a réussi.
|
||||
settings.transfer_abort=Annuler le transfert
|
||||
|
@ -2408,12 +2409,12 @@ settings.ignore_stale_approvals_desc=Ignorer les approbations d’anciennes rév
|
|||
settings.require_signed_commits=Exiger des révisions (commits) signées
|
||||
settings.require_signed_commits_desc=Rejeter les soumissions sur cette branche lorsqu'ils ne sont pas signés ou vérifiables.
|
||||
settings.protect_branch_name_pattern=Motif de nom de branche protégé
|
||||
settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la <a href="github.com/gobwas/glob">documentation</a> pour la syntaxe du motif. Exemples : <code>main</code>, <code>release/**</code>
|
||||
settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la <a href="https://github.com/gobwas/glob">documentation</a> pour la syntaxe du motif. Exemples : main, release/**
|
||||
settings.protect_patterns=Motifs
|
||||
settings.protect_protected_file_patterns=Liste des fichiers et motifs protégés (séparés par un point virgule ";") :
|
||||
settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule (;). Voir la documentation de <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples: <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>. ; », qui ne pourront pas être modifiés même si les utilisateurs disposent des droits sur la branche. Voir la <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>syntaxe glob</a>. Exemples : <code>.drone.yml ; /docs/**/*.txt</code>.
|
||||
settings.protect_protected_file_patterns_desc=Les fichiers protégés ne peuvent être modifiés, même si l'utilisateur a le droit d'ajouter, éditer ou supprimer des fichiers dans cette branche. Plusieurs motifs peuvent être séparés par un point-virgule ( ;). Voir la documentation de <a href='https ://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples : <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Liste des fichiers et motifs exclus (séparés par un point virgule ";") :
|
||||
settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule (;). Voir la documentation de <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples: <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>. ; », qui pourront être modifiés malgré la protection de branche, par les utilisateurs autorisés. Voir la <a href='https://pkg.go.dev/github.com/gobwas/glob#Compile'>syntaxe Glob</a>. Exemples : <code>.drone.yml ; /docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns_desc=Les fichiers non-protégés qui peuvent être modifiés si l'utilisateur a le droit d'écriture, prenant le pas sur les restrictions de push. Plusieurs motifs peuvent être séparés par un point-virgule ( ;). Voir la documentation de <a href='https ://pkg.go.dev/github.com/gobwas/glob#Compile'>github.com/gobwas/glob</a> pour la syntaxe des motifs. Exemples : <code>.forgejo/workflows/test.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Activer la protection
|
||||
settings.delete_protected_branch=Désactiver la protection
|
||||
settings.update_protect_branch_success=La règle de protection de branche "%s" a été mise à jour.
|
||||
|
@ -2454,7 +2455,7 @@ settings.matrix.room_id=ID de la salle
|
|||
settings.matrix.message_type=Type de message
|
||||
settings.archive.button=Archiver ce dépôt
|
||||
settings.archive.header=Archiver ce dépôt
|
||||
settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous!).
|
||||
settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous !).
|
||||
settings.archive.success=Ce dépôt a été archivé avec succès.
|
||||
settings.archive.error=Une erreur s'est produite lors de l'archivage du dépôt. Voir le journal pour plus de détails.
|
||||
settings.archive.error_ismirror=Vous ne pouvez pas archiver un dépôt en miroir.
|
||||
|
@ -2516,7 +2517,7 @@ diff.whitespace_ignore_all_whitespace=Ignorer les espaces lors de la comparaison
|
|||
diff.whitespace_ignore_amount_changes=Ignorer les changements quand ce sont des espaces
|
||||
diff.whitespace_ignore_at_eol=Ignorer les blancs en fin de ligne
|
||||
diff.stats_desc=<strong> %d fichiers modifiés</strong> avec <strong>%d ajouts</strong> et <strong>%d suppressions</strong>
|
||||
diff.stats_desc_file=%d modifications: %d ajouts et %d suppressions
|
||||
diff.stats_desc_file=%d modifications : %d ajouts et %d suppressions
|
||||
diff.bin=BIN
|
||||
diff.bin_not_shown=Fichier binaire non affiché.
|
||||
diff.view_file=Voir le fichier
|
||||
|
@ -2525,7 +2526,7 @@ diff.file_after=Après
|
|||
diff.file_image_width=Largeur
|
||||
diff.file_image_height=Hauteur
|
||||
diff.file_byte_size=Taille
|
||||
diff.file_suppressed=Fichier diff supprimé car celui-ci est trop grand
|
||||
diff.file_suppressed=Diff de fichier supprimé car celui-ci est trop grand
|
||||
diff.file_suppressed_line_too_long=Diff de fichier supprimé car une ou plusieurs lignes sont trop longues
|
||||
diff.too_many_files=Certains fichiers ne sont pas affichés car ce diff contient trop de modifications
|
||||
diff.show_more=Voir plus
|
||||
|
@ -2539,7 +2540,7 @@ diff.comment.add_single_comment=Commenter (simple)
|
|||
diff.comment.add_review_comment=Commenter
|
||||
diff.comment.start_review=Débuter une évaluation
|
||||
diff.comment.reply=Répondre
|
||||
diff.review=Évaluation
|
||||
diff.review=Terminer l'évaluation
|
||||
diff.review.header=Évaluer
|
||||
diff.review.placeholder=Commenter cette évaluation
|
||||
diff.review.comment=Commenter
|
||||
|
@ -2584,7 +2585,7 @@ release.prerelease_desc=Marquer comme pré-publication
|
|||
release.prerelease_helper=Marquer cette publication comme impropre à la production.
|
||||
release.cancel=Annuler
|
||||
release.publish=Publier
|
||||
release.save_draft=Sauvegarder le Brouillon
|
||||
release.save_draft=Sauvegarder le brouillon
|
||||
release.edit_release=Actualiser la publication
|
||||
release.delete_release=Supprimer cette publication
|
||||
release.delete_tag=Supprimer l'étiquette
|
||||
|
@ -2600,7 +2601,7 @@ release.tag_already_exist=Ce nom d'étiquette existe déjà.
|
|||
release.downloads=Téléchargements
|
||||
release.download_count=Télécharger: %s
|
||||
release.add_tag_msg=Utiliser le titre et le contenu de la publication comme message d’étiquette.
|
||||
release.add_tag=Créer uniquement l'étiquette
|
||||
release.add_tag=Créer l'étiquette
|
||||
release.releases_for=Publications pour %s
|
||||
release.tags_for=Étiquettes pour %s
|
||||
|
||||
|
@ -2686,7 +2687,7 @@ settings.ignore_stale_approvals_desc = Ne pas prendre en compte les approbations
|
|||
settings.archive.mirrors_unavailable = Les mirroirs ne sont pas disponibles si le dépôt a été archivé.
|
||||
pulls.commit_ref_at = `a référencé cette pull request depuis le commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
settings.new_owner_blocked_doer = Le nouveau propriétaire vous a bloqué.
|
||||
settings.enter_repo_name = Confirmez en entrant le propriétaire et le nom du dépôt exactement comme affiché :
|
||||
settings.enter_repo_name = Confirmez en entrant le propriétaire et le nom du dépôt exactement comme affiché :
|
||||
settings.wiki_rename_branch_main = Normalise le nom de la branche du Wiki
|
||||
settings.wiki_rename_branch_main_desc = Renommer la branche utilisée en interne par le Wiki en "%s". Cette modification est permanente et ne peut être annulée.
|
||||
settings.wiki_rename_branch_main_notices_2 = Cela changera le nom de la branche interne associée au dépôt du wiki %s de façon permanente. Les checkouts existant devront être mis à jour.
|
||||
|
@ -2720,7 +2721,7 @@ pulls.merged_title_desc_one = fusionné %[1]d commit depuis <code>%[2]s</code> v
|
|||
pulls.title_desc_one = veut fusionner %[1]d commit depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
|
||||
stars = Étoiles
|
||||
n_tag_few = %s étiquettes
|
||||
editor.commit_id_not_matching = L'ID de la révision ne correspond pas à celui que vous éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
|
||||
editor.commit_id_not_matching = Le fichier a été modifié pendant que vous l'éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
|
||||
commits.search_branch = Cette branche
|
||||
open_with_editor = Ouvrir avec %s
|
||||
pulls.ready_for_review = Prêt à être évalué ?
|
||||
|
@ -2742,7 +2743,7 @@ settings.sourcehut_builds.graphql_url = URL GraphQL (e.g. https://builds.sr.ht/q
|
|||
release.download_count_one = %s téléchargement
|
||||
release.download_count_few = %s téléchargements
|
||||
release.system_generated = Cet attachement a été généré automatiquement.
|
||||
settings.enforce_on_admins_desc = Les administrateurs du dépôt ne peuvent pas passer outre cette règle
|
||||
settings.enforce_on_admins_desc = Les administrateurs du dépôt ne peuvent pas passer outre cette règle.
|
||||
settings.web_hook_name_sourcehut_builds = Builds SourceHut
|
||||
settings.enforce_on_admins = Appliquer cette règles aux administrateurs du dépôt
|
||||
settings.rename_branch_failed_protected = Impossible de renommer la branche %s car il s'agit d'une branche protégée.
|
||||
|
@ -2751,6 +2752,10 @@ settings.graphql_url = URL GraphQL
|
|||
settings.matrix.room_id_helper = L'identifiant du salon peut être obtenu dans le client web Element. Par exemple : %s.
|
||||
settings.sourcehut_builds.access_token_helper = Un jeton d'accès ayant des permissions JOBS:RW. Génère un <a target="_blank" rel="noopener noreferrer" href="%s">jeton builds.sr.ht</a> ou un <a target="_blank" rel="noopener noreferrer" href="%s">jeton builds.sr.ht token ayant accès aux secrets</a> sur meta.sr.ht.
|
||||
settings.matrix.access_token_helper = Il est recommandé de créer un compte Matrix dédié pour cela. Le jeton d'accès peut être obtenu depuis le client web Element (dans un onglet privé/incognito). Il faut ensuite fermer l'onglet privé/icognito (se déconnecter invaliderait le jeton).
|
||||
release.hide_archive_links = Masquer les archives générées automatiquement
|
||||
release.hide_archive_links_helper = Masquer les archives de code source générées automatiquement pour cette publication. Par exemple, si vous téléchargez vos propres archives.
|
||||
settings.transfer.button = Changer de propriétaire
|
||||
settings.transfer.modal.title = Changer de propriétaire
|
||||
|
||||
[graphs]
|
||||
component_loading=Chargement de %s…
|
||||
|
@ -2816,24 +2821,24 @@ settings.hooks_desc=Vous pouvez ajouter des webhooks qui seront activés pour <s
|
|||
|
||||
settings.labels_desc=Ajoute des labels qui peuvent être utilisés sur les tickets pour <strong>tous les dépôts</strong> de cette organisation.
|
||||
|
||||
members.membership_visibility=Visibilité des membres:
|
||||
members.membership_visibility=Visibilité des membres :
|
||||
members.public=Visible
|
||||
members.public_helper=rendre caché
|
||||
members.public_helper=Rendre caché
|
||||
members.private=Caché
|
||||
members.private_helper=rendre visible
|
||||
members.private_helper=Rendre visible
|
||||
members.member_role=Rôle du membre :
|
||||
members.owner=Propriétaire
|
||||
members.member=Membre
|
||||
members.remove=Exclure
|
||||
members.remove.detail=Supprimer %[1]s de %[2]s?
|
||||
members.remove.detail=Supprimer %[1]s de %[2]s ?
|
||||
members.leave=Quitter
|
||||
members.leave.detail=Quitter %s?
|
||||
members.leave.detail=Quitter %s ?
|
||||
members.invite_desc=Ajouter un nouveau membre à %s :
|
||||
members.invite_now=Envoyer une invitation
|
||||
|
||||
teams.join=Rejoindre
|
||||
teams.leave=Quitter
|
||||
teams.leave.detail=Quitter %s?
|
||||
teams.leave.detail=Quitter %s ?
|
||||
teams.can_create_org_repo=Créer des dépôts
|
||||
teams.can_create_org_repo_helper=Les membres peuvent créer de nouveaux dépôts dans l'organisation. Le créateur obtiendra l'accès administrateur au nouveau dépôt.
|
||||
teams.none_access=Aucun accès
|
||||
|
@ -2883,6 +2888,7 @@ teams.invite.title=Vous avez été invité à rejoindre l'équipe <strong>%s</st
|
|||
teams.invite.by=Invité par %s
|
||||
teams.invite.description=Veuillez cliquer sur le bouton ci-dessous pour rejoindre l’équipe.
|
||||
follow_blocked_user = Vous ne pouvez pas suivre cette organisation car elle vous a bloqué.
|
||||
open_dashboard = Ouvrir le tableau de bord
|
||||
|
||||
[admin]
|
||||
dashboard=Tableau de bord
|
||||
|
@ -2913,12 +2919,12 @@ dashboard.operation_switch=Basculer
|
|||
dashboard.operation_run=Exécuter
|
||||
dashboard.clean_unbind_oauth=Effacer les connexions OAuth associées
|
||||
dashboard.clean_unbind_oauth_success=Toutes les connexions OAuth associées ont été supprimées.
|
||||
dashboard.task.started=Tâche démarrée: %[1]s
|
||||
dashboard.task.process=Tâche: %[1]s
|
||||
dashboard.task.started=Tâche démarrée : %[1]s
|
||||
dashboard.task.process=Tâche : %[1]s
|
||||
dashboard.task.cancelled=Tâche %[1]s annulée : %[3]s
|
||||
dashboard.task.error=Erreur dans la tâche: %[1]s: %[3]s
|
||||
dashboard.task.finished=Tâche: %[1]s démarrée par %[2]s est terminée
|
||||
dashboard.task.unknown=Tâche inconnue: %[1]s
|
||||
dashboard.task.error=Erreur dans la tâche : %[1]s : %[3]s
|
||||
dashboard.task.finished=Tâche : %[1]s démarrée par %[2]s est terminée
|
||||
dashboard.task.unknown=Tâche inconnue : %[1]s
|
||||
dashboard.cron.started=Tâche planifiée démarrée : %[1]s
|
||||
dashboard.cron.process=Tâche récurrente : %[1]s
|
||||
dashboard.cron.cancelled=Tâche récurrente %[1]s annulée : %[3]s
|
||||
|
@ -2931,7 +2937,7 @@ dashboard.delete_repo_archives.started=Tâche de suppression de toutes les archi
|
|||
dashboard.delete_missing_repos=Supprimer tous les dépôts dont les fichiers Git sont manquants
|
||||
dashboard.delete_missing_repos.started=Tâche de suppression de tous les dépôts sans fichiers Git démarrée.
|
||||
dashboard.delete_generated_repository_avatars=Supprimer les avatars de dépôt générés
|
||||
dashboard.sync_repo_branches=Synchroniser les branches manquantes depuis Git vers la base de donnée.
|
||||
dashboard.sync_repo_branches=Synchroniser les branches manquantes depuis Git vers la base de donnée
|
||||
dashboard.sync_repo_tags=Synchroniser les étiquettes git depuis les dépôts vers la base de données
|
||||
dashboard.update_mirrors=Actualiser les miroirs
|
||||
dashboard.repo_health_check=Vérifier l'état de santé de tous les dépôts
|
||||
|
@ -2977,8 +2983,8 @@ dashboard.total_gc_time=Pause GC
|
|||
dashboard.total_gc_pause=Pause totale GC
|
||||
dashboard.last_gc_pause=Dernière pause GC
|
||||
dashboard.gc_times=Nombres de GC
|
||||
dashboard.delete_old_actions=Supprimer toutes les anciennes actions de la base de données
|
||||
dashboard.delete_old_actions.started=Suppression de toutes les anciennes actions de la base de données démarrée.
|
||||
dashboard.delete_old_actions=Supprimer toutes les anciennes activités de la base de données
|
||||
dashboard.delete_old_actions.started=Suppression de toutes les anciennes activités de la base de données démarrée.
|
||||
dashboard.update_checker=Vérificateur de mise à jour
|
||||
dashboard.delete_old_system_notices=Supprimer toutes les anciennes observations de la base de données
|
||||
dashboard.gc_lfs=Épousseter les métaobjets LFS
|
||||
|
@ -3005,7 +3011,7 @@ users.repos=Dépôts
|
|||
users.created=Créés
|
||||
users.last_login=Dernière connexion
|
||||
users.never_login=Jamais connecté
|
||||
users.send_register_notify=Envoyer une notification d'inscription
|
||||
users.send_register_notify=Informer de l'inscription par courriel
|
||||
users.new_success=Le compte "%s" a bien été créé.
|
||||
users.edit=Éditer
|
||||
users.auth_source=Sources d'authentification
|
||||
|
@ -3069,7 +3075,7 @@ orgs.new_orga=Nouvelle organisation
|
|||
|
||||
repos.repo_manage_panel=Gestion des dépôts
|
||||
repos.unadopted=Dépôts non adoptés
|
||||
repos.unadopted.no_more=Aucun dépôt dépossédé trouvé.
|
||||
repos.unadopted.no_more=Aucun dépôt dépossédé trouvé
|
||||
repos.owner=Propriétaire
|
||||
repos.name=Nom
|
||||
repos.private=Privé
|
||||
|
@ -3174,7 +3180,7 @@ auths.oauth2_scopes=Champs d'application supplémentaires
|
|||
auths.oauth2_required_claim_name=Nom de réclamation requis
|
||||
auths.oauth2_required_claim_name_helper=Définissez ce nom pour restreindre la connexion depuis cette source aux utilisateurs ayant une réclamation avec ce nom
|
||||
auths.oauth2_required_claim_value=Valeur de réclamation requise
|
||||
auths.oauth2_required_claim_value_helper=Restreindre la connexion depuis cette source aux utilisateurs ayant réclamé cette valeur.
|
||||
auths.oauth2_required_claim_value_helper=Restreindre la connexion depuis cette source aux utilisateurs ayant réclamé cette valeur
|
||||
auths.oauth2_group_claim_name=Réclamer le nom fournissant les noms de groupe pour cette source. (facultatif)
|
||||
auths.oauth2_admin_group=Valeur de réclamation de groupe pour les administrateurs. (Optionnel, nécessite un nom de réclamation)
|
||||
auths.oauth2_restricted_group=Valeur de réclamation de groupe pour les utilisateurs restreints. (Optionnel, nécessite un nom de réclamation)
|
||||
|
@ -3309,7 +3315,7 @@ config.mailer_sendmail_path=Chemin d’accès à Sendmail
|
|||
config.mailer_sendmail_args=Arguments supplémentaires pour Sendmail
|
||||
config.mailer_sendmail_timeout=Délai d’attente de Sendmail
|
||||
config.mailer_use_dummy=Factice
|
||||
config.test_email_placeholder=E-mail (ex: test@example.com)
|
||||
config.test_email_placeholder=E-mail (ex : test@example.com)
|
||||
config.send_test_mail=Envoyer un courriel de test
|
||||
config.send_test_mail_submit=Envoyer
|
||||
config.test_mail_failed=Impossible d'envoyer un courriel de test à "%s" : %v
|
||||
|
@ -3351,7 +3357,7 @@ config.git_pull_timeout=Délai imparti pour l'opération "Pull"
|
|||
config.git_gc_timeout=Délai imparti pour l'opération "GC"
|
||||
|
||||
config.log_config=Configuration du journal
|
||||
config.logger_name_fmt=Logger: %s
|
||||
config.logger_name_fmt=Logger : %s
|
||||
config.disabled_logger=Désactivé
|
||||
config.access_log_mode=Mode de journalisation d'accès
|
||||
config.access_log_template=Modèle de journal d'accès
|
||||
|
@ -3377,7 +3383,7 @@ monitor.execute_time=Heure d'Éxécution
|
|||
monitor.last_execution_result=Résultat
|
||||
monitor.process.cancel=Annuler le processus
|
||||
monitor.process.cancel_desc=L'annulation d'un processus peut entraîner une perte de données
|
||||
monitor.process.cancel_notices=Annuler : <strong>%s</strong>?
|
||||
monitor.process.cancel_notices=Annuler : <strong>%s</strong> ?
|
||||
monitor.process.children=Enfant
|
||||
|
||||
monitor.queues=Files d'attente
|
||||
|
@ -3425,7 +3431,7 @@ self_check.database_fix_mysql = Les utilisateurs de MySQL/MariaDB peuvent utilis
|
|||
self_check.database_fix_mssql = Les utilisateurs de MSSQL sont pour l'instant contraint d'utiliser la commande SQL "ALTER ... COLLATE ..." pour corriger ce problème.
|
||||
|
||||
self_check.no_problem_found=Aucun problème trouvé pour l’instant.
|
||||
self_check.database_collation_mismatch=Exige que la base de données utilise la collation %s.
|
||||
self_check.database_collation_mismatch=Exige que la base de données utilise la collation %s
|
||||
self_check.database_collation_case_insensitive=La base de données utilise la collation %s, insensible à la casse. Bien que Forgejo soit compatible, il peut y avoir quelques rares cas qui ne fonctionnent pas comme prévu.
|
||||
self_check.database_inconsistent_collation_columns=La base de données utilise la collation %s, mais ces colonnes utilisent des collations différentes. Cela peut causer des problèmes imprévus.
|
||||
self_check.database_fix_mysql=Pour les utilisateurs de MySQL ou MariaDB, vous pouvez utiliser la commande « forgejo doctor convert » dans un terminal ou exécuter une requête du type « ALTER … COLLATE ... » pour résoudre les problèmes de collation.
|
||||
|
@ -3434,10 +3440,12 @@ config_settings = Paramètres
|
|||
config_summary = Résumé
|
||||
auths.tips.gmail_settings = Paramètres Gmail :
|
||||
auths.tip.gitlab_new = Enregistrer une nouvelle application sur https://gitlab.com/-/profile/applications
|
||||
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.
|
||||
|
||||
[action]
|
||||
create_repo=a créé le dépôt <a href="%s">%s</a>
|
||||
rename_repo=a rebaptisé le dépôt <s><code>%[1]s</code></s> en <a href="%[2]s">%[3]s</a>
|
||||
rename_repo=a rebaptisé le dépôt <code>%[1]s</code> en <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=a soumis sur <a href="%[2]s">%[3]s</a> dans <a href="%[1]s">%[4]s</a>
|
||||
create_issue=`a ouvert le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_issue=`a fermé le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3456,8 +3464,8 @@ delete_branch=a supprimée la branche %[2]s de <a href="%[1]s">%[3]s</a>
|
|||
compare_branch=Comparer
|
||||
compare_commits=Comparer %d révisions
|
||||
compare_commits_general=Comparer les révisions
|
||||
mirror_sync_push=a synchronisé les révisions de <a href="%[2]s">%[3]s</a> d’un miroir vers <a href="%[1]s">%[4]s</a>.
|
||||
mirror_sync_create=a synchronisé la nouvelle référence <a href="%[2]s">%[3]s</a> d’un miroir vers <a href="%[1]s">%[4]s</a>.
|
||||
mirror_sync_push=a synchronisé les révisions de <a href="%[2]s">%[3]s</a> d’un miroir vers <a href="%[1]s">%[4]s</a>
|
||||
mirror_sync_create=a synchronisé la nouvelle référence <a href="%[2]s">%[3]s</a> d’un miroir vers <a href="%[1]s">%[4]s</a>
|
||||
mirror_sync_delete=a synchronisé puis supprimé la nouvelle référence <code>%[2]s</code> vers <a href="%[1]s">%[3]s</a> depuis le miroir
|
||||
approve_pull_request=`a approuvé <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reject_pull_request=`a suggérés des changements pour <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3529,7 +3537,7 @@ title=Paquets
|
|||
desc=Gérer les paquets du dépôt.
|
||||
empty=Il n'y pas de paquet pour le moment.
|
||||
empty.documentation=Pour plus d'informations sur le registre de paquets, voir <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
|
||||
empty.repo=Avez-vous téléchargé un paquet, mais il n'est pas affiché ici? Allez dans les <a href="%[1]s">paramètres du paquet</a> et liez le à ce dépôt.
|
||||
empty.repo=Avez-vous téléchargé un paquet, mais il n'est pas affiché ici ? Allez dans les <a href="%[1]s">paramètres du paquet</a> et liez le à ce dépôt.
|
||||
registry.documentation=Pour plus d’informations sur le registre %s, voir <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
|
||||
filter.type=Type
|
||||
filter.type.all=Tous
|
||||
|
@ -3564,7 +3572,7 @@ alpine.repository.repositories=Dépôts
|
|||
alpine.repository.architectures=Architectures
|
||||
cargo.registry=Configurez ce registre dans le fichier de configuration Cargo (par exemple <code>~/.cargo/config.toml</code>) :
|
||||
cargo.install=Pour installer le paquet en utilisant Cargo, exécutez la commande suivante :
|
||||
chef.registry=Configurer ce registre dans votre fichier <code>~/.chef/config.rb</code>:
|
||||
chef.registry=Configurer ce registre dans votre fichier <code>~/.chef/config.rb</code> :
|
||||
chef.install=Pour installer le paquet, exécutez la commande suivante :
|
||||
composer.registry=Configurez ce registre dans votre fichier <code>~/.composer/config.json</code> :
|
||||
composer.install=Pour installer le paquet en utilisant Composer, exécutez la commande suivante :
|
||||
|
@ -3629,7 +3637,7 @@ rubygems.dependencies.development=Dépendances de développement
|
|||
rubygems.required.ruby=Nécessite Ruby en version
|
||||
rubygems.required.rubygems=Nécessite RubyGem en version
|
||||
swift.registry=Configurez ce registre à partir d'un terminal :
|
||||
swift.install=Ajoutez le paquet dans votre fichier <code>Package.swift</code>:
|
||||
swift.install=Ajoutez le paquet dans votre fichier <code>Package.swift</code> :
|
||||
swift.install2=et exécutez la commande suivante :
|
||||
vagrant.install=Pour ajouter une machine Vagrant, exécutez la commande suivante :
|
||||
settings.link=Lier ce paquet à un dépôt
|
||||
|
@ -3652,7 +3660,7 @@ owner.settings.cargo.rebuild=Reconstruire l'index
|
|||
owner.settings.cargo.rebuild.description=La reconstruction peut être utile si l'index n'est pas synchronisé avec les paquets Cargo stockés.
|
||||
owner.settings.cargo.rebuild.error=Impossible de reconstruire l'index Cargo : %v
|
||||
owner.settings.cargo.rebuild.success=L'index Cargo a été reconstruit avec succès.
|
||||
owner.settings.cleanuprules.title=Gérer les règles de nettoyage
|
||||
owner.settings.cleanuprules.title=Règles de nettoyage
|
||||
owner.settings.cleanuprules.add=Ajouter une règle de nettoyage
|
||||
owner.settings.cleanuprules.edit=Modifier la règle de nettoyage
|
||||
owner.settings.cleanuprules.none=Aucune règle de nettoyage disponible. Veuillez consulter la documentation.
|
||||
|
@ -3679,13 +3687,14 @@ rpm.repository = Information sur le dépôt
|
|||
rpm.repository.architectures = Architectures
|
||||
rpm.repository.multiple_groups = Ce paquet est disponible dans plusieurs groupes.
|
||||
owner.settings.cargo.rebuild.no_index = Incapable de reconstruire, index non initialisé.
|
||||
npm.dependencies.bundle = Bundles de dépendances
|
||||
|
||||
[secrets]
|
||||
secrets=Secrets
|
||||
description=Les secrets seront transmis à certaines actions et ne pourront pas être lus autrement.
|
||||
none=Il n'y a pas encore de secrets.
|
||||
creation=Ajouter un secret
|
||||
creation.name_placeholder=Caractères alphanumériques ou tirets bas uniquement, insensibles à la casse, ne peut commencer par GITEA_ ou GITHUB_.
|
||||
creation.name_placeholder=Caractères alphanumériques ou tirets bas uniquement, insensibles à la casse, ne peut commencer par FORGEJO_, GITEA_ ou GITHUB_
|
||||
creation.value_placeholder=Entrez n’importe quoi. Les blancs cernant seront taillés.
|
||||
creation.success=Le secret "%s" a été ajouté.
|
||||
creation.failed=Impossible d'ajouter le secret.
|
||||
|
@ -3693,12 +3702,12 @@ deletion=Supprimer le secret
|
|||
deletion.description=La suppression d'un secret est permanente et irréversible. Continuer ?
|
||||
deletion.success=Le secret a été supprimé.
|
||||
deletion.failed=Impossible de supprimer le secret.
|
||||
management=Gestion des Secrets
|
||||
management=Gestion des secrets
|
||||
|
||||
[actions]
|
||||
actions=Actions
|
||||
|
||||
unit.desc=Gérer les actions
|
||||
unit.desc=Gérer l'intégration continue avec Forgejo Actions
|
||||
|
||||
status.unknown=Inconnu
|
||||
status.waiting=En attente
|
||||
|
@ -3735,7 +3744,7 @@ runners.update_runner_failed=Impossible d'actualiser l'Exécuteur
|
|||
runners.delete_runner=Supprimer cet exécuteur
|
||||
runners.delete_runner_success=Exécuteur supprimé avec succès
|
||||
runners.delete_runner_failed=Impossible de supprimer l'Exécuteur
|
||||
runners.delete_runner_header=Êtes-vous sûr de vouloir supprimer cet exécuteur ?
|
||||
runners.delete_runner_header=Confirmer la suppression de cet exécuteur
|
||||
runners.delete_runner_notice=Si une tâche est en cours sur cet exécuteur, elle sera terminée et marquée comme échouée. Cela risque d’interrompre le flux de travail.
|
||||
runners.none=Aucun exécuteur disponible
|
||||
runners.status.unspecified=Inconnu
|
||||
|
@ -3746,11 +3755,11 @@ runners.version=Version
|
|||
runners.reset_registration_token=Réinitialiser le jeton d'enregistrement
|
||||
runners.reset_registration_token_success=Le jeton d’inscription de l’exécuteur a été réinitialisé avec succès
|
||||
|
||||
runs.all_workflows=Tous les flux de travail
|
||||
runs.all_workflows=Tous les workflows
|
||||
runs.commit=Révision
|
||||
runs.scheduled=Planifié
|
||||
runs.pushed_by=soumis par
|
||||
runs.invalid_workflow_helper=La configuration du flux de travail est invalide. Veuillez vérifier votre fichier %s.
|
||||
runs.invalid_workflow_helper=La configuration du flux de travail est invalide. Veuillez vérifier votre fichier %s
|
||||
runs.no_matching_online_runner_helper=Aucun exécuteur en ligne correspondant au libellé %s
|
||||
runs.actor=Acteur
|
||||
runs.status=Statut
|
||||
|
@ -3763,9 +3772,9 @@ runs.no_workflows.documentation=Pour plus d’informations sur les actions Gitea
|
|||
runs.no_runs=Le flux de travail n'a pas encore d'exécution.
|
||||
runs.empty_commit_message=(message de révision vide)
|
||||
|
||||
workflow.disable=Désactiver le flux de travail
|
||||
workflow.disable=Désactiver le workflow
|
||||
workflow.disable_success=Le flux de travail « %s » a bien été désactivé.
|
||||
workflow.enable=Activer le flux de travail
|
||||
workflow.enable=Activer le workflow
|
||||
workflow.enable_success=Le workflow « %s » a bien été activé.
|
||||
workflow.disabled=Le flux de travail est désactivé.
|
||||
|
||||
|
@ -3790,11 +3799,12 @@ runs.no_workflows.quick_start = Vous ne savez pas comment commencer avec Forgejo
|
|||
runs.no_workflows.documentation = Pour plus d’informations sur Forgejo Actions, voir <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
|
||||
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.
|
||||
|
||||
[projects]
|
||||
type-1.display_name=Projet personnel
|
||||
type-2.display_name=Projet de dépôt
|
||||
type-3.display_name=Projet d’organisation
|
||||
type-2.display_name=Projet du dépôt
|
||||
type-3.display_name=Projet de l'organisation
|
||||
|
||||
[git.filemode]
|
||||
changed_filemode=%[1]s → %[2]s
|
||||
|
@ -3843,6 +3853,12 @@ commit_kind = Chercher les commits...
|
|||
|
||||
[munits.data]
|
||||
b = o
|
||||
mib = Mio
|
||||
kib = Kio
|
||||
gib = Gio
|
||||
tib = Tio
|
||||
pib = Pio
|
||||
eib = Eio
|
||||
|
||||
[markup]
|
||||
filepreview.line = Ligne %[1]d dans %[2]s
|
||||
|
|
|
@ -30,10 +30,10 @@ return_to_gitea = Regreso a Forgejo
|
|||
username = Nome de Usuario
|
||||
email = Enderezo Electrónico
|
||||
password = Contrasinal
|
||||
re_type = Confirme o Contrasinal
|
||||
re_type = Confirme o contrasinal
|
||||
captcha = CAPTCHA
|
||||
twofa = Autenticación de Dous Factores
|
||||
passcode = Código
|
||||
passcode = Código de Acceso
|
||||
webauthn_insert_key = Insira a súa Chave de Seguranza
|
||||
webauthn_press_button = Preme o botón da súa Chave de Seguranza…
|
||||
webauthn_use_twofa = Use o Código de Dous Factores do seu Teléfono
|
||||
|
@ -41,7 +41,7 @@ webauthn_error = Non se Puido Ler a súa Chave de Seguranza.
|
|||
webauthn_unsupported_browser = O seu Navegador non Soporta Actualmente WebAuthn.
|
||||
webauthn_error_unknown = Produciuse un Erro Descoñecido.Téntao de novo.
|
||||
webauthn_error_unable_to_process = O Servidor non Puido Procesar a súa Solicitude.
|
||||
webauthn_error_duplicated = A Chave de Seguranza non está Permitida para esta Solicitude. Asegúrese de que a Chave non Estea Rexistrada.
|
||||
webauthn_error_duplicated = A Chave de Seguranza non está Permitida para esta Solicitude. Asegúrese de que a Chave non Estea Rexistrada.
|
||||
webauthn_error_empty = Debes Definir un Nome para esta Chave.
|
||||
webauthn_reload = Recarga
|
||||
repository = Repositorio
|
||||
|
@ -104,7 +104,7 @@ save = Gardar
|
|||
copy_content = Copiar Contido
|
||||
language = Linguaxe
|
||||
copy_hash = Copiar hash
|
||||
twofa_scratch = Código Scratch de Dous Facetores
|
||||
twofa_scratch = Código Scratch de Dous Factores
|
||||
webauthn_sign_in = Preme o botón da súa Chave de Seguranza. Se a súa Chave de Seguranza non ten ningún botón, insírela de novo.
|
||||
issues = Problemas
|
||||
disabled = Desactivado
|
||||
|
@ -123,6 +123,8 @@ name = Nome
|
|||
value = Valor
|
||||
confirm_delete_selected = Confirmar a eliminación de todos os elementos seleccionados?
|
||||
show_full_screen = Mostrar Pantalla Completa
|
||||
more_items = Máis items
|
||||
toggle_menu = Alternar Menú
|
||||
|
||||
[aria]
|
||||
navbar = Barra de Navegación
|
||||
|
|
6
options/locale/locale_hi.ini
Normal file
6
options/locale/locale_hi.ini
Normal file
|
@ -0,0 +1,6 @@
|
|||
|
||||
|
||||
|
||||
[common]
|
||||
dashboard = डैशबोर्ड
|
||||
home = घर
|
|
@ -869,7 +869,7 @@ settings.tracker_issue_style.numeric=Numerik
|
|||
settings.tracker_issue_style.alphanumeric=Alfhanumerik
|
||||
settings.danger_zone=Zona Bahaya
|
||||
settings.new_owner_has_same_repo=Pemilik baru sudah memiliki repositori dengan nama yang sama. Silakan pilih nama lain.
|
||||
settings.transfer=Transfer Kepemilikan
|
||||
settings.transfer.title=Transfer Kepemilikan
|
||||
settings.transfer_owner=Pemilik Baru
|
||||
settings.delete=Menghapus Repositori Ini
|
||||
settings.delete_notices_1=- Operasi ini <strong>TIDAK BISA</strong> dibatalkan.
|
||||
|
|
|
@ -1024,7 +1024,7 @@ settings.use_external_wiki=Nota Utanaðkomandi Handbók
|
|||
settings.tracker_issue_style.numeric=Tölugildi
|
||||
settings.danger_zone=Hættusvæði
|
||||
settings.convert_notices_1=Þessi aðgerð mun breyta speglinum í venjulegt hugbúnaðarsafn og ekki er hægt að afturkalla hana.
|
||||
settings.transfer=Flytja Eignarhald
|
||||
settings.transfer.title=Flytja Eignarhald
|
||||
settings.trust_model.collaboratorcommitter.desc=Gildar undirskriftir frá samstarfsaðilum hugbúnaðarsafnsins verða merktar „traust“ ef þær passa við framlagandan. Að öðrum kosti verða gildar undirskriftir merktar „ótraust“ ef undirskriftin passar við framlagandan og „ósamþykkt“ að öðru leyti. Þetta mun neyða Forgejo til að vera merkt sem framlagandi á undirrituðum framlögum með raunverulega framlagandan merktan sem Co-Authored-By: og Co-Committed-By: í framlaginu. Sjálfgefinn Forgejo lykill verður að passa við notanda í gagnagrunninum.
|
||||
settings.wiki_delete_desc=Að eyða handbókargögn er varanlegt og ekki er hægt að afturkalla það.
|
||||
settings.delete=Eyða Þetta Hugbúnaðarsafn
|
||||
|
|
|
@ -1946,7 +1946,7 @@ settings.convert_fork_desc=Puoi convertire questo fork in un normale repository.
|
|||
settings.convert_fork_notices_1=Questa operazione convertirà il fork in un normale repository e non può essere annullata.
|
||||
settings.convert_fork_confirm=Converti progetto
|
||||
settings.convert_fork_succeed=Il fork è stato convertito in un repository regolare.
|
||||
settings.transfer=Trasferisci proprietà
|
||||
settings.transfer.title=Trasferisci proprietà
|
||||
settings.transfer.rejected=Il trasferimento del repository è stato rifiutato.
|
||||
settings.transfer.success=Il trasferimento del repository è andato a buon fine.
|
||||
settings.transfer_abort=Annulla trasferimento
|
||||
|
|
|
@ -157,7 +157,7 @@ toggle_menu = トグルメニュー
|
|||
filter.not_template = テンプレートではない
|
||||
invalid_data = 無効なデータ: %v
|
||||
more_items = さらに表示
|
||||
copy_generic = クリップボード
|
||||
copy_generic = クリップボードへコピー
|
||||
|
||||
[aria]
|
||||
navbar=ナビゲーションバー
|
||||
|
@ -171,7 +171,8 @@ contributions_zero=貢献なし
|
|||
less=少
|
||||
more=多
|
||||
contributions_one = 貢献
|
||||
contributions_few = 貢献
|
||||
contributions_few = 貢献たち
|
||||
contributions_format = {month} {day}, {year} に {contributions} 件の貢献
|
||||
|
||||
[editor]
|
||||
buttons.heading.tooltip=見出し追加
|
||||
|
@ -646,7 +647,7 @@ joined_on=%sに登録
|
|||
repositories=リポジトリ
|
||||
activity=公開アクティビティ
|
||||
followers_few=%d フォロワー
|
||||
starred=スターを付けたリポジトリ
|
||||
starred=スターを付けたリポジトリたち
|
||||
watched=ウォッチ中のリポジトリ
|
||||
code=コード
|
||||
projects=プロジェクト
|
||||
|
@ -2158,7 +2159,7 @@ settings.convert_fork_desc=フォークを通常のリポジトリに変換で
|
|||
settings.convert_fork_notices_1=この操作によりフォークから通常のリポジトリに変換されます。 元に戻すことはできません。
|
||||
settings.convert_fork_confirm=リポジトリを変換
|
||||
settings.convert_fork_succeed=フォークを通常のリポジトリに変換しました。
|
||||
settings.transfer=オーナー移転
|
||||
settings.transfer.title=オーナー移転
|
||||
settings.transfer.rejected=リポジトリの移転は拒否されました。
|
||||
settings.transfer.success=リポジトリの移転が成功しました。
|
||||
settings.transfer_abort=転送をキャンセル
|
||||
|
@ -2723,6 +2724,12 @@ settings.sourcehut_builds.manifest_path = Build manifestのパス
|
|||
settings.sourcehut_builds.secrets_helper = ジョブにビルドシークレットへのアクセス権を付与します (SECRETS:RO 権限が必要です)
|
||||
release.hide_archive_links_helper = このリリース用に自動的に生成されたソース コード アーカイブを非表示にします。たとえば、独自のソース コードをアップロードする場合などです。
|
||||
error.broken_git_hook = このリポジトリの Git フックが壊れているようです。<a target="_blank" rel="noreferrer" href="%s">ドキュメント</a>に従って修正し、コミットをいくつかプッシュしてステータスを更新してください。
|
||||
editor.commit_id_not_matching = このコミットIDはあなたが編集していたものと一致しません。新しいブランチへコミットし、そしてマージしてください。
|
||||
issues.num_participants_one = %d 人の参加者
|
||||
commits.search_branch = このブランチ
|
||||
size_format = %[1]s: %[2]s, %[3]s: %[4]s
|
||||
editor.push_out_of_date = このpushはもう古いようです。
|
||||
issues.archived_label_description = (アーカイブ済) %s
|
||||
|
||||
[graphs]
|
||||
component_loading = %s の読み込み中...
|
||||
|
@ -2730,7 +2737,7 @@ component_loading_failed = %s を読み込めませんでした
|
|||
component_loading_info = 少し時間がかかるかもしれません…
|
||||
component_failed_to_load = 予期しないエラーが発生しました。
|
||||
code_frequency.what = コード頻度
|
||||
contributors.what = 貢献者
|
||||
contributors.what = 貢献たち
|
||||
recent_commits.what = 最近のコミット
|
||||
|
||||
[org]
|
||||
|
@ -3781,6 +3788,9 @@ project_kind = プロジェクトの検索...
|
|||
keyword_search_unavailable = キーワードによる検索は現在ご利用いただけません。サイト管理者にお問い合わせください。
|
||||
runner_kind = ランナーの検索...
|
||||
no_results = 一致する結果が見つかりませんでした。
|
||||
fuzzy_tooltip = 入力された語句に近いものも結果に含める
|
||||
match = 一致
|
||||
match_tooltip = 検索語句に厳密に一致するもののみ結果に含める
|
||||
|
||||
|
||||
[munits.data]
|
||||
|
|
|
@ -16,7 +16,7 @@ template=템플릿
|
|||
language=언어
|
||||
notifications=알림
|
||||
create_new=생성하기
|
||||
user_profile_and_more=프로파일 및 설정
|
||||
user_profile_and_more=프로파일 및 설정…
|
||||
signed_in_as=다음 사용자로 로그인됨
|
||||
|
||||
username=사용자명
|
||||
|
@ -37,7 +37,7 @@ new_migrate=새 마이그레이션
|
|||
new_mirror=새로운 미러
|
||||
new_fork=새 저장소 포크
|
||||
new_org=새로운 조직
|
||||
new_project=새 프로젝트
|
||||
new_project=새로운 프로젝트
|
||||
manage_org=조직 관리
|
||||
admin_panel=사이트 관리
|
||||
account_settings=계정 설정
|
||||
|
@ -70,7 +70,7 @@ enabled=활성화됨
|
|||
|
||||
write=쓰기
|
||||
preview=미리보기
|
||||
loading=불러오는 중...
|
||||
loading=불러오는 중…
|
||||
|
||||
|
||||
|
||||
|
@ -85,12 +85,89 @@ concept_user_organization=조직
|
|||
|
||||
name=이름
|
||||
active_stopwatch = 진행중인 타임 트래커
|
||||
sign_in_with_provider = %으로 로그인
|
||||
sign_in_with_provider = %s 으로 로그인
|
||||
logo = 로고
|
||||
tracked_time_summary = 추적된 이슈 목록 필터 기반 시간 요약
|
||||
enable_javascript = 이 웹사이트는 자바스크립트가 필요합니다.
|
||||
toc = 목차
|
||||
licenses = 라이센스
|
||||
return_to_gitea = Forgejo로 돌아가기
|
||||
access_token = 액세스 토큰
|
||||
webauthn_error_unable_to_process = 서버가 귀하의 요청을 처리할 수 없습니다.
|
||||
webauthn_error_duplicated = 이 요청에는 보안 키가 허용되지 않습니다. 키가 이미 등록되어 있는지 확인하세요.
|
||||
webauthn_reload = 다시 불러오기
|
||||
remove_label_str = "%s" 항목 제거
|
||||
disabled = 비활성화됨
|
||||
locked = 잠김
|
||||
filter = 필터
|
||||
filter.not_fork = 포크되지 않음
|
||||
filter.is_mirror = 미러됨
|
||||
webauthn_press_button = 보안 키의 버튼을 누르세요…
|
||||
toggle_menu = 토글 메뉴
|
||||
webauthn_error = 보안 키를 읽을 수 없습니다.
|
||||
webauthn_unsupported_browser = 현재 귀하의 브라우저는 웹 인증을 지원하지 않습니다.
|
||||
webauthn_insert_key = 보안 키를 입력하세요
|
||||
webauthn_sign_in = 보안 키에 있는 버튼을 누르세요. 만약 보안 키에 버튼이 없다면 다시 입력하세요.
|
||||
webauthn_use_twofa = 휴대전화 2단계 코드 사용
|
||||
retry = 다시 시도하기
|
||||
rerun = 다시 실행하기
|
||||
rerun_all = 모든 작업을 다시 실행하기
|
||||
copy = 복사
|
||||
new_project_column = 새 열
|
||||
more_items = 더 보기
|
||||
webauthn_error_unknown = 알 수 없는 오류가 발생했습니다. 다시 시도해주세요.
|
||||
webauthn_error_insecure = 웹 인증은 안전한 연결만 지원합니다. HTTP에서 테스트할 경우, "localhost" 또는 "127.0.0.1" 오리진을 사용할 수 있습니다.
|
||||
webauthn_error_empty = 키의 이름을 설정해야 합니다.
|
||||
webauthn_error_timeout = 키를 읽기 전에 시간이 초과되었습니다. 페이지를 새로 고치고 다시 시도해주세요.
|
||||
copy_generic = 클립보드에 복사
|
||||
copy_url = URL 복사
|
||||
copy_hash = 해시 복사
|
||||
copy_content = 내용 복사
|
||||
copy_branch = 브랜치 이름 복사
|
||||
copy_success = 복사되었습니다!
|
||||
copy_error = 복사 실패
|
||||
copy_type_unsupported = 이 파일 형식은 복사할 수 없습니다
|
||||
error = 오류
|
||||
error404 = 도달하려는 페이지가 <strong>존재하지 않거나</strong> 볼 수 있도록 <strong>인증되지 않았습니다</strong>.
|
||||
go_back = 돌아가기
|
||||
invalid_data = 유효하지 않는 데이터: %v
|
||||
unknown = 알 수 없음
|
||||
rss_feed = RSS 피드
|
||||
pin = 고정
|
||||
unpin = 고정 해제
|
||||
archived = 보관됨
|
||||
concept_system_global = 전역
|
||||
concept_user_individual = 개인
|
||||
show_timestamps = 타임스탬프 보기
|
||||
show_log_seconds = 초 표시
|
||||
show_full_screen = 전체 화면으로 보기
|
||||
download_logs = 로그 다운로드
|
||||
confirm_delete_selected = 선택된 모든 항목을 삭제하시겠습니까?
|
||||
value = 값
|
||||
filter.is_archived = 보관됨
|
||||
filter.not_archived = 보관되지 않음
|
||||
filter.is_fork = 포크됨
|
||||
filter.not_mirror = 미러되지 않음
|
||||
filter.is_template =템플릿
|
||||
filter.clear = 필터 지우기
|
||||
ok = 확인
|
||||
confirm_delete_artifact = 정말 artifact "%s"를 삭제하실건가요?
|
||||
artifacts = Artifacts
|
||||
|
||||
[aria]
|
||||
navbar = 네비게이션 바
|
||||
footer.links = 링크
|
||||
footer = 꼬릿말
|
||||
footer.software = 소프트웨어에 대하여
|
||||
|
||||
[heatmap]
|
||||
number_of_contributions_in_the_last_12_months = 지난 12달간 %s 명의 기여자
|
||||
contributions_zero = 기여자 없음
|
||||
contributions_format = {year}년 {month}월 {day}일에 {contributions}개의 기여
|
||||
contributions_one = 기여
|
||||
contributions_few = 기여
|
||||
less = 적은
|
||||
more = 많은
|
||||
|
||||
[editor]
|
||||
|
||||
|
@ -108,7 +185,7 @@ license=오픈 소스
|
|||
[install]
|
||||
install=설치
|
||||
title=초기 설정
|
||||
docker_helper="Forgejo를 Docker에서 실행하려면 설정 전에 이 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">문서</a>를 읽어보세요."
|
||||
docker_helper=Forgejo를 Docker에서 실행하려면 설정 전에 이 <a target="_blank" rel="noopener noreferrer" href="%s">문서</a>를 읽어보세요.
|
||||
db_title=데이터베이스 설정
|
||||
db_type=데이터베이스 유형
|
||||
host=호스트
|
||||
|
@ -137,9 +214,9 @@ run_user=실행 사용자명
|
|||
ssh_port=SSH 서버 포트
|
||||
ssh_port_helper=SSH 서버가 실행되고 있는 포트를 입력하세요. 비워둘 경우 SSH를 사용하지 않습니다.
|
||||
http_port=Forgejo HTTP 수신 포트
|
||||
http_port_helper=Forgejo 웹서버가 수신할 포트 번호
|
||||
http_port_helper=Forgejo 웹서버가 수신할 포트 번호입니다.
|
||||
app_url=Forgejo 기본 URL
|
||||
app_url_helper=HTTP(S) clone URL 및 이메일 알림 기본 주소
|
||||
app_url_helper=HTTP(S) clone URL 및 이메일 알림 기본 주소입니다.
|
||||
log_root_path=로그 경로
|
||||
log_root_path_helper=로그파일은 이 디렉토리에 저장됩니다.
|
||||
|
||||
|
@ -159,15 +236,15 @@ offline_mode_popup=타사 콘텐츠 전송 네트워크를 사용하지 않도
|
|||
disable_gravatar=Gravatar 사용안함
|
||||
disable_gravatar_popup=Gravatar 및 타사 아바타 소스를 사용하지 않도록 설정합니다. 사용자가 로컬로 아바타를 업로드하지 않는 한 기본 아바타가 사용됩니다.
|
||||
federated_avatar_lookup=아바타 연동 사용여부
|
||||
federated_avatar_lookup_popup=libravatar 기반 오픈소스 서비스 사용 목적으로 연합 아바타 조회를 허용하기
|
||||
federated_avatar_lookup_popup=libravatar 기반 오픈소스 연합 아바타 조회를 허용합니다.
|
||||
disable_registration=사용자 등록 비활성화
|
||||
disable_registration_popup=사용자가 직접 등록할 수 없게 합니다. 관리자만이 추가할 수 있습니다.
|
||||
allow_only_external_registration_popup=외부 서비스를 통한 등록을 허용여부
|
||||
openid_signin=OpenID 로그인 사용
|
||||
openid_signin_popup=OpenID 를 이용한 로그인 가능여부
|
||||
openid_signin_popup=OpenID 를 이용한 로그인을 허용합니다.
|
||||
openid_signup=OpenID 가입 가능여부
|
||||
openid_signup_popup=OpenID를 통한 가입 가능여부
|
||||
enable_captcha_popup=사용자 등록시 캡차 요구
|
||||
openid_signup_popup=OpenID를 통한 가입을 허용합니다.
|
||||
enable_captcha_popup=사용자 등록시 캡차를 요구합니다.
|
||||
require_sign_in_view=페이지를 보기 위해 로그인 하기
|
||||
admin_setting_desc=관리자 계정을 만드는 것은 선택사항입니다. 첫번째로 등록된 사용자는 자동적으로 관리자로 지정됩니다.
|
||||
admin_title=관리자 계정 설정
|
||||
|
@ -177,16 +254,16 @@ confirm_password=비밀번호 확인
|
|||
admin_email=이메일 주소
|
||||
install_btn_confirm=Forgejo 설치하기
|
||||
test_git_failed='git' 명령 테스트 실패: %v
|
||||
sqlite3_not_available=해당 버전에서는 SQLite3를 지원하지 않습니다. %s에서 공식 버전을 다운로드해주세요. ('gobuild' 버전이 아닙니다.)
|
||||
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
|
||||
invalid_log_root_path=로그(Log) 의 경로가 올바르지 않습니다: %v
|
||||
default_keep_email_private=이메일 주소 숨김처리를 기본값으로 설정합니다.
|
||||
default_keep_email_private=이메일 주소 숨김처리를 기본값으로 설정
|
||||
default_keep_email_private_popup=새 사용자에 대한 이메일 주소 숨김처리를 기본값으로 설정합니다.
|
||||
default_allow_create_organization=조직 생성 허용을 기본값으로 설정합니다.
|
||||
default_allow_create_organization=조직 생성 허용을 기본값으로 설정
|
||||
default_allow_create_organization_popup=신규 사용자 생성시 조직 생성을 기본값으로 설정합니다.
|
||||
default_enable_timetracking=시간 추적 사용을 기본값으로 설정
|
||||
default_enable_timetracking_popup=신규 레포지토리에 대한 시간 추적 사용을 기본값으로 설정합니다.
|
||||
|
@ -212,7 +289,7 @@ issues.in_your_repos=당신의 저장소에
|
|||
|
||||
[explore]
|
||||
repos=저장소
|
||||
users=유저
|
||||
users=사용자
|
||||
organizations=조직
|
||||
search=검색
|
||||
code=코드
|
||||
|
@ -231,7 +308,7 @@ forgot_password_title=비밀번호 찾기
|
|||
forgot_password=비밀번호를 잊으셨나요?
|
||||
sign_up_now=계정이 필요하신가요? 지금 가입하세요.
|
||||
confirmation_mail_sent_prompt=새로운 확인 메일이 <b>%s</b>로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 등록 절차를 완료하십시오.
|
||||
must_change_password=비밀번호를 변경하세요.
|
||||
must_change_password=비밀번호를 변경하세요
|
||||
allow_password_change=사용자에게 비밀번호 변경을 요청 (권장됨)
|
||||
reset_password_mail_sent_prompt=확인 메일이 <b>%s</b>로 전송되었습니다. 받은 편지함으로 도착한 메일을 %s 안에 확인해서 비밀번호 찾기 절차를 완료하십시오.
|
||||
active_your_account=계정 활성화
|
||||
|
@ -247,7 +324,7 @@ invalid_code=검증 코드가 유효하지 않거나 만료되었습니다.
|
|||
reset_password_helper=계정 복구
|
||||
password_too_short=비밀번호의 길이는 최소 %d 자가 되어야 합니다.
|
||||
non_local_account=로컬 유저가 아닌 경우 Forgejo 웹 인터페이스를 통해 비밀번호를 변경할 수 없습니다.
|
||||
verify=확인
|
||||
verify=검증
|
||||
scratch_code=스크래치 코드
|
||||
use_scratch_code=스크래치 코드 사용
|
||||
twofa_scratch_used=스크래치 코드를 사용하셨습니다. 이중인증 설정 페이지로 리다이렉트 되었고 기기 등록을 제거하거나 새로운 스크래치 코드를 생성하십시오.
|
||||
|
@ -365,6 +442,7 @@ following_few=%d 팔로우 중
|
|||
follow=추적하기
|
||||
unfollow=추적해제
|
||||
user_bio=소개
|
||||
projects = 프로젝트
|
||||
|
||||
|
||||
[settings]
|
||||
|
@ -428,7 +506,7 @@ email_deletion_desc=계정의 이메일 주소와 관련된 정보가 삭제됩
|
|||
email_deletion_success=이메일 주소가 삭제되었습니다.
|
||||
theme_update_success=테마가 갱신되었습니다.
|
||||
theme_update_error=선택한 테마가 존재하지 않습니다.
|
||||
openid_deletion=OpenID 주소가 삭제되었습니다.
|
||||
openid_deletion=OpenID 주소 삭제됨
|
||||
openid_deletion_desc=OpenID 주소를 삭제하면 이것을 이용하여 로그인할 수 없습니다. 계속 진행하시겠습니까?
|
||||
openid_deletion_success=OpenID가 삭제되었습니다.
|
||||
add_new_email=새 이메일 주소 추가
|
||||
|
@ -445,8 +523,8 @@ manage_gpg_keys=GPG 키 관리
|
|||
add_key=키 추가
|
||||
ssh_desc=이러한 SSH 공용 키는 귀하의 계정과 연결되어 있습니다. 해당 개인 키는 당신의 저장소에 대한 전체 액세스를 가능하게 합니다.
|
||||
gpg_desc=이러한 GPG 공개키는 당신의 계정과 연결되어있습니다. 커밋이 검증될 수 있도록 당신의 개인 키를 안전하게 유지하십시오.
|
||||
ssh_helper="<strong>도움이 필요하세요?</strong> GitHub의 설명서를 참조하시기 바랍니다: <a href=\"%s\">SSH 키 생성하기</a> 또는 SSH를 사용할 때 <a href=\"%s\">일반적인 문제</a>"
|
||||
gpg_helper="<strong>도움이 필요하세요?</strong> GitHub의 설명서를 참조하시기 바랍니다: <a href=\"%s\">GPG키에 대하여</a>."
|
||||
ssh_helper=<strong>도움이 필요하세요?</strong> <a href="%s">SSH 키 생성하기</a> 또는 <a href="%s">SSH를 사용할 때의 일반적인 문제</a>에 관한 GitHub의 설명서를 참조하시기 바랍니다.
|
||||
gpg_helper=<strong>도움이 필요하세요?</strong> <a href="%s">GPG키에 대한 GitHub 문서</a>를 참조하시기 바랍니다.
|
||||
add_new_key=SSH 키 추가
|
||||
add_new_gpg_key=GPG 키 추가
|
||||
gpg_key_id_used=같은 ID의 GPG 공개키가 이미 존재합니다.
|
||||
|
@ -467,12 +545,12 @@ gpg_key_deletion_desc=GPG 키를 삭제하면 해당 키로 서명 한 커밋은
|
|||
ssh_key_deletion_success=SSH 키가 삭제되었습니다.
|
||||
gpg_key_deletion_success=GPG 키가 삭제되었습니다.
|
||||
valid_forever=영원히 유효
|
||||
last_used=마지막 사용 :
|
||||
last_used=마지막 사용
|
||||
no_activity=최근 활동 없음
|
||||
can_read_info=읽기
|
||||
can_write_info=쓰기
|
||||
key_state_desc=이 키는 최근 1주일 동안 사용된 적이 있습니다.
|
||||
token_state_desc=이 토큰은 최근 1주일 동안 사용된 적이 있습니다.
|
||||
key_state_desc=최근 1주일 동안 사용된 적 있는 키
|
||||
token_state_desc=최근 1주일 동안 사용된 적 있는 토큰
|
||||
show_openid=프로필에 표시
|
||||
hide_openid=프로필에서 숨기기
|
||||
ssh_disabled=SSH 사용불가
|
||||
|
@ -516,7 +594,7 @@ scan_this_image=이 이미지를 당신의 인증 애플리케이션에서 스
|
|||
or_enter_secret=또는 이 비밀키를 입력하세요: %s
|
||||
then_enter_passcode=어플리케이션에 표시된 인증코드를 입력하여 주십시오:
|
||||
passcode_invalid=인증코드가 올바르지 않습니다. 재시도해주십시오.
|
||||
twofa_enrolled=당신의 계정에 2단계 인증이 설정되었습니다. 스크래치 토큰 (%s) 은 한 번만 표시되므로 안전한 장소에 보관하십시오!
|
||||
twofa_enrolled=당신의 계정에 2단계 인증이 설정되었습니다. 스크래치 토큰 (%s) 은 한 번만 표시되므로 안전한 장소에 보관하십시오.
|
||||
|
||||
|
||||
manage_account_links=연결된 계정 관리
|
||||
|
@ -546,19 +624,19 @@ repo_name=저장소 이름
|
|||
repo_name_helper=좋은 저장소 이름은 보통 짧고 기억하기 좋은 특별한 키워드로 이루어 집니다.
|
||||
repo_size=저장소 용량
|
||||
template=템플릿
|
||||
template_select=템플릿 고르기
|
||||
template_helper=템플릿으로 저장소 만들기
|
||||
template_select=템플릿을 선택합니다.
|
||||
template_helper=저장소 템플릿으로 만들기
|
||||
visibility=가시성
|
||||
visibility_helper_forced=사이트 관리자가 새 레포지토리에 대해 비공개로만 생성되도록 하였습니다.
|
||||
visibility_fork_helper=(변경사항을 적용하는 경우 모든 포크가 영향을 받게 됩니다.)
|
||||
clone_helper="클론하는데에 도움이 필요하면 <a target=\"_blank\" href=\"%s\">Help</a>에 방문하세요."
|
||||
clone_helper=클론하는데에 도움이 필요하신가요? <a target="_blank" rel="noopener noreferrer" href="%s">Help</a>에 방문하세요.
|
||||
fork_repo=저장소 포크
|
||||
fork_from=원본 프로젝트 :
|
||||
fork_from=원본 프로젝트
|
||||
fork_visibility_helper=포크된 저장소의 가시성은 변경하실 수 없습니다.
|
||||
use_template=이 템플릿을 사용
|
||||
repo_desc=설명
|
||||
repo_lang=언어
|
||||
repo_gitignore_helper=.gitignore 템플릿 선택
|
||||
repo_gitignore_helper=.gitignore 템플릿을 선택합니다.
|
||||
license=라이센스
|
||||
license_helper=라이센스 파일을 선택해주세요.
|
||||
readme=README
|
||||
|
@ -600,7 +678,7 @@ migrate.permission_denied=로컬 저장소는 가져오기를 할 수 없습니
|
|||
migrate.failed=마이그레이션 실패: %v
|
||||
|
||||
mirror_from=의 미러
|
||||
forked_from=원본 프로젝트 :
|
||||
forked_from=원본 프로젝트
|
||||
fork_from_self=자신의 저장소를 포크 할 수 없습니다.
|
||||
fork_guest_user=로그인하고 Fork 이 창고.
|
||||
unwatch=보지않기
|
||||
|
@ -618,7 +696,7 @@ push_exist_repo=커맨드라인에서 기존 레포지터리 푸시
|
|||
empty_message=이 저장소는 아무런 내용을 가지고 있지 않습니다.
|
||||
|
||||
code=코드
|
||||
code.desc=소스 코드 접근, 파일, 커밋 그리고 브랜치
|
||||
code.desc=소스 코드, 파일, 커밋과 브랜치에 접근합니다.
|
||||
branch=브렌치
|
||||
tree=트리
|
||||
filter_branch_and_tag=브랜치나 태그로 필터
|
||||
|
@ -650,20 +728,20 @@ editor.preview_changes=변경내용 미리보기
|
|||
editor.cannot_edit_non_text_files=바이너리 파일을 웹 인터페이스에서 편집하실 수 없습니다.
|
||||
editor.edit_this_file=파일 편집
|
||||
editor.delete_this_file=파일 삭제
|
||||
editor.name_your_file=파일명을 입력하세요...
|
||||
editor.name_your_file=파일명 입력…
|
||||
editor.or=혹은
|
||||
editor.cancel_lower=취소
|
||||
editor.commit_changes=변경 내용을 커밋
|
||||
editor.commit_message_desc=선택적 확장 설명을 추가...
|
||||
editor.commit_directly_to_this_branch="<strong class=\"branch-name\">%s</strong> 브랜치에서 직접 커밋해주세요."
|
||||
editor.commit_message_desc=선택적 확장 설명 추가…
|
||||
editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> 브랜치에서 직접 커밋해주세요.
|
||||
editor.create_new_branch=이 커밋에 대한 <strong>새로운 브랜치</strong>를 만들고 끌어오기 요청을 시작합니다.
|
||||
editor.new_branch_name_desc=새로운 브랜치 명...
|
||||
editor.new_branch_name_desc=새로운 브랜치 이름…
|
||||
editor.cancel=취소
|
||||
editor.filename_cannot_be_empty=파일명이 빈칸입니다.
|
||||
editor.no_changes_to_show=표시할 변경사항이 없습니다.
|
||||
editor.add_subdir=경로 추가...
|
||||
editor.add_subdir=경로 추가…
|
||||
|
||||
commits.desc=소스 코드 변경 내역 탐색
|
||||
commits.desc=소스 코드 변경 내역을 탐색합니다.
|
||||
commits.commits=커밋
|
||||
commits.search=커밋 찾기...
|
||||
commits.find=검색
|
||||
|
@ -689,7 +767,7 @@ projects.column.edit_title=이름
|
|||
projects.column.new_title=이름
|
||||
|
||||
issues.new=새로운 이슈
|
||||
issues.new.title_empty=제목은 비워둘 수 없습니다.
|
||||
issues.new.title_empty=제목은 비워둘 수 없음
|
||||
issues.new.labels=레이블
|
||||
issues.new.no_label=레이블 없음
|
||||
issues.new.clear_labels=레이블 초기화
|
||||
|
@ -701,7 +779,7 @@ issues.new.closed_milestone=마일스톤 닫기
|
|||
issues.new.assignees=담당자
|
||||
issues.new.clear_assignees=담당자 초기화
|
||||
issues.new.no_assignees=담당자 없음
|
||||
issues.no_ref=Branch/Tag 가 지정되어 있지 않습니다.
|
||||
issues.no_ref=Branch/Tag 가 지정되어 있지 않음
|
||||
issues.create=이슈 생성
|
||||
issues.new_label=새로운 레이블
|
||||
issues.new_label_placeholder=레이블 이름
|
||||
|
@ -750,7 +828,7 @@ issues.action_milestone=마일스톤
|
|||
issues.action_milestone_no_select=마일스톤 없음
|
||||
issues.action_assignee=담당자
|
||||
issues.action_assignee_no_select=담당자 없음
|
||||
issues.opened_by="<a href=\"%[2]s\"> %[3]s</a>가 %[1]s을 오픈"
|
||||
issues.opened_by=<a href="%[2]s"> %[3]s</a>님이 %[1]s에 오픈
|
||||
issues.previous=이전
|
||||
issues.next=다음
|
||||
issues.open_title=오픈
|
||||
|
@ -768,7 +846,7 @@ issues.create_comment=코멘트
|
|||
issues.commit_ref_at=` 커밋 <a id="%[1]s" href="#%[1]s">%[2]s</a>에서 이 이슈 언급`
|
||||
issues.role.owner=소유자
|
||||
issues.role.member=멤버
|
||||
issues.sign_in_require_desc="<a href=\"%s\">로그인</a>하여 이 대화에 참여"
|
||||
issues.sign_in_require_desc=<a href="%s">로그인</a>하여 이 대화에 참여하세요.
|
||||
issues.edit=수정
|
||||
issues.cancel=취소
|
||||
issues.save=저장
|
||||
|
@ -805,20 +883,20 @@ issues.add_time_sum_to_small=시간이 입력되지 않았습니다.
|
|||
issues.time_spent_total=총 경과된 시간
|
||||
issues.time_spent_from_all_authors=`총 경과된 시간: %s`
|
||||
issues.due_date=마감일
|
||||
issues.invalid_due_date_format="마감일은 반드시 'yyyy-mm-dd' 형식이어야 합니다."
|
||||
issues.error_modifying_due_date="마감일 수정을 실패하였습니다."
|
||||
issues.error_removing_due_date="마감일 삭제를 실패하였습니다."
|
||||
issues.invalid_due_date_format=마감일은 반드시 "yyyy-mm-dd" 형식이어야 합니다.
|
||||
issues.error_modifying_due_date=마감일 수정을 실패하였습니다.
|
||||
issues.error_removing_due_date=마감일 삭제를 실패하였습니다.
|
||||
issues.due_date_form=yyyy-mm-dd
|
||||
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_remove=%s %s 마감일이 삭제됨
|
||||
issues.due_date_overdue="기한 초과"
|
||||
issues.due_date_invalid="기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오."
|
||||
issues.due_date_invalid=기한이 올바르지 않거나 범위를 벗어났습니다. "yyyy-mm-dd"형식을 사용해주십시오.
|
||||
issues.dependency.title=의존성
|
||||
issues.dependency.add=의존성 추가...
|
||||
issues.dependency.add=의존성 추가…
|
||||
issues.dependency.cancel=취소
|
||||
issues.dependency.remove=제거
|
||||
issues.dependency.remove_info=이 의존성 제거
|
||||
|
@ -848,9 +926,9 @@ pulls.compare_changes=새 풀 리퀘스트
|
|||
pulls.compare_base=병합하기
|
||||
pulls.compare_compare=다음으로부터 풀
|
||||
pulls.filter_branch=Filter Branch
|
||||
pulls.no_results=결과 없음
|
||||
pulls.no_results=결과를 찾을 수 없습니다.
|
||||
pulls.create=풀 리퀘스트 생성
|
||||
pulls.title_desc_few="<code>%[2]s</code> 에서 <code id=\"branch_target\">%[3]s</code> 로 %[1]d commits 를 머지하려 합니다"
|
||||
pulls.title_desc_few=<code>%[2]s</code> 에서 <code id="branch_target">%[3]s</code> 로 %[1]d개의 커밋들을 머지하려 합니다
|
||||
pulls.merged_title_desc_few=<code>%[2]s</code> 에서 <code>%[3]s</code> 로 %[1]d commits 를 머지했습니다 %[4]s
|
||||
pulls.tab_conversation=대화
|
||||
pulls.tab_commits=커밋
|
||||
|
@ -875,13 +953,13 @@ milestones.closed=닫힘 %s
|
|||
milestones.no_due_date=기한 없음
|
||||
milestones.open=열기
|
||||
milestones.close=닫기
|
||||
milestones.completeness=%d%% 완료됨
|
||||
milestones.completeness=<strong>%d%%</strong> 완료됨
|
||||
milestones.create=마일스톤 생성
|
||||
milestones.title=타이틀
|
||||
milestones.desc=설명
|
||||
milestones.due_date=기한 (선택 사항)
|
||||
milestones.clear=지우기
|
||||
milestones.invalid_due_date_format="마감일은 반드시 'yyyy-mm-dd' 형식이어야 합니다."
|
||||
milestones.invalid_due_date_format=마감일은 반드시 "yyyy-mm-dd" 형식이어야 합니다.
|
||||
milestones.edit=마일스톤 편집
|
||||
milestones.cancel=취소
|
||||
milestones.modify=마일스톤 갱신
|
||||
|
@ -897,14 +975,14 @@ milestones.filter_sort.least_issues=이슈 적은 순
|
|||
ext_wiki.desc=외부 위키에 연결하기.
|
||||
|
||||
wiki=위키
|
||||
wiki.welcome=위키에 오신것을 환영합니다!
|
||||
wiki.welcome_desc=Wiki를 사용하여 공동 작업자들과 문서를 작성 하고 공유 할 수 있습니다.
|
||||
wiki.desc=공동 작업자들과 문서 작성 및 공유.
|
||||
wiki.welcome=위키에 오신것을 환영합니다.
|
||||
wiki.welcome_desc=Wiki를 사용하여 협업자들과 문서를 작성 하고 공유 할 수 있습니다.
|
||||
wiki.desc=협업자들과 문서 작성 및 공유.
|
||||
wiki.create_first_page=첫 페이지 작성
|
||||
wiki.page=페이지
|
||||
wiki.filter_page=페이지 필터링
|
||||
wiki.new_page=페이지
|
||||
wiki.default_commit_message=이 페이지에 대한 메모를 작성하세요.(선택사항)
|
||||
wiki.default_commit_message=이 페이지 수정에 대한 메모를 작성하세요.(선택사항)
|
||||
wiki.save_page=페이지 저장하기
|
||||
wiki.last_commit_info=%s이(가) %s에 이 페이지를 수정함
|
||||
wiki.edit_page_button=수정하기
|
||||
|
@ -930,8 +1008,8 @@ 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_opened_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=제안중
|
||||
activity.active_issues_count_1=<strong>%d</strong> 개의 활성화된 이슈
|
||||
|
@ -940,7 +1018,7 @@ activity.closed_issues_count_1=클로즈된 이슈
|
|||
activity.closed_issues_count_n=클로즈된 이슈
|
||||
activity.title.issues_1=이슈 %d개
|
||||
activity.title.issues_n=이슈 %d개
|
||||
activity.title.issues_created_by=%s 가 %s 에 의해 생성되었습니다.
|
||||
activity.title.issues_created_by=%s 가 %s 에 의해 생성됨
|
||||
activity.closed_issue_label=닫힘
|
||||
activity.new_issues_count_1=새로운 이슈
|
||||
activity.new_issues_count_n=새로운 이슈
|
||||
|
@ -951,7 +1029,7 @@ activity.unresolved_conv_desc=최근 변경된 이슈나 풀 리퀘스트들이
|
|||
activity.unresolved_conv_label=열기
|
||||
activity.title.releases_1=%d 개의 릴리즈
|
||||
activity.title.releases_n=%d 개의 릴리즈
|
||||
activity.title.releases_published_by=%s 가 %s 에 의하여 배포되었습니다.
|
||||
activity.title.releases_published_by=%s 가 %s 에 의하여 배포됨
|
||||
activity.published_release_label=배포됨
|
||||
|
||||
contributors.contribution_type.commits=커밋
|
||||
|
@ -962,9 +1040,9 @@ search.results="<a href=\"%s\">%s</a> 에서 \"%s\" 에 대한 검색 결과"
|
|||
search.code_no_results=검색어와 일치하는 소스코드가 없습니다.
|
||||
|
||||
settings=설정
|
||||
settings.desc=설정은 저장소 설정을 관리할 수 있습니다.
|
||||
settings.desc=설정에서 저장소 설정을 관리할 수 있음
|
||||
settings.options=저장소
|
||||
settings.collaboration=공동작업자
|
||||
settings.collaboration=협업자
|
||||
settings.collaboration.admin=관리자
|
||||
settings.collaboration.write=쓰기
|
||||
settings.collaboration.read=읽기
|
||||
|
@ -980,12 +1058,12 @@ settings.site=웹 사이트
|
|||
settings.update_settings=설정 저장
|
||||
settings.advanced_settings=고급 설정
|
||||
settings.wiki_desc=저장소 위키 활성화
|
||||
settings.use_internal_wiki=빌트-인 위키 사용
|
||||
settings.use_internal_wiki=내장 위키 사용
|
||||
settings.use_external_wiki=외부 위키 사용
|
||||
settings.external_wiki_url=외부 위키 URL
|
||||
settings.external_wiki_url_error=외부 위키 URL이 올바른 URL이 아닙니다.
|
||||
settings.issues_desc=저장소 이슈 트래커 활성화
|
||||
settings.use_internal_issue_tracker=빌트-인 트래커 사용
|
||||
settings.use_internal_issue_tracker=내장 이슈 트래커 사용
|
||||
settings.use_external_issue_tracker=외부 이슈 트래커 사용
|
||||
settings.external_tracker_url=외부 이슈 트래커 URL
|
||||
settings.external_tracker_url_error=외부 이슈 트래커 URL이 올바른 URL이 아닙니다.
|
||||
|
@ -1005,28 +1083,28 @@ settings.convert=일반 저장소로 변환
|
|||
settings.convert_confirm=저장소 변환
|
||||
settings.convert_fork=일반 저장소로 변환
|
||||
settings.convert_fork_confirm=저장소 변환
|
||||
settings.transfer=소유권 이전
|
||||
settings.transfer.title=소유권 이전
|
||||
settings.transfer_owner=새 소유자
|
||||
settings.transfer_succeed=저장소가 이전 되었습니다.
|
||||
settings.trust_model.collaborator=협업자
|
||||
settings.wiki_delete=위키 데이터 삭제
|
||||
settings.confirm_wiki_delete=위키 데이터 삭제
|
||||
settings.delete=이 저장소 삭제
|
||||
settings.delete_notices_1=- 이 작업은 취소할 수 <strong>없습니다.</strong>
|
||||
settings.delete_notices_1=- 이 작업은 <strong>취소할 수 없습니다</strong>.
|
||||
settings.deletion_success=저장소가 삭제되었습니다.
|
||||
settings.update_settings_success=저장소 설정이 갱신되었습니다.
|
||||
settings.confirm_delete=저장소 삭제
|
||||
settings.add_collaborator=새 공동작업자 추가
|
||||
settings.add_collaborator_success=공동작업자가 추가 되었습니다.
|
||||
settings.add_collaborator=새 협업자 추가
|
||||
settings.add_collaborator_success=협업자가 추가 되었습니다.
|
||||
settings.delete_collaborator=제거
|
||||
settings.collaborator_deletion=공동작업자 삭제
|
||||
settings.collaborator_deletion=협업자 삭제
|
||||
settings.search_user_placeholder=사용자 검색...
|
||||
settings.teams=팀
|
||||
settings.add_webhook=Webhook 추가
|
||||
settings.webhook_deletion=Webhook 삭제
|
||||
settings.webhook_deletion_success=Webhook을 삭제했습니다.
|
||||
settings.webhook.test_delivery=전달 시험
|
||||
settings.webhook.test_delivery_desc=이 웹훅을 가상 이벤트로 테스트
|
||||
settings.webhook.test_delivery_desc=이 웹훅을 가상 이벤트로 테스트합니다.
|
||||
settings.webhook.request=요청
|
||||
settings.webhook.response=응답
|
||||
settings.webhook.headers=제목
|
||||
|
@ -1046,7 +1124,7 @@ settings.discord_icon_url=아이콘 URL
|
|||
settings.event_desc=트리거:
|
||||
settings.event_push_only=푸시 이벤트
|
||||
settings.event_send_everything=모든 이벤트
|
||||
settings.event_choose=사용자 정의 이벤트...
|
||||
settings.event_choose=사용자 정의 이벤트…
|
||||
settings.event_create=생성
|
||||
settings.event_create_desc=브랜치 또는 태그가 생성되었습니다.
|
||||
settings.event_delete=삭제
|
||||
|
@ -1055,7 +1133,7 @@ settings.event_wiki=위키
|
|||
settings.event_release=릴리즈
|
||||
settings.event_release_desc=릴리즈가 저장소에서 배포, 갱신 또는 제거되었습니다.
|
||||
settings.event_push=푸시
|
||||
settings.event_push_desc=저장소로 푸시
|
||||
settings.event_push_desc=저장소로 푸시합니다.
|
||||
settings.event_repository=저장소
|
||||
settings.event_repository_desc=저장소가 생성되거나 삭제됩니다.
|
||||
settings.event_issues=이슈
|
||||
|
@ -1165,6 +1243,37 @@ branch.deleted_by=%s 에 의해 삭제되었습니다.
|
|||
topic.manage_topics=토픽 관리
|
||||
topic.done=완료
|
||||
topic.count_prompt=25개 이상의 토픽을 선택하실 수 없습니다.
|
||||
settings.trust_model.collaboratorcommitter.desc = 이 저장소의 협업자가 작성한 유효한 서명이 커미터와 일치하는 경우 "신뢰할 수 있음"으로 표시됩니다. 협업자가 아니되 유효한 서명이 커미터와 일치하면 "신뢰할 수 없음"으로 표시되고 그렇지 않으면 "일치하지 않음"으로 표시됩니다. 커밋에 Co-Authored-By: 또는 Co-Committed-By: 트레일러로 표시된 실제 커미터와 함께 서명된 커밋이 있다면 Forgejo가 커미터로 표시됩니다. 기본 Forgejo 키는 데이터베이스의 사용자와 일치해야 합니다.
|
||||
settings.matrix.access_token_helper = 이 작업을 위한 개별적인 Matrix 계정을 만드는것이 권장됩니다. 엑세스 토큰은 Element 웹 클라이언트(개인정보 보호 브라우징 권장) > 유저 메뉴(좌상단) > All settings > Help & About > Advanced > Access Token (홈서버 주소 바로 아래) 에서 찾을 수 있습니다. 로그아웃시 토큰이 만료됨을 주의하시고, 창을 닫아주세요.
|
||||
settings.trust_model.collaboratorcommitter = 협업자+커미터
|
||||
settings.signing_settings = 서명 검증 설정
|
||||
settings.trust_model.collaborator.desc = 이 저장소의 협업자들의 유효한 서명은 "신뢰됨"으로 표시됩니다 (커미터와 일치하지 않는 경우를 포함). 아닌경우, 커미터와 일치하는 유효한 서명은 "신뢰되지 않음"으로 표시되고, 일치하지도 않는경우 "일치하지 않움" 으로 표시됩니다.
|
||||
settings.trust_model.committer.long = 커미터: 커미터와 일치하는 서명을 신뢰(GIthub와 일치하며 Forgejo로 서명된 커밋이 Fogejo를 커미터로 갖도록 강제합니다.)
|
||||
settings.trust_model.collaboratorcommitter.long = 협업자+커미터: 커미터가 일치하는 협업자의 서명을 신뢰
|
||||
settings.trust_model.default = 기본 신뢰 모델
|
||||
settings.trust_model.default.desc = 이 설치에 대한 기본 신뢰 모델을 사용합니다.
|
||||
settings.trust_model.collaborator.long = 협업자: 협업자들의 서명을 신뢰
|
||||
settings.trust_model = 서명 신뢰 모델
|
||||
settings.trust_model.committer.desc = 유효한 서명이 커미터와 일치할경우 "신뢰됨"으로, 일치하지 않을경우 "일치하지 않음"으로 표시됩니다. 이러한 경우 Forgejo가 커미터로 표시되도록 강제되며 실제 커미터는 Co-authored-by: 와 Co-committed-by: 트레일러로 표시됩니다. 기본 Forgejo 키는 데이터베이스의 유저와 일치해야 합니다.
|
||||
visibility_helper = 저장소 비공개로 만들기
|
||||
projects.description = 설명 (선택)
|
||||
settings.external_tracker_url_desc = 방문자들이 이슈 탭을 클릭하면 외부 이슈 트레커 URL로 연결됩니다.
|
||||
settings.tracker_url_format_desc = <code>{user}</code>, <code>{repo}</code> and <code>{index}</code>를 사용자 이름, 저장소 이름, 이슈 번호로 사용할 수 있습니다.
|
||||
projects = 프로젝트
|
||||
projects.desc = 이슈와 풀 리퀘스트를 프로젝트에서 관리합니다.
|
||||
projects.create = 프로젝트 만들기
|
||||
project_board = 프로젝트
|
||||
projects.create_success = "%s" 프로젝트가 생성되었습니다.
|
||||
projects.deletion = 프로젝트 삭제
|
||||
projects.deletion_desc = 프로젝트를 삭제하면 관련된 모든 이슈에서 해당 프로젝트가 제거됩니다. 계속하시겠습니까?
|
||||
projects.deletion_success = 프로젝트가 삭제되었습니다.
|
||||
projects.edit = 프로젝트 수정
|
||||
projects.new_subheader = 한 곳에서 당신의 작업을 조정, 추적, 업데이트해 프로젝트를 일정대로 투명하게 유지하세요.
|
||||
pulls.approve_count_n = %명의 승인
|
||||
pulls.approve_count_1 = %d명의 승인
|
||||
pulls.blocked_by_approvals = 이 풀 리퀘스트는 충분히 승인되지 않았습니다. %d/%d 승인됨.
|
||||
settings.event_pull_request_approvals = 풀 리퀘스트 승인
|
||||
pulls.blocked_by_official_review_requests = 이 풀 리퀘스트는 공식 검토자에 의한 승인이 부족하여 차단되었습니다.
|
||||
|
||||
|
||||
|
||||
|
@ -1412,7 +1521,7 @@ config.reverse_auth_user=역방향 사용자 인증
|
|||
|
||||
config.ssh_config=SSH 설정
|
||||
config.ssh_enabled=활성화됨
|
||||
config.ssh_start_builtin_server=빌트-인 서버 사용
|
||||
config.ssh_start_builtin_server=내장 서버 사용
|
||||
config.ssh_port=포트
|
||||
config.ssh_listen_port=수신 대기 포트
|
||||
config.ssh_root_path=최상위 경로
|
||||
|
@ -1529,6 +1638,7 @@ notices.type_1=저장소
|
|||
notices.desc=설명
|
||||
notices.op=일.
|
||||
notices.delete_success=시스템 알림이 삭제되었습니다.
|
||||
users.allow_git_hook_tooltip = Git 훅은 Forgejo가 실행중인 OS 유저로 실행되며 같은 수준의 권한을 갖습니다. 결과적으로, Git 훅 사용권한이 있는 사용자는 Forgejo에서 사용하는 데이터베이스를 포함한 모든 저장소에 접근하거나 수정할 수 있습니다. 궁극적으로 이러한 사용자들은 Forgejo의 관리자 권한을 획득할 수 있습니다.
|
||||
|
||||
|
||||
[action]
|
||||
|
@ -1536,6 +1646,7 @@ create_repo=저장소를 만들었습니다. <a href="%s">%s</a>
|
|||
rename_repo=<code>%[1]s에서</code>에서 <a href="%[2]s"> %[3]s</a>으로 저장소 이름을 바꾸었습니다.
|
||||
transfer_repo=<code>%s</code>에서 <a href="%s">%s</a>로 저장소가 전송되었습니다.
|
||||
compare_commits=%d 커밋들 비교
|
||||
watched_repo = <a href="%[1]s">%[2]s</a>에대한 감시를 시작합니다
|
||||
|
||||
[tool]
|
||||
now=현재
|
||||
|
@ -1572,6 +1683,9 @@ pin=알림 고정
|
|||
mark_as_read=읽음으로 표시
|
||||
mark_as_unread=읽지 않음으로 표시
|
||||
mark_all_as_read=모두 읽음으로 표시
|
||||
subscriptions = 구독된 알림
|
||||
no_subscriptions = 알림이 없음
|
||||
watching = 감시
|
||||
|
||||
[gpg]
|
||||
error.extract_sign=서명 추출에 실패
|
||||
|
@ -1613,3 +1727,11 @@ runs.commit=커밋
|
|||
[git.filemode]
|
||||
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
|
||||
|
||||
|
||||
|
||||
[search]
|
||||
code_search_by_git_grep = 현재 코드 검색 결과는 "git grep"에 의해 제공됩니다.관리자가 코드 인덱서를 활성화하면 더 나은 결과가 제공될 수 있습니다.
|
||||
branch_kind = 브랜치 검색...
|
||||
keyword_search_unavailable = 지금은 키워드로 검색이 지원되지 않습니다. 사이트 관리자에게 문의하십시오.
|
||||
commit_kind = 커밋 검색...
|
||||
no_results = 일치하는 결과를 찾을 수 없습니다.
|
|
@ -2080,7 +2080,7 @@ settings.convert_fork_desc=Jūs varat nomainīt šo atdalīto repozitoriju kā n
|
|||
settings.convert_fork_notices_1=Šī darbība mainīs atdalīto repozitoriju uz neatkarīgu repozitoriju un ir neatgriezeniska.
|
||||
settings.convert_fork_confirm=Konvertēt repozitoriju
|
||||
settings.convert_fork_succeed=Atdalītais repozitorijs tika izmainīts par neatkarīgu repozitoriju.
|
||||
settings.transfer=Mainīt īpašnieku
|
||||
settings.transfer.title=Mainīt īpašnieku
|
||||
settings.transfer.rejected=Repozitorija īpašnieka maiņas pieprasījums tika noraidīts.
|
||||
settings.transfer.success=Repozitorija īpašnieka maiņa veiksmīga.
|
||||
settings.transfer_abort=Atcelt īpašnieka maiņu
|
||||
|
|
|
@ -157,6 +157,7 @@ filter = Filter
|
|||
filter.not_archived = Niet gearchiveerd
|
||||
more_items = Meer items
|
||||
invalid_data = Ongeldige data: %v
|
||||
copy_generic = Kopieer naar klembord
|
||||
|
||||
[aria]
|
||||
navbar = Navigatiebalk
|
||||
|
@ -629,6 +630,12 @@ org_still_own_packages = Deze organisatie is eigenaar van één of meer pakkette
|
|||
unset_password = De inloggebruiker heeft het wachtwoord niet ingesteld.
|
||||
unsupported_login_type = Het aanmeldtype wordt niet ondersteund om accounts te verwijderen.
|
||||
required_prefix = De tekst moet beginnen met "%s"
|
||||
Biography = Biografie
|
||||
Location = Locatie
|
||||
Description = Beschrijving
|
||||
FullName = Volledige naam
|
||||
To = Branch naam
|
||||
Website = Website
|
||||
|
||||
|
||||
[user]
|
||||
|
@ -2473,7 +2480,7 @@ settings.reindex_button = Toevoegen aan herindexeringswachtrij
|
|||
settings.reindex_requested = Herindexering aangevraagd
|
||||
settings.danger_zone = Gevaren zone
|
||||
settings.new_owner_has_same_repo = De nieuwe eigenaar heeft al een repository met dezelfde naam. Kies een andere naam.
|
||||
settings.transfer = Eigendom overdragen
|
||||
settings.transfer.title = Eigendom overdragen
|
||||
settings.transfer.success = Repository overdracht was succesvol.
|
||||
settings.transfer_abort = Overdracht annuleren
|
||||
settings.transfer_abort_success = De repository overdracht naar %s is succesvol geannuleerd.
|
||||
|
|
|
@ -143,7 +143,7 @@ show_log_seconds = Pokaż sekundy
|
|||
show_full_screen = Pokaż pełny ekran
|
||||
download_logs = Pobierz logi
|
||||
confirm_delete_selected = Potwierdzić usunięcie wszystkich wybranych elementów?
|
||||
filter.is_template = Szablon
|
||||
filter.is_template = Szablony
|
||||
filter.public = Publiczne
|
||||
filter.private = Prywatne
|
||||
copy_generic = Skopiuj do schowka
|
||||
|
@ -152,10 +152,11 @@ tracked_time_summary = Podsumowanie śledzonego czasu na podstawie filtrów list
|
|||
show_timestamps = Pokaż znaczniki czasu
|
||||
filter.not_archived = Nie zarchiwizowane
|
||||
filter.not_mirror = Nie lustrzane odbicie
|
||||
filter.not_template = Nie szablon
|
||||
filter.not_template = Nie szablony
|
||||
filter.is_archived = Zarchiwizowane
|
||||
filter.is_mirror = Lustrzane odbicie
|
||||
filter.is_mirror = Kopie lustrzane
|
||||
more_items = Więcej elementów
|
||||
filter.is_fork = Forki
|
||||
|
||||
[aria]
|
||||
navbar = Pasek nawigacji
|
||||
|
@ -167,6 +168,10 @@ footer.links = Linki
|
|||
contributions_format = {contributions} w dniu {month} {day}, {year}
|
||||
less = Mniej
|
||||
more = Więcej
|
||||
number_of_contributions_in_the_last_12_months = %s wkładów w ciągu ostatnich 12 miesięcy
|
||||
contributions_zero = Brak wkładów
|
||||
contributions_one = Wkład
|
||||
contributions_few = Wkłady
|
||||
|
||||
[editor]
|
||||
buttons.heading.tooltip = Dodaj nagłówek
|
||||
|
@ -206,7 +211,7 @@ lightweight=Niskie wymagania
|
|||
lightweight_desc=Forgejo ma niskie minimalne wymagania i może działać na niedrogim Raspberry Pi. Oszczędzaj energię swojego komputera!
|
||||
license=Otwarte źródło
|
||||
license_desc=Pobierz na <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">Forgejo</a>! Dołącz do nas dzięki <a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">swojemu wkładowi</a>, aby uczynić ten projekt jeszcze lepszym. Nie wstydź się zostać współtwórcą!
|
||||
install_desc = Po prostu <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#installation-from-binary">uruchom plik binarny</a> dla swojej platformy, dostarcz ją za pomocą <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#container-image">Dockera</a>, lub weż wersję<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">zapakowaną</a>.
|
||||
install_desc = Po prostu <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#installation-from-binary">uruchom plik binarny</a> dla swojej platformy, dostarcz ją za pomocą <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#container-image">Dockera</a>, lub użyj wersji <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">zapakowanej</a>.
|
||||
|
||||
[install]
|
||||
install=Instalacja
|
||||
|
@ -367,6 +372,9 @@ go_to = Przejdź do
|
|||
relevant_repositories = Wyświetlane są tylko istotne repozytoria, <a href="%s">pokaż niefiltrowane wyniki</a>.
|
||||
stars_one = %d gwiazdka
|
||||
stars_few = %d gwiazdek
|
||||
forks_one = %d fork
|
||||
forks_few = %d forki
|
||||
relevant_repositories_tooltip = Repozytoria, które nie są forkami lub nie mają tematu, ikony i opisu są ukryte.
|
||||
|
||||
[auth]
|
||||
create_new_account=Zarejestruj konto
|
||||
|
@ -431,10 +439,23 @@ prohibit_login_desc = Twoje konto jest zablokowane, skontaktuj się z administra
|
|||
change_unconfirmed_email_summary = Zmień adres e-mail, na który zostanie wysłana wiadomość aktywacyjna.
|
||||
manual_activation_only = Skontaktuj się z administratorem witryny, aby dokończyć aktywację.
|
||||
change_unconfirmed_email = Jeśli podczas rejestracji podałeś nieprawidłowy adres e-mail, możesz go zmienić poniżej, a potwierdzenie zostanie wysłane na nowy adres.
|
||||
openid_signin_desc = Wprowadź swój identyfikator URI OpenID. Na przykład: alice.openid.example.org lub https://openid.example.org/alice.
|
||||
authorization_failed_desc = Autoryzacja nie powiodła się, ponieważ wykryliśmy nieprawidłowe żądanie. Skontaktuj się z autorem aplikacji, którą próbowałeś autoryzować.
|
||||
password_pwned = Wybrane hasło znajduje się na <a target="_blank" rel="noopener noreferrer" href="https://haveibeenpwned.com/Passwords">liście skradzionych haseł</a>, które zostały wcześniej ujawnione w wyniku publicznego naruszenia danych. Spróbuj ponownie z innym hasłem i rozważ zmianę tego hasła również w innych miejscach.
|
||||
last_admin = Nie można usunąć ostatniego administratora. Musi istnieć co najmniej jeden administrator.
|
||||
tab_signin = Zaloguj
|
||||
oauth.signin.error = Wystąpił błąd podczas przetwarzania żądania autoryzacji. Jeśli ten błąd nadal występuje, skontaktuj się z administratorem witryny.
|
||||
change_unconfirmed_email_error = Nie udało się zmienić adresu email: %v
|
||||
invalid_code_forgot_password = Twój kod potwierdzający jest niepoprawny lub wygasł. Naciśnij <a href="%s">tutaj</a>, aby rozpocząć nową sesję.
|
||||
invalid_password = Twoje hasło nie zgadza się z hasłem, które zostało użyte do stworzenia konta.
|
||||
reset_password_wrong_user = Jesteś zalogowany jako %s, ale link odzyskujący jest dla %s
|
||||
tab_signup = Zarejestruj
|
||||
oauth.signin.error.access_denied = Wniosek o autoryzację został odrzucony.
|
||||
oauth.signin.error.temporarily_unavailable = Autoryzacja nie powiodła się, ponieważ serwer uwierzytelniania jest tymczasowo niedostępny. Spróbuj ponownie później.
|
||||
|
||||
[mail]
|
||||
view_it_on=Zobacz na %s
|
||||
link_not_working_do_paste=Nie działa? Spróbuj skopiować i wkleić go do przeglądarki.
|
||||
link_not_working_do_paste=Czy link nie działa? Spróbuj skopiować i wkleić go do paska adresu URL przeglądarki.
|
||||
hi_user_x=Cześć <b>%s</b>,
|
||||
|
||||
activate_account=Aktywuj swoje konto
|
||||
|
@ -448,12 +469,12 @@ activate_email.text=Aby zweryfikować swój adres e-mail, w ciągu następnych <
|
|||
register_notify=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.
|
||||
register_notify.text_3=Jeśli to konto zostało utworzone dla Ciebie, <a href="%s">ustaw swoje hasło</a>.
|
||||
register_notify.text_2=Możesz teraz zalogować się za pomocą nazwy użytkownika: %s
|
||||
register_notify.text_3=Jeśli ktoś inny utworzył dla ciebie to konto, musisz najpierw <a href="%s">ustawić swoje hasło</a>.
|
||||
|
||||
reset_password=Odzyskaj swoje konto
|
||||
reset_password.title=%s, prosiłeś o odzyskanie konta
|
||||
reset_password.text=Kliknij poniższy link, aby odzyskać swoje konto w ciągu <b>%s</b>:
|
||||
reset_password.title=%s, otrzymaliśmy prośbę o odzyskanie konta
|
||||
reset_password.text=Jeśli to byłeś ty, kliknij poniższy link, aby odzyskać swoje konto w ciągu <b>%s</b>:
|
||||
|
||||
register_success=Rejestracja powiodła się
|
||||
|
||||
|
@ -477,13 +498,24 @@ release.downloads=Pobierz:
|
|||
release.download.zip=Kod źródłowy (ZIP)
|
||||
release.download.targz=Kod źródłowy (TAR.GZ)
|
||||
|
||||
repo.transfer.subject_to=%s chciałby przenieść "%s" do %s
|
||||
repo.transfer.subject_to_you=%s chciałby przenieść "%s" do ciebie
|
||||
repo.transfer.subject_to=%s chce przenieść repozytorium "%s" do %s
|
||||
repo.transfer.subject_to_you=%s chce przenieść repozytorium "%s" do ciebie
|
||||
repo.transfer.to_you=ciebie
|
||||
repo.transfer.body=Aby zaakceptować lub odrzucić go, odwiedź %s lub po prostu go zignoruj.
|
||||
|
||||
repo.collaborator.added.subject=%s dodał Cię do %s
|
||||
repo.collaborator.added.text=Zostałeś dodany jako współtwórca repozytorium:
|
||||
repo.collaborator.added.subject=%s dodał cię do %s jako współtwórce
|
||||
repo.collaborator.added.text=Zostałeś dodany jako współtwórca do repozytorium:
|
||||
issue.action.push_1 = <b>@%[1]s</b> pchnął %[3]d commit do %[2]s
|
||||
activate_email.title = %s, zweryfikuj swój adres e-mail
|
||||
admin.new_user.text = <a href="%s">Kliknij tutaj</a>, aby zarządzać tym użytkownikiem z panelu administracyjnego.
|
||||
issue.action.push_n = <b>@%[1]s</b> pchnął %[3]d commity do %[2]s
|
||||
reply = lub odpowiedz bezpośrednio na ten e-mail
|
||||
admin.new_user.subject = Właśnie zarejestrował się nowy użytkownik %s
|
||||
admin.new_user.user_info = Informacje użytkownika
|
||||
issue.action.approve = <b>@%[1]s</b> zatwierdził ten pull request.
|
||||
issue.action.reject = <b>@%[1]s</b> poprosił o zmiany w tym pull requescie.
|
||||
issue.action.review_dismissed = <b>@%[1]s</b> odrzucił ostatnią analizę od %[2]s dla tego pull requesta.
|
||||
team_invite.subject = %[1]s zaprosił cię do dołączenia do organizacji %[2]s
|
||||
|
||||
|
||||
[modal]
|
||||
|
@ -1633,7 +1665,7 @@ settings.convert_fork_desc=Możesz przekonwertować ten fork w zwykłe repozytor
|
|||
settings.convert_fork_notices_1=Ta operacja przekonwertuje fork w zwykłe repozytorium i nie może być cofnięta.
|
||||
settings.convert_fork_confirm=Konwertuj repozytorium
|
||||
settings.convert_fork_succeed=Fork został przekonwertowany w zwykłe repozytorium.
|
||||
settings.transfer=Przeniesienie własności
|
||||
settings.transfer.title=Przeniesienie własności
|
||||
settings.transfer.rejected=Przeniesienie repozytorium zostało odrzucone.
|
||||
settings.transfer.success=Przeniesienie repozytorium powiodło się.
|
||||
settings.transfer_abort=Anuluj transfer
|
||||
|
|
|
@ -247,9 +247,9 @@ run_user_helper=O nome de usuário do sistema operacional com o qual o Forgejo
|
|||
domain=Domínio do servidor
|
||||
domain_helper=Domínio ou endereço de host para o servidor.
|
||||
ssh_port=Porta do servidor SSH
|
||||
ssh_port_helper=Número da porta que seu servidor SSH está usando. Deixe em branco para desabilitar.
|
||||
http_port=Porta HTTP de uso do Forgejo
|
||||
http_port_helper=Número da porta que o servidor web do Forgejo irá usar.
|
||||
ssh_port_helper=Número da porta que será utilizada pelo servidor SSH. Deixe em branco para desabilitar.
|
||||
http_port=Porta HTTP
|
||||
http_port_helper=Número da porta que será usada pelo servidor web do Forgejo.
|
||||
app_url=URL base
|
||||
app_url_helper=Endereço base para URLs clone HTTP(S) e notificações por e-mail.
|
||||
log_root_path=Caminho dos arquivos de registro
|
||||
|
@ -304,20 +304,20 @@ invalid_admin_setting=Configuração da conta de administrador está inválida:
|
|||
invalid_log_root_path=Pasta raíz do log está inválida: %v
|
||||
default_keep_email_private=Ocultar endereços de e-mail por padrão
|
||||
default_keep_email_private_popup=Ocultar endereços de e-mail de novas contas de usuário por padrão.
|
||||
default_allow_create_organization=Permitir a criação de organizações por padrão
|
||||
default_allow_create_organization=Permitir a criação de organizações
|
||||
default_allow_create_organization_popup=Permitir que novas contas de usuários criem organizações por padrão.
|
||||
default_enable_timetracking=Habilitar o Cronômetro por Padrão
|
||||
default_enable_timetracking_popup=Habilitar o cronômetro para novos repositórios por padrão.
|
||||
no_reply_address=Domínio de e-mail oculto
|
||||
no_reply_address_helper=Nome de domínio para usuários com um endereço de e-mail oculto. Por exemplo, o nome de usuário 'joe' será registrado no Git como 'joe@noreply.example.org' se o domínio de e-mail oculto estiver definido como 'noreply.example.org'.
|
||||
password_algorithm=Algoritmo Hash de Senha
|
||||
password_algorithm=Algoritmo de hash de senhas
|
||||
invalid_password_algorithm=Algoritmo de hash de senha inválido
|
||||
password_algorithm_helper=Escolha o algoritmo de hash para as senhas. Diferentes algoritmos têm requerimentos e forças diversos. O algoritmo argon2 é bastante seguro, mas usa muita memória e pode ser inapropriado para sistemas com menos recursos.
|
||||
enable_update_checker=Habilitar Verificador de Atualizações
|
||||
enable_update_checker=Verificar por atualizações automaticamente
|
||||
env_config_keys=Configuração do ambiente
|
||||
env_config_keys_prompt=As seguintes variáveis de ambiente também serão aplicadas ao seu arquivo de configuração:
|
||||
allow_dots_in_usernames = Permitir pontos em nomes de usuário. Esta opção não afeta contas já existentes.
|
||||
enable_update_checker_helper_forgejo = Confere periodicamente um registro de DNS TXT em release.forgejo.org para verificar se há uma nova versão do Forgejo disponível.
|
||||
enable_update_checker_helper_forgejo = Confere periodicamente um registro TXT de DNS em release.forgejo.org para verificar se há uma nova versão do Forgejo disponível.
|
||||
|
||||
[home]
|
||||
uname_holder=Usuário ou e-mail
|
||||
|
@ -326,7 +326,7 @@ switch_dashboard_context=Trocar contexto do painel de controle
|
|||
my_repos=Repositórios
|
||||
show_more_repos=Mostrar mais repositórios…
|
||||
collaborative_repos=Repositórios colaborativos
|
||||
my_orgs=Minhas organizações
|
||||
my_orgs=Organizações
|
||||
my_mirrors=Meus espelhos
|
||||
view_home=Ver %s
|
||||
search_repos=Encontre um repositório…
|
||||
|
@ -464,12 +464,12 @@ activate_email.text=Por favor clique no link a seguir para verificar o seu ender
|
|||
register_notify=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=Agora você pode entrar com o nome de usuário: %s.
|
||||
register_notify.text_3=Se esta conta foi criada para você, <a href="%s">defina sua senha</a> primeiro.
|
||||
register_notify.text_2=Você pode fazer login em sua conta utilizando o usuário: %s
|
||||
register_notify.text_3=Se outra pessoa criou esta conta para você, é preciso <a href="%s">definir a sua senha</a> primeiro.
|
||||
|
||||
reset_password=Recuperar sua conta
|
||||
reset_password.title=%s, recebemos um pedido para recuperar a sua conta
|
||||
reset_password.text=Por favor clique no link a seguir para recuperar sua conta em <b>%s</b>:
|
||||
reset_password.text=Caso tenha solicitado, clique no link a seguir para recuperar a sua conta dentro de <b>%s</b>:
|
||||
|
||||
register_success=Cadastro bem-sucedido
|
||||
|
||||
|
@ -499,13 +499,13 @@ release.downloads=Downloads:
|
|||
release.download.zip=Código fonte (ZIP)
|
||||
release.download.targz=Código fonte (TAR.GZ)
|
||||
|
||||
repo.transfer.subject_to=%s gostaria de transferir "%s" para %s
|
||||
repo.transfer.subject_to_you=%s gostaria de transferir "%s" para você
|
||||
repo.transfer.subject_to=%s gostaria de transferir o repositório "%s" para %s
|
||||
repo.transfer.subject_to_you=%s gostaria de transferir o repositório "%s" para você
|
||||
repo.transfer.to_you=você
|
||||
repo.transfer.body=Para o aceitar ou rejeitar visite %s, ou simplesmente o ignore.
|
||||
|
||||
repo.collaborator.added.subject=%s adicionou você a %s
|
||||
repo.collaborator.added.text=Você foi adicionado como um colaborador do repositório:
|
||||
repo.collaborator.added.subject=%s adicionou você a %s como colaborador(a)
|
||||
repo.collaborator.added.text=Você foi adicionado(a) como colaborador(a) do repositório:
|
||||
|
||||
team_invite.subject=%[1]s convidou você para participar da organização %[2]s
|
||||
team_invite.text_1=%[1]s convidou você para participar da equipe %[2]s na organização %[3]s.
|
||||
|
@ -602,10 +602,10 @@ invalid_ssh_key=Não é possível verificar sua chave SSH: %s
|
|||
invalid_gpg_key=Não é possível verificar sua chave GPG: %s
|
||||
invalid_ssh_principal=Nome principal inválido: %s
|
||||
must_use_public_key=A chave que você forneceu é uma chave privada. Por favor, não envie sua chave privada em nenhum lugar. Use sua chave pública em vez disso.
|
||||
unable_verify_ssh_key=Não é possível verificar a chave SSH, verifique se há erros.
|
||||
unable_verify_ssh_key=Não foi possível validar a chave SSH. Certifique-se de que foi digitada corretamente.
|
||||
auth_failed=Autenticação falhou: %v
|
||||
|
||||
still_own_repo=Sua conta possui um ou mais repositórios, exclua ou transfira-os primeiro.
|
||||
still_own_repo=A sua conta possui um ou mais repositórios. Exclua ou transfira-os antes de excluir a conta.
|
||||
still_has_org=Sua conta é um membro de uma ou mais organizações, deixe-as primeiro.
|
||||
still_own_packages=Sua conta possui um ou mais pacotes, exclua-os primeiro.
|
||||
org_still_own_repo=Esta organização ainda possui repositórios, exclua ou transfira-os primeiro.
|
||||
|
@ -677,9 +677,9 @@ password_username_disabled=Usuários não-locais não podem alterar seus nomes d
|
|||
full_name=Nome completo
|
||||
website=Site
|
||||
location=Localização
|
||||
update_theme=Atualizar o tema
|
||||
update_profile=Atualizar o perfil
|
||||
update_language=Atualizar Idioma
|
||||
update_theme=Alterar tema
|
||||
update_profile=Modificar perfil
|
||||
update_language=Mudar idioma
|
||||
update_language_not_found=Idioma "%s" não está disponível.
|
||||
update_language_success=O idioma foi atualizado.
|
||||
update_profile_success=Seu perfil foi atualizado.
|
||||
|
@ -700,7 +700,7 @@ comment_type_group_milestone=Marco
|
|||
comment_type_group_assignee=Atribuído
|
||||
comment_type_group_title=Título
|
||||
comment_type_group_branch=Branch
|
||||
comment_type_group_time_tracking=Contador de tempo
|
||||
comment_type_group_time_tracking=Contagem de tempo
|
||||
comment_type_group_deadline=Prazo final
|
||||
comment_type_group_dependency=Dependência
|
||||
comment_type_group_lock=Status de Bloqueio
|
||||
|
@ -711,20 +711,20 @@ comment_type_group_issue_ref=Referência do issue
|
|||
saved_successfully=Suas configurações foram salvas com sucesso.
|
||||
privacy=Privacidade
|
||||
keep_activity_private=Ocultar atividade da página de perfil
|
||||
keep_activity_private_popup=Torna a atividade visível somente para você e os administradores
|
||||
keep_activity_private_popup=A sua atividade estará visível apenas para você e os admnistradores
|
||||
|
||||
lookup_avatar_by_mail=Procurar o avatar do endereço de e-mail
|
||||
federated_avatar_lookup=Busca de avatar federativo
|
||||
enable_custom_avatar=Usar avatar personalizado
|
||||
choose_new_avatar=Escolha um novo avatar
|
||||
update_avatar=Atualizar o avatar
|
||||
delete_current_avatar=Excluir o avatar atual
|
||||
delete_current_avatar=Excluir avatar atual
|
||||
uploaded_avatar_not_a_image=O arquivo enviado não é uma imagem.
|
||||
uploaded_avatar_is_too_big=O tamanho do arquivo enviado (%d KiB) excede o tamanho máximo permitido (%d KiB).
|
||||
update_avatar_success=Seu avatar foi atualizado.
|
||||
update_user_avatar_success=O avatar do usuário foi atualizado.
|
||||
|
||||
update_password=Atualizar senha
|
||||
update_password=Modificar senha
|
||||
old_password=Senha atual
|
||||
new_password=Nova senha
|
||||
retype_new_password=Confirmar nova senha
|
||||
|
@ -735,7 +735,7 @@ password_change_disabled=Contas não-locais não podem alterar sua senha atravé
|
|||
emails=Endereços de e-mail
|
||||
manage_emails=Gerenciar endereços de e-mail
|
||||
manage_themes=Selecione o tema padrão
|
||||
manage_openid=Gerencia endereços OpenID
|
||||
manage_openid=Gerenciar endereços OpenID
|
||||
email_desc=Seu endereço de e-mail principal será usado para notificações, recuperação de senha e, desde que não esteja oculto, para operações do Git baseadas na Web.
|
||||
theme_desc=Este será o seu tema padrão em todo o site.
|
||||
primary=Principal
|
||||
|
@ -775,7 +775,7 @@ principal_desc=Estes nomes principais do certificado SSH estão associados à su
|
|||
gpg_desc=Essas chaves GPG públicas estão associadas à sua conta. Mantenha suas chaves privadas seguras, pois elas permitem que os commits sejam verificados.
|
||||
ssh_helper=<strong>Precisa de ajuda?</strong> Dê uma olhada no guia do GitHub para <a href="%s">criar suas próprias chaves SSH</a> ou resolver <a href="%s">problemas comuns</a> que você pode ter usando SSH.
|
||||
gpg_helper=<strong>Precisa de ajuda?</strong> Dê uma olhada no guia do GitHub <a href="%s">sobre GPG</a>.
|
||||
add_new_key=Adicionar Chave SSH
|
||||
add_new_key=Adicionar chave SSH
|
||||
add_new_gpg_key=Adicionar chave GPG
|
||||
key_content_ssh_placeholder=Começa com "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com" ou "sk-ssh-ed25519@openssh.com"
|
||||
key_content_gpg_placeholder=Começa com "-----BEGIN PGP PUBLIC KEY BLOCK-----"
|
||||
|
@ -817,8 +817,8 @@ add_key_success=A chave SSH "%s" foi adicionada.
|
|||
add_gpg_key_success=A chave GPG "%s" foi adicionada.
|
||||
add_principal_success=O principal "%s" foi adicionado ao certificado SSH.
|
||||
delete_key=Remover
|
||||
ssh_key_deletion=Remover a chave SSH
|
||||
gpg_key_deletion=Remover a chave GPG
|
||||
ssh_key_deletion=Remover chave SSH
|
||||
gpg_key_deletion=Remover chave GPG
|
||||
ssh_principal_deletion=Remover Nome Principal do Certificado SSH
|
||||
ssh_key_deletion_desc=A exclusão de uma chave SSH revoga seu acesso à sua conta. Continuar?
|
||||
gpg_key_deletion_desc=A exclusão de uma chave GPG cancela a verificação de confirmações assinadas por ela. Continuar?
|
||||
|
@ -2082,7 +2082,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=Transferir propriedade
|
||||
settings.transfer.title=Transferir propriedade
|
||||
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
|
||||
|
|
|
@ -2168,7 +2168,7 @@ settings.convert_fork_desc=Pode converter esta derivação num repositório norm
|
|||
settings.convert_fork_notices_1=Esta operação irá converter a derivação num repositório normal e não poderá ser revertida.
|
||||
settings.convert_fork_confirm=Converter repositório
|
||||
settings.convert_fork_succeed=A derivação foi convertida num repositório normal.
|
||||
settings.transfer=Transferir a propriedade
|
||||
settings.transfer.title=Transferir a propriedade
|
||||
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 a transferência
|
||||
|
@ -2869,6 +2869,7 @@ teams.invite.title=Foi-lhe feito um convite para se juntar à equipa <strong>%s<
|
|||
teams.invite.by=Convidado(a) por %s
|
||||
teams.invite.description=Clique no botão abaixo para se juntar à equipa.
|
||||
follow_blocked_user = Não pode seguir esta organização porque esta organização bloqueou-o/a.
|
||||
open_dashboard = Abrir painel de controlo
|
||||
|
||||
[admin]
|
||||
dashboard=Painel de controlo
|
||||
|
@ -3412,6 +3413,7 @@ config_settings = Configurações
|
|||
auths.tip.gitlab_new = Registe uma nova aplicação em https://gitlab.com/-/profile/applications
|
||||
config.open_with_editor_app_help = Os editores da opção "Abrir com" do menu da clonagem. Se for deixado em branco, será usado o valor predefinido. Expanda para ver o que está predefinido.
|
||||
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
|
||||
|
||||
[action]
|
||||
create_repo=criou o repositório <a href="%s">%s</a>
|
||||
|
@ -3654,6 +3656,7 @@ owner.settings.chef.title=Registo do Chef
|
|||
owner.settings.chef.keypair=Gerar par de chaves
|
||||
owner.settings.chef.keypair.description=É necessário um par de chaves para autenticar no registro Chef. Se você gerou um par de chaves antes, gerar um novo par de chaves irá descartar o par de chaves antigo.
|
||||
owner.settings.cargo.rebuild.no_index = Não foi possível reconstruir, não há um índice inicializado.
|
||||
npm.dependencies.bundle = Dependências agrupadas
|
||||
|
||||
[secrets]
|
||||
secrets=Segredos
|
||||
|
|
|
@ -145,7 +145,7 @@ confirm_delete_artifact = Вы точно хотите удалить артеф
|
|||
toggle_menu = Показать/скрыть меню
|
||||
filter.not_archived = Не архивированные
|
||||
filter = Фильтры
|
||||
filter.clear = Очистить фильтры
|
||||
filter.clear = Снять фильтры
|
||||
filter.is_fork = Ответвления
|
||||
filter.not_fork = Не ответвления
|
||||
filter.is_mirror = Зеркала
|
||||
|
@ -277,7 +277,7 @@ server_service_title=Настройки сервера и внешних слу
|
|||
offline_mode=Локальный режим
|
||||
offline_mode_popup=Отключить сторонние сети доставки контента и передавать все ресурсы из их локальных копий.
|
||||
disable_gravatar=Отключить Gravatar
|
||||
disable_gravatar_popup=Отключить Gravatar и сторонние источники аватаров. Если пользователь не загрузит аватар локально, то по умолчанию будет использоваться стандартный аватар.
|
||||
disable_gravatar_popup=Отключить Gravatar и сторонние источники аватаров. Если у пользователя нет локально установленного аватара, будет использоваться аватар по умолчанию.
|
||||
federated_avatar_lookup=Федерированные аватары
|
||||
federated_avatar_lookup_popup=Включите поиск федеративного аватара для использования службы с открытым исходным кодом на основе libravatar.
|
||||
disable_registration=Отключить самостоятельную регистрацию
|
||||
|
@ -736,7 +736,7 @@ comment_type_group_issue_ref=Ссылка на задачу
|
|||
saved_successfully=Ваши настройки успешно сохранены.
|
||||
privacy=Приватность
|
||||
keep_activity_private=Скрыть активность со страницы профиля
|
||||
keep_activity_private_popup=Делает активность видимой только для вас и администраторов
|
||||
keep_activity_private_popup=Ваша активность будет видна только вам и администраторам сервера
|
||||
|
||||
lookup_avatar_by_mail=Найти аватар по адресу эл. почты
|
||||
federated_avatar_lookup=Найти внешний аватар
|
||||
|
@ -928,7 +928,7 @@ twofa_recovery_tip=При утере устройства вы сможете в
|
|||
twofa_is_enrolled=Ваша учётная запись в настоящее время <strong>использует</strong> двухфакторную аутентификацию.
|
||||
twofa_not_enrolled=Ваша учётная запись в настоящее время не использует двухфакторную аутентификацию.
|
||||
twofa_disable=Отключить 2ФА
|
||||
twofa_scratch_token_regenerate=Пересоздать scratch-токен
|
||||
twofa_scratch_token_regenerate=Пересоздать одноразовый ключ восстановления
|
||||
twofa_enroll=Включить 2ФА
|
||||
twofa_disable_note=При необходимости можно отключить двухфакторную аутентификацию.
|
||||
twofa_disable_desc=Отключение двухфакторной аутентификации снизит безопасность вашей учётной записи. Продолжить?
|
||||
|
@ -1000,6 +1000,7 @@ additional_repo_units_hint_description = Показывать кнопку "До
|
|||
pronouns_custom = Другие
|
||||
pronouns = Местоимения
|
||||
pronouns_unspecified = Не указаны
|
||||
language.title = Язык по умолчанию
|
||||
|
||||
[repo]
|
||||
owner=Владелец
|
||||
|
@ -1228,7 +1229,7 @@ file.title=%s в %s
|
|||
file_raw=Исходный
|
||||
file_history=История
|
||||
file_view_source=Просмотр исходного текста
|
||||
file_view_rendered=Просмотр рендера
|
||||
file_view_rendered=Просмотр печатной версии
|
||||
file_view_raw=Открыть исходный
|
||||
file_permalink=Постоянная ссылка
|
||||
file_too_large=Этот файл слишком большой, поэтому он не может быть отображён.
|
||||
|
@ -1381,7 +1382,7 @@ projects.edit_subheader=Создавайте и организуйте зада
|
|||
projects.modify=Обновить проект
|
||||
projects.edit_success=Проект «%s» обновлён.
|
||||
projects.type.none=Нет
|
||||
projects.type.basic_kanban=Обычный Канбан
|
||||
projects.type.basic_kanban=Обычный канбан
|
||||
projects.type.bug_triage=Планирование работы с багами
|
||||
projects.template.desc=Шаблон
|
||||
projects.template.desc_helper=Для начала выберите шаблон проекта
|
||||
|
@ -1693,7 +1694,7 @@ issues.dependency.blocked_by_short=Зависит от
|
|||
issues.dependency.remove_header=Удалить зависимость
|
||||
issues.dependency.issue_remove_text=Это приведет к удалению зависимости от этой задачи. Продолжить?
|
||||
issues.dependency.pr_remove_text=Это приведёт к удалению зависимости от этого запроса на слияние. Продолжить?
|
||||
issues.dependency.setting=Включение зависимостей для задач и запросов на слияние
|
||||
issues.dependency.setting=Включить зависимости для задач и запросов на слияния
|
||||
issues.dependency.add_error_same_issue=Вы не можете заставить задачу зависеть от самой себя.
|
||||
issues.dependency.add_error_dep_issue_not_exist=Зависимая задача не существует.
|
||||
issues.dependency.add_error_dep_not_exist=Зависимости не существует.
|
||||
|
@ -1741,7 +1742,7 @@ compare.compare_base=Основа
|
|||
compare.compare_head=сравнить
|
||||
|
||||
pulls.desc=Включить запросы на слияние и проверки кода.
|
||||
pulls.new=Новый запрос
|
||||
pulls.new=Создать запрос
|
||||
pulls.view=Просмотр запроса на слияние
|
||||
pulls.compare_changes=Новый запрос на слияние
|
||||
pulls.allow_edits_from_maintainers=Разрешить редактирование сопровождающими
|
||||
|
@ -1820,7 +1821,7 @@ pulls.no_merge_access=У вас нет права для слияния данн
|
|||
pulls.merge_pull_request=Создать коммит слияния
|
||||
pulls.rebase_merge_pull_request=Выполнить rebase и fast-forward
|
||||
pulls.rebase_merge_commit_pull_request=Выполнить rebase и создать коммит слияния
|
||||
pulls.squash_merge_pull_request=Создать объединённый коммит
|
||||
pulls.squash_merge_pull_request=Создать объединяющий коммит
|
||||
pulls.merge_manually=Слито вручную
|
||||
pulls.merge_commit_id=ИД коммита слияния
|
||||
pulls.require_signed_wont_sign=Данная ветка ожидает подписанные коммиты, однако слияние не будет подписано
|
||||
|
@ -1834,22 +1835,22 @@ pulls.unrelated_histories=Слияние не удалось: у источни
|
|||
pulls.merge_out_of_date=Слияние не удалось: при создании слияния база данных была обновлена. Подсказка: попробуйте ещё раз.
|
||||
pulls.head_out_of_date=Слияние не удалось: во время слияния головной коммит был обновлён. Попробуйте ещё раз.
|
||||
pulls.push_rejected=Отправка была отклонена. Проверьте Git-хуки этого репозитория.
|
||||
pulls.push_rejected_summary=Полная ошибка отклонения
|
||||
pulls.push_rejected_summary=Полная причина отклонения
|
||||
pulls.push_rejected_no_message=Отправка была отклонена и удалённый сервер не указал причину. Проверьте Git-хуки этого репозитория
|
||||
pulls.open_unmerged_pull_exists=`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния.`
|
||||
pulls.status_checking=Выполняются некоторые проверки
|
||||
pulls.status_checks_success=Все проверки выполнены успешно
|
||||
pulls.status_checks_warning=Некоторые проверки сообщили о предупреждениях
|
||||
pulls.status_checks_failure=Некоторые проверки не удались
|
||||
pulls.open_unmerged_pull_exists=`Нельзя открыть снова, поскольку существует другой открытый запрос на слияние (#%d) с такими же свойствами.`
|
||||
pulls.status_checking=Выполняются проверки
|
||||
pulls.status_checks_success=Все проверки успешно пройдены
|
||||
pulls.status_checks_warning=Некоторые проверки имеют предупреждения
|
||||
pulls.status_checks_failure=Некоторые проверки провалились
|
||||
pulls.status_checks_error=Некоторые проверки сообщили об ошибках
|
||||
pulls.status_checks_requested=Требуется
|
||||
pulls.status_checks_details=Информация
|
||||
pulls.status_checks_hide_all=Скрыть все проверки
|
||||
pulls.status_checks_show_all=Показать все проверки
|
||||
pulls.update_branch=Обновить ветку посредством слияния
|
||||
pulls.update_branch_rebase=Обновить ветку через rebase
|
||||
pulls.update_branch_success=Обновление ветки выполнено успешно
|
||||
pulls.update_not_allowed=У вас недостаточно прав для обновления ветки
|
||||
pulls.update_branch=Обновить ветку слиянием
|
||||
pulls.update_branch_rebase=Обновить ветку перебазированием
|
||||
pulls.update_branch_success=Ветка успешно обновлена
|
||||
pulls.update_not_allowed=Недостаточно прав для обновления ветки
|
||||
pulls.outdated_with_base_branch=Эта ветка отстает от базовой ветки
|
||||
pulls.close=Закрыть запрос на слияние
|
||||
pulls.closed_at=`закрыл этот запрос на слияние <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
@ -1895,15 +1896,15 @@ milestones.create_success=Этап «%s» создан.
|
|||
milestones.edit=Редактировать этап
|
||||
milestones.edit_subheader=Используйте лучшее описание контрольной точки, во избежание непонимания со стороны других людей.
|
||||
milestones.cancel=Отмена
|
||||
milestones.modify=Обновить этап
|
||||
milestones.modify=Сохранить этап
|
||||
milestones.edit_success=Этап «%s» обновлён.
|
||||
milestones.deletion=Удалить этап
|
||||
milestones.deletion_desc=Удаление этапа приведет к его удалению из всех связанных задач. Продолжить?
|
||||
milestones.deletion_success=Этап успешно удалён.
|
||||
milestones.filter_sort.earliest_due_data=Ближайший срок выполнения
|
||||
milestones.filter_sort.latest_due_date=Поздний срок выполнения
|
||||
milestones.filter_sort.least_complete=Менее полное
|
||||
milestones.filter_sort.most_complete=Более полное
|
||||
milestones.filter_sort.least_complete=Менее выполненные
|
||||
milestones.filter_sort.most_complete=Более выполненные
|
||||
milestones.filter_sort.most_issues=Больше задач
|
||||
milestones.filter_sort.least_issues=Меньше задач
|
||||
|
||||
|
@ -2124,7 +2125,7 @@ settings.convert_fork_desc=Вы можете преобразовать это
|
|||
settings.convert_fork_notices_1=Эта операция преобразует этот ответвление в обычный репозиторий, и не может быть отменена.
|
||||
settings.convert_fork_confirm=Преобразовать репозиторий
|
||||
settings.convert_fork_succeed=Ответвление преобразовано в обычный репозиторий.
|
||||
settings.transfer=Передать права собственности
|
||||
settings.transfer.title=Передать репозиторий
|
||||
settings.transfer.rejected=Передача репозитория отменена.
|
||||
settings.transfer.success=Передача репозитория выполнена успешно.
|
||||
settings.transfer_abort=Отменить передачу
|
||||
|
@ -2210,8 +2211,8 @@ settings.githook_content=Содержимое хука
|
|||
settings.update_githook=Обновить хук
|
||||
settings.add_webhook_desc=Forgejo будет оправлять <code>POST</code> запросы на указанный URL адрес, с информацией о происходящих событиях. Подробности на странице <a target="_blank" rel="noopener noreferrer" href="%s">инструкции по использованию веб-хуков</a>.
|
||||
settings.payload_url=URL обработчика
|
||||
settings.http_method=Метод HTTP
|
||||
settings.content_type=Тип содержимого
|
||||
settings.http_method=HTTP-метод
|
||||
settings.content_type=Тип содержимого POST
|
||||
settings.secret=Секретный ключ
|
||||
settings.slack_username=Имя пользователя
|
||||
settings.slack_icon_url=URL иконки
|
||||
|
@ -2221,7 +2222,7 @@ settings.discord_icon_url=URL иконки
|
|||
settings.event_desc=Срабатывать на:
|
||||
settings.event_push_only=События отправки
|
||||
settings.event_send_everything=Все события
|
||||
settings.event_choose=Пользовательские события…
|
||||
settings.event_choose=Другие события…
|
||||
settings.event_header_repository=События репозитория
|
||||
settings.event_create=Создать
|
||||
settings.event_create_desc=Ветка или тэг созданы.
|
||||
|
@ -2237,14 +2238,14 @@ settings.event_push=Отправка
|
|||
settings.event_push_desc=Отправка в репозиторий.
|
||||
settings.event_repository=Репозиторий
|
||||
settings.event_repository_desc=Репозиторий создан или удален.
|
||||
settings.event_header_issue=События задачи
|
||||
settings.event_header_issue=События задач
|
||||
settings.event_issues=Задачи
|
||||
settings.event_issues_desc=Задача открыта, закрыта, переоткрыта или отредактирована.
|
||||
settings.event_issue_assign=Назначена задача
|
||||
settings.event_issue_assign=Назначение задач
|
||||
settings.event_issue_assign_desc=Задача назначена или снята с назначения.
|
||||
settings.event_issue_label=Ярлык задачи
|
||||
settings.event_issue_label=Изменение меток задач
|
||||
settings.event_issue_label_desc=Метки задач обновлены или очищены.
|
||||
settings.event_issue_milestone=Этап задачи завершен
|
||||
settings.event_issue_milestone=Добавление задач в этапы
|
||||
settings.event_issue_milestone_desc=Этап или этап выполнения задания.
|
||||
settings.event_issue_comment=Комментарии в задаче
|
||||
settings.event_issue_comment_desc=Комментарий создан, изменён или удалён.
|
||||
|
@ -2323,7 +2324,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=Правила защиты ветки «<b>%s</b>»
|
||||
settings.branch_protection=Правила доступа ветки «<b>%s</b>»
|
||||
settings.protect_this_branch=Защитить эту ветку
|
||||
settings.protect_this_branch_desc=Предотвращает удаление, ограничивает Push и слияние Git в ветку.
|
||||
settings.protect_disable_push=Запретить отправку изменений
|
||||
|
@ -2370,9 +2371,9 @@ settings.protect_unprotected_file_patterns=Шаблоны незащищённы
|
|||
settings.protect_unprotected_file_patterns_desc=Незащищенные файлы, которые допускается изменять напрямую, если пользователь имеет право на запись, несмотря на ограничение отправки изменений. Можно указать несколько шаблонов, разделяя их точкой с запятой («;»). О синтаксисе шаблонов читайте в документации <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> . Примеры: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Включить защиту
|
||||
settings.delete_protected_branch=Отключить защиту
|
||||
settings.update_protect_branch_success=Защита веток по правилу «%s» изменена.
|
||||
settings.remove_protected_branch_success=Защита веток по правилу «%s» удалена.
|
||||
settings.remove_protected_branch_failed=Не удалось удалить правило защиты веток «%s».
|
||||
settings.update_protect_branch_success=Правила доступа веток «%s» изменена.
|
||||
settings.remove_protected_branch_success=Правила доступа веток «%s» удалена.
|
||||
settings.remove_protected_branch_failed=Не удалось удалить правило доступа веток «%s».
|
||||
settings.protected_branch_deletion=Отключение защиты ветки
|
||||
settings.protected_branch_deletion_desc=Любой пользователь с разрешениями на запись сможет выполнять push в эту ветку. Вы уверены?
|
||||
settings.block_rejected_reviews=Блокировка слияния по отклоненным отзывам
|
||||
|
@ -2452,7 +2453,7 @@ diff.browse_source=Просмотр исходного кода
|
|||
diff.parent=родитель
|
||||
diff.commit=коммит
|
||||
diff.git-notes=Заметки
|
||||
diff.data_not_available=Различия недоступны
|
||||
diff.data_not_available=Различия отсутствуют или недоступны
|
||||
diff.options_button=Опции Diff
|
||||
diff.show_diff_stats=Показать статистику
|
||||
diff.download_patch=Скачать .patch
|
||||
|
@ -2529,7 +2530,7 @@ release.title=Название выпуска
|
|||
release.title_empty=Заголовок не может быть пустым.
|
||||
release.message=Расскажите про этот выпуск
|
||||
release.prerelease_desc=Это предварительный выпуск
|
||||
release.prerelease_helper=Пометить выпуск как не готовый для массового использования.
|
||||
release.prerelease_helper=Пометить выпуск как неготовый для массового использования.
|
||||
release.cancel=Отменить
|
||||
release.publish=Опубликовать выпуск
|
||||
release.save_draft=Сохранить черновик
|
||||
|
@ -2547,7 +2548,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
|
||||
|
||||
|
@ -2626,7 +2627,7 @@ issues.blocked_by_user = Невозможно создать задачу в э
|
|||
settings.new_owner_blocked_doer = Вы заблокированы новым владельцем.
|
||||
settings.add_collaborator_blocked_them = Невозможно добавить соучастника, т.к. им заблокирован владелец репозитория.
|
||||
pulls.blocked_by_changed_protected_files_1 = Этот запрос на слияние заблокирован, т.к. им изменяется защищённый файл:
|
||||
object_format_helper = Формат объектов в репозитории. Невозможно изменить в дальнейшем. SHA1 даёт наибольшую совместимость.
|
||||
object_format_helper = Формат объектов в репозитории. Невозможно изменить в дальнейшем. SHA1 имеет наибольшую совместимость.
|
||||
pulls.blocked_by_outdated_branch = Этот запрос на слияние заблокирован, т.к. он устарел.
|
||||
pulls.blocked_by_changed_protected_files_n = Этот запрос на слияние заблокирован, т.к. им изменяются защищённые файлы:
|
||||
blame.ignore_revs.failed = Не удалось проигнорировать правки из <a href="%s">.git-blame-ignore-revs</a>.
|
||||
|
@ -2696,7 +2697,7 @@ pulls.agit_explanation = Создано через рабочий поток AGi
|
|||
settings.webhook.replay.description_disabled = Активируйте веб-хук для повторения отправки.
|
||||
activity.navbar.pulse = Недавняя активность
|
||||
settings.tags.protection.pattern.description = Можно указать название тега. Для выбора нескольких тегов можно указать поисковый шаблон или регулярное выражение. <a target="_blank" rel="noopener" href="https://forgejo.org/docs/latest/user/protection/#protected-tags">Подробнее о защищённых тегах</a>.
|
||||
file_follow = Пройти по мягкой ссылке
|
||||
file_follow = Пройти по символьной ссылке
|
||||
settings.pull_mirror_sync_in_progress = Идёт получение изменений из удалённого репозитория %s.
|
||||
settings.ignore_stale_approvals_desc = Не учитывать одобрения, оставленные для старых коммитов (устаревшие отзывы), при подсчёте общего числа одобрений у запроса на слияние. Не относится к отклонённым отзывам.
|
||||
settings.mirror_settings.docs.doc_link_pull_section = раздел документации «Pulling from a remote repository».
|
||||
|
@ -2738,12 +2739,14 @@ settings.matrix.access_token_helper = Рекомендуется создать
|
|||
settings.mirror_settings.pushed_repository = Удалённый репозиторий
|
||||
release.hide_archive_links = Скрыть автоматически генерируемые архивы
|
||||
release.hide_archive_links_helper = Скрыть автоматически добавляемые архивы исходного кода для этого релиза. Например, если вы загружаете свои архивы.
|
||||
settings.transfer.button = Передать репозиторий
|
||||
settings.transfer.modal.title = Передача репозитория
|
||||
|
||||
[graphs]
|
||||
|
||||
[org]
|
||||
org_name_holder=Название организации
|
||||
org_full_name_holder=Полное название организации
|
||||
org_full_name_holder=Полное название
|
||||
org_name_helper=Лучшие названия организаций коротки и запоминаемы.
|
||||
create_org=Создать организацию
|
||||
repo_updated=Обновлено
|
||||
|
@ -2800,9 +2803,9 @@ settings.labels_desc=Добавьте метки, которые могут бы
|
|||
|
||||
members.membership_visibility=Видимость участника:
|
||||
members.public=Видимый
|
||||
members.public_helper=скрыть
|
||||
members.public_helper=Скрыть
|
||||
members.private=Скрыт
|
||||
members.private_helper=сделать видимым
|
||||
members.private_helper=Сделать видимым
|
||||
members.member_role=Роль участника:
|
||||
members.owner=Владелец
|
||||
members.member=Участник
|
||||
|
@ -2811,7 +2814,7 @@ members.remove.detail=Исключить %[1]s из %[2]s?
|
|||
members.leave=Покинуть
|
||||
members.leave.detail=Покинуть %s?
|
||||
members.invite_desc=Добавить нового участника в %s:
|
||||
members.invite_now=Пригласите сейчас
|
||||
members.invite_now=Пригласить
|
||||
|
||||
teams.join=Объединить
|
||||
teams.leave=Выйти
|
||||
|
@ -2835,9 +2838,9 @@ teams.update_settings=Обновить настройки
|
|||
teams.delete_team=Удалить команду
|
||||
teams.add_team_member=Добавить участника
|
||||
teams.invite_team_member=Пригласить в %s
|
||||
teams.invite_team_member.list=Приглашения в ожидании
|
||||
teams.invite_team_member.list=Ожидающие приглашения
|
||||
teams.delete_team_title=Удаление команды
|
||||
teams.delete_team_desc=Удаление команды отменяет доступ к репозиторию для её членов. Продолжить?
|
||||
teams.delete_team_desc=Удаление команды лишит её членов доступа к репозиториям. Продолжить?
|
||||
teams.delete_team_success=Команда удалена.
|
||||
teams.read_permission_desc=Эта команда предоставляет доступ на <strong>Чтение</strong>: члены могут просматривать и клонировать репозитории команды.
|
||||
teams.write_permission_desc=Эта команда предоставляет доступ на <strong>Запись</strong>: члены могут получать и выполнять push команды в репозитории.
|
||||
|
@ -2865,6 +2868,7 @@ teams.invite.by=Приглашен(а) %s
|
|||
teams.invite.description=Нажмите на кнопку ниже, чтобы присоединиться к команде.
|
||||
follow_blocked_user = Вы не можете подписаться на эту организацию, т.к. вы в ней заблокированы.
|
||||
teams.general_access = Настраиваемый доступ
|
||||
open_dashboard = Открыть панель
|
||||
|
||||
[admin]
|
||||
dashboard=Панель управления
|
||||
|
@ -2875,7 +2879,7 @@ repositories=Репозитории
|
|||
hooks=Веб-хуки
|
||||
integrations=Интеграции
|
||||
authentication=Аутентификация
|
||||
emails=Адреса эл. почты пользователей
|
||||
emails=Адреса эл. почты
|
||||
config=Конфигурация
|
||||
notices=Системные оповещения
|
||||
monitor=Мониторинг
|
||||
|
@ -2953,8 +2957,8 @@ dashboard.total_gc_time=Итоговая задержка GC
|
|||
dashboard.total_gc_pause=Итоговая задержка сборщика
|
||||
dashboard.last_gc_pause=Последняя пауза сборщика
|
||||
dashboard.gc_times=Сборок мусора
|
||||
dashboard.delete_old_actions=Удалить все старые действия из базы данных
|
||||
dashboard.delete_old_actions.started=Запущено удаление всех старых действий из БД.
|
||||
dashboard.delete_old_actions=Удалить все старые активности из базы данных
|
||||
dashboard.delete_old_actions.started=Запущено удаление всех старых активностей из БД.
|
||||
dashboard.update_checker=Проверка обновлений
|
||||
dashboard.delete_old_system_notices=Удалить все старые системные уведомления из базы данных
|
||||
dashboard.gc_lfs=Выполнить сборку мусора метаобъектов LFS
|
||||
|
@ -2977,7 +2981,7 @@ users.repos=Репозитории
|
|||
users.created=Создано
|
||||
users.last_login=Последний вход
|
||||
users.never_login=Никогда не входил
|
||||
users.send_register_notify=Отправить пользователю уведомление о регистрации
|
||||
users.send_register_notify=Уведомить о регистрации по эл. почте
|
||||
users.new_success=Учётная запись «%s» создана.
|
||||
users.edit=Редактировать
|
||||
users.auth_source=Источник аутентификации
|
||||
|
@ -2986,12 +2990,12 @@ users.auth_login_name=Имя для входа
|
|||
users.password_helper=Оставьте пустым, чтобы оставить без изменений.
|
||||
users.update_profile_success=Профиль учётной записи обновлён успешно.
|
||||
users.edit_account=Изменение учётной записи
|
||||
users.max_repo_creation=Максимальное количество репозиториев
|
||||
users.max_repo_creation=Ограничение количества репозиториев
|
||||
users.max_repo_creation_desc=(Установите -1 для использования стандартного глобального значения предела)
|
||||
users.is_activated=Эта учётная запись активирована
|
||||
users.prohibit_login=Запретить вход в учётную запись
|
||||
users.is_admin=У этой учётной записи есть права администратора
|
||||
users.is_restricted=Ограничен
|
||||
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=Может импортировать локальные репозитории
|
||||
|
@ -3044,7 +3048,7 @@ repos.unadopted=Непринятые репозитории
|
|||
repos.unadopted.no_more=Больше непринятых репозиториев не найдено
|
||||
repos.owner=Владелец
|
||||
repos.name=Название
|
||||
repos.private=Личный
|
||||
repos.private=Частный
|
||||
repos.watches=Следят
|
||||
repos.stars=Звезды
|
||||
repos.forks=Ответвления
|
||||
|
@ -3082,22 +3086,22 @@ auths.enabled=Включено
|
|||
auths.syncenabled=Включить синхронизацию пользователей
|
||||
auths.updated=Обновлено
|
||||
auths.auth_type=Тип аутентификации
|
||||
auths.auth_name=Имя аутентификации
|
||||
auths.auth_name=Название аутентификации
|
||||
auths.security_protocol=Протокол безопасности
|
||||
auths.domain=Домен
|
||||
auths.host=Сервер
|
||||
auths.port=Порт
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_password=Привязать пароль
|
||||
auths.user_base=База для поиска пользователя
|
||||
auths.user_base=База поиска пользователей
|
||||
auths.user_dn=DN пользователя
|
||||
auths.attribute_username=Атрибут Username
|
||||
auths.attribute_username=Атрибут username
|
||||
auths.attribute_username_placeholder=Оставьте пустым, чтобы использовать имя пользователя для регистрации.
|
||||
auths.attribute_name=Атрибут First Name
|
||||
auths.attribute_surname=Атрибут Surname
|
||||
auths.attribute_name=Атрибут first name
|
||||
auths.attribute_surname=Атрибут surname
|
||||
auths.attribute_mail=Атрибут эл. почты
|
||||
auths.attribute_ssh_public_key=Атрибут Открытый ключ SSH
|
||||
auths.attribute_avatar=Характеристики аватара
|
||||
auths.attribute_ssh_public_key=Атрибут открытого ключа SSH
|
||||
auths.attribute_avatar=Атрибут аватара
|
||||
auths.attributes_in_bind=Извлекать атрибуты в контексте Bind DN
|
||||
auths.allow_deactivate_all=Разрешить пустой результат поиска для отключения всех пользователей
|
||||
auths.use_paged_search=Использовать постраничный поиск
|
||||
|
@ -3105,7 +3109,7 @@ auths.search_page_size=Размер страницы
|
|||
auths.filter=Фильтр пользователя
|
||||
auths.admin_filter=Фильтр администратора
|
||||
auths.restricted_filter=Ограниченный фильтр
|
||||
auths.restricted_filter_helper=Оставьте пустым, чтобы не назначать никаких пользователей ограниченными. Используйте звёздочку ('*'), чтобы сделать ограниченными всех пользователей, не соответствующих фильтру администратора.
|
||||
auths.restricted_filter_helper=Оставьте пустым, чтобы не назначать никаких пользователей ограниченными. Используйте звёздочку («*»), чтобы сделать ограниченными всех пользователей, не соответствующих фильтру администратора.
|
||||
auths.verify_group_membership=Проверить принадлежность к группе в LDAP (оставьте фильтр пустым, чтобы пропустить)
|
||||
auths.group_search_base=Поисковая база групп DN
|
||||
auths.group_attribute_list_users=Атрибут группы, содержащий список пользователей
|
||||
|
@ -3353,15 +3357,15 @@ monitor.queue=Очередь: %s
|
|||
monitor.queue.name=Имя
|
||||
monitor.queue.type=Тип
|
||||
monitor.queue.exemplar=Тип образца
|
||||
monitor.queue.numberworkers=Количество рабочих
|
||||
monitor.queue.activeworkers=Активные рабочие
|
||||
monitor.queue.maxnumberworkers=Максимальное количество рабочих
|
||||
monitor.queue.numberworkers=Количество обработчиков
|
||||
monitor.queue.activeworkers=Активные обработчики
|
||||
monitor.queue.maxnumberworkers=Макс. количество обработчиков
|
||||
monitor.queue.numberinqueue=Позиция в очереди
|
||||
monitor.queue.settings.title=Настройки пула
|
||||
monitor.queue.settings.desc=Пулы увеличиваются динамически в ответ на блокировку очередей своих рабочих.
|
||||
monitor.queue.settings.maxnumberworkers=Максимальное количество рабочих
|
||||
monitor.queue.settings.maxnumberworkers.placeholder=В настоящее время %[1]d
|
||||
monitor.queue.settings.maxnumberworkers.error=Максимальное количество рабочих должно быть числом
|
||||
monitor.queue.settings.desc=Пулы увеличиваются динамически в ответ на блокировку очередей своих обработчиков.
|
||||
monitor.queue.settings.maxnumberworkers=Макс. количество обработчиков
|
||||
monitor.queue.settings.maxnumberworkers.placeholder=В настоящий момент %[1]d
|
||||
monitor.queue.settings.maxnumberworkers.error=Максимальное количество обработчиков должно быть числом
|
||||
monitor.queue.settings.submit=Обновить настройки
|
||||
monitor.queue.settings.changed=Настройки обновлены
|
||||
monitor.queue.settings.remove_all_items=Удалить все
|
||||
|
@ -3406,7 +3410,7 @@ config.open_with_editor_app_help = Приложения для "Открыть
|
|||
config_settings = Настройки
|
||||
auths.tips.gmail_settings = Настройки Gmail:
|
||||
auths.tip.gitlab_new = Создайте новое приложение в https://gitlab.com/-/profile/applications
|
||||
monitor.queue.review_add = Подробности / добавить рабочих
|
||||
monitor.queue.review_add = Подробности / добавить обработчики
|
||||
auths.default_domain_name = Домен по умолчанию для адресов эл. почты
|
||||
|
||||
|
||||
|
@ -3470,7 +3474,7 @@ mib = МиБ
|
|||
gib = ГиБ
|
||||
tib = ТиБ
|
||||
pib = ПиБ
|
||||
eib = ЕиБ
|
||||
eib = ЭиБ
|
||||
|
||||
[dropzone]
|
||||
default_message=Перетащите файл или кликните сюда для загрузки.
|
||||
|
@ -3662,6 +3666,7 @@ rpm.repository.architectures = Архитектуры
|
|||
rpm.repository.multiple_groups = Этот пакет доступен в нескольких группах.
|
||||
owner.settings.chef.keypair.description = Для аутентификации реестра Chef необходима пара ключей. Если до этого вы уже сгенерировали пару ключей, генерация новой приведёт к прекращению действия предыдущей.
|
||||
owner.settings.cargo.rebuild.no_index = Невозможно выполнить пересборку. Нет инициализированного индекса.
|
||||
npm.dependencies.bundle = Комплектные зависимости
|
||||
|
||||
[secrets]
|
||||
secrets=Секреты
|
||||
|
@ -3681,7 +3686,7 @@ management=Управление секретами
|
|||
[actions]
|
||||
actions=Действия
|
||||
|
||||
unit.desc=Управление действиями
|
||||
unit.desc=Управление встроенными конвейерами CI/CD с Действиями Forgejo
|
||||
|
||||
status.unknown=Неизвестно
|
||||
status.waiting=Ожидает
|
||||
|
|
|
@ -1537,7 +1537,7 @@ settings.convert_fork_desc=ඔබට මෙම දෙබලක සාමාන
|
|||
settings.convert_fork_notices_1=මෙම මෙහෙයුම දෙබලක සාමාන්ය ගබඩාවක් බවට පරිවර්තනය කරන අතර එය අහෝසි කළ නොහැක.
|
||||
settings.convert_fork_confirm=පරිවර්තනය කරන්න ගබඩාව
|
||||
settings.convert_fork_succeed=මෙම දෙබලක සාමාන්ය ගබඩාවක් බවට පරිවර්තනය කර ඇත.
|
||||
settings.transfer=අයිතිය පැවරීම
|
||||
settings.transfer.title=අයිතිය පැවරීම
|
||||
settings.transfer.rejected=ගබඩාව මාරු කිරීම ප්රතික්ෂේප කරන ලදී.
|
||||
settings.transfer.success=ගබඩාව මාරු කිරීම සාර්ථක විය.
|
||||
settings.transfer_abort=මාරු කිරීම අවලංගු කරන්න
|
||||
|
|
|
@ -28,12 +28,12 @@ licenses=Licencie
|
|||
return_to_gitea=Naspäť do Forgejo
|
||||
|
||||
username=Používateľské meno
|
||||
email=E-mailová adresa
|
||||
email=Emailová adresa
|
||||
password=Heslo
|
||||
access_token=Prístupový token
|
||||
re_type=Potvrdiť heslo
|
||||
captcha=CAPTCHA
|
||||
twofa=Dvojfaktorová autentifikácia
|
||||
twofa=Dvoj-faktorové overenie
|
||||
twofa_scratch=Dvojfaktorový dočasný kód
|
||||
passcode=Prístupový kód
|
||||
|
||||
|
@ -62,7 +62,7 @@ new_org=Nová organizácia
|
|||
new_project=Nový projekt
|
||||
new_project_column=Nový stĺpec
|
||||
manage_org=Spravovať organizácie
|
||||
admin_panel=Administrácia
|
||||
admin_panel=Administrácia stránky
|
||||
account_settings=Nastavenia účtu
|
||||
settings=Nastavenia
|
||||
your_profile=Profil
|
||||
|
@ -140,6 +140,7 @@ confirm_delete_selected=Potvrdzujete zmazanie všetkých vybraných položiek?
|
|||
|
||||
name=Meno
|
||||
value=Hodnota
|
||||
issues = Problémy
|
||||
|
||||
[aria]
|
||||
navbar=Navigačná lišta
|
||||
|
@ -1167,7 +1168,7 @@ settings.convert_fork_desc=Tento fork môžete previesť na bežný repozitár.
|
|||
settings.convert_fork_notices_1=Táto operácia skonvertuje fork na bežný repozitár a nedá sa vrátiť späť.
|
||||
settings.convert_fork_confirm=Konvertovať repozitár
|
||||
settings.convert_fork_succeed=Fork bol prevedený na bežný repozitár.
|
||||
settings.transfer=Previesť vlastníctvo
|
||||
settings.transfer.title=Previesť vlastníctvo
|
||||
settings.transfer_notices_1=- Ak prenesiete repozitár na užívateľa, stratíte k nemu prístup.
|
||||
settings.transfer_notices_2=- Prístup k repozitáru si ponecháte, ak ho prevediete na organizáciu, ktorú (spolu)vlastníte.
|
||||
settings.transfer_owner=Nový vlastník
|
||||
|
|
|
@ -1288,7 +1288,7 @@ settings.convert_confirm=Konvertera utvecklingskatalog
|
|||
settings.convert_succeed=Speglingen har blivit konverterad till en vanlig utvecklingskatalog.
|
||||
settings.convert_fork=Konvertera till vanlig utvecklingskatalog
|
||||
settings.convert_fork_confirm=Konvertera utvecklingskatalog
|
||||
settings.transfer=Överför Ägarskap
|
||||
settings.transfer.title=Överför Ägarskap
|
||||
settings.transfer_desc=Överför denna utvecklingskatalog till en användare eller organisation för vilken du har administratörsrättigheter till.
|
||||
settings.transfer_form_title=Ange utvecklingskatalogens namn för att bekräfta:
|
||||
settings.transfer_notices_1=- Du kommer förlora åtkomst till denna utvecklingskatalog om du för över den till en individuell användare.
|
||||
|
|
|
@ -2094,7 +2094,7 @@ settings.convert_fork_desc=Bu çatalı normal bir depoya dönüştürebilirsiniz
|
|||
settings.convert_fork_notices_1=Bu işlem çatalı normal bir depoya dönüştürür ve geri alınamaz.
|
||||
settings.convert_fork_confirm=Depoyu Dönüştür
|
||||
settings.convert_fork_succeed=Çatal normal bir depoya dönüştürüldü.
|
||||
settings.transfer=Sahipliği Aktar
|
||||
settings.transfer.title=Sahipliği Aktar
|
||||
settings.transfer.rejected=Depo aktarımı reddedildi.
|
||||
settings.transfer.success=Depo aktarımı başarıyla tamamlandı.
|
||||
settings.transfer_abort=Aktarımı iptal et
|
||||
|
|
|
@ -1654,7 +1654,7 @@ settings.convert_fork_desc=Ви можете перетворити цей фо
|
|||
settings.convert_fork_notices_1=Ця операція перетворить форк на звичайний репозиторій та не може бути скасованою.
|
||||
settings.convert_fork_confirm=Перетворити репозиторій
|
||||
settings.convert_fork_succeed=Цей форк успішно перетворено на звичайний репозиторій.
|
||||
settings.transfer=Передати новому власнику
|
||||
settings.transfer.title=Передати новому власнику
|
||||
settings.transfer.rejected=Перенесення репозиторію відхилено.
|
||||
settings.transfer.success=Перенесення репозиторію виконано.
|
||||
settings.transfer_abort=Скасувати перенесення
|
||||
|
|
|
@ -638,6 +638,8 @@ Location = 地区
|
|||
To = 分支名
|
||||
AccessToken = 访问令牌
|
||||
Description = 描述
|
||||
Pronouns = 代称
|
||||
Biography = 简历
|
||||
|
||||
[user]
|
||||
change_avatar=修改头像
|
||||
|
@ -999,6 +1001,7 @@ update_hints_success = 提示更改成功。
|
|||
pronouns_custom = 自定义
|
||||
pronouns = 代词
|
||||
pronouns_unspecified = 不指定
|
||||
language.title = 默认语言
|
||||
|
||||
[repo]
|
||||
new_repo_helper=代码仓库包含了所有的项目文件,包括版本历史记录。已经在其他地方托管了?<a href="%s">迁移仓库。</a>
|
||||
|
@ -1097,7 +1100,7 @@ blame.ignore_revs.failed=忽略 <a href="%s">.git-blame-ignore-revs</a> 版本
|
|||
author_search_tooltip=最多显示30个用户
|
||||
|
||||
tree_path_not_found_commit=路径%[1]s 在提交 %[2]s 中不存在
|
||||
tree_path_not_found_branch=路径 %[1]s 不存在于分支 %[2]s 中。
|
||||
tree_path_not_found_branch=路径 %[1]s 不存在于分支 %[2]s 中
|
||||
tree_path_not_found_tag=路径 %[1]s 不存在于标签 %[2]s 中
|
||||
|
||||
transfer.accept=接受转移
|
||||
|
@ -2105,7 +2108,7 @@ 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=更新默认分支
|
||||
|
@ -2165,7 +2168,7 @@ settings.convert_fork_desc=您可以将该镜像仓库转换为普通仓库,
|
|||
settings.convert_fork_notices_1=该操作会将派生仓库转换为普通仓库,但该操作不可逆。
|
||||
settings.convert_fork_confirm=转换仓库
|
||||
settings.convert_fork_succeed=此派生仓库已经转换为普通仓库。
|
||||
settings.transfer=转让仓库所有权
|
||||
settings.transfer.title=转让仓库所有权
|
||||
settings.transfer.rejected=代码库转移被拒绝。
|
||||
settings.transfer.success=代码库转移成功。
|
||||
settings.transfer_abort=取消转移
|
||||
|
@ -2287,7 +2290,7 @@ settings.event_issue_assign=工单已分配
|
|||
settings.event_issue_assign_desc=工单已被指派或取消指派。
|
||||
settings.event_issue_label=工单已分类
|
||||
settings.event_issue_label_desc=工单标签被更新或清除。
|
||||
settings.event_issue_milestone=工单被收入里程碑中
|
||||
settings.event_issue_milestone=工单已被收入里程碑中
|
||||
settings.event_issue_milestone_desc=工单被收入或取消收入里程碑中。
|
||||
settings.event_issue_comment=工单评论
|
||||
settings.event_issue_comment_desc=工单评论被创建、编辑或删除
|
||||
|
@ -2737,6 +2740,18 @@ release.download_count_one = %s 下载
|
|||
release.download_count_few = %s 下载
|
||||
release.system_generated = 此附件是自动生成的。
|
||||
pulls.ready_for_review = 准备好接受评审了吗?
|
||||
settings.web_hook_name_sourcehut_builds = SourceHut 构建
|
||||
settings.graphql_url = GraphQL URL 链接
|
||||
settings.sourcehut_builds.access_token_helper = 已授予 JOBS:RW 权限的访问令牌。可在 meta.sr.ht 上生成标准的 <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht 令牌</a>或<a target="_blank" rel="noopener noreferrer" href="%s">带有密匙访问权限的 builds.sr.ht 令牌</a> 。
|
||||
settings.matrix.access_token_helper = 推荐为此设立专门的 Matrix 账户。访问令牌可从 Element Web 客户端(在隐私/无痕模式选项卡中打开)> 用户菜单(左上角)> 所有设置 > 帮助及关于 > 高级 > 访问令牌(在主服务器 URL 下方)检索。获取完成后,请直接关闭隐私/无痕选项卡(注销会使令牌失效)。
|
||||
settings.event_pull_request_enforcement = 执行
|
||||
settings.sourcehut_builds.manifest_path = 构建清单路径
|
||||
settings.sourcehut_builds.visibility = 作业可见性
|
||||
settings.matrix.room_id_helper = 房间 ID 可从 Element Web 客户端 > 房间设置 > 高级 > 内部房间 ID 获得。例如:%s。
|
||||
release.hide_archive_links_helper = 为此版本发布隐藏自动生成的源代码存档。例如,如果您准备自行上传。
|
||||
release.hide_archive_links = 隐藏自动生成的存档
|
||||
settings.transfer.modal.title = 转移所有权
|
||||
settings.transfer.button = 转移所有权
|
||||
|
||||
[graphs]
|
||||
component_loading=正在加载 %s...
|
||||
|
@ -2871,6 +2886,7 @@ teams.invite.title=您已被邀请加入组织 <strong>%s</strong> 中的团队
|
|||
teams.invite.by=邀请人 %s
|
||||
teams.invite.description=请点击下面的按钮加入团队。
|
||||
follow_blocked_user = 你无法关注此组织,因为此组织已屏蔽你。
|
||||
open_dashboard = 打开仪表盘
|
||||
|
||||
[admin]
|
||||
dashboard=管理面板
|
||||
|
@ -3422,6 +3438,8 @@ auths.tips.gmail_settings = Gmail 设置:
|
|||
auths.tip.gitlab_new = 在 https://gitlab.com/-/profile/applications 上注册新应用
|
||||
config_settings = 设置
|
||||
config_summary = 概况
|
||||
auths.default_domain_name = 用于电子邮件地址的默认域名
|
||||
config.open_with_editor_app_help = 克隆菜单中的“打开方式”所用的编辑器。如果留空,将使用默认值。展开以查看默认值。
|
||||
|
||||
[action]
|
||||
create_repo=创建了仓库 <a href="%s">%s</a>
|
||||
|
@ -3775,6 +3793,7 @@ variables.creation.success=变量 “%s” 添加成功。
|
|||
variables.update.failed=编辑变量失败。
|
||||
variables.update.success=该变量已被编辑。
|
||||
runs.workflow = 工作流
|
||||
runs.no_job_without_needs = 工作流必须至少包含一组没有依赖的作业。
|
||||
|
||||
[projects]
|
||||
type-1.display_name=个人项目
|
||||
|
@ -3809,7 +3828,7 @@ runner_kind = 搜索Runners...
|
|||
no_results = 未找到匹配的结果。
|
||||
type_tooltip = 搜索类型
|
||||
fuzzy = 模糊
|
||||
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了仓库索引可能会有更好的结果。
|
||||
code_search_by_git_grep = 当前搜索结果由 git grep 提供,如果站点管理员启用了代码索引可能会有更好的结果。
|
||||
match = 匹配
|
||||
match_tooltip = 仅包含与搜索词完全匹配的结果
|
||||
fuzzy_tooltip = 在搜索结果中包含与搜索词相近的项目
|
||||
|
|
|
@ -87,6 +87,7 @@ webauthn_error_unknown = 發生未知嘅錯誤,請再試下。
|
|||
webauthn_error_unable_to_process = 伺服器唔可以執行你嘅請求。
|
||||
logo = 標識
|
||||
enable_javascript = 本網站需要 JavaScript。
|
||||
webauthn_error_empty = 你要起名呢條鎖匙。
|
||||
|
||||
[aria]
|
||||
|
||||
|
@ -591,7 +592,7 @@ settings.tracker_issue_style.numeric=數字
|
|||
settings.tracker_issue_style.alphanumeric=字母及數字
|
||||
settings.danger_zone=危險操作區
|
||||
settings.new_owner_has_same_repo=新的儲存庫擁有者已經存在同名儲存庫!
|
||||
settings.transfer=轉移儲存庫所有權
|
||||
settings.transfer.title=轉移儲存庫所有權
|
||||
settings.transfer_owner=新擁有者
|
||||
settings.delete=刪除本儲存庫
|
||||
settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滾。
|
||||
|
|
|
@ -8,18 +8,18 @@ sign_in=登入
|
|||
sign_in_or=或
|
||||
sign_out=登出
|
||||
sign_up=註冊
|
||||
link_account=連結帳戶
|
||||
link_account=連結帳號
|
||||
register=註冊
|
||||
version=版本
|
||||
powered_by=技術提供: %s
|
||||
powered_by=技術由 %s 提供
|
||||
page=頁面
|
||||
template=模板
|
||||
language=語言
|
||||
notifications=通知
|
||||
active_stopwatch=進行中的時間追蹤
|
||||
create_new=建立...
|
||||
user_profile_and_more=個人資料和設定...
|
||||
signed_in_as=已登入
|
||||
create_new=建立…
|
||||
user_profile_and_more=個人資料和設定…
|
||||
signed_in_as=已登入為
|
||||
enable_javascript=本網站需要 JavaScript。
|
||||
toc=目錄
|
||||
licenses=授權條款
|
||||
|
@ -28,7 +28,7 @@ return_to_gitea=返回 Forgejo
|
|||
username=帳號
|
||||
email=電子信箱
|
||||
password=密碼
|
||||
access_token=訪問符記
|
||||
access_token=存取符記
|
||||
re_type=確認密碼
|
||||
captcha=驗證碼
|
||||
twofa=兩步驟驗證
|
||||
|
@ -43,8 +43,8 @@ webauthn_error=無法讀取您的安全金鑰。
|
|||
webauthn_unsupported_browser=您的瀏覽器還不支援 WebAuthn。
|
||||
webauthn_error_unknown=發生未知的錯誤,請再試一次。
|
||||
webauthn_error_insecure=WebAuthn 只支援安全連線。想在 HTTP 上測試,您可以使用「localhost」或「127.0.0.1」
|
||||
webauthn_error_unable_to_process=伺服器無法執行您的請求。
|
||||
webauthn_error_duplicated=此請求不允許使用這個安全金鑰。請確保該金鑰尚未註冊。
|
||||
webauthn_error_unable_to_process=伺服器無法處理您的請求。
|
||||
webauthn_error_duplicated=此安全金鑰無法允許這個請求。請確保該金鑰尚未被註冊。
|
||||
webauthn_error_empty=您必須命名此金鑰。
|
||||
webauthn_error_timeout=在成功讀取金鑰之前已逾時,請重新載入此頁面並重試。
|
||||
webauthn_reload=重新載入
|
||||
|
@ -54,7 +54,7 @@ organization=組織
|
|||
mirror=鏡像
|
||||
new_repo=新增儲存庫
|
||||
new_migrate=遷移外部儲存庫
|
||||
new_mirror=建立新的鏡像
|
||||
new_mirror=新增鏡像
|
||||
new_fork=新增儲存庫 Fork
|
||||
new_org=新增組織
|
||||
new_project=新增專案
|
||||
|
@ -82,8 +82,8 @@ ok=確認
|
|||
cancel=取消
|
||||
retry=重試
|
||||
save=儲存
|
||||
add=增加
|
||||
add_all=全部增加
|
||||
add=新增
|
||||
add_all=全部新增
|
||||
remove=移除
|
||||
remove_all=全部移除
|
||||
remove_label_str=移除項目「%s」
|
||||
|
@ -105,7 +105,7 @@ preview=預覽
|
|||
loading=載入中…
|
||||
|
||||
error=錯誤
|
||||
error404=您正嘗試訪問的頁面 <strong>不存在</strong> 或 <strong>您尚未被授權</strong> 查看該頁面。
|
||||
error404=您嘗試造訪的頁面 <strong>不存在</strong> 或 <strong>您沒有權限</strong> 檢視該頁面。
|
||||
|
||||
never=從來沒有
|
||||
unknown=未知
|
||||
|
@ -131,32 +131,32 @@ tracked_time_summary = 基於 issue 清單篩選器的追蹤時間摘要
|
|||
locked = 已鎖定
|
||||
rerun = 重新執行
|
||||
rerun_all = 重新執行所有作業
|
||||
copy_hash = 複製哈希值
|
||||
copy_hash = 複製雜湊值
|
||||
toggle_menu = 切換選單
|
||||
concept_system_global = 全局
|
||||
view = 查看
|
||||
concept_system_global = 全域
|
||||
view = 檢視
|
||||
filter = 篩選
|
||||
filter.clear = 清除篩選條件
|
||||
filter.is_archived = 已歸檔
|
||||
filter.not_archived = 未封存
|
||||
filter.is_fork = 已派生
|
||||
filter.not_fork = 不是分岔
|
||||
filter.is_mirror = 已鏡像
|
||||
filter.clear = 清空篩選條件
|
||||
filter.is_archived = 已封存
|
||||
filter.not_archived = 未被封存
|
||||
filter.is_fork = 是分叉
|
||||
filter.not_fork = 不是分叉
|
||||
filter.is_mirror = 是鏡像
|
||||
filter.not_mirror = 不是鏡像
|
||||
filter.is_template = 模板
|
||||
filter.is_template = 是範本
|
||||
filter.not_template = 不是範本
|
||||
filter.public = 公開
|
||||
filter.private = 私有
|
||||
artifacts = 製品
|
||||
concept_user_individual = 個人
|
||||
show_timestamps = 顯示時間戳
|
||||
show_timestamps = 顯示時間戳記
|
||||
show_log_seconds = 顯示秒數
|
||||
show_full_screen = 全屏顯示
|
||||
show_full_screen = 全螢幕顯示
|
||||
download_logs = 下載日誌
|
||||
confirm_delete_selected = 確認刪除所有選中專案?
|
||||
confirm_delete_artifact = 您確定要刪除製品“%s”嗎?
|
||||
confirm_delete_selected = 確認刪除所有選擇的項目?
|
||||
confirm_delete_artifact = 您確定要刪除製品「%s」嗎?
|
||||
more_items = 顯示更多
|
||||
invalid_data = 無效數據:%v
|
||||
invalid_data = 無效資料:%v
|
||||
copy_generic = 複製到剪貼簿
|
||||
|
||||
[aria]
|
||||
|
@ -185,7 +185,7 @@ buttons.list.unordered.tooltip=新增項目符號清單
|
|||
buttons.list.ordered.tooltip=新增編號清單
|
||||
buttons.list.task.tooltip=新增工作項目清單
|
||||
buttons.mention.tooltip=提及使用者或團隊
|
||||
buttons.ref.tooltip=參考問題或合併請求
|
||||
buttons.ref.tooltip=引用問題或合併請求
|
||||
buttons.enable_monospace_font=啟用等寬字型
|
||||
buttons.disable_monospace_font=停用等寬字型
|
||||
buttons.switch_to_legacy.tooltip = 使用舊版編輯器
|
||||
|
@ -196,41 +196,42 @@ string.desc=Z - A
|
|||
|
||||
[error]
|
||||
occurred=發生錯誤
|
||||
missing_csrf=錯誤的請求:未提供 CSRF token
|
||||
invalid_csrf=錯誤的請求:無效的 CSRF token
|
||||
missing_csrf=錯誤的請求:未提供 CSRF 符記
|
||||
invalid_csrf=錯誤的請求:無效的 CSRF 符記
|
||||
not_found=找不到目標。
|
||||
network_error=網路錯誤
|
||||
report_message = 如果您確定這是一個 Forgejo bug,請在 <a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a> 上搜索問題,或在必要時建立一個新工單。
|
||||
report_message = 如果您確定這是一個 Forgejo 的錯誤,請在 <a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a> 上搜尋相關問題,或在必要時提出一個問題。
|
||||
server_internal = 伺服器內部錯誤
|
||||
|
||||
[startpage]
|
||||
app_desc=一套極易架設的 Git 服務
|
||||
install=安裝容易
|
||||
platform=跨平台
|
||||
platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="https://go.dev/">Go 語言</a>的平台上執行: Windows, macOS, Linux, ARM 等等。挑一個您喜歡的吧!
|
||||
platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="https://go.dev/">Go 語言</a>的平台上執行:Windows,macOS,Linux,ARM 等。挑一個您喜歡的吧!
|
||||
lightweight=輕量級
|
||||
lightweight_desc=一片便宜的 Raspberry Pi 就可以滿足 Forgejo 的最低需求。節省您的機器資源!
|
||||
license=開放原始碼
|
||||
license_desc=取得 <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">Forgejo</a> !成為一名<a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">貢獻者</a>和我們一起讓 Forgejo 更好,快點加入我們吧!
|
||||
install_desc = 輕鬆使用您平台的<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#installation-from-binary">可執行檔</a>,使用 <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download/#container-image">Docker 部署</a>,抑或是<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">軟體包</a>。
|
||||
|
||||
[install]
|
||||
install=安裝頁面
|
||||
title=初始化設定
|
||||
title=最初組態
|
||||
docker_helper=如果您在 Docker 中執行 Forgejo,請先閱讀<a target="_blank" rel="noopener noreferrer" href="%s">安裝指南</a>再來調整設定。
|
||||
require_db_desc=Forgejo 需要 MySQL、PostgreSQL、SQLite3、MSSQL、TiDB (MySQL 協定) 等其中一項。
|
||||
require_db_desc=Forgejo 需要 MySQL、PostgreSQL、SQLite3、MSSQL 或 TiDB (MySQL 協定)。
|
||||
db_title=資料庫設定
|
||||
db_type=資料庫類型
|
||||
host=主機
|
||||
user=帳號
|
||||
user=使用者名稱
|
||||
password=密碼
|
||||
db_name=資料庫名稱
|
||||
db_schema=Schema
|
||||
db_schema_helper=留空則使用資料庫預設值("public")。
|
||||
db_schema=綱要
|
||||
db_schema_helper=留空將使用資料庫預設值("public")。
|
||||
ssl_mode=SSL
|
||||
path=資料庫檔案路徑
|
||||
sqlite_helper=SQLite3 或 TiDB 資料庫的檔案路徑。<br>如果將 Forgejo 註冊為服務執行,請輸入絕對路徑。
|
||||
path=路徑
|
||||
sqlite_helper=SQLite3 或 TiDB 資料庫的路徑。<br>如果您將 Forgejo 註冊為服務執行,請輸入絕對路徑。
|
||||
reinstall_error=您正試圖安裝到既有的 Forgejo 資料庫中
|
||||
reinstall_confirm_message=使用既有的 Forgejo 資料庫來安裝可能造成多種問題。大部分的情形下您應使用既有的「app.ini」來執行 Forgejo。如果您知道自己正在做什麼,請確認下列事項:
|
||||
reinstall_confirm_message=使用既有的 Forgejo 資料庫來安裝可能造成多種問題。大部分的情況下您應使用既有的「app.ini」來執行 Forgejo。如果您知道自己在做什麼,請確認下列事項:
|
||||
reinstall_confirm_check_1=您可能會遺失以 app.ini 中 SECRET_KEY 所加密的資料:使用者或將無法再以 2FA/OTP 方式登入、鏡像可能無法正常運作。核取此方塊代表您確認目前的 app.ini 包含正確的 SECRET_KEY。
|
||||
reinstall_confirm_check_2=儲存庫和設定可能需要重新同步。核取此方塊代表您確認您將會手動重新同步儲存庫的 Hook 和 SSH authorized_keys 檔案。您確認您會確保儲存庫和鏡像設定正確。
|
||||
reinstall_confirm_check_3=您確認您絕對肯定此 Forgejo 在正確的 app.ini 位置上執行,而且您確定您必須重新安裝。您確認您瞭解上述風險。
|
||||
|
@ -238,9 +239,9 @@ 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_pattern_not_allowed=無效的管理員帳號,該帳號符合保留規則
|
||||
err_admin_name_is_invalid=無效的管理員帳號
|
||||
err_admin_name_is_reserved=無效的管理員帳號名稱,帳號名稱已被保留
|
||||
err_admin_name_pattern_not_allowed=無效的管理員帳號名稱,該帳號符合保留規則
|
||||
err_admin_name_is_invalid=無效的管理員帳號名稱
|
||||
|
||||
general_title=一般設定
|
||||
app_name=站點標題
|
||||
|
@ -256,17 +257,17 @@ ssh_port=SSH 伺服器埠
|
|||
ssh_port_helper=SSH 伺服器使用的埠號,留空以停用 SSH 伺服器。
|
||||
http_port=HTTP 埠
|
||||
http_port_helper=Forgejo 的網頁伺服器所使用的埠號。
|
||||
app_url=基本 URL
|
||||
app_url_helper=用於 HTTP(S) Clone 和電子郵件通知的基本網址。
|
||||
app_url=基底 URL
|
||||
app_url_helper=用於 HTTP(S) Clone 和電子郵件通知的基底 URL。
|
||||
log_root_path=日誌路徑
|
||||
log_root_path_helper=日誌檔將寫入此目錄。
|
||||
|
||||
optional_title=可選設定
|
||||
optional_title=可選填設定
|
||||
email_title=電子郵件設定
|
||||
smtp_addr=SMTP 主機地址
|
||||
smtp_addr=SMTP 主機位址
|
||||
smtp_port=SMTP 連接埠
|
||||
smtp_from=電子郵件寄件者
|
||||
smtp_from_helper=Forgejo 將會使用的電子信箱,直接輸入電子信箱或使用「"名稱" <email@example.com>」的格式。
|
||||
smtp_from=電子郵件寄件人
|
||||
smtp_from_helper=Forgejo 使用的電子信箱。直接輸入電子信箱或使用「"名稱" <email@example.com>」的格式。
|
||||
mailer_user=SMTP 帳號
|
||||
mailer_password=SMTP 密碼
|
||||
register_confirm=要求註冊時確認電子郵件
|
||||
|
@ -275,47 +276,47 @@ server_service_title=伺服器和第三方服務設定
|
|||
offline_mode=啟用本地模式
|
||||
offline_mode_popup=停用其他服務並在本地提供所有資源。
|
||||
disable_gravatar=停用 Gravatar
|
||||
disable_gravatar_popup=停用 Gravatar 和其他大頭貼服務。除非使用者在本地上傳大頭貼,否則將使用預設的大頭貼。
|
||||
disable_gravatar_popup=停用 Gravatar 和第三方大頭貼服務。若使用者在未本地上傳大頭貼,將使用預設的大頭貼。
|
||||
federated_avatar_lookup=啟用 Federated 大頭貼
|
||||
federated_avatar_lookup_popup=使用 Libravatar 以啟用 Federated Avatar 查詢服務
|
||||
disable_registration=禁用自助註冊
|
||||
disable_registration_popup=關閉註冊功能,只有管理員可以新增帳戶。
|
||||
federated_avatar_lookup_popup=啟用 Libravatar 提供的 Federated Avatar 查詢服務。
|
||||
disable_registration=停用自助註冊
|
||||
disable_registration_popup=禁止使用者自助註冊,只有管理員可以新增帳號。
|
||||
allow_only_external_registration_popup=只允許從外部服務註冊
|
||||
openid_signin=啟用 OpenID 登入
|
||||
openid_signin_popup=啟用 OpenID 登入
|
||||
openid_signin_popup=啟用 OpenID 登入。
|
||||
openid_signup=啟用 OpenID 自助註冊
|
||||
openid_signup_popup=啟用基於 OpenID 的註冊
|
||||
enable_captcha=在註冊時啟用驗證碼
|
||||
enable_captcha_popup=要求在用戶註冊時輸入驗證碼
|
||||
openid_signup_popup=啟用使用 OpenID 的自助註冊。
|
||||
enable_captcha=啟用註冊驗證碼
|
||||
enable_captcha_popup=要求在用戶註冊時輸入驗證碼。
|
||||
require_sign_in_view=需要登入才能瀏覽頁面
|
||||
require_sign_in_view_popup=限制已登入的使用者才能存取頁面。訪客只會看到登入和註冊頁面。
|
||||
admin_setting_desc=建立管理員帳戶是選用的。 第一個註冊的使用者將自動成為管理員。
|
||||
admin_title=管理員帳戶設定
|
||||
admin_name=管理員使用者名稱
|
||||
admin_password=管理員密碼
|
||||
require_sign_in_view_popup=僅有已登入的使用者能存取頁面。訪客只會看到登入和註冊頁面。
|
||||
admin_setting_desc=您不需要建立管理員帳號。 第一個註冊的使用者將自動成為管理員。
|
||||
admin_title=管理員帳號設定
|
||||
admin_name=管理員帳號名稱
|
||||
admin_password=密碼
|
||||
confirm_password=確認密碼
|
||||
admin_email=電子信箱
|
||||
install_btn_confirm=安裝 Forgejo
|
||||
test_git_failed=無法識別「git」指令:%v
|
||||
test_git_failed=無法測試「git」指令:%v
|
||||
sqlite3_not_available=這個 Forgejo 版本不支援 SQLite3,請從 %s 下載官方的預先編譯版本 (不是 「gobuild」 版本)。
|
||||
invalid_db_setting=資料庫設定不正確: %v
|
||||
invalid_db_table=資料庫的資料表「%s」無效: %v
|
||||
invalid_repo_path=儲存庫根目錄設定不正確:%v
|
||||
invalid_app_data_path=無效的應用程式資料路徑:%v
|
||||
invalid_db_setting=資料庫設定無效: %v
|
||||
invalid_db_table=資料表「%s」無效:%v
|
||||
invalid_repo_path=儲存庫根目錄設定無效:%v
|
||||
invalid_app_data_path=應用程式資料路徑無效:%v
|
||||
run_user_not_match=「以...執行」的使用者名稱不是目前的使用者名稱:%s -> %s
|
||||
internal_token_failed=產生內部 Token 失敗:%v
|
||||
internal_token_failed=產生內部符記失敗:%v
|
||||
secret_key_failed=產生密鑰失敗:%v
|
||||
save_config_failed=儲存設定失敗:%v
|
||||
invalid_admin_setting=管理員帳戶設定不正確:%v
|
||||
invalid_log_root_path=日誌根目錄設定不正確: %v
|
||||
invalid_admin_setting=管理員帳號設定無效:%v
|
||||
invalid_log_root_path=日誌根目錄設定無效:%v
|
||||
default_keep_email_private=預設隱藏電子信箱
|
||||
default_keep_email_private_popup=預設隱藏新使用者的電子信箱。
|
||||
default_allow_create_organization=預設允許建立組織
|
||||
default_allow_create_organization_popup=預設允許新使用者建立組織
|
||||
default_allow_create_organization_popup=預設允許新使用者建立組織。
|
||||
default_enable_timetracking=預設啟用時間追蹤
|
||||
default_enable_timetracking_popup=預設情況下啟用新存儲庫的時間跟蹤。
|
||||
default_enable_timetracking_popup=預設啟用新存儲庫的時間追蹤。
|
||||
no_reply_address=隱藏電子信箱域名
|
||||
no_reply_address_helper=作為隱藏電子信箱使用者的域名。例如,如果隱藏的電子信箱域名設定為「noreply.example.org」,帳號「joe」將以「joe@noreply.example.org」的身分登錄到 Git 中。
|
||||
no_reply_address_helper=隱藏電子信箱的域名。例如,如果隱藏的電子信箱域名設定為「noreply.example.org」,帳號「joe」將以「joe@noreply.example.org」的身分登入到 Git 中。
|
||||
password_algorithm=密碼雜湊演算法
|
||||
invalid_password_algorithm=無效的密碼雜湊演算法
|
||||
password_algorithm_helper=設定密碼雜湊演算法。演算法有不同的需求與強度。argon2 演算法雖然較安全但會使用大量記憶體,可能不適用於小型系統。
|
||||
|
@ -323,7 +324,7 @@ enable_update_checker=啟用更新檢查
|
|||
run_user_helper = 輸入 Forgejo 執行的作業系統使用者名稱。請注意,此使用者必須具有對儲存庫根路徑的訪問許可權。
|
||||
env_config_keys_prompt = 以下的環境變數也會被套用於您的設定檔:
|
||||
env_config_keys = 環境設定
|
||||
smtp_from_invalid = 電子郵件寄件者地址無效
|
||||
smtp_from_invalid = 郵件寄件人的地址無效
|
||||
config_location_hint = 這些設定將被儲存在:
|
||||
allow_dots_in_usernames = 允許使用者在使用者名稱中使用英文句點。不影響現有帳戶。
|
||||
enable_update_checker_helper_forgejo = 透過檢查 release.forgejo.org 的 DNS TXT 記錄來定期檢查新的 Forgejo 版本。
|
||||
|
@ -333,11 +334,11 @@ uname_holder=帳號或電子信箱
|
|||
password_holder=密碼
|
||||
switch_dashboard_context=切換資訊主頁帳戶
|
||||
my_repos=儲存庫
|
||||
show_more_repos=顯示更多儲存庫...
|
||||
show_more_repos=顯示更多儲存庫…
|
||||
collaborative_repos=參與協作的儲存庫
|
||||
my_orgs=組織
|
||||
my_mirrors=我的鏡像
|
||||
view_home=訪問 %s
|
||||
view_home=檢視 %s
|
||||
search_repos=搜尋儲存庫...
|
||||
filter=其他篩選條件
|
||||
filter_by_team_repositories=以團隊儲存庫篩選
|
||||
|
@ -375,10 +376,11 @@ code_search_results=「%s」的搜尋結果
|
|||
code_last_indexed_at=最後索引 %s
|
||||
relevant_repositories_tooltip=已隱藏缺少主題、圖示、說明、Fork 的儲存庫。
|
||||
relevant_repositories=只顯示相關的儲存庫,<a href="%s">顯示未篩選的結果</a>。
|
||||
stars_few = %d 個星星
|
||||
stars_one = %d 個星星
|
||||
stars_few = %d 顆星星
|
||||
stars_one = %d 顆星星
|
||||
forks_one = %d 個 fork
|
||||
forks_few = %d 個 fork
|
||||
go_to = 前往
|
||||
|
||||
[auth]
|
||||
create_new_account=註冊帳戶
|
||||
|
@ -401,20 +403,20 @@ prohibit_login=禁止登入
|
|||
resent_limit_prompt=抱歉,您請求發送驗證電子郵件太過頻繁,請等待 3 分鐘後再試一次。
|
||||
has_unconfirmed_mail=%s 您好,您有一封發送至( <b>%s</b>) 但未被確認的郵件。如果您未收到啟用郵件,或需要重新發送,請單擊下方的按鈕。
|
||||
resend_mail=單擊此處重新發送確認郵件
|
||||
email_not_associate=此電子信箱未與任何帳戶連結
|
||||
email_not_associate=此電子信箱未與任何帳戶連結。
|
||||
send_reset_mail=發送帳戶救援信
|
||||
reset_password=帳戶救援
|
||||
invalid_code=您的確認代碼無效或已過期。
|
||||
invalid_password=您的密碼和用來建立帳戶的不符。
|
||||
reset_password_helper=帳戶救援
|
||||
password_too_short=密碼長度不能少於 %d 個字!
|
||||
password_too_short=密碼長度不能少於 %d 個字。
|
||||
non_local_account=非本地帳戶無法透過 Forgejo 的網頁介面更改密碼。
|
||||
verify=驗證
|
||||
scratch_code=備用驗證碼
|
||||
use_scratch_code=使用備用驗證碼
|
||||
twofa_scratch_used=您已經用掉了備用驗證碼。您已被重新導向到兩步驟驗證設定頁面以便移除你已註冊設備或重新產生新的備用驗證碼。
|
||||
twofa_scratch_used=您已經用掉了備用驗證碼。您已被轉址到兩步驟驗證設定頁面以便移除您的註冊設備或重新產生新的備用驗證碼。
|
||||
twofa_passcode_incorrect=您的驗證碼不正確。如果您遺失設備,請使用您的備用驗證碼登入。
|
||||
twofa_scratch_token_incorrect=您的備用驗證碼不正確
|
||||
twofa_scratch_token_incorrect=您的備用驗證碼不正確。
|
||||
login_userpass=登入
|
||||
tab_openid=OpenID
|
||||
oauth_signup_tab=註冊新帳戶
|
||||
|
@ -441,7 +443,7 @@ authorize_application_description=如果您允許,它將能夠讀取和修改
|
|||
authorize_title=授權「%s」存取您的帳戶?
|
||||
authorization_failed=授權失效
|
||||
sspi_auth_failed=SSPI 認證失敗
|
||||
password_pwned_err=無法完成對 HaveIBeenPwned 的請求。
|
||||
password_pwned_err=無法完成對 HaveIBeenPwned 的請求
|
||||
tab_signin = 登入
|
||||
change_unconfirmed_email_summary = 更改接收帳號啟用信的信箱地址。
|
||||
change_unconfirmed_email = 如果您在註冊帳號時寫錯了信箱地址,您可以在下面更改它。您會在這個新地址收到一封確認信。
|
||||
|
@ -450,12 +452,12 @@ tab_signup = 註冊
|
|||
last_admin = 您無法刪除最後一個管理員。必須至少有一個管理員。
|
||||
prohibit_login_desc = 您的帳號被禁止登入,請連絡網站管理員。
|
||||
sign_up_successful = 已成功建立帳號。歡迎!
|
||||
invalid_code_forgot_password = 您的驗證碼無效或是已過期。點擊<a href="%s">這裡</a>來開始一個新的 session。
|
||||
invalid_code_forgot_password = 您的確認代碼無效或是已過期。點擊<a href="%s">這裡</a>來開始一個新的 session。
|
||||
reset_password_wrong_user = 您以 %s 登入,但是帳號復原連結是給 %s 的
|
||||
password_pwned = 該密碼出現在先前資料洩露的<a target="_blank" rel="noopener noreferrer" href="https://haveibeenpwned.com/Passwords">被盜密碼清單</a>中。請用一個不同的密碼再試一次,並考慮在其他地方也更換此密碼。
|
||||
authorization_failed_desc = 偵測到無效請求,授權失敗。請連絡您嘗試授權的應用的維護者。
|
||||
authorization_failed_desc = 因為偵測到無效請求,授權失敗。請連絡您嘗試授權的應用的維護者。
|
||||
openid_signin_desc = 輸入您的 OpenID URI。例如:alice.openid.example.org 或是 https://openid.example.org/alice。
|
||||
remember_me.compromised = 此登入 token 已經無效,這可能是因為您的帳號被盜用了。請檢查您的帳號是否有異常活動。
|
||||
remember_me.compromised = 此登入符記已經無效,這可能是因為您的帳號被盜用了。請檢查您的帳號是否有異常活動。
|
||||
|
||||
[mail]
|
||||
view_it_on=在 %s 上查看
|
||||
|
@ -569,13 +571,13 @@ include_error=` 必須包含子字串「%s」。`
|
|||
glob_pattern_error=` glob 比對模式無效:%s.`
|
||||
regex_pattern_error=` 正規表示式模式無效:%s.`
|
||||
username_error=`只能包含英文字母數字 ('0-9'、'a-z'、'A-Z')、破折號 ('-')、底線 ('_')、句點 ('.'),不能以非英文字母數字開頭或結尾,也不允許連續的非英文字母數字。`
|
||||
invalid_group_team_map_error=` 對應無效: %s`
|
||||
invalid_group_team_map_error=` 對應無效:%s`
|
||||
unknown_error=未知錯誤:
|
||||
captcha_incorrect=驗證碼不正確。
|
||||
password_not_match=密碼錯誤。
|
||||
lang_select_error=從清單中選擇一個語言。
|
||||
|
||||
username_been_taken=帳號已被使用
|
||||
username_been_taken=帳號名稱已被使用。
|
||||
username_change_not_local_user=非本地使用者不允許更改他們的帳號。詳細資訊請聯絡您的系統管理員。
|
||||
repo_name_been_taken=儲存庫名稱已被使用。
|
||||
repository_force_private=已啟用「強制私有」:私有儲存庫不能被公開。
|
||||
|
@ -588,10 +590,10 @@ visit_rate_limit=遠端造訪已達用量上限。
|
|||
org_name_been_taken=組織名稱已被使用。
|
||||
team_name_been_taken=團隊名稱已被使用。
|
||||
team_no_units_error=請至少選擇一個儲存庫區域。
|
||||
email_been_used=此電子信箱已被使用
|
||||
email_been_used=此電子信箱已被使用。
|
||||
email_invalid=此電子信箱無效。
|
||||
openid_been_used=OpenID 位址「%s」已被使用。
|
||||
username_password_incorrect=帳號或密碼不正確
|
||||
username_password_incorrect=帳號或密碼不正確。
|
||||
password_complexity=密碼複雜度沒有通過以下的要求:
|
||||
password_lowercase_one=至少要有一個小寫字母
|
||||
password_uppercase_one=至少要有一個大寫字母
|
||||
|
@ -601,8 +603,8 @@ enterred_invalid_repo_name=您輸入的儲存庫名稱不正確。
|
|||
enterred_invalid_org_name=您輸入的組織名稱不正確。
|
||||
enterred_invalid_owner_name=新的擁有者名稱無效。
|
||||
enterred_invalid_password=您輸入的密碼不正確。
|
||||
user_not_exist=該用戶名不存在
|
||||
team_not_exist=團隊不存在
|
||||
user_not_exist=該用戶名不存在。
|
||||
team_not_exist=團隊不存在。
|
||||
last_org_owner=你不能從「所有者」團隊中刪除最後一個使用者。每個組織中至少要有一個擁有者。
|
||||
cannot_add_org_to_team=組織不能被新增為團隊成員。
|
||||
duplicate_invite_to_team=該使用者已經被邀請為團隊成員。
|
||||
|
@ -621,7 +623,7 @@ still_own_packages=您的帳戶擁有一個以上的套件,請先刪除它們
|
|||
org_still_own_repo=此組織仍然擁有一個以上的儲存庫,請先刪除或轉移它們。
|
||||
org_still_own_packages=此組織仍然擁有一個以上的套件,請先刪除它們。
|
||||
|
||||
target_branch_not_exist=目標分支不存在
|
||||
target_branch_not_exist=目標分支不存在。
|
||||
unset_password = 此使用者尚未設置密碼。
|
||||
unsupported_login_type = 該帳號的登入方式使它無法被刪除。
|
||||
To = 分支名稱
|
||||
|
@ -631,7 +633,7 @@ Pronouns = 代名詞
|
|||
Biography = 個人簡介
|
||||
Website = 網站
|
||||
Location = 地區
|
||||
AccessToken = 存取令牌
|
||||
AccessToken = 存取符記
|
||||
username_has_not_been_changed = 帳號名稱未被更改
|
||||
admin_cannot_delete_self = 當您是管理員時,您不能刪除自己。請先移除您的管理員權限。
|
||||
username_error_no_dots = ` 只能包含英數字符("0-9","a-z","A-Z"),破折號("-")和底線("_")。只能以英數字元開頭或結尾,連續的非英數字元也不被允許。`
|
||||
|
@ -639,7 +641,7 @@ required_prefix = 輸入文字必須以「%s」開頭
|
|||
|
||||
|
||||
[user]
|
||||
change_avatar=更改大頭貼...
|
||||
change_avatar=更改大頭貼…
|
||||
repositories=儲存庫
|
||||
activity=公開動態
|
||||
followers_few=%d 追蹤者
|
||||
|
@ -652,7 +654,7 @@ following_few=%d 追蹤中
|
|||
follow=追蹤
|
||||
unfollow=取消追蹤
|
||||
user_bio=個人簡介
|
||||
disabled_public_activity=這個使用者已對外隱藏動態
|
||||
disabled_public_activity=這個使用者已對外隱藏動態。
|
||||
email_visibility.limited=所有已驗證的使用者都可以看到您的電子信箱地址
|
||||
email_visibility.private=只有您和系統管理員可以看到您的電子信箱地址
|
||||
|
||||
|
@ -667,6 +669,11 @@ block_user.detail_1 = 該使用者已停止追踪您。
|
|||
block_user.detail_2 = 這個使用者無法對您的儲存庫、您提出的問題或發表的留言做出任何操作。
|
||||
followers_one = %d 個追踪者
|
||||
following_one = 追踪 %d 個人
|
||||
block_user.detail_3 = 該使用者無法將您加為協作者,您也無法將其加為協作者。
|
||||
follow_blocked_user = 因為這個使用者封鎖您或被您封鎖,您不能追蹤此使用者。
|
||||
block = 封鎖
|
||||
unblock = 解除封鎖
|
||||
block_user.detail = 請注意,封鎖此使用者將會導致以下結果。例如:
|
||||
|
||||
[settings]
|
||||
profile=個人資料
|
||||
|
@ -727,15 +734,15 @@ enable_custom_avatar=使用自訂大頭貼
|
|||
choose_new_avatar=選擇新的大頭貼
|
||||
update_avatar=更新大頭貼
|
||||
delete_current_avatar=刪除目前的大頭貼
|
||||
uploaded_avatar_not_a_image=上傳的檔案不是圖片
|
||||
update_avatar_success=您的大頭貼已更新
|
||||
update_user_avatar_success=已更新使用者的大頭貼。
|
||||
uploaded_avatar_not_a_image=上傳的檔案不是圖片。
|
||||
update_avatar_success=已更新您的大頭貼。
|
||||
update_user_avatar_success=已更新該使用者的大頭貼。
|
||||
|
||||
update_password=更新密碼
|
||||
old_password=目前的密碼
|
||||
new_password=新的密碼
|
||||
retype_new_password=確認新密碼
|
||||
password_incorrect=輸入的密碼不正確!
|
||||
password_incorrect=輸入的密碼不正確。
|
||||
change_password_success=您的密碼已更新。 從現在起使用您的新密碼登入。
|
||||
password_change_disabled=非本地帳戶無法透過 Forgejo 的網頁介面更改密碼。
|
||||
|
||||
|
@ -753,18 +760,18 @@ activations_pending=等待啟用中
|
|||
delete_email=移除
|
||||
email_deletion=移除電子信箱
|
||||
email_deletion_desc=電子信箱和相關資訊將從您的帳戶中刪除,由此電子信箱所提交的 Git 將保持不變,是否繼續?
|
||||
email_deletion_success=該電子信箱已被刪除
|
||||
email_deletion_success=該電子信箱已被刪除。
|
||||
theme_update_success=已更新佈景主題。
|
||||
theme_update_error=選取的佈景主題不存在。
|
||||
openid_deletion=移除 OpenID 位址
|
||||
openid_deletion_desc=從您的帳戶刪除此 OpenID 位址將會無法使用它進行登入。是否繼續?
|
||||
openid_deletion_success=該 OpenID 已被刪除
|
||||
openid_deletion_success=該 OpenID 已被刪除。
|
||||
add_new_email=新增電子信箱
|
||||
add_new_openid=新增 OpenID URI
|
||||
add_email=新增電子信箱
|
||||
add_openid=新增 OpenID URI
|
||||
add_email_success=已加入新的電子信箱。
|
||||
email_preference_set_success=已套用郵件偏好設定
|
||||
email_preference_set_success=已套用郵件偏好設定。
|
||||
add_openid_success=已加入新的 OpenID 地址。
|
||||
keep_email_private=隱藏電子信箱
|
||||
openid_desc=OpenID 讓你可以授權認證給外部服務。
|
||||
|
@ -787,26 +794,26 @@ ssh_key_been_used=此 SSH 金鑰早已加入本伺服器。
|
|||
ssh_key_name_used=已有相同名稱的 SSH 金鑰存在於您的帳戶。
|
||||
ssh_principal_been_used=此主體早已加入本伺服器。
|
||||
gpg_key_id_used=已存在具有相同 ID 的 GPG 金鑰。
|
||||
gpg_no_key_email_found=此 GPG 金鑰不符合任何已關聯到您帳戶且已啟用的電子信箱。若您為提供的 Token 進行簽署,您仍然可以新增它。
|
||||
gpg_no_key_email_found=此 GPG 金鑰不符合任何已關聯到您帳戶且已啟用的電子信箱。若您簽署該符記,您仍然可以新增它。
|
||||
gpg_key_matched_identities=符合的身分:
|
||||
gpg_key_matched_identities_long=此金鑰中嵌入的身分符合此使用者已啟用的電子信箱。此金鑰可用來驗證符合此信箱的提交。
|
||||
gpg_key_verified=已驗證的金鑰
|
||||
gpg_key_verified_long=金鑰已被 Token 驗證且可用來驗證符合此使用者已啟用的電子信箱的提交,以及任何符合此金鑰的身分。
|
||||
gpg_key_verified_long=金鑰已被符記驗證且可用來驗證符合此使用者已啟用的電子信箱的提交,以及任何符合此金鑰的身分。
|
||||
gpg_key_verify=驗證
|
||||
gpg_invalid_token_signature=提供的 GPG 金鑰、簽署、Token 不符合或 Token 已過期。
|
||||
gpg_token_required=您必須為下列的 Token 提供簽署
|
||||
gpg_token=Token
|
||||
gpg_invalid_token_signature=提供的 GPG 金鑰、簽署、符記不符合或符記已過期。
|
||||
gpg_token_required=您必須為下列的符記提供簽署
|
||||
gpg_token=符記
|
||||
gpg_token_help=您可以使用以下方法產生簽署:
|
||||
gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
|
||||
gpg_token_signature=Armored GPG 簽署
|
||||
key_signature_gpg_placeholder=以 「-----BEGIN PGP SIGNATURE-----」 開頭
|
||||
verify_gpg_key_success=已驗證 GPG 金鑰「%s」。
|
||||
ssh_key_verified=已驗證的金鑰
|
||||
ssh_key_verified_long=金鑰已被 Token 驗證且可用來驗證符合此使用者已啟用的電子信箱的提交。
|
||||
ssh_key_verified_long=金鑰已被符記驗證且可用來驗證符合此使用者已啟用的電子信箱的提交。
|
||||
ssh_key_verify=驗證
|
||||
ssh_invalid_token_signature=提供的 SSH 金鑰、簽署、Token 不符合或 Token 已過期。
|
||||
ssh_token_required=您必須為下列的 Token 提供簽署
|
||||
ssh_token=Token
|
||||
ssh_invalid_token_signature=提供的 SSH 金鑰、簽署、符記不符合或符記已過期。
|
||||
ssh_token_required=您必須為下列的符記提供簽署
|
||||
ssh_token=符記
|
||||
ssh_token_help=您可以使用以下方法產生簽署:
|
||||
ssh_token_signature=Armored SSH 簽署
|
||||
key_signature_ssh_placeholder=以「-----BEGIN SSH SIGNATURE-----」開頭
|
||||
|
@ -835,7 +842,7 @@ no_activity=沒有近期動態
|
|||
can_read_info=讀取
|
||||
can_write_info=寫入
|
||||
key_state_desc=此金鑰在過去 7 天內曾被使用
|
||||
token_state_desc=此 Token 在過去 7 天內曾被使用
|
||||
token_state_desc=此符記在過去 7 天內曾被使用
|
||||
principal_state_desc=此主體在過去 7 天內曾被使用
|
||||
show_openid=在個人資料顯示
|
||||
hide_openid=從個人資料隱藏
|
||||
|
@ -844,19 +851,19 @@ ssh_externally_managed=此 SSH 金鑰由此使用者的外部服務所管理
|
|||
manage_social=管理關聯的社群帳戶
|
||||
unbind=解除連結
|
||||
|
||||
manage_access_token=管理 Access Token
|
||||
generate_new_token=產生新的 Token
|
||||
tokens_desc=這些 Token 透過 Forgejo API 獲得存取你帳戶的權限。
|
||||
token_name=Token 名稱
|
||||
generate_token=產生 Token
|
||||
generate_token_success=已經產生新的 Token。請立刻複製它,因為他將不會再次顯示。
|
||||
manage_access_token=管理存取符記
|
||||
generate_new_token=產生新的符記
|
||||
tokens_desc=這些符記透過 Forgejo API 獲得存取您帳戶的權限。
|
||||
token_name=符記名稱
|
||||
generate_token=產生符記
|
||||
generate_token_success=已經產生新的符記。請立刻複製它,因為它將不會被再次顯示。
|
||||
generate_token_name_duplicate=應用程式名稱 <strong>%s</strong> 已被使用,請換一個試試。
|
||||
delete_token=刪除
|
||||
access_token_deletion=刪除 Access Token
|
||||
access_token_deletion=刪除存取符記
|
||||
access_token_deletion_cancel_action=取消
|
||||
access_token_deletion_confirm_action=刪除
|
||||
access_token_deletion_desc=刪除 Token 後,使用此 Token 的應用程式將無法再存取您的帳戶,此動作不可還原。是否繼續?
|
||||
delete_token_success=已刪除 Token。使用此 Token 的應用程式無法再存取您的帳戶。
|
||||
access_token_deletion_desc=刪除符記後,使用此符記的應用程式將無法再存取您的帳戶。您將無法取消此操作。要繼續嗎?
|
||||
delete_token_success=已刪除符記。使用此符記的應用程式無法再存取您的帳戶。
|
||||
permission_no_access=沒有存取權
|
||||
permission_read=讀取
|
||||
|
||||
|
@ -864,7 +871,7 @@ manage_oauth2_applications=管理 OAuth2 應用程式
|
|||
edit_oauth2_application=編輯 OAuth2 應用程式
|
||||
oauth2_applications_desc=OAuth2 應用程式讓您的第三方應用程式安全地驗證此 Forgejo 中的使用者。
|
||||
remove_oauth2_application=刪除 OAuth2 應用程式
|
||||
remove_oauth2_application_desc=刪除 OAuth2 應用程式將會撤銷所有已簽署的 Access Token 存取權。是否繼續?
|
||||
remove_oauth2_application_desc=刪除 OAuth2 應用程式將會撤銷所有已簽署的存取符記之存取權。是否繼續?
|
||||
remove_oauth2_application_success=已刪除應用程式。
|
||||
create_oauth2_application=新增 OAuth2 應用程式
|
||||
create_oauth2_application_button=建立應用程式
|
||||
|
@ -897,7 +904,7 @@ scan_this_image=使用您的授權應用程式來掃瞄圖片:
|
|||
or_enter_secret=或者輸入密碼: %s
|
||||
then_enter_passcode=然後輸入應用程式中顯示的驗證碼:
|
||||
passcode_invalid=無效的驗證碼,請重試。
|
||||
twofa_enrolled=您的帳戶已經啟用了兩步驟驗證。請將備用驗證碼 (%s) 保存到安全的地方,它只會顯示這麼一次!
|
||||
twofa_enrolled=您的帳戶已經啟用了兩步驟驗證。請將備用驗證碼 (%s) 保存到安全的地方,它只會被顯示一次。
|
||||
twofa_failed_get_secret=取得密鑰 (Secret) 失敗。
|
||||
|
||||
webauthn_desc=安全金鑰是包含加密密鑰的硬體設備,它們可以用於兩步驟驗證。安全金鑰必須支援 <a rel="noreferrer" target="_blank" href="https://w3c.github.io/webauthn/#webauthn-authenticator">WebAuthn Authenticator</a> 標準。
|
||||
|
@ -908,7 +915,7 @@ 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 帳戶的存取權限。是否繼續?
|
||||
|
@ -942,7 +949,7 @@ 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 = 隱藏個人頁面中的活動資料
|
||||
|
@ -954,7 +961,7 @@ add_email_confirmation_sent = 我們已發送一封確認信至 「%s」。請
|
|||
repo_and_org_access = 儲存庫和組織存取權
|
||||
permissions_public_only = 僅公開
|
||||
permissions_access_all = 全部(公開、私有和受限)
|
||||
at_least_one_permission = 您必須至少選擇一個權限才能建立 token
|
||||
at_least_one_permission = 您必須至少選擇一個權限才能建立符記
|
||||
can_not_add_email_activations_pending = 已有一個待處理的啟用請求,如果您想要新增電子信箱,請稍等幾分鐘。
|
||||
uid = UID
|
||||
change_password = 更改密碼
|
||||
|
@ -966,6 +973,17 @@ change_username_prompt = 註:更新您的使用者名稱將改變您的帳號
|
|||
change_username_redirect_prompt = 舊的使用者名稱在其他使用者認領之前將會轉址到新的使用者名稱。
|
||||
visibility.limited_tooltip = 只有已登入的使用者能看見
|
||||
visibility.private_tooltip = 只有您加入的組織之成員能看見
|
||||
keep_email_private_popup = 這將在您的個人資料頁面、合併請求或網頁檔案編輯器中隱藏您的電子信箱地址。已推送的提交不會被更改。在提交中使用 %s 來將其連結至您的帳戶。
|
||||
ssh_signonly = 因為目前 SSH 已被停用,這個金鑰只被用來校驗提交簽署。
|
||||
email_desc = 您的主要電子信箱將被用於通知、密碼復原、網頁 Git 操作(如果您的信箱不是隱藏的)。
|
||||
pronouns_custom = 自訂
|
||||
oauth2_client_secret_hint = 這把密鑰在您離開或重新整理此頁面後將不再被顯示。請確保您已儲存它。
|
||||
additional_repo_units_hint_description = 在沒有啟用所有模組的儲存庫中顯示「新增更多模組…」按鈕。
|
||||
hidden_comment_types.issue_ref_tooltip = 使用者更改與問題相關分支/標籤的留言
|
||||
pronouns = 代名詞
|
||||
update_oauth2_application_success = 您已成功更新該 OAuth2 應用程式。
|
||||
oauth2_redirect_uris = 轉址 URI。每個 URI 應各佔一行。
|
||||
pronouns_unspecified = 未指定
|
||||
|
||||
[repo]
|
||||
owner=擁有者
|
||||
|
@ -974,7 +992,7 @@ repo_name=儲存庫名稱
|
|||
repo_name_helper=好的儲存庫名稱通常是簡短的、好記的、且獨特的。
|
||||
repo_size=儲存庫大小
|
||||
template=範本
|
||||
template_select=選擇範本
|
||||
template_select=選擇範本。
|
||||
template_helper=將儲存庫設為範本
|
||||
template_description=儲存庫範本讓使用者可新增相同目錄結構、檔案以及設定的儲存庫。
|
||||
visibility=瀏覽權限
|
||||
|
@ -997,12 +1015,12 @@ generate_from=產生自
|
|||
repo_desc=描述
|
||||
repo_desc_helper=輸入簡介 (選用)
|
||||
repo_lang=儲存庫語言
|
||||
repo_gitignore_helper=選擇 .gitignore 範本
|
||||
repo_gitignore_helper=選擇 .gitignore 範本。
|
||||
repo_gitignore_helper_desc=從常見語言範本清單中挑選忽略追蹤的檔案。預設情況下各種語言建置工具產生的特殊檔案都包含在 .gitignore 中。
|
||||
issue_labels=問題標籤
|
||||
issue_labels_helper=選擇問題標籤集
|
||||
license=授權條款
|
||||
license_helper=請選擇授權條款檔案
|
||||
license_helper=請選擇授權條款檔案。
|
||||
license_helper_desc=授權條款定義了他人使用您原始碼的允許和禁止事項。不確定哪個適用於您的專案?查看<a target="_blank" rel="noopener noreferrer" href="%s">選擇授權條款。</a>
|
||||
readme=讀我檔案
|
||||
readme_helper=選擇讀我檔案範本。
|
||||
|
@ -1019,7 +1037,7 @@ default_branch_helper=預設分支是合併請求和提交程式碼的基礎分
|
|||
mirror_prune=裁減
|
||||
mirror_prune_desc=刪除過時的遠端追蹤參考
|
||||
mirror_interval=鏡像週期(有效時間單位為「h」、「m」、「s」),設為 0 以停用定期同步。(最小值為:%s)
|
||||
mirror_interval_invalid=鏡像週期無效
|
||||
mirror_interval_invalid=鏡像週期無效。
|
||||
mirror_sync_on_commit=推送提交後進行同步
|
||||
mirror_address=從 URL Clone
|
||||
mirror_address_desc=在授權資訊中填入必要的資料。
|
||||
|
@ -1034,7 +1052,7 @@ mirror_password_help=修改帳號以清除已儲存的密碼。
|
|||
watchers=關注者
|
||||
stargazers=占星術師
|
||||
forks=Fork
|
||||
reactions_more=再多添加 %d個
|
||||
reactions_more=和其他 %d 個
|
||||
unit_disabled=網站管理員已經停用這個儲存庫區域。
|
||||
language_other=其他
|
||||
adopt_search=輸入帳號以搜尋未接管的儲存庫... (留白以查詢全部)
|
||||
|
@ -1098,19 +1116,19 @@ migrate_items_releases=版本發布
|
|||
migrate_repo=遷移儲存庫
|
||||
migrate.clone_address=從 URL 遷移 / Clone
|
||||
migrate.clone_address_desc=現有儲存庫的 HTTP(S) 或 Git 「clone」 URL
|
||||
migrate.github_token_desc=由於 GitHub API 的速率限制,您可在此輸入一個或多個由半形逗號「,」分隔的 Token 來加快遷移速度。警告:濫用此功能可能會違反該服務提供者的政策並導致帳戶被封鎖。
|
||||
migrate.github_token_desc=由於 GitHub API 的速率限制,您可在此輸入一個或多個由半形逗號「,」分隔的符記來加快遷移速度。警告:濫用此功能可能會違反該服務提供者的政策並導致帳戶被封鎖。
|
||||
migrate.clone_local_path=或者是本地端伺服器路徑
|
||||
migrate.permission_denied=您並沒有導入本地儲存庫的權限。
|
||||
migrate.permission_denied_blocked=您無法從未允許的主機匯入,請聯絡管理員檢查以下設定值 ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS
|
||||
migrate.invalid_local_path=無效的本地路徑。它不存在或不是一個資料夾。
|
||||
migrate.invalid_lfs_endpoint=該 LFS 端點無效。
|
||||
migrate.failed=遷移失敗:%v
|
||||
migrate.migrate_items_options=遷移其他項目需要取用 Token
|
||||
migrate.migrate_items_options=遷移其他項目需要存取符記
|
||||
migrated_from=已從 <a href="%[1]s">%[2]s</a> 遷移
|
||||
migrated_from_fake=已從 %[1]s 遷移
|
||||
migrate.migrate=從 %s 遷移
|
||||
migrate.migrating=正在從 <b>%s</b> 遷移...
|
||||
migrate.migrating_failed=從 <b>%s</b> 遷移失敗
|
||||
migrate.migrating_failed=從 <b>%s</b> 遷移失敗。
|
||||
migrate.migrating_failed_no_addr=遷移失敗。
|
||||
migrate.github.description=從 github.com 或 GitHub Enterprise 伺服器遷移資料。
|
||||
migrate.git.description=從任何 Git 服務遷移儲存庫。
|
||||
|
@ -1139,7 +1157,7 @@ unwatch=取消關注
|
|||
watch=關注
|
||||
unstar=移除星號
|
||||
star=加上星號
|
||||
fork=Fork
|
||||
fork=分叉
|
||||
download_archive=下載此儲存庫
|
||||
more_operations=更多操作
|
||||
|
||||
|
@ -1147,7 +1165,7 @@ no_desc=暫無描述
|
|||
quick_guide=快速指南
|
||||
clone_this_repo=Clone 此儲存庫
|
||||
cite_this_repo=引用此儲存庫
|
||||
create_new_repo_command=從命令列建立新儲存庫。
|
||||
create_new_repo_command=從命令列建立新儲存庫
|
||||
push_exist_repo=從命令列推送已存在的儲存庫
|
||||
empty_message=此儲存庫未包含任何內容。
|
||||
broken_message=無法讀取此儲存庫底層的 Git 資料。請聯絡此 Forgejo 執行個體的管理員或刪除此儲存庫。
|
||||
|
@ -1164,10 +1182,10 @@ tags=標籤
|
|||
issues=問題
|
||||
pulls=合併請求
|
||||
project_board=專案
|
||||
packages=套件
|
||||
packages=軟體包
|
||||
actions=Actions
|
||||
labels=標籤
|
||||
org_labels_desc=組織層級標籤可用於此組織下的<strong>所有存儲庫</strong>。
|
||||
org_labels_desc=組織層級標籤可用於此組織下的<strong>所有儲存庫</strong>
|
||||
org_labels_desc_manage=管理
|
||||
|
||||
milestones=里程碑
|
||||
|
@ -1203,7 +1221,7 @@ commit_graph.select=選擇分支
|
|||
commit_graph.hide_pr_refs=隱藏合併請求
|
||||
commit_graph.monochrome=單色
|
||||
commit_graph.color=彩色
|
||||
blame=Blame
|
||||
blame=責任歸屬
|
||||
download_file=下載檔案
|
||||
normal_view=標準檢視
|
||||
line=行
|
||||
|
@ -1216,7 +1234,7 @@ editor.upload_file=上傳檔案
|
|||
editor.edit_file=編輯檔案
|
||||
editor.preview_changes=預覽更改
|
||||
editor.cannot_edit_lfs_files=無法在 web 介面中編輯 LFS 檔。
|
||||
editor.cannot_edit_non_text_files=網站介面不能編輯二進位檔案
|
||||
editor.cannot_edit_non_text_files=網站介面不能編輯二進位檔案。
|
||||
editor.edit_this_file=編輯檔案
|
||||
editor.this_file_locked=檔案已被鎖定
|
||||
editor.must_be_on_a_branch=你必須在一個分支或提出對此檔的更改。
|
||||
|
@ -1224,7 +1242,7 @@ editor.fork_before_edit=如果你想要對這個檔案進行或提出修改,
|
|||
editor.delete_this_file=刪除檔案
|
||||
editor.must_have_write_access=您必須擁有寫入權限才能對此檔案進行修改或提出變更。
|
||||
editor.file_delete_success=已刪除文件「%s」。
|
||||
editor.name_your_file=命名您的檔案...
|
||||
editor.name_your_file=命名您的檔案…
|
||||
editor.filename_help=輸入名稱和斜線("/") 以新增目錄。在文字框開始處輸入退格鍵以移除目錄。
|
||||
editor.or=或
|
||||
editor.cancel_lower=取消
|
||||
|
@ -1245,10 +1263,10 @@ editor.create_new_branch=為此提交建立<strong>新分支</strong>並提出
|
|||
editor.create_new_branch_np=為本次提交建立<strong>新分支</strong>。
|
||||
editor.propose_file_change=提出檔案變更
|
||||
editor.new_branch_name=命名此提交的新分支
|
||||
editor.new_branch_name_desc=新的分支名稱...
|
||||
editor.new_branch_name_desc=新的分支名稱…
|
||||
editor.cancel=取消
|
||||
editor.filename_cannot_be_empty=檔案名稱不能為空。
|
||||
editor.filename_is_invalid=檔名無效:「%s」。
|
||||
editor.filename_is_invalid=檔名無效:「%s」。
|
||||
editor.branch_does_not_exist=此儲存庫沒有名為「%s」的分支。
|
||||
editor.branch_already_exists=此儲存庫已有名為「%s」的分支。
|
||||
editor.file_changed_while_editing=檔案內容在您編輯的途中已被變更。<a target="_blank" rel="noopener noreferrer" href="%s">按一下此處</a>查看更動的地方或<strong>再次提交</strong>以覆蓋這些變更。
|
||||
|
@ -1261,7 +1279,7 @@ editor.fail_to_update_file_summary=錯誤訊息:
|
|||
editor.push_rejected_no_message=該變更被伺服器拒絕但未提供其他資訊。請檢查 Git Hook。
|
||||
editor.push_rejected=該變更被伺服器拒絕。請檢查 Git Hook。
|
||||
editor.push_rejected_summary=完整的拒絕訊息:
|
||||
editor.add_subdir=加入目錄
|
||||
editor.add_subdir=加入目錄…
|
||||
editor.unable_to_upload_files=上傳檔案到「%s」時失敗,錯誤訊息: %v
|
||||
editor.upload_file_is_locked=檔案「%s」已被 %s 鎖定。
|
||||
editor.upload_files_to_dir=上傳檔案到「%s」
|
||||
|
@ -1389,7 +1407,7 @@ 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
|
||||
issues.label_templates.fail_to_load_file=載入標籤範本檔「%s」失敗:%v
|
||||
issues.add_label=加入了 %s 標籤 %s
|
||||
issues.add_labels=加入了 %s 標籤 %s
|
||||
issues.remove_label=移除了 %s 標籤 %s
|
||||
|
@ -1858,8 +1876,8 @@ activity.merged_prs_label=已合併
|
|||
activity.opened_prs_label=提案
|
||||
activity.active_issues_count_1=<strong>%d</strong> 個問題
|
||||
activity.active_issues_count_n=<strong>%d</strong> 個問題
|
||||
activity.closed_issues_count_1=關閉的問題
|
||||
activity.closed_issues_count_n=關閉的問題
|
||||
activity.closed_issues_count_1=已關閉的問題
|
||||
activity.closed_issues_count_n=已關閉的問題
|
||||
activity.title.issues_1=%d 個問題
|
||||
activity.title.issues_n=%d 個問題
|
||||
activity.title.issues_closed_from=%[2]s關閉了 %[1]s
|
||||
|
@ -1993,7 +2011,7 @@ settings.convert_fork_desc=您可以將此 fork 轉換成普通儲存庫。此
|
|||
settings.convert_fork_notices_1=此操作會將此 fork 轉換成普通儲存庫且不可還原。
|
||||
settings.convert_fork_confirm=轉換儲存庫
|
||||
settings.convert_fork_succeed=此 fork 已轉換成普通儲存庫。
|
||||
settings.transfer=轉移儲存庫所有權
|
||||
settings.transfer.title=轉移儲存庫所有權
|
||||
settings.transfer.rejected=儲存庫轉移被拒絕。
|
||||
settings.transfer.success=儲存庫已成功轉移。
|
||||
settings.transfer_abort=取消轉移
|
||||
|
@ -2140,11 +2158,11 @@ settings.active=啟用
|
|||
settings.active_helper=觸發事件的資訊將會被送到此 Webhook URL。
|
||||
settings.add_hook_success=Webhook 新增成功!
|
||||
settings.update_webhook=更新 Webhook
|
||||
settings.update_hook_success=Webhook 更新成功!
|
||||
settings.update_hook_success=已成功更新 Webhook 。
|
||||
settings.delete_webhook=移除 Webhook
|
||||
settings.recent_deliveries=最近傳送記錄
|
||||
settings.hook_type=Hook 類型
|
||||
settings.slack_token=Token
|
||||
settings.slack_token=符記
|
||||
settings.slack_domain=域名
|
||||
settings.slack_channel=頻道
|
||||
settings.add_web_hook_desc=整合 <a target="_blank" rel="noreferrer" href="%s">%s</a> 到您的儲存庫。
|
||||
|
@ -2163,7 +2181,7 @@ settings.web_hook_name_larksuite_only =Lark Suite
|
|||
settings.web_hook_name_wechatwork=WeCom (Wechat Work)
|
||||
settings.web_hook_name_packagist=Packagist
|
||||
settings.packagist_username=Packagist 帳號
|
||||
settings.packagist_api_token=API token
|
||||
settings.packagist_api_token=API 符記
|
||||
settings.packagist_package_url=Packagist 套件 URL
|
||||
settings.deploy_keys=部署金鑰
|
||||
settings.add_deploy_key=新增部署金鑰
|
||||
|
@ -2234,7 +2252,7 @@ settings.block_on_official_review_requests=有官方的審核請求時阻擋合
|
|||
settings.block_on_official_review_requests_desc=如果有官方的審核請求時,即使有足夠的核可也不允許進行合併。
|
||||
settings.block_outdated_branch=如果合併請求已經過時則阻擋合併
|
||||
settings.block_outdated_branch_desc=當 head 分支落後於基礎分支時不得合併。
|
||||
settings.default_branch_desc=請選擇用來提交程式碼和合併請求的預設分支。
|
||||
settings.default_branch_desc=請選擇用來提交程式碼和合併請求的預設分支:
|
||||
settings.merge_style_desc=合併方式
|
||||
settings.default_merge_style_desc=預設合併方式
|
||||
settings.choose_branch=選擇一個分支...
|
||||
|
@ -2252,7 +2270,7 @@ settings.tags.protection.allowed.teams=允許的團隊
|
|||
settings.tags.protection.allowed.noone=無
|
||||
settings.tags.protection.create=保護標籤
|
||||
settings.tags.protection.none=沒有受保護的標籤。
|
||||
settings.bot_token=Bot Token
|
||||
settings.bot_token=Bot 符記
|
||||
settings.chat_id=Chat ID
|
||||
settings.matrix.homeserver_url=Homeserver 網址
|
||||
settings.matrix.room_id=聊天室 ID
|
||||
|
@ -2275,7 +2293,7 @@ settings.lfs_delete=刪除 OID 為 %s 的 LFS 檔案
|
|||
settings.lfs_delete_warning=刪除 LFS 檔案可能會造成 Checkout 時發生「物件不存在」的錯誤,您確定嗎?
|
||||
settings.lfs_findpointerfiles=尋找指標檔案
|
||||
settings.lfs_locks=鎖定
|
||||
settings.lfs_invalid_locking_path=無效的路徑: %s
|
||||
settings.lfs_invalid_locking_path=無效的路徑: %s
|
||||
settings.lfs_invalid_lock_directory=無法鎖定目錄: %s
|
||||
settings.lfs_lock_already_exists=鎖定已存在:%s
|
||||
settings.lfs_lock=鎖定
|
||||
|
@ -2472,7 +2490,7 @@ desc.sha256 = SHA256
|
|||
form.name_pattern_not_allowed = 您無法在儲存庫的名字中使用「%s」格式。
|
||||
admin.manage_flags = 管理旗標
|
||||
visibility_helper = 將儲存庫設為私有
|
||||
mirror_address_url_invalid = URL 無效。您必須將整個 URL 正確轉義(escape)。
|
||||
mirror_address_url_invalid = URL 無效。您必須正確的跳脫(escape)該 URL 的每個部份。
|
||||
migrate.migrating_failed.error = 遷移失敗:%s
|
||||
migrate.cancel_migrating_confirm = 您確定要取消這次的遷移嗎?
|
||||
invisible_runes_header = `此檔案內含不可見的 Unicode 字元`
|
||||
|
@ -2484,6 +2502,7 @@ ambiguous_runes_description = `這個檔案內含容易造成混淆的 Unicode
|
|||
commit.contained_in = 這個提交存在於:
|
||||
settings.archive.mirrors_unavailable = 不能鏡像已封存的儲存庫。
|
||||
settings.mirror_settings.push_mirror.edit_sync_time = 編輯鏡像同步週期
|
||||
settings.update_protect_branch_success = 已成功更新分支保護規則「%s」。
|
||||
|
||||
[graphs]
|
||||
|
||||
|
@ -2862,7 +2881,7 @@ auths.oauth2_clientID=客戶端 ID (金鑰)
|
|||
auths.oauth2_clientSecret=客戶端密鑰
|
||||
auths.openIdConnectAutoDiscoveryURL=OpenID 連接自動探索 URL
|
||||
auths.oauth2_use_custom_url=使用自訂 URL 而不是預設 URL
|
||||
auths.oauth2_tokenURL=Token URL
|
||||
auths.oauth2_tokenURL=符記 URL
|
||||
auths.oauth2_authURL=授權 URL
|
||||
auths.oauth2_profileURL=個人資料 URL
|
||||
auths.oauth2_emailURL=電子郵件 URL
|
||||
|
@ -2918,12 +2937,12 @@ auths.deletion_success=已刪除認證來源。
|
|||
auths.login_source_exist=認證來源「%s」已經存在。
|
||||
auths.login_source_of_type_exist=已經有相同類型的認證來源。
|
||||
auths.unable_to_initialize_openid=無法初始化 OpenID 連接提供者: %s
|
||||
auths.invalid_openIdConnectAutoDiscoveryURL=自動探索 URL 無效 (它必須是以 http:// 或 https:// 開頭的有效 URL)
|
||||
auths.invalid_openIdConnectAutoDiscoveryURL=自動探索 URL 無效(它必須是以 http:// 或 https:// 開頭的有效 URL)
|
||||
|
||||
config.server_config=伺服器設定
|
||||
config.app_name=網站標題
|
||||
config.app_ver=Forgejo 版本
|
||||
config.app_url=Forgejo 基本 URL
|
||||
config.app_url=Forgejo 基底 URL
|
||||
config.custom_conf=設定檔路徑
|
||||
config.custom_file_root_path=自訂檔案根目錄
|
||||
config.domain=伺服器域名
|
||||
|
@ -3126,7 +3145,7 @@ identity_access = 身分和存取權限
|
|||
[action]
|
||||
create_repo=建立了儲存庫 <a href="%s">%s</a>
|
||||
rename_repo=重新命名儲存庫 <code>%[1]s</code> 為 <a href="%[2]s">%[3]s</a>
|
||||
commit_repo=推送了 <a href="%[2]s">%[3]s</a> 到 <a href="%[1]s">%[4]s</a>
|
||||
commit_repo=推送到了 <a href="%[1]s">%[4]s</a> 儲存庫的 <a href="%[2]s">%[3]s</a> 分支
|
||||
create_issue=`建立了問題 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
close_issue=`關閉了問題 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_issue=`重新開放了問題 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -3414,11 +3433,11 @@ runners.status.idle=閒置
|
|||
runners.status.active=啟用
|
||||
runners.status.offline=離線
|
||||
runners.version=版本
|
||||
runners.reset_registration_token_success=成功重設了 Runner 註冊 Token
|
||||
runners.reset_registration_token_success=成功重設了 Runner 註冊符記
|
||||
|
||||
runs.all_workflows=所有工作流程
|
||||
runs.commit=提交
|
||||
runs.invalid_workflow_helper=工作流程設定檔無效。請檢查您的設定檔: %s
|
||||
runs.invalid_workflow_helper=工作流程設定檔無效。請檢查您的設定檔:%s
|
||||
runs.status=狀態
|
||||
runs.no_runs=工作流程沒有執行過。
|
||||
|
||||
|
@ -3427,7 +3446,7 @@ workflow.disable_success=已成功停用工作流程「%s」。
|
|||
workflow.enable=啟用工作流程
|
||||
workflow.enable_success=已成功啟用工作流程「%s」。
|
||||
|
||||
need_approval_desc=來自 Frok 儲存庫的合併請求需要核可才能執行工作流程。
|
||||
need_approval_desc=來自 Fork 儲存庫的合併請求需要核可才能執行工作流程。
|
||||
variables.edit = 編輯變數
|
||||
variables = 變數
|
||||
variables.management = 變數管理
|
||||
|
@ -3470,7 +3489,7 @@ executable_file = 可執行檔
|
|||
|
||||
|
||||
[search]
|
||||
package_kind = 搜尋套件…
|
||||
package_kind = 搜尋軟體包…
|
||||
search = 搜尋…
|
||||
type_tooltip = 搜尋類型
|
||||
match_tooltip = 僅包含與搜尋字詞完全相符的結果
|
||||
|
@ -3481,12 +3500,12 @@ match = 相符
|
|||
user_kind = 搜尋使用者…
|
||||
org_kind = 搜尋組織…
|
||||
team_kind = 搜尋團隊…
|
||||
code_kind = 搜尋程式碼
|
||||
code_search_unavailable = 程式碼搜尋目前無法使用。請連絡網站管理員。
|
||||
code_kind = 搜尋程式碼…
|
||||
code_search_unavailable = 目前無法使用程式碼搜尋。請連絡網站管理員。
|
||||
no_results = 沒有找到相符的結果。
|
||||
keyword_search_unavailable = 關鍵字搜尋目前無法使用。請連絡網站管理員。
|
||||
runner_kind = 搜尋 Runners …
|
||||
project_kind = 搜尋專案…
|
||||
branch_kind = 搜尋分支…
|
||||
commit_kind = 搜尋提交…
|
||||
code_search_by_git_grep = 目前搜尋結果由「git grep」提供。如果網站管理員啟程式碼索引,可能會有更好的結果。
|
||||
code_search_by_git_grep = 目前搜尋結果由「git grep」提供。如果網站管理員啟用程式碼索引,可能會有更好的結果。
|
8
package-lock.json
generated
8
package-lock.json
generated
|
@ -34,7 +34,7 @@
|
|||
"jquery": "3.7.1",
|
||||
"katex": "0.16.10",
|
||||
"license-checker-webpack-plugin": "0.2.1",
|
||||
"mermaid": "10.9.0",
|
||||
"mermaid": "10.9.1",
|
||||
"mini-css-extract-plugin": "2.8.1",
|
||||
"minimatch": "9.0.3",
|
||||
"monaco-editor": "0.47.0",
|
||||
|
@ -8232,9 +8232,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/mermaid": {
|
||||
"version": "10.9.0",
|
||||
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz",
|
||||
"integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==",
|
||||
"version": "10.9.1",
|
||||
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz",
|
||||
"integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==",
|
||||
"dependencies": {
|
||||
"@braintree/sanitize-url": "^6.0.1",
|
||||
"@types/d3-scale": "^4.0.3",
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
"jquery": "3.7.1",
|
||||
"katex": "0.16.10",
|
||||
"license-checker-webpack-plugin": "0.2.1",
|
||||
"mermaid": "10.9.0",
|
||||
"mermaid": "10.9.1",
|
||||
"mini-css-extract-plugin": "2.8.1",
|
||||
"minimatch": "9.0.3",
|
||||
"monaco-editor": "0.47.0",
|
||||
|
|
1
release-notes/7.0.3/3857.md
Normal file
1
release-notes/7.0.3/3857.md
Normal file
|
@ -0,0 +1 @@
|
|||
- [PR](https://codeberg.org/forgejo/forgejo/pulls/3857): Gitea v1.22 is [not published yet](https://github.com/go-gitea/gitea/issues/30731) as of 21 May 2024 and in reality Forgejo v7.0.3 is compatible with Gitea v1.21.11. The Gitea v1.22 release was anticipated to happen shortly after [Forgejo v7.0 was published on 23 April 2024](https://forgejo.org/2024-04-release-v7-0/) because it was already in the late stages of its release candidate lifecycle. However, around 27 April, [the Gitea release candidates were dropped](https://github.com/go-gitea/gitea/issues/30731) and the release candidates restarted from the Gitea development branch.
|
1
release-notes/8.0.0/3572.md
Normal file
1
release-notes/8.0.0/3572.md
Normal file
|
@ -0,0 +1 @@
|
|||
Fix gogs migration if gogs is hosted at a subpath
|
1
release-notes/8.0.0/3608.md
Normal file
1
release-notes/8.0.0/3608.md
Normal file
|
@ -0,0 +1 @@
|
|||
Fix text selection color
|
1
release-notes/8.0.0/3671.md
Normal file
1
release-notes/8.0.0/3671.md
Normal file
|
@ -0,0 +1 @@
|
|||
CVE-2024-24788: a malformed DNS message in response to a query can cause the Lookup functions to get stuck in an infinite loop.
|
1
release-notes/8.0.0/3730.md
Normal file
1
release-notes/8.0.0/3730.md
Normal file
|
@ -0,0 +1 @@
|
|||
Fix project name wrapping
|
1
release-notes/8.0.0/fix/3598.md
Normal file
1
release-notes/8.0.0/fix/3598.md
Normal file
|
@ -0,0 +1 @@
|
|||
Fixed an issue that resulted in repository activity feeds (including RSS and Atom feeds) containing repeated activities.
|
1
release-notes/8.0.0/fix/3675.md
Normal file
1
release-notes/8.0.0/fix/3675.md
Normal file
|
@ -0,0 +1 @@
|
|||
Fixed an issue that rendered the "Allow edits from maintainers" checkbox disfunctional, preventing people from turning it on.
|
1
release-notes/8.0.0/fix/3744.md
Normal file
1
release-notes/8.0.0/fix/3744.md
Normal file
|
@ -0,0 +1 @@
|
|||
- mail notifications of pull requests push are empty
|
1
release-notes/8.0.0/fix/3843.md
Normal file
1
release-notes/8.0.0/fix/3843.md
Normal file
|
@ -0,0 +1 @@
|
|||
- Fixed a bug that resulted in workflow badges not working for workflows that weren't running on push (such as scheduled workflows, and ones that run on tags and for prs)
|
|
@ -143,9 +143,7 @@ func serveMavenMetadata(ctx *context.Context, params parameters) {
|
|||
ctx.Resp.Header().Set("Content-Length", strconv.Itoa(len(xmlMetadataWithHeader)))
|
||||
ctx.Resp.Header().Set("Content-Type", contentTypeXML)
|
||||
|
||||
if _, err := ctx.Resp.Write(xmlMetadataWithHeader); err != nil {
|
||||
log.Error("write bytes failed: %v", err)
|
||||
}
|
||||
_, _ = ctx.Resp.Write(xmlMetadataWithHeader)
|
||||
}
|
||||
|
||||
func servePackageFile(ctx *context.Context, params parameters, serveContent bool) {
|
||||
|
|
|
@ -29,7 +29,6 @@ import (
|
|||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/convert"
|
||||
issue_service "code.gitea.io/gitea/services/issue"
|
||||
notify_service "code.gitea.io/gitea/services/notify"
|
||||
)
|
||||
|
||||
// SearchIssues searches for issues across the repositories that the user has access to
|
||||
|
@ -810,12 +809,19 @@ func EditIssue(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
oldTitle := issue.Title
|
||||
if len(form.Title) > 0 {
|
||||
issue.Title = form.Title
|
||||
err = issue_service.ChangeTitle(ctx, issue, ctx.Doer, form.Title)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "ChangeTitle", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
if form.Body != nil {
|
||||
issue.Content = *form.Body
|
||||
err = issue_service.ChangeContent(ctx, issue, ctx.Doer, *form.Body)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "ChangeContent", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
if form.Ref != nil {
|
||||
err = issue_service.ChangeIssueRef(ctx, issue, ctx.Doer, *form.Ref)
|
||||
|
@ -883,24 +889,14 @@ func EditIssue(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
}
|
||||
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
|
||||
}
|
||||
statusChangeComment, titleChanged, err := issues_model.UpdateIssueByAPI(ctx, issue, ctx.Doer)
|
||||
if err != nil {
|
||||
if issues_model.IsErrDependenciesLeft(err) {
|
||||
ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this issue because it still has open dependencies")
|
||||
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")
|
||||
return
|
||||
}
|
||||
ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
|
||||
return
|
||||
}
|
||||
ctx.Error(http.StatusInternalServerError, "UpdateIssueByAPI", err)
|
||||
return
|
||||
}
|
||||
|
||||
if titleChanged {
|
||||
notify_service.IssueChangeTitle(ctx, ctx.Doer, issue, oldTitle)
|
||||
}
|
||||
|
||||
if statusChangeComment != nil {
|
||||
notify_service.IssueChangeStatus(ctx, ctx.Doer, "", issue, statusChangeComment, issue.IsClosed)
|
||||
}
|
||||
|
||||
// Refetch from database to assign some automatic values
|
||||
|
|
|
@ -15,6 +15,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/web"
|
||||
"code.gitea.io/gitea/services/attachment"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/context/upload"
|
||||
"code.gitea.io/gitea/services/convert"
|
||||
issue_service "code.gitea.io/gitea/services/issue"
|
||||
)
|
||||
|
@ -159,6 +160,8 @@ func CreateIssueAttachment(ctx *context.APIContext) {
|
|||
// "$ref": "#/responses/error"
|
||||
// "404":
|
||||
// "$ref": "#/responses/error"
|
||||
// "422":
|
||||
// "$ref": "#/responses/validationError"
|
||||
// "423":
|
||||
// "$ref": "#/responses/repoArchivedError"
|
||||
|
||||
|
@ -207,7 +210,11 @@ func CreateIssueAttachment(ctx *context.APIContext) {
|
|||
CreatedUnix: issue.UpdatedUnix,
|
||||
})
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
|
||||
if upload.IsErrFileTypeForbidden(err) {
|
||||
ctx.Error(http.StatusUnprocessableEntity, "", err)
|
||||
} else {
|
||||
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/web"
|
||||
"code.gitea.io/gitea/services/attachment"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/context/upload"
|
||||
"code.gitea.io/gitea/services/convert"
|
||||
issue_service "code.gitea.io/gitea/services/issue"
|
||||
)
|
||||
|
@ -156,6 +157,8 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
|
|||
// "$ref": "#/responses/error"
|
||||
// "404":
|
||||
// "$ref": "#/responses/error"
|
||||
// "422":
|
||||
// "$ref": "#/responses/validationError"
|
||||
// "423":
|
||||
// "$ref": "#/responses/repoArchivedError"
|
||||
|
||||
|
@ -209,9 +212,14 @@ func CreateIssueCommentAttachment(ctx *context.APIContext) {
|
|||
CreatedUnix: comment.Issue.UpdatedUnix,
|
||||
})
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
|
||||
if upload.IsErrFileTypeForbidden(err) {
|
||||
ctx.Error(http.StatusUnprocessableEntity, "", err)
|
||||
} else {
|
||||
ctx.Error(http.StatusInternalServerError, "UploadAttachment", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if err := comment.LoadAttachments(ctx); err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "LoadAttachments", err)
|
||||
return
|
||||
|
|
|
@ -601,12 +601,19 @@ func EditPullRequest(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
oldTitle := issue.Title
|
||||
if len(form.Title) > 0 {
|
||||
issue.Title = form.Title
|
||||
err = issue_service.ChangeTitle(ctx, issue, ctx.Doer, form.Title)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "ChangeTitle", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
if len(form.Body) > 0 {
|
||||
issue.Content = form.Body
|
||||
if form.Body != nil {
|
||||
err = issue_service.ChangeContent(ctx, issue, ctx.Doer, *form.Body)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "ChangeContent", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Update or remove deadline if set
|
||||
|
@ -683,24 +690,14 @@ func EditPullRequest(ctx *context.APIContext) {
|
|||
ctx.Error(http.StatusPreconditionFailed, "MergedPRState", "cannot change state of this pull request, it was already merged")
|
||||
return
|
||||
}
|
||||
issue.IsClosed = api.StateClosed == api.StateType(*form.State)
|
||||
}
|
||||
statusChangeComment, titleChanged, err := issues_model.UpdateIssueByAPI(ctx, issue, ctx.Doer)
|
||||
if err != nil {
|
||||
if issues_model.IsErrDependenciesLeft(err) {
|
||||
ctx.Error(http.StatusPreconditionFailed, "DependenciesLeft", "cannot close this pull request because it still has open dependencies")
|
||||
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")
|
||||
return
|
||||
}
|
||||
ctx.Error(http.StatusInternalServerError, "ChangeStatus", err)
|
||||
return
|
||||
}
|
||||
ctx.Error(http.StatusInternalServerError, "UpdateIssueByAPI", err)
|
||||
return
|
||||
}
|
||||
|
||||
if titleChanged {
|
||||
notify_service.IssueChangeTitle(ctx, ctx.Doer, issue, oldTitle)
|
||||
}
|
||||
|
||||
if statusChangeComment != nil {
|
||||
notify_service.IssueChangeStatus(ctx, ctx.Doer, "", issue, statusChangeComment, issue.IsClosed)
|
||||
}
|
||||
|
||||
// change pull target branch
|
||||
|
|
|
@ -1290,11 +1290,12 @@ func ListRepoActivityFeeds(ctx *context.APIContext) {
|
|||
listOptions := utils.GetListOptions(ctx)
|
||||
|
||||
opts := activities_model.GetFeedsOptions{
|
||||
RequestedRepo: ctx.Repo.Repository,
|
||||
Actor: ctx.Doer,
|
||||
IncludePrivate: true,
|
||||
Date: ctx.FormString("date"),
|
||||
ListOptions: listOptions,
|
||||
RequestedRepo: ctx.Repo.Repository,
|
||||
OnlyPerformedByActor: true,
|
||||
Actor: ctx.Doer,
|
||||
IncludePrivate: true,
|
||||
Date: ctx.FormString("date"),
|
||||
ListOptions: listOptions,
|
||||
}
|
||||
|
||||
feeds, count, err := activities_model.GetFeeds(ctx, opts)
|
||||
|
|
|
@ -6,10 +6,8 @@ package user
|
|||
import (
|
||||
"net/http"
|
||||
|
||||
"code.gitea.io/gitea/models/perm"
|
||||
access_model "code.gitea.io/gitea/models/perm/access"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
unit_model "code.gitea.io/gitea/models/unit"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||
|
@ -44,7 +42,7 @@ func listUserRepos(ctx *context.APIContext, u *user_model.User, private bool) {
|
|||
ctx.Error(http.StatusInternalServerError, "GetUserRepoPermission", err)
|
||||
return
|
||||
}
|
||||
if ctx.IsSigned && ctx.Doer.IsAdmin || permission.UnitAccessMode(unit_model.TypeCode) >= perm.AccessModeRead {
|
||||
if ctx.IsSigned && ctx.Doer.IsAdmin || permission.HasAccess() {
|
||||
apiRepos = append(apiRepos, convert.ToRepo(ctx, repos[i], permission))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,20 +4,26 @@
|
|||
package private
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
git_model "code.gitea.io/gitea/models/git"
|
||||
issues_model "code.gitea.io/gitea/models/issues"
|
||||
pull_model "code.gitea.io/gitea/models/pull"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
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/gitrepo"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/private"
|
||||
repo_module "code.gitea.io/gitea/modules/repository"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
timeutil "code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/modules/web"
|
||||
gitea_context "code.gitea.io/gitea/services/context"
|
||||
|
@ -157,6 +163,14 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
|
|||
}
|
||||
}
|
||||
|
||||
// handle pull request merging, a pull request action should push at least 1 commit
|
||||
if opts.PushTrigger == repo_module.PushTriggerPRMergeToBase {
|
||||
handlePullRequestMerging(ctx, opts, ownerName, repoName, updates)
|
||||
if ctx.Written() {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Handle Push Options
|
||||
if len(opts.GitPushOptions) > 0 {
|
||||
// load the repository
|
||||
|
@ -227,7 +241,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
|
|||
}
|
||||
|
||||
// If we've pushed a branch (and not deleted it)
|
||||
if !git.IsEmptyCommitID(newCommitID) && refFullName.IsBranch() {
|
||||
if !git.IsEmptyCommitID(newCommitID, nil) && refFullName.IsBranch() {
|
||||
// First ensure we have the repository loaded, we're allowed pulls requests and we can get the base repo
|
||||
if repo == nil {
|
||||
repo = loadRepository(ctx, ownerName, repoName)
|
||||
|
@ -304,3 +318,52 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) {
|
|||
RepoWasEmpty: wasEmpty,
|
||||
})
|
||||
}
|
||||
|
||||
func loadContextCacheUser(ctx context.Context, id int64) (*user_model.User, error) {
|
||||
return cache.GetWithContextCache(ctx, "hook_post_receive_user", id, func() (*user_model.User, error) {
|
||||
return user_model.GetUserByID(ctx, id)
|
||||
})
|
||||
}
|
||||
|
||||
// handlePullRequestMerging handle pull request merging, a pull request action should push at least 1 commit
|
||||
func handlePullRequestMerging(ctx *gitea_context.PrivateContext, opts *private.HookOptions, ownerName, repoName string, updates []*repo_module.PushUpdateOptions) {
|
||||
if len(updates) == 0 {
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{
|
||||
Err: fmt.Sprintf("Pushing a merged PR (pr:%d) no commits pushed ", opts.PullRequestID),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
pr, err := issues_model.GetPullRequestByID(ctx, opts.PullRequestID)
|
||||
if err != nil {
|
||||
log.Error("GetPullRequestByID[%d]: %v", opts.PullRequestID, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{Err: "GetPullRequestByID failed"})
|
||||
return
|
||||
}
|
||||
|
||||
pusher, err := loadContextCacheUser(ctx, opts.UserID)
|
||||
if err != nil {
|
||||
log.Error("Failed to Update: %s/%s Error: %v", ownerName, repoName, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{Err: "Load pusher user failed"})
|
||||
return
|
||||
}
|
||||
|
||||
pr.MergedCommitID = updates[len(updates)-1].NewCommitID
|
||||
pr.MergedUnix = timeutil.TimeStampNow()
|
||||
pr.Merger = pusher
|
||||
pr.MergerID = pusher.ID
|
||||
err = db.WithTx(ctx, func(ctx context.Context) error {
|
||||
// Removing an auto merge pull and ignore if not exist
|
||||
if err := pull_model.DeleteScheduledAutoMerge(ctx, pr.ID); err != nil && !db.IsErrNotExist(err) {
|
||||
return fmt.Errorf("DeleteScheduledAutoMerge[%d]: %v", opts.PullRequestID, err)
|
||||
}
|
||||
if _, err := pr.SetMerged(ctx); err != nil {
|
||||
return fmt.Errorf("SetMerged failed: %s/%s Error: %v", ownerName, repoName, err)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Error("Failed to update PR to merged: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.HookPostReceiveResult{Err: "Failed to update PR to merged"})
|
||||
}
|
||||
}
|
||||
|
|
49
routers/private/hook_post_receive_test.go
Normal file
49
routers/private/hook_post_receive_test.go
Normal file
|
@ -0,0 +1,49 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package private
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
issues_model "code.gitea.io/gitea/models/issues"
|
||||
pull_model "code.gitea.io/gitea/models/pull"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/private"
|
||||
repo_module "code.gitea.io/gitea/modules/repository"
|
||||
"code.gitea.io/gitea/services/contexttest"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestHandlePullRequestMerging(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
pr, err := issues_model.GetUnmergedPullRequest(db.DefaultContext, 1, 1, "branch2", "master", issues_model.PullRequestFlowGithub)
|
||||
assert.NoError(t, err)
|
||||
assert.NoError(t, pr.LoadBaseRepo(db.DefaultContext))
|
||||
|
||||
user1 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
||||
|
||||
err = pull_model.ScheduleAutoMerge(db.DefaultContext, user1, pr.ID, repo_model.MergeStyleSquash, "squash merge a pr")
|
||||
assert.NoError(t, err)
|
||||
|
||||
autoMerge := unittest.AssertExistsAndLoadBean(t, &pull_model.AutoMerge{PullID: pr.ID})
|
||||
|
||||
ctx, resp := contexttest.MockPrivateContext(t, "/")
|
||||
handlePullRequestMerging(ctx, &private.HookOptions{
|
||||
PullRequestID: pr.ID,
|
||||
UserID: 2,
|
||||
}, pr.BaseRepo.OwnerName, pr.BaseRepo.Name, []*repo_module.PushUpdateOptions{
|
||||
{NewCommitID: "01234567"},
|
||||
})
|
||||
assert.Equal(t, 0, len(resp.Body.String()))
|
||||
pr, err = issues_model.GetPullRequestByID(db.DefaultContext, pr.ID)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, pr.HasMerged)
|
||||
assert.EqualValues(t, "01234567", pr.MergedCommitID)
|
||||
|
||||
unittest.AssertNotExistsBean(t, &pull_model.AutoMerge{ID: autoMerge.ID})
|
||||
}
|
|
@ -71,9 +71,9 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
|
|||
case "leastupdate":
|
||||
orderBy = db.SearchOrderByLeastUpdated
|
||||
case "reversealphabetically":
|
||||
orderBy = db.SearchOrderByAlphabeticallyReverse
|
||||
orderBy = "owner_name DESC, name DESC"
|
||||
case "alphabetically":
|
||||
orderBy = db.SearchOrderByAlphabetically
|
||||
orderBy = "owner_name ASC, name ASC"
|
||||
case "reversesize":
|
||||
orderBy = db.SearchOrderBySizeReverse
|
||||
case "size":
|
||||
|
|
|
@ -16,10 +16,11 @@ import (
|
|||
// ShowRepoFeed shows user activity on the repo as RSS / Atom feed
|
||||
func ShowRepoFeed(ctx *context.Context, repo *repo_model.Repository, formatType string) {
|
||||
actions, _, err := activities_model.GetFeeds(ctx, activities_model.GetFeedsOptions{
|
||||
RequestedRepo: repo,
|
||||
Actor: ctx.Doer,
|
||||
IncludePrivate: true,
|
||||
Date: ctx.FormString("date"),
|
||||
OnlyPerformedByActor: true,
|
||||
RequestedRepo: repo,
|
||||
Actor: ctx.Doer,
|
||||
IncludePrivate: true,
|
||||
Date: ctx.FormString("date"),
|
||||
})
|
||||
if err != nil {
|
||||
ctx.ServerError("GetFeeds", err)
|
||||
|
|
|
@ -7,7 +7,6 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
|
@ -390,74 +389,6 @@ func ViewProject(ctx *context.Context) {
|
|||
ctx.HTML(http.StatusOK, tplProjectsView)
|
||||
}
|
||||
|
||||
func getActionIssues(ctx *context.Context) issues_model.IssueList {
|
||||
commaSeparatedIssueIDs := ctx.FormString("issue_ids")
|
||||
if len(commaSeparatedIssueIDs) == 0 {
|
||||
return nil
|
||||
}
|
||||
issueIDs := make([]int64, 0, 10)
|
||||
for _, stringIssueID := range strings.Split(commaSeparatedIssueIDs, ",") {
|
||||
issueID, err := strconv.ParseInt(stringIssueID, 10, 64)
|
||||
if err != nil {
|
||||
ctx.ServerError("ParseInt", err)
|
||||
return nil
|
||||
}
|
||||
issueIDs = append(issueIDs, issueID)
|
||||
}
|
||||
issues, err := issues_model.GetIssuesByIDs(ctx, issueIDs)
|
||||
if err != nil {
|
||||
ctx.ServerError("GetIssuesByIDs", err)
|
||||
return nil
|
||||
}
|
||||
// Check access rights for all issues
|
||||
issueUnitEnabled := ctx.Repo.CanRead(unit.TypeIssues)
|
||||
prUnitEnabled := ctx.Repo.CanRead(unit.TypePullRequests)
|
||||
for _, issue := range issues {
|
||||
if issue.RepoID != ctx.Repo.Repository.ID {
|
||||
ctx.NotFound("some issue's RepoID is incorrect", errors.New("some issue's RepoID is incorrect"))
|
||||
return nil
|
||||
}
|
||||
if issue.IsPull && !prUnitEnabled || !issue.IsPull && !issueUnitEnabled {
|
||||
ctx.NotFound("IssueOrPullRequestUnitNotAllowed", nil)
|
||||
return nil
|
||||
}
|
||||
if err = issue.LoadAttributes(ctx); err != nil {
|
||||
ctx.ServerError("LoadAttributes", err)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return issues
|
||||
}
|
||||
|
||||
// UpdateIssueProject change an issue's project
|
||||
func UpdateIssueProject(ctx *context.Context) {
|
||||
issues := getActionIssues(ctx)
|
||||
if ctx.Written() {
|
||||
return
|
||||
}
|
||||
|
||||
if err := issues.LoadProjects(ctx); err != nil {
|
||||
ctx.ServerError("LoadProjects", err)
|
||||
return
|
||||
}
|
||||
|
||||
projectID := ctx.FormInt64("id")
|
||||
for _, issue := range issues {
|
||||
if issue.Project != nil {
|
||||
if issue.Project.ID == projectID {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if err := issues_model.ChangeProjectAssign(ctx, issue, ctx.Doer, projectID); err != nil {
|
||||
ctx.ServerError("ChangeProjectAssign", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
ctx.JSONOK()
|
||||
}
|
||||
|
||||
// DeleteProjectBoard allows for the deletion of a project board
|
||||
func DeleteProjectBoard(ctx *context.Context) {
|
||||
if ctx.Doer == nil {
|
||||
|
|
|
@ -45,10 +45,9 @@ func errorBadge(ctx *context_module.Context, label, text string) {
|
|||
|
||||
func GetWorkflowBadge(ctx *context_module.Context) {
|
||||
branch := ctx.Req.URL.Query().Get("branch")
|
||||
if branch == "" {
|
||||
branch = ctx.Repo.Repository.DefaultBranch
|
||||
if branch != "" {
|
||||
branch = fmt.Sprintf("refs/heads/%s", branch)
|
||||
}
|
||||
branch = fmt.Sprintf("refs/heads/%s", branch)
|
||||
event := ctx.Req.URL.Query().Get("event")
|
||||
|
||||
workflowFile := ctx.Params("workflow_name")
|
||||
|
|
|
@ -1267,8 +1267,8 @@ func NewIssuePost(ctx *context.Context) {
|
|||
ctx.Error(http.StatusBadRequest, "user hasn't permissions to read projects")
|
||||
return
|
||||
}
|
||||
if err := issues_model.ChangeProjectAssign(ctx, issue, ctx.Doer, projectID); err != nil {
|
||||
ctx.ServerError("ChangeProjectAssign", err)
|
||||
if err := issues_model.IssueAssignOrRemoveProject(ctx, issue, ctx.Doer, projectID, 0); err != nil {
|
||||
ctx.ServerError("IssueAssignOrRemoveProject", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/markup/markdown"
|
||||
"code.gitea.io/gitea/modules/optional"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/modules/web"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/forms"
|
||||
|
@ -382,17 +383,21 @@ func UpdateIssueProject(ctx *context.Context) {
|
|||
ctx.ServerError("LoadProjects", err)
|
||||
return
|
||||
}
|
||||
if _, err := issues.LoadRepositories(ctx); err != nil {
|
||||
ctx.ServerError("LoadProjects", err)
|
||||
return
|
||||
}
|
||||
|
||||
projectID := ctx.FormInt64("id")
|
||||
for _, issue := range issues {
|
||||
if issue.Project != nil {
|
||||
if issue.Project.ID == projectID {
|
||||
if issue.Project != nil && issue.Project.ID == projectID {
|
||||
continue
|
||||
}
|
||||
if err := issues_model.IssueAssignOrRemoveProject(ctx, issue, ctx.Doer, projectID, 0); err != nil {
|
||||
if errors.Is(err, util.ErrPermissionDenied) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if err := issues_model.ChangeProjectAssign(ctx, issue, ctx.Doer, projectID); err != nil {
|
||||
ctx.ServerError("ChangeProjectAssign", err)
|
||||
ctx.ServerError("IssueAssignOrRemoveProject", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1541,14 +1541,12 @@ func CompareAndPullRequestPost(ctx *context.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if projectID > 0 {
|
||||
if !ctx.Repo.CanWrite(unit.TypeProjects) {
|
||||
ctx.Error(http.StatusBadRequest, "user hasn't the permission to write to projects")
|
||||
return
|
||||
}
|
||||
if err := issues_model.ChangeProjectAssign(ctx, pullIssue, ctx.Doer, projectID); err != nil {
|
||||
ctx.ServerError("ChangeProjectAssign", err)
|
||||
return
|
||||
if projectID > 0 && ctx.Repo.CanWrite(unit.TypeProjects) {
|
||||
if err := issues_model.IssueAssignOrRemoveProject(ctx, pullIssue, ctx.Doer, projectID, 0); err != nil {
|
||||
if !errors.Is(err, util.ErrPermissionDenied) {
|
||||
ctx.ServerError("IssueAssignOrRemoveProject", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -798,6 +798,7 @@ func SettingsPost(ctx *context.Context) {
|
|||
ctx.Repo.GitRepo = nil
|
||||
}
|
||||
|
||||
oldFullname := repo.FullName()
|
||||
if err := repo_service.StartRepositoryTransfer(ctx, ctx.Doer, newOwner, repo, nil); err != nil {
|
||||
if errors.Is(err, user_model.ErrBlockedByUser) {
|
||||
ctx.RenderWithErr(ctx.Tr("repo.settings.new_owner_blocked_doer"), tplSettingsOptions, nil)
|
||||
|
@ -812,8 +813,13 @@ func SettingsPost(ctx *context.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
log.Trace("Repository transfer process was started: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newOwner)
|
||||
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_started", newOwner.DisplayName()))
|
||||
if ctx.Repo.Repository.Status == repo_model.RepositoryPendingTransfer {
|
||||
log.Trace("Repository transfer process was started: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newOwner)
|
||||
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_started", newOwner.DisplayName()))
|
||||
} else {
|
||||
log.Trace("Repository transferred: %s -> %s", oldFullname, ctx.Repo.Repository.FullName())
|
||||
ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed"))
|
||||
}
|
||||
ctx.Redirect(repo.Link() + "/settings")
|
||||
|
||||
case "cancel_transfer":
|
||||
|
|
48
routers/web/shared/project/column.go
Normal file
48
routers/web/shared/project/column.go
Normal file
|
@ -0,0 +1,48 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package project
|
||||
|
||||
import (
|
||||
project_model "code.gitea.io/gitea/models/project"
|
||||
"code.gitea.io/gitea/modules/json"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
)
|
||||
|
||||
// MoveColumns moves or keeps columns in a project and sorts them inside that project
|
||||
func MoveColumns(ctx *context.Context) {
|
||||
project, err := project_model.GetProjectByID(ctx, ctx.ParamsInt64(":id"))
|
||||
if err != nil {
|
||||
ctx.NotFoundOrServerError("GetProjectByID", project_model.IsErrProjectNotExist, err)
|
||||
return
|
||||
}
|
||||
if !project.CanBeAccessedByOwnerRepo(ctx.ContextUser.ID, ctx.Repo.Repository) {
|
||||
ctx.NotFound("CanBeAccessedByOwnerRepo", nil)
|
||||
return
|
||||
}
|
||||
|
||||
type movedColumnsForm struct {
|
||||
Columns []struct {
|
||||
ColumnID int64 `json:"columnID"`
|
||||
Sorting int64 `json:"sorting"`
|
||||
} `json:"columns"`
|
||||
}
|
||||
|
||||
form := &movedColumnsForm{}
|
||||
if err = json.NewDecoder(ctx.Req.Body).Decode(&form); err != nil {
|
||||
ctx.ServerError("DecodeMovedColumnsForm", err)
|
||||
return
|
||||
}
|
||||
|
||||
sortedColumnIDs := make(map[int64]int64)
|
||||
for _, column := range form.Columns {
|
||||
sortedColumnIDs[column.Sorting] = column.ColumnID
|
||||
}
|
||||
|
||||
if err = project_model.MoveColumnsOnProject(ctx, project, sortedColumnIDs); err != nil {
|
||||
ctx.ServerError("MoveColumnsOnProject", err)
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSONOK()
|
||||
}
|
|
@ -39,6 +39,7 @@ import (
|
|||
"code.gitea.io/gitea/routers/web/repo/badges"
|
||||
repo_flags "code.gitea.io/gitea/routers/web/repo/flags"
|
||||
repo_setting "code.gitea.io/gitea/routers/web/repo/setting"
|
||||
"code.gitea.io/gitea/routers/web/shared/project"
|
||||
"code.gitea.io/gitea/routers/web/user"
|
||||
user_setting "code.gitea.io/gitea/routers/web/user/setting"
|
||||
"code.gitea.io/gitea/routers/web/user/setting/security"
|
||||
|
@ -97,14 +98,14 @@ func optionsCorsHandler() func(next http.Handler) http.Handler {
|
|||
// The Session plugin is expected to be executed second, in order to skip authentication
|
||||
// for users that have already signed in.
|
||||
func buildAuthGroup() *auth_service.Group {
|
||||
group := auth_service.NewGroup(
|
||||
&auth_service.OAuth2{}, // FIXME: this should be removed and only applied in download and oauth related routers
|
||||
&auth_service.Basic{}, // FIXME: this should be removed and only applied in download and git/lfs routers
|
||||
&auth_service.Session{},
|
||||
)
|
||||
group := auth_service.NewGroup()
|
||||
group.Add(&auth_service.OAuth2{}) // FIXME: this should be removed and only applied in download and oauth related routers
|
||||
group.Add(&auth_service.Basic{}) // FIXME: this should be removed and only applied in download and git/lfs routers
|
||||
|
||||
if setting.Service.EnableReverseProxyAuth {
|
||||
group.Add(&auth_service.ReverseProxy{})
|
||||
group.Add(&auth_service.ReverseProxy{}) // reverseproxy should before Session, otherwise the header will be ignored if user has login
|
||||
}
|
||||
group.Add(&auth_service.Session{})
|
||||
|
||||
if setting.IsWindows && auth_model.IsSSPIEnabled(db.DefaultContext) {
|
||||
group.Add(&auth_service.SSPI{}) // it MUST be the last, see the comment of SSPI
|
||||
|
@ -976,6 +977,7 @@ func registerRoutes(m *web.Route) {
|
|||
m.Post("/new", web.Bind(forms.CreateProjectForm{}), org.NewProjectPost)
|
||||
m.Group("/{id}", func() {
|
||||
m.Post("", web.Bind(forms.EditProjectBoardForm{}), org.AddBoardToProjectPost)
|
||||
m.Post("/move", project.MoveColumns)
|
||||
m.Post("/delete", org.DeleteProject)
|
||||
|
||||
m.Get("/edit", org.RenderEditProject)
|
||||
|
@ -1349,6 +1351,7 @@ func registerRoutes(m *web.Route) {
|
|||
m.Post("/new", web.Bind(forms.CreateProjectForm{}), repo.NewProjectPost)
|
||||
m.Group("/{id}", func() {
|
||||
m.Post("", web.Bind(forms.EditProjectBoardForm{}), repo.AddBoardToProjectPost)
|
||||
m.Post("/move", project.MoveColumns)
|
||||
m.Post("/delete", repo.DeleteProject)
|
||||
|
||||
m.Get("/edit", repo.RenderEditProject)
|
||||
|
|
|
@ -515,8 +515,7 @@ func (*actionsNotifier) MergePullRequest(ctx context.Context, doer *user_model.U
|
|||
}
|
||||
|
||||
func (n *actionsNotifier) PushCommits(ctx context.Context, pusher *user_model.User, repo *repo_model.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) {
|
||||
commitID, _ := git.NewIDFromString(opts.NewCommitID)
|
||||
if commitID.IsZero() {
|
||||
if git.IsEmptyCommitID(opts.NewCommitID, nil) {
|
||||
log.Trace("new commitID is empty")
|
||||
return
|
||||
}
|
||||
|
|
|
@ -234,9 +234,7 @@ func (b *Base) plainTextInternal(skip, status int, bs []byte) {
|
|||
b.Resp.Header().Set("Content-Type", "text/plain;charset=utf-8")
|
||||
b.Resp.Header().Set("X-Content-Type-Options", "nosniff")
|
||||
b.Resp.WriteHeader(status)
|
||||
if _, err := b.Resp.Write(bs); err != nil {
|
||||
log.ErrorWithSkip(skip, "plainTextInternal (status=%d): write bytes failed: %v", status, err)
|
||||
}
|
||||
_, _ = b.Resp.Write(bs)
|
||||
}
|
||||
|
||||
// PlainTextBytes renders bytes as plain text
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue